import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common.js";
export type RoyaltyFeeRateStruct = {
    receipt: string;
    marketlist: BigNumberish;
    vault: BigNumberish;
    raffle: BigNumberish;
};
export type RoyaltyFeeRateStructOutput = [string, number, number, number] & {
    receipt: string;
    marketlist: number;
    vault: number;
    raffle: number;
};
export type SafeboxFeeRateStruct = {
    receipt: string;
    auctionOwned: BigNumberish;
    auctionExpired: BigNumberish;
    raffle: BigNumberish;
    marketlist: BigNumberish;
};
export type SafeboxFeeRateStructOutput = [
    string,
    number,
    number,
    number,
    number
] & {
    receipt: string;
    auctionOwned: number;
    auctionExpired: number;
    raffle: number;
    marketlist: number;
};
export type VaultFeeRateStruct = {
    receipt: string;
    vaultAuction: BigNumberish;
    redemptionBase: BigNumberish;
};
export type VaultFeeRateStructOutput = [string, number, number] & {
    receipt: string;
    vaultAuction: number;
    redemptionBase: number;
};
export type FeeConfigStruct = {
    royalty: RoyaltyFeeRateStruct;
    safeboxFee: SafeboxFeeRateStruct;
    vaultFee: VaultFeeRateStruct;
};
export type FeeConfigStructOutput = [
    RoyaltyFeeRateStructOutput,
    SafeboxFeeRateStructOutput,
    VaultFeeRateStructOutput
] & {
    royalty: RoyaltyFeeRateStructOutput;
    safeboxFee: SafeboxFeeRateStructOutput;
    vaultFee: VaultFeeRateStructOutput;
};
export type FeeRateStruct = {
    receipt: string;
    rateBips: BigNumberish;
};
export type FeeRateStructOutput = [string, number] & {
    receipt: string;
    rateBips: number;
};
export type FeesStruct = {
    royalty: FeeRateStruct;
    protocol: FeeRateStruct;
};
export type FeesStructOutput = [FeeRateStructOutput, FeeRateStructOutput] & {
    royalty: FeeRateStructOutput;
    protocol: FeeRateStructOutput;
};
export type TicketRecordStruct = {
    buyer: string;
    startIdx: BigNumberish;
    endIdx: BigNumberish;
};
export type TicketRecordStructOutput = [string, number, number] & {
    buyer: string;
    startIdx: number;
    endIdx: number;
};
export type SafeBoxStruct = {
    keyId: BigNumberish;
    expiryTs: BigNumberish;
    owner: string;
};
export type SafeBoxStructOutput = [BigNumber, number, string] & {
    keyId: BigNumber;
    expiryTs: number;
    owner: string;
};
export type SafeBoxKeyStruct = {
    lockingCredit: BigNumberish;
    keyId: BigNumberish;
    vipLevel: BigNumberish;
};
export type SafeBoxKeyStructOutput = [BigNumber, BigNumber, number] & {
    lockingCredit: BigNumber;
    keyId: BigNumber;
    vipLevel: number;
};
export declare namespace FloorGetter {
    type CollectionInfoStruct = {
        fragmentToken: string;
        freeNftLength: BigNumberish;
        lastUpdatedBucket: BigNumberish;
        nextKeyId: BigNumberish;
        activeSafeBoxCnt: BigNumberish;
        infiniteCnt: BigNumberish;
        nextActivityId: BigNumberish;
        lastVaultAuctionPeriodTs: BigNumberish;
        _contractAddr: string;
    };
    type CollectionInfoStructOutput = [
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        number,
        string
    ] & {
        fragmentToken: string;
        freeNftLength: BigNumber;
        lastUpdatedBucket: BigNumber;
        nextKeyId: BigNumber;
        activeSafeBoxCnt: BigNumber;
        infiniteCnt: BigNumber;
        nextActivityId: BigNumber;
        lastVaultAuctionPeriodTs: number;
        _contractAddr: string;
    };
}
export interface FloorGetterInterface extends utils.Interface {
    functions: {
        "_flooring()": FunctionFragment;
        "collectionFee(address,address)": FunctionFragment;
        "collectionInfo(address)": FunctionFragment;
        "collectionProxy(address)": FunctionFragment;
        "fragmentTokenOf(address)": FunctionFragment;
        "getAuction(address,uint256)": FunctionFragment;
        "getFreeNftIds(address,uint256,uint256)": FunctionFragment;
        "getPrivateOffer(address,uint256)": FunctionFragment;
        "getRaffle(address,uint256)": FunctionFragment;
        "getRaffleTicketRecords(address,uint256,uint256,uint256)": FunctionFragment;
        "getSafeBox(address,uint256)": FunctionFragment;
        "multicall(bytes[])": FunctionFragment;
        "supportedToken(address)": FunctionFragment;
        "tokenBalance(address,address)": FunctionFragment;
        "userAccount(address)": FunctionFragment;
        "userCollection(address,address,uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "_flooring" | "collectionFee" | "collectionInfo" | "collectionProxy" | "fragmentTokenOf" | "getAuction" | "getFreeNftIds" | "getPrivateOffer" | "getRaffle" | "getRaffleTicketRecords" | "getSafeBox" | "multicall" | "supportedToken" | "tokenBalance" | "userAccount" | "userCollection"): FunctionFragment;
    encodeFunctionData(functionFragment: "_flooring", values?: undefined): string;
    encodeFunctionData(functionFragment: "collectionFee", values: [string, string]): string;
    encodeFunctionData(functionFragment: "collectionInfo", values: [string]): string;
    encodeFunctionData(functionFragment: "collectionProxy", values: [string]): string;
    encodeFunctionData(functionFragment: "fragmentTokenOf", values: [string]): string;
    encodeFunctionData(functionFragment: "getAuction", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getFreeNftIds", values: [string, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getPrivateOffer", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRaffle", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getRaffleTicketRecords", values: [string, BigNumberish, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getSafeBox", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "multicall", values: [BytesLike[]]): string;
    encodeFunctionData(functionFragment: "supportedToken", values: [string]): string;
    encodeFunctionData(functionFragment: "tokenBalance", values: [string, string]): string;
    encodeFunctionData(functionFragment: "userAccount", values: [string]): string;
    encodeFunctionData(functionFragment: "userCollection", values: [string, string, BigNumberish]): string;
    decodeFunctionResult(functionFragment: "_flooring", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collectionFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collectionInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collectionProxy", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "fragmentTokenOf", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAuction", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getFreeNftIds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPrivateOffer", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRaffle", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRaffleTicketRecords", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getSafeBox", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportedToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "tokenBalance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "userCollection", data: BytesLike): Result;
    events: {};
}
export interface FloorGetter extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: FloorGetterInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        _flooring(overrides?: CallOverrides): Promise<[string]>;
        collectionFee(collection: string, token: string, overrides?: CallOverrides): Promise<[FeeConfigStructOutput] & {
            fee: FeeConfigStructOutput;
        }>;
        collectionInfo(collection: string, overrides?: CallOverrides): Promise<[
            FloorGetter.CollectionInfoStructOutput
        ] & {
            info: FloorGetter.CollectionInfoStructOutput;
        }>;
        collectionProxy(proxy: string, overrides?: CallOverrides): Promise<[string]>;
        fragmentTokenOf(collection: string, overrides?: CallOverrides): Promise<[string] & {
            token: string;
        }>;
        getAuction(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            BigNumber,
            BigNumber,
            string,
            string,
            BigNumber,
            number,
            FeesStructOutput
        ] & {
            endTime: BigNumber;
            bidToken: string;
            minimumBid: BigNumber;
            lastBidAmount: BigNumber;
            lastBidder: string;
            triggerAddress: string;
            activityId: BigNumber;
            typ: number;
            fees: FeesStructOutput;
        }>;
        getFreeNftIds(collection: string, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber[]] & {
            nftIds: BigNumber[];
        }>;
        getPrivateOffer(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            BigNumber,
            string,
            string,
            BigNumber,
            FeesStructOutput
        ] & {
            endTime: BigNumber;
            token: string;
            price: BigNumber;
            owner: string;
            buyer: string;
            activityId: BigNumber;
            fees: FeesStructOutput;
        }>;
        getRaffle(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            number,
            number,
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            number,
            boolean,
            BigNumber,
            FeesStructOutput
        ] & {
            endTime: number;
            maxTickets: number;
            token: string;
            ticketPrice: BigNumber;
            collectedFund: BigNumber;
            activityId: BigNumber;
            owner: string;
            ticketSold: number;
            isSettling: boolean;
            ticketsArrLen: BigNumber;
            fees: FeesStructOutput;
        }>;
        getRaffleTicketRecords(collection: string, nftId: BigNumberish, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<[
            TicketRecordStructOutput[]
        ] & {
            tickets: TicketRecordStructOutput[];
        }>;
        getSafeBox(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[SafeBoxStructOutput] & {
            safeBox: SafeBoxStructOutput;
        }>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        supportedToken(token: string, overrides?: CallOverrides): Promise<[boolean]>;
        tokenBalance(user: string, token: string, overrides?: CallOverrides): Promise<[BigNumber]>;
        userAccount(user: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            number,
            BigNumber[],
            BigNumber,
            number,
            number
        ] & {
            minMaintCredit: BigNumber;
            firstCollection: string;
            minMaintVipLevel: number;
            vipKeyCnts: BigNumber[];
            lockedCredit: BigNumber;
            lastQuotaPeriodTs: number;
            safeboxQuotaUsed: number;
        }>;
        userCollection(user: string, collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            number,
            number,
            number,
            SafeBoxKeyStructOutput
        ] & {
            totalLockingCredit: BigNumber;
            next: string;
            keyCnt: number;
            vaultContQuota: number;
            lastVaultActiveTs: number;
            key: SafeBoxKeyStructOutput;
        }>;
    };
    _flooring(overrides?: CallOverrides): Promise<string>;
    collectionFee(collection: string, token: string, overrides?: CallOverrides): Promise<FeeConfigStructOutput>;
    collectionInfo(collection: string, overrides?: CallOverrides): Promise<FloorGetter.CollectionInfoStructOutput>;
    collectionProxy(proxy: string, overrides?: CallOverrides): Promise<string>;
    fragmentTokenOf(collection: string, overrides?: CallOverrides): Promise<string>;
    getAuction(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
        BigNumber,
        string,
        BigNumber,
        BigNumber,
        string,
        string,
        BigNumber,
        number,
        FeesStructOutput
    ] & {
        endTime: BigNumber;
        bidToken: string;
        minimumBid: BigNumber;
        lastBidAmount: BigNumber;
        lastBidder: string;
        triggerAddress: string;
        activityId: BigNumber;
        typ: number;
        fees: FeesStructOutput;
    }>;
    getFreeNftIds(collection: string, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<BigNumber[]>;
    getPrivateOffer(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
        BigNumber,
        string,
        BigNumber,
        string,
        string,
        BigNumber,
        FeesStructOutput
    ] & {
        endTime: BigNumber;
        token: string;
        price: BigNumber;
        owner: string;
        buyer: string;
        activityId: BigNumber;
        fees: FeesStructOutput;
    }>;
    getRaffle(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
        number,
        number,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        number,
        boolean,
        BigNumber,
        FeesStructOutput
    ] & {
        endTime: number;
        maxTickets: number;
        token: string;
        ticketPrice: BigNumber;
        collectedFund: BigNumber;
        activityId: BigNumber;
        owner: string;
        ticketSold: number;
        isSettling: boolean;
        ticketsArrLen: BigNumber;
        fees: FeesStructOutput;
    }>;
    getRaffleTicketRecords(collection: string, nftId: BigNumberish, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<TicketRecordStructOutput[]>;
    getSafeBox(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<SafeBoxStructOutput>;
    multicall(data: BytesLike[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    supportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;
    tokenBalance(user: string, token: string, overrides?: CallOverrides): Promise<BigNumber>;
    userAccount(user: string, overrides?: CallOverrides): Promise<[
        BigNumber,
        string,
        number,
        BigNumber[],
        BigNumber,
        number,
        number
    ] & {
        minMaintCredit: BigNumber;
        firstCollection: string;
        minMaintVipLevel: number;
        vipKeyCnts: BigNumber[];
        lockedCredit: BigNumber;
        lastQuotaPeriodTs: number;
        safeboxQuotaUsed: number;
    }>;
    userCollection(user: string, collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
        BigNumber,
        string,
        number,
        number,
        number,
        SafeBoxKeyStructOutput
    ] & {
        totalLockingCredit: BigNumber;
        next: string;
        keyCnt: number;
        vaultContQuota: number;
        lastVaultActiveTs: number;
        key: SafeBoxKeyStructOutput;
    }>;
    callStatic: {
        _flooring(overrides?: CallOverrides): Promise<string>;
        collectionFee(collection: string, token: string, overrides?: CallOverrides): Promise<FeeConfigStructOutput>;
        collectionInfo(collection: string, overrides?: CallOverrides): Promise<FloorGetter.CollectionInfoStructOutput>;
        collectionProxy(proxy: string, overrides?: CallOverrides): Promise<string>;
        fragmentTokenOf(collection: string, overrides?: CallOverrides): Promise<string>;
        getAuction(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            BigNumber,
            BigNumber,
            string,
            string,
            BigNumber,
            number,
            FeesStructOutput
        ] & {
            endTime: BigNumber;
            bidToken: string;
            minimumBid: BigNumber;
            lastBidAmount: BigNumber;
            lastBidder: string;
            triggerAddress: string;
            activityId: BigNumber;
            typ: number;
            fees: FeesStructOutput;
        }>;
        getFreeNftIds(collection: string, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<BigNumber[]>;
        getPrivateOffer(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            BigNumber,
            string,
            string,
            BigNumber,
            FeesStructOutput
        ] & {
            endTime: BigNumber;
            token: string;
            price: BigNumber;
            owner: string;
            buyer: string;
            activityId: BigNumber;
            fees: FeesStructOutput;
        }>;
        getRaffle(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            number,
            number,
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            string,
            number,
            boolean,
            BigNumber,
            FeesStructOutput
        ] & {
            endTime: number;
            maxTickets: number;
            token: string;
            ticketPrice: BigNumber;
            collectedFund: BigNumber;
            activityId: BigNumber;
            owner: string;
            ticketSold: number;
            isSettling: boolean;
            ticketsArrLen: BigNumber;
            fees: FeesStructOutput;
        }>;
        getRaffleTicketRecords(collection: string, nftId: BigNumberish, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<TicketRecordStructOutput[]>;
        getSafeBox(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<SafeBoxStructOutput>;
        multicall(data: BytesLike[], overrides?: CallOverrides): Promise<string[]>;
        supportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;
        tokenBalance(user: string, token: string, overrides?: CallOverrides): Promise<BigNumber>;
        userAccount(user: string, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            number,
            BigNumber[],
            BigNumber,
            number,
            number
        ] & {
            minMaintCredit: BigNumber;
            firstCollection: string;
            minMaintVipLevel: number;
            vipKeyCnts: BigNumber[];
            lockedCredit: BigNumber;
            lastQuotaPeriodTs: number;
            safeboxQuotaUsed: number;
        }>;
        userCollection(user: string, collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<[
            BigNumber,
            string,
            number,
            number,
            number,
            SafeBoxKeyStructOutput
        ] & {
            totalLockingCredit: BigNumber;
            next: string;
            keyCnt: number;
            vaultContQuota: number;
            lastVaultActiveTs: number;
            key: SafeBoxKeyStructOutput;
        }>;
    };
    filters: {};
    estimateGas: {
        _flooring(overrides?: CallOverrides): Promise<BigNumber>;
        collectionFee(collection: string, token: string, overrides?: CallOverrides): Promise<BigNumber>;
        collectionInfo(collection: string, overrides?: CallOverrides): Promise<BigNumber>;
        collectionProxy(proxy: string, overrides?: CallOverrides): Promise<BigNumber>;
        fragmentTokenOf(collection: string, overrides?: CallOverrides): Promise<BigNumber>;
        getAuction(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getFreeNftIds(collection: string, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getPrivateOffer(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getRaffle(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getRaffleTicketRecords(collection: string, nftId: BigNumberish, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getSafeBox(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        supportedToken(token: string, overrides?: CallOverrides): Promise<BigNumber>;
        tokenBalance(user: string, token: string, overrides?: CallOverrides): Promise<BigNumber>;
        userAccount(user: string, overrides?: CallOverrides): Promise<BigNumber>;
        userCollection(user: string, collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        _flooring(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collectionFee(collection: string, token: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collectionInfo(collection: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collectionProxy(proxy: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        fragmentTokenOf(collection: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAuction(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getFreeNftIds(collection: string, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPrivateOffer(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRaffle(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRaffleTicketRecords(collection: string, nftId: BigNumberish, startIdx: BigNumberish, size: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSafeBox(collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(data: BytesLike[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        supportedToken(token: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenBalance(user: string, token: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        userAccount(user: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        userCollection(user: string, collection: string, nftId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
