{
    "version": "0.1.0",
    "name": "solmash_whitelist",
    "instructions": [
        {
            "name": "initAuction",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "auctionVaultTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitAuctionParams"
                    }
                }
            ]
        },
        {
            "name": "addToken",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "creatorAuctionTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVaultTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "withdrawFunds",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVaultTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "creatorAuctionTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "creatorBidTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionBidTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "bidToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "auctionToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "withdrawSol",
                    "type": "bool"
                }
            ]
        },
        {
            "name": "whitelist",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "buyerPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "whitelistUser",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "preSaleBuyUsingSol",
            "accounts": [
                {
                    "name": "buyer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "buyerPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "claimTokens",
            "accounts": [
                {
                    "name": "buyer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "buyerPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyerAuctionTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionVaultTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "auctionToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        },
        {
            "name": "changeTime",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "auction",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "newStartTime",
                    "type": "i64"
                },
                {
                    "name": "newEndTime",
                    "type": "i64"
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "Auction",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "owner",
                        "type": "publicKey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "bidToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "auctionToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "enabled",
                        "type": "bool"
                    },
                    {
                        "name": "preSaleStartTime",
                        "type": "i64"
                    },
                    {
                        "name": "preSaleEndTime",
                        "type": "i64"
                    },
                    {
                        "name": "claimTime",
                        "type": "i64"
                    },
                    {
                        "name": "ticketsInPool",
                        "type": "u64"
                    },
                    {
                        "name": "remainingTickets",
                        "type": "u64"
                    },
                    {
                        "name": "ticketsClaimed",
                        "type": "u64"
                    },
                    {
                        "name": "tokenQuantityPerTicket",
                        "type": "u64"
                    },
                    {
                        "name": "ticketPriceInSol",
                        "type": "u64"
                    },
                    {
                        "name": "ticketPriceInBid",
                        "type": "u64"
                    },
                    {
                        "name": "accumulatedSol",
                        "type": "u64"
                    },
                    {
                        "name": "accumulatedBid",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Buyer",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "auctionAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "buyerAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "participated",
                        "type": "bool"
                    },
                    {
                        "name": "claimed",
                        "type": "bool"
                    },
                    {
                        "name": "whitelisted",
                        "type": "bool"
                    },
                    {
                        "name": "blacklisted",
                        "type": "bool"
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "InitAuctionParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "bidToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "auctionToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "enabled",
                        "type": "bool"
                    },
                    {
                        "name": "preSaleStartTime",
                        "type": "i64"
                    },
                    {
                        "name": "preSaleEndTime",
                        "type": "i64"
                    },
                    {
                        "name": "claimTime",
                        "type": "i64"
                    },
                    {
                        "name": "ticketsInPool",
                        "type": "u64"
                    },
                    {
                        "name": "tokenQuantityPerTicket",
                        "type": "u64"
                    },
                    {
                        "name": "ticketPriceInSol",
                        "type": "u64"
                    },
                    {
                        "name": "ticketPriceInBid",
                        "type": "u64"
                    }
                ]
            }
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "InvalidAuction",
            "msg": "Invalid Auction"
        },
        {
            "code": 6001,
            "name": "InvalidToken",
            "msg": "Invalid Token"
        },
        {
            "code": 6002,
            "name": "InsufficientTokens",
            "msg": "Insufficient Token"
        },
        {
            "code": 6003,
            "name": "Unauthorized",
            "msg": "Unauthorized"
        },
        {
            "code": 6004,
            "name": "AuctionNotEnded",
            "msg": "Auction Not Ended"
        },
        {
            "code": 6005,
            "name": "AuctionDisabled",
            "msg": "Auction Disabled"
        },
        {
            "code": 6006,
            "name": "NonNativeAuction",
            "msg": "Non Native Auction"
        },
        {
            "code": 6007,
            "name": "NonSplAuction",
            "msg": "Non SPL Auction"
        },
        {
            "code": 6008,
            "name": "NotWhitelisted",
            "msg": "Not Whitelisted"
        },
        {
            "code": 6009,
            "name": "ExceedsLimit",
            "msg": "Exceeds Buying Limit"
        },
        {
            "code": 6010,
            "name": "PreSaleNotEnabled",
            "msg": "Pre Sale Not Enabled"
        },
        {
            "code": 6011,
            "name": "InvalidPresaleTime",
            "msg": "Invalid Pre Sale Time "
        },
        {
            "code": 6012,
            "name": "PreSaleAlreadyStarted",
            "msg": "Pre Sale Already Started"
        },
        {
            "code": 6013,
            "name": "PreSaleNotEnded",
            "msg": "Pre Sale Not Ended"
        },
        {
            "code": 6014,
            "name": "InvalidTokenAmount",
            "msg": "Invalid Token Amount"
        },
        {
            "code": 6015,
            "name": "InvalidSolAmount",
            "msg": "Invalid Sol Amount"
        },
        {
            "code": 6016,
            "name": "InvalidAuctionTimes",
            "msg": "Invalid Auction Times"
        },
        {
            "code": 6017,
            "name": "AlreadyParticipated",
            "msg": "User Already Participated"
        },
        {
            "code": 6018,
            "name": "InvalidSolFor1ticket",
            "msg": "Invalid Sol for 1 ticket"
        },
        {
            "code": 6019,
            "name": "AlreadyClaimed",
            "msg": "Already Claimed"
        },
        {
            "code": 6020,
            "name": "NotParticipated",
            "msg": "Not Participated"
        },
        {
            "code": 6021,
            "name": "InvalidBidToken",
            "msg": "Invalid Bid Token"
        },
        {
            "code": 6022,
            "name": "InvalidClaimTime",
            "msg": "Invalid Claim Time"
        }
    ]
}
