export type Auction = {
  "version": "0.1.0",
  "name": "auction",
  "instructions": [
    {
      "name": "initialize",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializeAccount",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateApplicationState",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "feeAccount",
          "type": "publicKey"
        }
      ]
    },
    {
      "name": "createAuctionManager",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "createListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftOwner",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "timeExtension",
          "type": "u64"
        },
        {
          "name": "startingPrice",
          "type": "u128"
        },
        {
          "name": "startTime",
          "type": "u64"
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          }
        },
        {
          "name": "minimumBidThreshold",
          "type": "u128"
        }
      ]
    },
    {
      "name": "bidOnListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u128"
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "originalNftHolder",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "cancelledAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "increaseBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newAmount",
          "type": "u128"
        },
        {
          "name": "updatedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cancellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bidReceipts",
          "type": {
            "vec": {
              "defined": "ReceiptInfo"
            }
          }
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "refundBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userRefundAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "refundBidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "refundedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "executeSale",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "winnerNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "createBidRequest",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u128"
        },
        {
          "name": "createdAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "acceptBidRequest",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "sellerNftTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "buyerNftTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "acceptedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "rejectBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "requesterTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rejectedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cancellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "cancelledAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "increaseBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ownerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newAmount",
          "type": "u128"
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "makeBidRequestPublic",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "creatorUserdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderUserdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "bidder",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidRequestTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "creatorNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "creatorTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "createdAt",
          "type": "u64"
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          }
        },
        {
          "name": "timeExtension",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "applicationState",
      "docs": [
        "* The different states we need to keep track of are the \n * \n * 1. General Application State\n * 2. Auction Manager State\n * 3. Listing State\n * 4. BidReceipt State\n *"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listingAuthority",
            "type": "publicKey"
          },
          {
            "name": "feeAccount",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "auctionManager",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "listingAuthority",
            "type": "publicKey"
          },
          {
            "name": "updateAuthority",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "userData",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listings",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "bids",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "bidRequests",
            "type": {
              "vec": "publicKey"
            }
          }
        ]
      }
    },
    {
      "name": "listing",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "auctionManager",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "tokenMint",
            "type": "publicKey"
          },
          {
            "name": "startingPrice",
            "type": "u128"
          },
          {
            "name": "startTime",
            "type": "u64"
          },
          {
            "name": "endTime",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "highestBidReceipt",
            "type": {
              "option": "publicKey"
            }
          },
          {
            "name": "bidReceipts",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "highestBidAmount",
            "type": {
              "option": "u128"
            }
          },
          {
            "name": "nftEscrow",
            "type": "publicKey"
          },
          {
            "name": "auctionProceedsWallet",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "rewardPercentage",
            "type": "u8"
          },
          {
            "name": "timeExtension",
            "type": "u64"
          },
          {
            "name": "state",
            "type": {
              "defined": "ListingState"
            }
          },
          {
            "name": "cancelledAt",
            "type": {
              "option": "u64"
            }
          }
        ]
      }
    },
    {
      "name": "bidReceipt",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listing",
            "type": "publicKey"
          },
          {
            "name": "bidder",
            "type": "publicKey"
          },
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "createdAt",
            "type": "u64"
          },
          {
            "name": "updatedAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "state",
            "type": {
              "defined": "BidReceiptState"
            }
          },
          {
            "name": "cancelledAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "refundedAt",
            "type": {
              "option": "u64"
            }
          }
        ]
      }
    },
    {
      "name": "bidRequest",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "createdAt",
            "type": "u64"
          },
          {
            "name": "updatedAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "status",
            "type": {
              "defined": "BidRequestStatus"
            }
          },
          {
            "name": "owner",
            "type": "publicKey"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "ReceiptInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "key",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "ListingState",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Active"
          },
          {
            "name": "Sold"
          },
          {
            "name": "Cancelled"
          }
        ]
      }
    },
    {
      "name": "BidReceiptState",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Executed"
          },
          {
            "name": "Cancelled"
          },
          {
            "name": "Active"
          },
          {
            "name": "Refunded"
          }
        ]
      }
    },
    {
      "name": "BidRequestStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Accepted"
          },
          {
            "name": "Rejected"
          },
          {
            "name": "Pending"
          },
          {
            "name": "Cancelled"
          },
          {
            "name": "Public"
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "AuctionManagerCreated",
      "fields": [
        {
          "name": "auctionManager",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        }
      ]
    },
    {
      "name": "AuctionListingCreated",
      "fields": [
        {
          "name": "auctionManager",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tokenMint",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BidOnListingCreated",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidder",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "receipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "ListingSold",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "buyer",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "ListingCancelled",
      "fields": [
        {
          "name": "by",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "cancelledAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidCancelled",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "refundedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidIncreased",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidder",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "oldAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "newAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "updatedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidExecuted",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRefunded",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "refundedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestCreated",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "creator",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestAccepted",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "acceptedAt",
          "type": "u64",
          "index": false
        },
        {
          "name": "newOwner",
          "type": "publicKey",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestRejected",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "rejectedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestCancelled",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "cancelledAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestMadePublic",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestIncreased",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "oldAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "newAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "increasedAt",
          "type": "u64",
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "AuctionNotActive",
      "msg": "Auction is not active"
    },
    {
      "code": 6001,
      "name": "InvalidListingAuthority",
      "msg": "Invalid listing authority"
    },
    {
      "code": 6002,
      "name": "UnauthorizedAuctionManager",
      "msg": "Auction manager is not authorized"
    },
    {
      "code": 6003,
      "name": "ListingSold",
      "msg": "Listing has already been sold"
    },
    {
      "code": 6004,
      "name": "InvalidBidAmount",
      "msg": "Invalid bid amount"
    },
    {
      "code": 6005,
      "name": "BidAmountLessThanStartingPrice",
      "msg": "Bid amount is less than the starting price"
    },
    {
      "code": 6006,
      "name": "BidAmountLessThanHighestBid",
      "msg": "Bid amount is less than the highest bid"
    },
    {
      "code": 6007,
      "name": "OneTimeSaleListing",
      "msg": "Listing is a one-time sale"
    },
    {
      "code": 6008,
      "name": "DuplicateListingState",
      "msg": "Duplicate listing state"
    },
    {
      "code": 6009,
      "name": "BidAlreadyCancelled",
      "msg": "Bid already cancelled"
    },
    {
      "code": 6010,
      "name": "BidAlreadyExeceuted",
      "msg": "Bid already executed"
    },
    {
      "code": 6011,
      "name": "UnauthorizedListingCanceller",
      "msg": "You are not authorized to cancel this listing"
    },
    {
      "code": 6012,
      "name": "ListingAlreadyCancelled",
      "msg": "Listing is alredy cancelled"
    },
    {
      "code": 6013,
      "name": "CannotCancelListing",
      "msg": "Cannot cancel listing that already has active bids"
    },
    {
      "code": 6014,
      "name": "InvalidBidReceipt",
      "msg": "This receipt does not belong to this listing"
    },
    {
      "code": 6015,
      "name": "NewBidNotGreaterThanOldBid",
      "msg": "New bid is lesser than the old bid"
    },
    {
      "code": 6016,
      "name": "UserNotAuthorized",
      "msg": "User is not authorized to take this action"
    },
    {
      "code": 6017,
      "name": "MintMismatch",
      "msg": "Token mint mismatch"
    },
    {
      "code": 6018,
      "name": "FeeAccountNotAuthorized",
      "msg": "Fee account not authorized"
    },
    {
      "code": 6019,
      "name": "ListingHasNoBids",
      "msg": "Listing has no bids"
    },
    {
      "code": 6020,
      "name": "ListingNotActive",
      "msg": "Listing is not active"
    },
    {
      "code": 6021,
      "name": "InvalidAuctionWinner",
      "msg": "Invalid auction winner"
    },
    {
      "code": 6022,
      "name": "SaleNotEnded",
      "msg": "Listing sale has not ended"
    },
    {
      "code": 6023,
      "name": "BidRefunded",
      "msg": "Bid has been refunded"
    },
    {
      "code": 6024,
      "name": "BidNotActive",
      "msg": "Bid is not active"
    },
    {
      "code": 6025,
      "name": "StartingPriceLessThanMinimumBidThreshold",
      "msg": "Starting price is less than the minimum bid threshold"
    },
    {
      "code": 6026,
      "name": "BidRequestActionInvalid",
      "msg": "Bid request action invalid"
    }
  ]
};

export const IDL: Auction = {
  "version": "0.1.0",
  "name": "auction",
  "instructions": [
    {
      "name": "initialize",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializeAccount",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateApplicationState",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "feeAccount",
          "type": "publicKey"
        }
      ]
    },
    {
      "name": "createAuctionManager",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "createListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftOwner",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "timeExtension",
          "type": "u64"
        },
        {
          "name": "startingPrice",
          "type": "u128"
        },
        {
          "name": "startTime",
          "type": "u64"
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          }
        },
        {
          "name": "minimumBidThreshold",
          "type": "u128"
        }
      ]
    },
    {
      "name": "bidOnListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u128"
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelListing",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "originalNftHolder",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "cancelledAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "increaseBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newAmount",
          "type": "u128"
        },
        {
          "name": "updatedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cancellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bidReceipts",
          "type": {
            "vec": {
              "defined": "ReceiptInfo"
            }
          }
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "refundBid",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userRefundAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "refundBidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "refundedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "executeSale",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "winnerNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftEscrow",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "proceedsWallet",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "createBidRequest",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nftOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u128"
        },
        {
          "name": "createdAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "acceptBidRequest",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "sellerNftTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "buyerNftTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "acceptedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "rejectBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "requesterTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rejectedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "cancelBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "cancellerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "cancelledAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "increaseBidRequest",
      "accounts": [
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ownerTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newAmount",
          "type": "u128"
        },
        {
          "name": "submittedAt",
          "type": "u64"
        }
      ]
    },
    {
      "name": "makeBidRequestPublic",
      "accounts": [
        {
          "name": "applicationState",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "creatorUserdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidderUserdata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "bidder",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "listing",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "auctionManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidReceipt",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "bidRequest",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "bidRequestTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "escrowNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "creatorNftAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "creatorTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nft",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "nftTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "createdAt",
          "type": "u64"
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          }
        },
        {
          "name": "timeExtension",
          "type": "u64"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "applicationState",
      "docs": [
        "* The different states we need to keep track of are the \n * \n * 1. General Application State\n * 2. Auction Manager State\n * 3. Listing State\n * 4. BidReceipt State\n *"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listingAuthority",
            "type": "publicKey"
          },
          {
            "name": "feeAccount",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "auctionManager",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "listingAuthority",
            "type": "publicKey"
          },
          {
            "name": "updateAuthority",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "userData",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listings",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "bids",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "bidRequests",
            "type": {
              "vec": "publicKey"
            }
          }
        ]
      }
    },
    {
      "name": "listing",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "auctionManager",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "tokenMint",
            "type": "publicKey"
          },
          {
            "name": "startingPrice",
            "type": "u128"
          },
          {
            "name": "startTime",
            "type": "u64"
          },
          {
            "name": "endTime",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "highestBidReceipt",
            "type": {
              "option": "publicKey"
            }
          },
          {
            "name": "bidReceipts",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "highestBidAmount",
            "type": {
              "option": "u128"
            }
          },
          {
            "name": "nftEscrow",
            "type": "publicKey"
          },
          {
            "name": "auctionProceedsWallet",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "rewardPercentage",
            "type": "u8"
          },
          {
            "name": "timeExtension",
            "type": "u64"
          },
          {
            "name": "state",
            "type": {
              "defined": "ListingState"
            }
          },
          {
            "name": "cancelledAt",
            "type": {
              "option": "u64"
            }
          }
        ]
      }
    },
    {
      "name": "bidReceipt",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "listing",
            "type": "publicKey"
          },
          {
            "name": "bidder",
            "type": "publicKey"
          },
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "createdAt",
            "type": "u64"
          },
          {
            "name": "updatedAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "state",
            "type": {
              "defined": "BidReceiptState"
            }
          },
          {
            "name": "cancelledAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "refundedAt",
            "type": {
              "option": "u64"
            }
          }
        ]
      }
    },
    {
      "name": "bidRequest",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "key",
            "type": "publicKey"
          },
          {
            "name": "nft",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "createdAt",
            "type": "u64"
          },
          {
            "name": "updatedAt",
            "type": {
              "option": "u64"
            }
          },
          {
            "name": "status",
            "type": {
              "defined": "BidRequestStatus"
            }
          },
          {
            "name": "owner",
            "type": "publicKey"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "ReceiptInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "amount",
            "type": "u128"
          },
          {
            "name": "key",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "ListingState",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Active"
          },
          {
            "name": "Sold"
          },
          {
            "name": "Cancelled"
          }
        ]
      }
    },
    {
      "name": "BidReceiptState",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Executed"
          },
          {
            "name": "Cancelled"
          },
          {
            "name": "Active"
          },
          {
            "name": "Refunded"
          }
        ]
      }
    },
    {
      "name": "BidRequestStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Accepted"
          },
          {
            "name": "Rejected"
          },
          {
            "name": "Pending"
          },
          {
            "name": "Cancelled"
          },
          {
            "name": "Public"
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "AuctionManagerCreated",
      "fields": [
        {
          "name": "auctionManager",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        }
      ]
    },
    {
      "name": "AuctionListingCreated",
      "fields": [
        {
          "name": "auctionManager",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tokenMint",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "endTime",
          "type": {
            "option": "u64"
          },
          "index": false
        }
      ]
    },
    {
      "name": "BidOnListingCreated",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidder",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "receipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "ListingSold",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "buyer",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "ListingCancelled",
      "fields": [
        {
          "name": "by",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "cancelledAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidCancelled",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "refundedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidIncreased",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidder",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "oldAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "newAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "updatedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidExecuted",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRefunded",
      "fields": [
        {
          "name": "bidReceipt",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "receiver",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "amount",
          "type": "u128",
          "index": false
        },
        {
          "name": "refundedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestCreated",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "creator",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestAccepted",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "acceptedAt",
          "type": "u64",
          "index": false
        },
        {
          "name": "newOwner",
          "type": "publicKey",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestRejected",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "rejectedAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestCancelled",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "cancelledAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestMadePublic",
      "fields": [
        {
          "name": "listing",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "createdAt",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "BidRequestIncreased",
      "fields": [
        {
          "name": "bidRequest",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "nft",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "oldAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "newAmount",
          "type": "u128",
          "index": false
        },
        {
          "name": "increasedAt",
          "type": "u64",
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "AuctionNotActive",
      "msg": "Auction is not active"
    },
    {
      "code": 6001,
      "name": "InvalidListingAuthority",
      "msg": "Invalid listing authority"
    },
    {
      "code": 6002,
      "name": "UnauthorizedAuctionManager",
      "msg": "Auction manager is not authorized"
    },
    {
      "code": 6003,
      "name": "ListingSold",
      "msg": "Listing has already been sold"
    },
    {
      "code": 6004,
      "name": "InvalidBidAmount",
      "msg": "Invalid bid amount"
    },
    {
      "code": 6005,
      "name": "BidAmountLessThanStartingPrice",
      "msg": "Bid amount is less than the starting price"
    },
    {
      "code": 6006,
      "name": "BidAmountLessThanHighestBid",
      "msg": "Bid amount is less than the highest bid"
    },
    {
      "code": 6007,
      "name": "OneTimeSaleListing",
      "msg": "Listing is a one-time sale"
    },
    {
      "code": 6008,
      "name": "DuplicateListingState",
      "msg": "Duplicate listing state"
    },
    {
      "code": 6009,
      "name": "BidAlreadyCancelled",
      "msg": "Bid already cancelled"
    },
    {
      "code": 6010,
      "name": "BidAlreadyExeceuted",
      "msg": "Bid already executed"
    },
    {
      "code": 6011,
      "name": "UnauthorizedListingCanceller",
      "msg": "You are not authorized to cancel this listing"
    },
    {
      "code": 6012,
      "name": "ListingAlreadyCancelled",
      "msg": "Listing is alredy cancelled"
    },
    {
      "code": 6013,
      "name": "CannotCancelListing",
      "msg": "Cannot cancel listing that already has active bids"
    },
    {
      "code": 6014,
      "name": "InvalidBidReceipt",
      "msg": "This receipt does not belong to this listing"
    },
    {
      "code": 6015,
      "name": "NewBidNotGreaterThanOldBid",
      "msg": "New bid is lesser than the old bid"
    },
    {
      "code": 6016,
      "name": "UserNotAuthorized",
      "msg": "User is not authorized to take this action"
    },
    {
      "code": 6017,
      "name": "MintMismatch",
      "msg": "Token mint mismatch"
    },
    {
      "code": 6018,
      "name": "FeeAccountNotAuthorized",
      "msg": "Fee account not authorized"
    },
    {
      "code": 6019,
      "name": "ListingHasNoBids",
      "msg": "Listing has no bids"
    },
    {
      "code": 6020,
      "name": "ListingNotActive",
      "msg": "Listing is not active"
    },
    {
      "code": 6021,
      "name": "InvalidAuctionWinner",
      "msg": "Invalid auction winner"
    },
    {
      "code": 6022,
      "name": "SaleNotEnded",
      "msg": "Listing sale has not ended"
    },
    {
      "code": 6023,
      "name": "BidRefunded",
      "msg": "Bid has been refunded"
    },
    {
      "code": 6024,
      "name": "BidNotActive",
      "msg": "Bid is not active"
    },
    {
      "code": 6025,
      "name": "StartingPriceLessThanMinimumBidThreshold",
      "msg": "Starting price is less than the minimum bid threshold"
    },
    {
      "code": 6026,
      "name": "BidRequestActionInvalid",
      "msg": "Bid request action invalid"
    }
  ]
};
