///
import { Account, Borsh, AnyPublicKey, StringPublicKey } from '@metaplex-foundation/mpl-core';
import { AccountInfo, Connection, PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import { Buffer } from 'buffer';
import { BidderMetadata } from './BidderMetadata';
import { BidderPot } from './BidderPot';
export declare enum AuctionState {
Created = 0,
Started = 1,
Ended = 2
}
export declare enum BidStateType {
EnglishAuction = 0,
OpenEdition = 1
}
export declare enum PriceFloorType {
None = 0,
Minimum = 1,
BlindedPrice = 2
}
declare type BidArgs = {
key: StringPublicKey;
amount: BN;
};
export declare class Bid extends Borsh.Data {
static readonly SCHEMA: Map;
key?: StringPublicKey;
amount?: BN;
}
declare type BidStateArgs = {
type: BidStateType;
bids: Bid[];
max: BN;
};
export declare class BidState extends Borsh.Data {
static readonly SCHEMA: Map;
type: BidStateType;
bids: Bid[];
max: BN;
getWinnerAt(winnerIndex: number): StringPublicKey | undefined;
getAmountAt(winnerIndex: number): BN | undefined;
getWinnerIndex(bidder: StringPublicKey): number | null;
}
declare type PriceFloorArgs = {
type: PriceFloorType;
hash?: Uint8Array;
minPrice?: BN;
};
export declare class PriceFloor extends Borsh.Data {
static readonly SCHEMA: Map;
type: PriceFloorType;
hash: Uint8Array;
minPrice?: BN;
constructor(args: PriceFloorArgs);
}
declare type Args = {
authority: StringPublicKey;
tokenMint: StringPublicKey;
lastBid: BN | null;
endedAt: BN | null;
endAuctionAt: BN | null;
auctionGap: BN | null;
priceFloor: PriceFloor;
state: AuctionState;
bidState: BidState;
totalUncancelledBids: BN;
};
export declare class AuctionData extends Borsh.Data {
static readonly SCHEMA: Map;
authority: StringPublicKey;
tokenMint: StringPublicKey;
lastBid?: BN;
endedAt?: BN;
endAuctionAt?: BN;
auctionGap?: BN;
priceFloor: PriceFloor;
state: AuctionState;
bidState: BidState;
bidRedemptionKey?: StringPublicKey;
}
export declare class Auction extends Account {
static readonly EXTENDED_DATA_SIZE: number;
constructor(pubkey: AnyPublicKey, info: AccountInfo);
static getPDA(vault: AnyPublicKey): Promise;
static findMany(connection: Connection, filters?: {
authority?: AnyPublicKey;
}): Promise<(Account | undefined)[]>;
getBidderPots(connection: Connection): Promise[]>;
getBidderMetadata(connection: Connection): Promise[]>;
}
export {};