export declare type Auction = {
    version: '0.1.0';
    name: 'auction';
    instructions: [
        {
            name: 'initializeAuction';
            accounts: [
                {
                    name: 'auction';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [];
            returns: undefined;
        },
        {
            name: 'addLot';
            accounts: [
                {
                    name: 'auction';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'lot';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftsOwner';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'nftUserTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'editionInfo';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'metadataInfo';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'ownerTokenRecord';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'destTokenRecord';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'instructions';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'authorizationRulesProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'vaultTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'associatedTokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: 'authorizationData';
                    type: {
                        option: {
                            defined: 'AuthorizationDataLocal';
                        };
                    };
                }
            ];
            returns: undefined;
        },
        {
            name: 'startAuction';
            accounts: [
                {
                    name: 'auction';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: 'startAt';
                    type: 'u64';
                }
            ];
            returns: undefined;
        },
        {
            name: 'placeBid';
            accounts: [
                {
                    name: 'auction';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'fundsHadesVault';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'currentWinner';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'lot';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'userTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'vaultTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'currentWinnerTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'associatedTokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: 'bid';
                    type: 'u64';
                }
            ];
            returns: undefined;
        },
        {
            name: 'claimNft';
            accounts: [
                {
                    name: 'auction';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'lot';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftsOwner';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'editionInfo';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'metadataInfo';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'ownerTokenRecord';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'destTokenRecord';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'instructions';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'authorizationRulesProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'nftUserTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'vaultTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'associatedTokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: 'authorizationData';
                    type: {
                        option: {
                            defined: 'AuthorizationDataLocal';
                        };
                    };
                }
            ];
            returns: undefined;
        },
        {
            name: 'closeLotAccount';
            accounts: [
                {
                    name: 'auction';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'lot';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'nftMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [];
            returns: undefined;
        },
        {
            name: 'auctionProfitClaim';
            accounts: [
                {
                    name: 'auction';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'user';
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: 'fundsHadesVault';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenMint';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'userTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'vaultTokenAccount';
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: 'tokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'associatedTokenProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'systemProgram';
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: 'rent';
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [];
            returns: undefined;
        }
    ];
    accounts: [
        {
            name: 'auctionLot';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'auction';
                        type: 'publicKey';
                    },
                    {
                        name: 'lotNumber';
                        type: 'u16';
                    },
                    {
                        name: 'nftMint';
                        type: 'publicKey';
                    },
                    {
                        name: 'currentBid';
                        type: 'u64';
                    },
                    {
                        name: 'currentWinner';
                        type: 'publicKey';
                    },
                    {
                        name: 'winnerClaimed';
                        type: 'bool';
                    }
                ];
            };
        },
        {
            name: 'auction';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'auctionAuthority';
                        type: 'publicKey';
                    },
                    {
                        name: 'auctionState';
                        type: {
                            defined: 'AuctionState';
                        };
                    },
                    {
                        name: 'totalBids';
                        type: 'u64';
                    },
                    {
                        name: 'lotsAmount';
                        type: 'u16';
                    },
                    {
                        name: 'endTime';
                        type: 'u64';
                    }
                ];
            };
        }
    ];
    types: [
        {
            name: 'AuthorizationDataLocal';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'payload';
                        type: {
                            vec: {
                                defined: 'TaggedPayload';
                            };
                        };
                    }
                ];
            };
        },
        {
            name: 'TaggedPayload';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'name';
                        type: 'string';
                    },
                    {
                        name: 'payload';
                        type: {
                            defined: 'PayloadTypeLocal';
                        };
                    }
                ];
            };
        },
        {
            name: 'SeedsVecLocal';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'seeds';
                        type: {
                            vec: 'bytes';
                        };
                    }
                ];
            };
        },
        {
            name: 'ProofInfoLocal';
            type: {
                kind: 'struct';
                fields: [
                    {
                        name: 'proof';
                        type: {
                            vec: {
                                array: ['u8', 32];
                            };
                        };
                    }
                ];
            };
        },
        {
            name: 'AuctionState';
            type: {
                kind: 'enum';
                variants: [
                    {
                        name: 'Initializing';
                    },
                    {
                        name: 'Active';
                    }
                ];
            };
        },
        {
            name: 'PayloadTypeLocal';
            type: {
                kind: 'enum';
                variants: [
                    {
                        name: 'Pubkey';
                        fields: ['publicKey'];
                    },
                    {
                        name: 'Seeds';
                        fields: [
                            {
                                defined: 'SeedsVecLocal';
                            }
                        ];
                    },
                    {
                        name: 'MerkleProof';
                        fields: [
                            {
                                defined: 'ProofInfoLocal';
                            }
                        ];
                    },
                    {
                        name: 'Number';
                        fields: ['u64'];
                    }
                ];
            };
        }
    ];
    errors: [
        {
            code: 6000;
            name: 'OnlyAdminCanInitializeAuction';
            msg: 'OnlyAdminCanInitializeAuction';
        },
        {
            code: 6001;
            name: 'OnlyAuctionAuthorityCanAddLots';
            msg: 'OnlyAuctionAuthorityCanAddLots';
        },
        {
            code: 6002;
            name: 'MaxLotsAmountExceeded';
            msg: 'MaxLotsAmountExceeded';
        },
        {
            code: 6003;
            name: 'CanAddLotsOnlyToInitializingAuction';
            msg: 'CanAddLotsOnlyToInitializingAuction';
        },
        {
            code: 6004;
            name: 'OnlyAuctionAuthorityCanStartAuction';
            msg: 'OnlyAuctionAuthorityCanStartAuction';
        },
        {
            code: 6005;
            name: 'CanBidOnlyToActiveAuction';
            msg: 'CanBidOnlyToActiveAuction';
        },
        {
            code: 6006;
            name: 'AuctionAlreadyFinished';
            msg: 'AuctionAlreadyFinished';
        },
        {
            code: 6007;
            name: 'TooSmallBid';
            msg: 'TooSmallBid';
        },
        {
            code: 6008;
            name: 'IncorrectCurrentWinner';
            msg: 'IncorrectCurrentWinner';
        },
        {
            code: 6009;
            name: 'CurrentWinnerCantBid';
            msg: 'CurrentWinnerCantBid';
        },
        {
            code: 6010;
            name: 'AuctionNotYetFinished';
            msg: 'AuctionNotYetFinished';
        },
        {
            code: 6011;
            name: 'AuctionNotStarted';
            msg: 'AuctionNotStarted';
        },
        {
            code: 6012;
            name: 'OnlyWinnerCanClaimNft';
            msg: 'OnlyWinnerCanClaimNft';
        },
        {
            code: 6013;
            name: 'OnlyAuctionAuthorityCanCloseLots';
            msg: 'OnlyAuctionAuthorityCanCloseLots';
        },
        {
            code: 6014;
            name: 'CanCloseOnlyClaimedLots';
            msg: 'CanCloseOnlyClaimedLots';
        },
        {
            code: 6015;
            name: 'OnlyAuctionAuthorityCanClaimProfit';
            msg: 'OnlyAuctionAuthorityCanClaimProfit';
        },
        {
            code: 6016;
            name: 'InvalidHadesMintAddress';
            msg: 'InvalidHadesMintAddress';
        },
        {
            code: 6017;
            name: 'AuctionStartTimeTooLow';
            msg: 'AuctionStartTimeTooLow';
        },
        {
            code: 6018;
            name: 'BadRuleSet';
            msg: 'BadRuleSet';
        }
    ];
};
export declare const IDL: Auction;
