import { PublicKey, Transaction, TransactionInstruction } from "@solana/web3.js";
import ProgramLoader from "./ProgramLoader";
import { BidRequest as BidRequestType } from "../types/bid-request";
export default class BidRequest {
    protected readonly programLoader: ProgramLoader;
    private auctionManagerProgram;
    constructor(programLoader: ProgramLoader);
    create(nft: PublicKey, bidRequester: PublicKey, nftOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey, price: number): Promise<TransactionInstruction[]>;
    createTransaction(nft: PublicKey, bidRequester: PublicKey, nftOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey, price: number): Promise<Transaction>;
    get(bidRequestPubkey: PublicKey): Promise<BidRequestType>;
    fetchMany(bidReceiptPubkeys: PublicKey[]): Promise<BidRequestType[]>;
    getAll(): Promise<BidRequestType[]>;
    getByNft(nft: PublicKey): Promise<BidRequestType[]>;
    getByAuthority(authority: PublicKey): Promise<BidRequestType[]>;
    getByNftOwner(nftOwner: PublicKey): Promise<BidRequestType[]>;
    accept(nft: PublicKey, nftProgramId: PublicKey, nftOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey, bidRequestOwner: PublicKey): Promise<Transaction>;
    reject(nft: PublicKey, nftOwner: PublicKey, bidRequestOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey): Promise<Transaction>;
    cancel(nft: PublicKey, nftOwner: PublicKey, bidRequestOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey): Promise<Transaction>;
    increaseAmount(nft: PublicKey, nftOwner: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey, bidRequestOwner: PublicKey, newAmount: number): Promise<Transaction>;
    makePublic(nft: PublicKey, nftOwner: PublicKey, nftProgramId: PublicKey, tokenMint: PublicKey, tokenMintProgramId: PublicKey, bidRequestOwner: PublicKey, period: number, timeExtension: number): Promise<Transaction>;
}
