UNPKG

@deserialize/auction-sdk

Version:

An SDK for Auction on SVMs

1 lines 78.8 kB
var e=require("@solana/web3.js"),r=require("@coral-xyz/anchor"),t=require("@solana/spl-token"),n=require("@project-serum/anchor");function o(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}}),r.default=e,r}var i,a=/*#__PURE__*/o(r),s=/*#__PURE__*/o(n);function c(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function u(e){var r,t,n,o=2;for("undefined"!=typeof Symbol&&(t=Symbol.asyncIterator,n=Symbol.iterator);o--;){if(t&&null!=(r=e[t]))return r.call(e);if(n&&null!=(r=e[n]))return new m(r.call(e));t="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function m(e){function r(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:r}})}return m=function(e){this.s=e,this.n=e.next},m.prototype={s:null,n:null,next:function(){return r(this.n.apply(this.s,arguments))},return:function(e){var t=this.s.return;return void 0===t?Promise.resolve({value:e,done:!0}):r(t.apply(this.s,arguments))},throw:function(e){var t=this.s.return;return void 0===t?Promise.reject(e):r(t.apply(this.s,arguments))}},new m(e)}function d(e,r){if(e.hasOwnProperty(r))return!0}function l(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}!function(e){e.Active="active",e.Cancelled="cancelled",e.Refunded="refunded",e.Executed="executed"}(i||(i={}));var f=/*#__PURE__*/function(){function r(e){this.programLoader=void 0,this.programLoader=e}var n=r.prototype;return n.getListingProgram=function(){return new y(this.programLoader)},n.create=function(r,n,o,i){try{var s=this;return Promise.resolve(l(function(){var c=s.getListingProgram();return Promise.resolve(c.get(r)).then(function(r){return Promise.resolve(s.programLoader.program.account.applicationState.fetch(s.programLoader.applicationState)).then(function(c){var u=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer())],m=e.PublicKey.findProgramAddressSync(u,s.programLoader.program.programId)[0],d=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(m.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],l=e.PublicKey.findProgramAddressSync(d,s.programLoader.program.programId),f=l[0],g=l[1];console.log("[*] Listing: ",f),console.log("[*] Listing bump: ",g);var p=[a.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(f.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],h=e.PublicKey.findProgramAddressSync(p,s.programLoader.program.programId),y=h[0],A=h[1];console.log("[*] Bid receipt: ",y),console.log("[*] Bid receipt bump: ",A);var P=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(c.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],v=e.PublicKey.findProgramAddressSync(P,s.programLoader.program.programId),b=v[0],S=v[1];return console.log("[*] Userdata: ",b),console.log("[*] Userdata bump: ",S),Promise.resolve(t.getAssociatedTokenAddress(r.nft,m,!0)).then(function(u){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,r.authority,!0,i)).then(function(d){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,n,!0,i)).then(function(l){return Promise.resolve(t.getAssociatedTokenAddress(r.nft,n,!0)).then(function(g){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,m,!0,i)).then(function(p){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,c.feeAccount,!0,i)).then(function(h){console.log("[*] BIDDER TOKEN account: ",l),console.log("[*] BIDDER NFT account: ",g),console.log("[*] AUCTION MANAGER TOKEN escrow: ",p),console.log("[*] FEE TOKEN account: ",h);var A=[];return Promise.resolve(s.programLoader.connection.getAccountInfo(l)).then(function(P){return Promise.resolve(s.programLoader.connection.getAccountInfo(g)).then(function(v){return Promise.resolve(s.programLoader.connection.getAccountInfo(p)).then(function(S){return Promise.resolve(s.programLoader.connection.getAccountInfo(h)).then(function(M){if(!M){var k=t.createAssociatedTokenAccountInstruction(n,h,c.feeAccount,r.tokenMint,i);A.push(k)}if(!P){var B=t.createAssociatedTokenAccountInstruction(n,l,n,r.tokenMint,i);A.push(B)}if(!v){var w=t.createAssociatedTokenAccountInstruction(n,g,n,r.nft);A.push(w)}if(!S){var L=t.createAssociatedTokenAccountInstruction(n,p,m,r.tokenMint,i);A.push(L)}var T=Math.floor(Date.now()/1e3);return Promise.resolve(s.programLoader.program.methods.bidOnListing(new a.BN(o),new a.BN(T)).accounts({applicationState:s.programLoader.applicationState,userdata:b,bidReceipt:y,user:n,listing:f,nft:r.nft,auctionManager:m,proceedsWallet:d,nftEscrow:u,bidderNftAccount:g,bidderAccount:l,tokenEscrow:p,tokenMint:r.tokenMint,tokenProgram:t.TOKEN_PROGRAM_ID,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeAccount:c.feeAccount,feeTokenAccount:h}).instruction()).then(function(e){return A.push(e),A})})})})})})})})})})})})})},function(e){throw console.error(e),new Error("Failed to create bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},n.createTransaction=function(r,t,n,o){try{var i=this;return Promise.resolve(l(function(){return Promise.resolve(i.create(r,t,n,o)).then(function(r){for(var n,o=new e.Transaction,a=function(e){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,r){if(e){if("string"==typeof e)return c(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?c(e,r):void 0}}(e))){r&&(e=r);var t=0;return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(r);!(n=a()).done;)o.add(n.value);return Promise.resolve(i.programLoader.getRecentBlockHash()).then(function(e){return o.recentBlockhash=e.blockhash,o.feePayer=t,o})})},function(e){throw console.error(e),new Error("Failed to create bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},n.get=function(e){try{var r=this;return Promise.resolve(l(function(){return Promise.resolve(r.programLoader.program.account.bidReceipt.fetch(e))},function(e){throw console.error(e),new Error("Failed to get bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},n.fetchMany=function(e){try{var r=this;return Promise.resolve(l(function(){return Promise.resolve(r.programLoader.program.account.bidReceipt.fetchMultiple(e)).then(function(e){return console.log("[*] Bid receipts: ",JSON.stringify(e,null,4)),e})},function(e){throw console.error(e),new Error("Failed to fetch many bid receipts: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getAll=function(){try{var e=this;return Promise.resolve(l(function(){return Promise.resolve(e.programLoader.program.account.bidReceipt.all())},function(e){throw console.error(e),new Error("Failed to get all bid receipts: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getByState=function(e){try{var r=this;return Promise.resolve(l(function(){return Promise.resolve(r.getAll()).then(function(r){return r.filter(function(r){return r.state===e})})},function(e){throw console.error(e),new Error("Failed to get bid receipts by state: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getUserBidOnListing=function(e,r){try{var t=this;return Promise.resolve(l(function(){var n=t.getListingProgram();return Promise.resolve(n.get(e)).then(function(e){return Promise.resolve(t.fetchMany(e.bidReceipts)).then(function(e){return e.find(function(e){return e.bidder.equals(r)})})})},function(e){throw console.error(e),new Error("Failed to get user bid on listing: "+e.message)}))}catch(e){return Promise.reject(e)}},n.cancel=function(r,n,o){try{var i=this;return Promise.resolve(l(function(){return Promise.resolve(i.get(r)).then(function(r){var s=i.getListingProgram();return Promise.resolve(s.get(r.listing)).then(function(s){if(!r.bidder.equals(n))throw new Error("You cannot cancel another user's bid");return Promise.resolve(i.programLoader.program.account.applicationState.fetch(i.programLoader.applicationState)).then(function(r){var c=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(s.nft.toBuffer()),Uint8Array.from(s.authority.toBuffer())],u=e.PublicKey.findProgramAddressSync(c,i.programLoader.program.programId)[0],m=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(s.nft.toBuffer()),Uint8Array.from(s.authority.toBuffer()),Uint8Array.from(u.toBuffer()),Uint8Array.from(s.tokenMint.toBuffer())],d=e.PublicKey.findProgramAddressSync(m,i.programLoader.program.programId),l=d[0],f=d[1];console.log("[*] Listing: ",l),console.log("[*] Listing bump: ",f);var g=[a.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(l.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(s.tokenMint.toBuffer())],p=e.PublicKey.findProgramAddressSync(g,i.programLoader.program.programId),h=p[0],y=p[1];console.log("[*] Bid receipt: ",h),console.log("[*] Bid receipt bump: ",y);var A=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(r.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],P=e.PublicKey.findProgramAddressSync(A,i.programLoader.program.programId),v=P[0],b=P[1];return console.log("[*] Userdata: ",v),console.log("[*] Userdata bump: ",b),Promise.resolve(t.getAssociatedTokenAddress(s.nft,u,!0)).then(function(c){return Promise.resolve(t.getAssociatedTokenAddress(s.nft,s.authority,!0)).then(function(m){return console.log("[*] AUCTION MANAGER NFT escrow: ",c),console.log("[*] LISTER NFT owner: ",m),Promise.resolve(t.getAssociatedTokenAddress(s.tokenMint,n,!0,o)).then(function(c){return Promise.resolve(t.getAssociatedTokenAddress(s.nft,n,!0)).then(function(m){return Promise.resolve(t.getAssociatedTokenAddress(s.tokenMint,u,!0,o)).then(function(o){return console.log("[*] BIDDER TOKEN account: ",c),console.log("[*] BIDDER NFT account: ",m),console.log("[*] AUCTION MANAGER TOKEN escrow: ",o),Promise.resolve(Promise.all(s.bidReceipts.map(function(e){try{return Promise.resolve(i.get(e)).then(function(r){return{amount:r.amount,key:e}})}catch(e){return Promise.reject(e)}}))).then(function(m){var d=Math.floor(Date.now()/1e3);return Promise.resolve(i.programLoader.program.methods.cancelBid(m,new a.BN(d)).accounts({applicationState:i.programLoader.applicationState,userdata:v,bidReceipt:h,user:n,listing:l,nft:s.nft,auctionManager:u,cancellerTokenAccount:c,tokenEscrow:o,tokenMint:s.tokenMint,tokenProgram:t.TOKEN_PROGRAM_ID,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeAccount:r.feeAccount}).transaction()).then(function(e){return Promise.resolve(i.programLoader.getRecentBlockHash()).then(function(r){return e.recentBlockhash=r.blockhash,e.feePayer=n,e})})})})})})})})})})})},function(e){throw console.error(e),new Error("Failed to cancel bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},n.refund=function(r,n,o){try{var s=this;return Promise.resolve(l(function(){return Promise.resolve(s.get(r)).then(function(r){console.log("[*] Bid receipt data: ",JSON.stringify(r,null,4));var c=s.getListingProgram();return Promise.resolve(c.get(r.listing)).then(function(c){if(console.log("[*] Listing data: ",JSON.stringify(c,null,4)),!r.bidder.equals(n))throw new Error("You cannot cancel another user's bid");if(!d(r.state,i.Active))throw new Error("You cannot refund a bid that is not active");return Promise.resolve(s.programLoader.program.account.applicationState.fetch(s.programLoader.applicationState)).then(function(r){console.log("[*] Application state: ",JSON.stringify(r,null,4));var i=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(c.nft.toBuffer()),Uint8Array.from(c.authority.toBuffer())],u=e.PublicKey.findProgramAddressSync(i,s.programLoader.program.programId)[0];console.log("[*] AUCTION MANAGER",u);var m=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(c.nft.toBuffer()),Uint8Array.from(c.authority.toBuffer()),Uint8Array.from(u.toBuffer()),Uint8Array.from(c.tokenMint.toBuffer())],d=e.PublicKey.findProgramAddressSync(m,s.programLoader.program.programId),l=d[0],f=d[1];console.log("[*] Listing: ",l),console.log("[*] Listing bump: ",f);var g=[a.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(l.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(c.tokenMint.toBuffer())],p=e.PublicKey.findProgramAddressSync(g,s.programLoader.program.programId),h=p[0],y=p[1];console.log("[*] Bid receipt: ",h),console.log("[*] Bid receipt bump: ",y);var A=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(r.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],P=e.PublicKey.findProgramAddressSync(A,s.programLoader.program.programId),v=P[0],b=P[1];return console.log("[*] Userdata: ",v),console.log("[*] Userdata bump: ",b),Promise.resolve(t.getAssociatedTokenAddress(c.nft,u,!0)).then(function(r){return Promise.resolve(t.getAssociatedTokenAddress(c.nft,c.authority,!0)).then(function(i){return console.log("[*] AUCTION MANAGER NFT escrow: ",r),console.log("[*] LISTER NFT owner: ",i),Promise.resolve(t.getAssociatedTokenAddress(c.tokenMint,n,!0,o)).then(function(r){return Promise.resolve(t.getAssociatedTokenAddress(c.nft,n,!0)).then(function(i){return Promise.resolve(t.getAssociatedTokenAddress(c.tokenMint,u,!0,o)).then(function(o){console.log("[*] BIDDER TOKEN account: ",r),console.log("[*] BIDDER NFT account: ",i),console.log("[*] AUCTION MANAGER TOKEN escrow: ",o);var m=Math.floor(Date.now()/1e3);return Promise.resolve(s.programLoader.program.methods.refundBid(new a.BN(m)).accounts({applicationState:s.programLoader.applicationState,user:n,auctionManager:u,listing:l,nft:c.nft,userdata:v,userRefundAccount:r,refundBidReceipt:h,tokenEscrow:o,tokenMint:c.tokenMint,tokenProgram:t.TOKEN_PROGRAM_ID,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId}).instruction())})})})})})})})})},function(e){throw console.error(e),new Error("Failed to refund bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},n.increase=function(r,n,o,s){try{var c=this;return Promise.resolve(l(function(){return Promise.resolve(c.get(r)).then(function(r){var u=c.getListingProgram();return Promise.resolve(u.get(r.listing)).then(function(u){if(!r.bidder.equals(n))throw new Error("You cannot increase another user's bid");if(r.state!==i.Active)throw new Error("You cannot increase a bid that is not active");return Promise.resolve(c.programLoader.program.account.applicationState.fetch(c.programLoader.applicationState)).then(function(r){var i=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(u.nft.toBuffer()),Uint8Array.from(u.authority.toBuffer())],m=e.PublicKey.findProgramAddressSync(i,c.programLoader.program.programId)[0],d=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(u.nft.toBuffer()),Uint8Array.from(u.authority.toBuffer()),Uint8Array.from(m.toBuffer()),Uint8Array.from(u.tokenMint.toBuffer())],l=e.PublicKey.findProgramAddressSync(d,c.programLoader.program.programId),f=l[0],g=l[1];console.log("[*] Listing: ",f),console.log("[*] Listing bump: ",g);var p=[a.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(f.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(u.tokenMint.toBuffer())],h=e.PublicKey.findProgramAddressSync(p,c.programLoader.program.programId),y=h[0],A=h[1];console.log("[*] Bid receipt: ",y),console.log("[*] Bid receipt bump: ",A);var P=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(r.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],v=e.PublicKey.findProgramAddressSync(P,c.programLoader.program.programId),b=v[0],S=v[1];return console.log("[*] Userdata: ",b),console.log("[*] Userdata bump: ",S),Promise.resolve(t.getAssociatedTokenAddress(u.nft,m,!0)).then(function(i){return Promise.resolve(t.getAssociatedTokenAddress(u.nft,u.authority,!0)).then(function(d){return console.log("[*] AUCTION MANAGER NFT escrow: ",i),console.log("[*] LISTER NFT owner: ",d),Promise.resolve(t.getAssociatedTokenAddress(u.tokenMint,n,!0,s)).then(function(i){return Promise.resolve(t.getAssociatedTokenAddress(u.nft,n,!0)).then(function(d){return Promise.resolve(t.getAssociatedTokenAddress(u.tokenMint,m,!0,s)).then(function(s){console.log("[*] BIDDER TOKEN account: ",i),console.log("[*] BIDDER NFT account: ",d),console.log("[*] AUCTION MANAGER TOKEN escrow: ",s);var l=Math.floor(Date.now()/1e3);return Promise.resolve(c.programLoader.program.methods.increaseBid(new a.BN(o),new a.BN(l)).accounts({applicationState:c.programLoader.applicationState,userdata:b,bidReceipt:y,user:n,listing:f,nft:u.nft,auctionManager:m,bidderAccount:i,tokenEscrow:s,tokenMint:u.tokenMint,tokenProgram:t.TOKEN_PROGRAM_ID,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeAccount:r.feeAccount}).transaction()).then(function(e){return Promise.resolve(c.programLoader.getRecentBlockHash()).then(function(r){return e.recentBlockhash=r.blockhash,e.feePayer=n,e})})})})})})})})})})},function(e){throw console.error(e),new Error("Failed to increase bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},r}();function g(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}var p=/*#__PURE__*/function(){function r(e){this.programLoader=void 0,this.programLoader=e}var n=r.prototype;return n.create=function(r,n){try{var o=this;return Promise.resolve(g(function(){var i=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.toBuffer()),Uint8Array.from(n.toBuffer())],s=e.PublicKey.findProgramAddressSync(i,o.programLoader.program.programId),c=s[0],u=s[1];return console.log("[*] Auction manager: ",c),console.log("[*] Auction manager bump: ",u),Promise.resolve(o.programLoader.program.methods.createAuctionManager().accounts({applicationState:o.programLoader.applicationState,nft:r,systemProgram:e.SystemProgram.programId,auctionManager:c,tokenProgram:t.TOKEN_PROGRAM_ID,rent:a.web3.SYSVAR_RENT_PUBKEY,user:n}).instruction())},function(e){throw console.error(e),new Error("Failed to create auction: "+e.message)}))}catch(e){return Promise.reject(e)}},n.get=function(e){try{var r=this;return Promise.resolve(g(function(){return Promise.resolve(r.programLoader.program.account.auctionManager.fetch(e)).then(function(e){return console.log("[*] Auction manager account: ",JSON.stringify(e,null,2)),e})},function(e){throw console.error(e),new Error("Failed to get auction manager: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getAll=function(){try{return Promise.resolve(this.programLoader.program.account.auctionManager.all()).then(function(e){return console.log("[*] Auction manager accounts: ",JSON.stringify(e,null,2)),e})}catch(e){return Promise.reject(e)}},n.fetchMany=function(e){try{return Promise.resolve(this.programLoader.program.account.auctionManager.fetchMultiple(e)).then(function(e){return console.log("[*] Auction manager accounts: ",JSON.stringify(e,null,2)),e})}catch(e){return Promise.reject(e)}},r}();function h(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}var y=/*#__PURE__*/function(){function r(e){this.programLoader=void 0,this.auctionManagerProgram=void 0,this.programLoader=e,this.auctionManagerProgram=new p(e)}var n=r.prototype;return n.create=function(r,n,o,i,s,c,u){try{var m=this;return Promise.resolve(h(function(){var d=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.toBuffer()),Uint8Array.from(i.toBuffer())],l=e.PublicKey.findProgramAddressSync(d,m.programLoader.program.programId),f=l[0],g=l[1];console.log("[*] Auction manager: ",f),console.log("[*] Auction manager bump: ",g);var p=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.toBuffer()),Uint8Array.from(i.toBuffer()),Uint8Array.from(f.toBuffer()),Uint8Array.from(n.toBuffer())],h=e.PublicKey.findProgramAddressSync(p,m.programLoader.program.programId),y=h[0],A=h[1];return console.log("[*] Listing: ",y),console.log("[*] Listing bump: ",A),Promise.resolve(m.programLoader.program.account.applicationState.fetch(m.programLoader.applicationState)).then(function(d){var l=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(i.toBuffer()),Uint8Array.from(d.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],g=e.PublicKey.findProgramAddressSync(l,m.programLoader.program.programId),p=g[0],h=g[1];console.log("[*] Userdata: ",p),console.log("[*] Userdata bump: ",h);var A=[];return Promise.resolve(t.getAssociatedTokenAddress(r,f,!0)).then(function(l){return Promise.resolve(t.getAssociatedTokenAddress(r,i,!0)).then(function(g){return Promise.resolve(t.getAssociatedTokenAddress(n,i,!0,o)).then(function(h){return Promise.resolve(m.programLoader.connection.getAccountInfo(l)).then(function(P){return Promise.resolve(m.programLoader.connection.getAccountInfo(g)).then(function(v){return Promise.resolve(m.programLoader.connection.getAccountInfo(h)).then(function(b){return Promise.resolve(m.programLoader.connection.getAccountInfo(f)).then(function(S){function M(){if(!P){var S=t.createAssociatedTokenAccountInstruction(i,l,f,r);A.push(S)}if(!v){var M=t.createAssociatedTokenAccountInstruction(i,g,i,r);A.push(M)}if(!b){var k=t.createAssociatedTokenAccountInstruction(i,h,i,n,o);A.push(k)}var B=Math.floor(Date.now()/1e3),w=null;return u&&(w=B+86400*u),Promise.resolve(m.programLoader.program.methods.createListing(new a.BN(s),new a.BN(c),new a.BN(B),w?new a.BN(w):w).accounts({applicationState:m.programLoader.applicationState,auctionManager:f,listing:y,owner:i,userdata:p,nft:r,nftEscrow:l,proceedsWallet:h,tokenMint:n,feeAccount:d.feeAccount,nftOwner:g,tokenProgram:t.TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,rent:a.web3.SYSVAR_RENT_PUBKEY}).instruction()).then(function(e){return A.push(e),A})}var k=function(){if(!S)return Promise.resolve(m.auctionManagerProgram.create(r,i)).then(function(e){A.push(e)})}();return k&&k.then?k.then(M):M()})})})})})})})})},function(e){throw console.error(e),new Error("Failed to create listing: "+e.message)}))}catch(e){return Promise.reject(e)}},n.createTransaction=function(r,t,n,o,i,a,s){try{var c=this;return Promise.resolve(h(function(){return Promise.resolve(c.create(r,t,n,o,i,a,s)).then(function(r){var t,n=(t=new e.Transaction).add.apply(t,r);return Promise.resolve(c.programLoader.getRecentBlockHash()).then(function(e){return n.recentBlockhash=e.blockhash,n.feePayer=o,n})})},function(e){throw console.error(e),new Error("Failed to create listing transaction: "+e.message)}))}catch(e){return Promise.reject(e)}},n.get=function(e){try{var r=this;return Promise.resolve(h(function(){return console.log("[*] Listing publicKey is "+e),Promise.resolve(r.programLoader.program.account.listing.fetch(e)).then(function(e){return console.log(JSON.stringify(e,null,4)),e})},function(e){throw console.error(e),new Error("Failed to get listing: "+e.message)}))}catch(e){return Promise.reject(e)}},n.fetchMany=function(e){try{var r=this;return Promise.resolve(h(function(){return Promise.resolve(r.programLoader.program.account.listing.fetchMultiple(e))},function(e){throw console.error(e),new Error("Failed to fetch listings: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getAll=function(){try{var e=this;return Promise.resolve(h(function(){return Promise.resolve(e.programLoader.program.account.listing.all()).then(function(e){return console.log("[*] Listings",e),e})},function(e){throw console.error(e),new Error("Failed to get all listings: "+e.message)}))}catch(e){return Promise.reject(e)}},n.cancel=function(r){try{var n=this;return Promise.resolve(h(function(){return Promise.resolve(n.get(r)).then(function(r){var o=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer())],i=e.PublicKey.findProgramAddressSync(o,n.programLoader.program.programId)[0],s=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(i.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],c=e.PublicKey.findProgramAddressSync(s,n.programLoader.program.programId),u=c[0],m=c[1];return console.log("[*] Listing: ",u),console.log("[*] Listing bump: ",m),Promise.resolve(n.programLoader.program.account.applicationState.fetch(n.programLoader.applicationState)).then(function(o){var s=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(o.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],c=e.PublicKey.findProgramAddressSync(s,n.programLoader.program.programId),m=c[0],d=c[1];return console.log("[*] Userdata: ",m),console.log("[*] Userdata bump: ",d),Promise.resolve(t.getAssociatedTokenAddress(r.nft,i,!0)).then(function(s){return Promise.resolve(t.getAssociatedTokenAddress(r.nft,r.authority,!0)).then(function(c){var d=Math.floor(Date.now()/1e3);return Promise.resolve(n.programLoader.program.methods.cancelListing(new a.BN(d)).accounts({applicationState:n.programLoader.applicationState,auctionManager:i,listing:u,userdata:m,nft:r.nft,nftEscrow:s,originalNftHolder:c,feeAccount:o.feeAccount,user:r.authority,tokenProgram:t.TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId}).transaction()).then(function(e){return Promise.resolve(n.programLoader.getRecentBlockHash()).then(function(t){return e.recentBlockhash=t.blockhash,e.feePayer=r.authority,e})})})})})})},function(e){throw console.error(e),new Error("Failed to cancel listing ("+r+"): "+e.message)}))}catch(e){return Promise.reject(e)}},n.getBids=function(e){try{var r=this;return Promise.resolve(h(function(){var t=new f(r.programLoader);return Promise.resolve(r.programLoader.program.account.listing.fetch(e)).then(function(e){return Promise.resolve(t.fetchMany(e.bidReceipts))})},function(r){throw console.error(r),new Error("Failed to get bids for listing ("+e+"): "+r.message)}))}catch(e){return Promise.reject(e)}},n.getByState=function(e){try{var r=this;return Promise.resolve(h(function(){return Promise.resolve(r.getAll()).then(function(r){return r.filter(function(r){return r.state===e})})},function(r){throw console.error(r),new Error("Failed to get listings by state ("+e+"): "+r.message)}))}catch(e){return Promise.reject(e)}},n.getOneTimeSales=function(){try{var e=this;return Promise.resolve(h(function(){return Promise.resolve(e.getAll()).then(function(e){return e.filter(function(e){return null===e.endTime})})},function(e){throw console.error(e),new Error("Failed to get one-time sale listings: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getAuctions=function(){try{var e=this;return Promise.resolve(h(function(){return Promise.resolve(e.getAll()).then(function(e){return e.filter(function(e){return null!==e.endTime})})},function(e){throw console.error(e),new Error("Failed to get auction listings: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getHighestBidInfo=function(e){try{var r=this;return Promise.resolve(h(function(){var t=new f(r.programLoader);return Promise.resolve(r.get(e)).then(function(e){if(!e.highestBidReceipt)throw new Error("No bids on this listing");return Promise.resolve(t.get(e.highestBidReceipt)).then(function(r){return{bidder:r.bidder,receipt:e.highestBidReceipt,amount:r.amount}})})},function(e){throw console.error(e),new Error("Failed to get highest bid info: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getBidsInfoToRefund=function(e){try{var r,t,n=this;return Promise.resolve(h(function(){return Promise.resolve(n.get(e)).then(function(e){var o=e.bidReceipts.filter(function(r){return r!==e.highestBidReceipt}),i=new f(n.programLoader);if(0===e.bidReceipts.length)return[];var a,s=[],c=!1,m=!1,d=S(function(){return h(function(){r=u(o);var n=function(e,r,t){for(var n;;){var o=e();if(b(o)&&(o=o.v),!o)return i;if(o.then){n=0;break}var i=t();if(i&&i.then){if(!b(i)){n=1;break}i=i.s}if(r){var a=r();if(a&&a.then&&!b(a)){n=2;break}}}var s=new v,c=A.bind(null,s,2);return(0===n?o.then(m):1===n?i.then(u):a.then(d)).then(void 0,c),s;function u(n){i=n;do{if(r&&(a=r())&&a.then&&!b(a))return void a.then(d).then(void 0,c);if(!(o=e())||b(o)&&!o.v)return void A(s,1,i);if(o.then)return void o.then(m).then(void 0,c);b(i=t())&&(i=i.v)}while(!i||!i.then);i.then(u).then(void 0,c)}function m(e){e?(i=t())&&i.then?i.then(u).then(void 0,c):u(i):A(s,1,i)}function d(){(o=e())?o.then?o.then(m).then(void 0,c):m(o):A(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return c=!(t=e).done})},function(){return!!(c=!1)},function(){var r=t.value,n=function(){if(!r.equals(e.highestBidReceipt))return Promise.resolve(i.get(r)).then(function(e){s.push({bidder:e.bidder,receipt:r,amount:e.amount})})}();return n&&n.then?n.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){m=!0,a=e})},function(e,t){function n(r){if(e)throw t;return t}var o=S(function(){var e=function(){if(c&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(m)throw a;if(e)throw r;return r});return o&&o.then?o.then(n):n()});return d&&d.then?d.then(function(e){return s}):s})},function(e){throw console.error(e),new Error("Failed to get bids info to refund: "+e.message)}))}catch(e){return Promise.reject(e)}},r}();function A(e,r,t){if(!e.s){if(t instanceof v){if(!t.s)return void(t.o=A.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(A.bind(null,e,r),A.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var P,v=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(r,t){var n=new e,o=this.s;if(o){var i=1&o?r:t;if(i){try{A(n,1,i(this.v))}catch(e){A(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?A(n,1,r?r(o):o):t?A(n,1,t(o)):A(n,2,o)}catch(e){A(n,2,e)}},n},e}();function b(e){return e instanceof v&&1&e.s}function S(e,r){try{var t=e()}catch(e){return r(!0,e)}return t&&t.then?t.then(r.bind(null,!1),r.bind(null,!0)):r(!1,t)}function M(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}exports.ListingState=void 0,(P=exports.ListingState||(exports.ListingState={})).Active="active",P.Sold="sold",P.Cancelled="cancelled";var k=/*#__PURE__*/function(){function r(e){this.programLoader=void 0,this.listingProgram=void 0,this.bidReceiptProgram=void 0,this.programLoader=e,this.listingProgram=new y(e),this.bidReceiptProgram=new f(e)}var n=r.prototype;return n.create=function(r){try{var t=this;return Promise.resolve(M(function(){var n=[a.utils.bytes.utf8.encode("deserialize"),Uint8Array.from(t.programLoader.wallet.publicKey.toBuffer())],o=e.PublicKey.findProgramAddressSync(n,t.programLoader.program.programId)[0];return console.log("[*] NEW APPLICATION STATE:- "+o),Promise.resolve(t.programLoader.program.methods.initialize().accounts({applicationState:o,user:t.programLoader.wallet.publicKey,feeAccount:r,systemProgram:e.SystemProgram.programId}).signers([t.programLoader.wallet]).rpc()).then(function(e){return console.log("[*] Transaction signature:- ",e),Promise.resolve(t.programLoader.program.account.applicationState.fetch(o))})},function(e){throw console.error(e),new Error("Failed to create application state: "+e.message)}))}catch(e){return Promise.reject(e)}},n.getAll=function(){try{var e=this;return Promise.resolve(M(function(){return Promise.resolve(e.programLoader.program.account.applicationState.all()).then(function(e){return console.log("[*] Application states: ",e),e})},function(e){throw console.error(e),new Error("Failed to get all application states: "+e.message)}))}catch(e){return Promise.reject(e)}},n.get=function(e){try{var r=this;return Promise.resolve(M(function(){return Promise.resolve(r.programLoader.program.account.applicationState.fetch(e))},function(e){throw console.error(e),new Error("Failed to get application state: "+e.message)}))}catch(e){return Promise.reject(e)}},n.update=function(e,r){try{var t=this;return Promise.resolve(M(function(){return Promise.resolve(t.programLoader.program.methods.updateApplicationState(r).accounts({applicationState:e,user:t.programLoader.wallet.publicKey}).signers([t.programLoader.wallet]).rpc()).then(function(){return Promise.resolve(t.get(e))})},function(e){throw console.error(e),new Error("Failed to update application state: "+e.message)}))}catch(e){return Promise.reject(e)}},n.executeSale=function(r,n,o){try{var i,s,c=this;return Promise.resolve(M(function(){return Promise.resolve(c.listingProgram.get(r)).then(function(m){return console.log("[*] Listing data: ",JSON.stringify(m,null,4)),Promise.resolve(c.programLoader.program.account.applicationState.fetch(c.programLoader.applicationState)).then(function(l){console.log("[*] Application state: ",JSON.stringify(l,null,4));var f=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer())],g=e.PublicKey.findProgramAddressSync(f,c.programLoader.program.programId)[0];return Promise.resolve(c.programLoader.program.account.auctionManager.fetch(g)).then(function(f){console.log("[*] Auction manager state: ",JSON.stringify(f,null,4));var p=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer()),Uint8Array.from(g.toBuffer()),Uint8Array.from(m.tokenMint.toBuffer())],h=e.PublicKey.findProgramAddressSync(p,c.programLoader.program.programId)[0];return Promise.resolve(c.programLoader.program.account.listing.fetch(h)).then(function(f){if(console.log("[*] Listing: ",JSON.stringify(f,null,4)),!r.equals(h))throw new Error("Invalid Listing");if(console.log("[*] Listing state: ",m.state),!d(m.state,exports.ListingState.Active))throw new Error("Listing is not active");return Promise.resolve(c.listingProgram.getHighestBidInfo(r)).then(function(d){return console.log("[*] Highest bid info: ",JSON.stringify(d,null,4)),Promise.resolve(c.listingProgram.getBidsInfoToRefund(r)).then(function(r){function f(r){return Promise.resolve(t.getAssociatedTokenAddress(m.nft,g,!0)).then(function(r){return Promise.resolve(t.getAssociatedTokenAddress(m.nft,d.bidder,!0)).then(function(o){return Promise.resolve(t.getAssociatedTokenAddress(m.tokenMint,g,!0)).then(function(i){return Promise.resolve(t.getAssociatedTokenAddress(m.tokenMint,l.feeAccount,!0)).then(function(s){var u=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(d.bidder.toBuffer()),Uint8Array.from(l.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],f=e.PublicKey.findProgramAddressSync(u,c.programLoader.program.programId)[0];console.log("[*] WINNER NFT account: ",o),console.log("[*] AUCTION MANAGER Token escrow: ",i);var p=Math.floor(Date.now()/1e3);return Promise.resolve(c.programLoader.program.methods.executeSale(new a.BN(p)).accounts({applicationState:c.programLoader.applicationState,userdata:f,bidReceipt:d.receipt,user:n,listing:h,nft:m.nft,auctionManager:g,nftEscrow:r,winnerNftAccount:o,proceedsWallet:m.auctionProceedsWallet,tokenEscrow:i,tokenMint:m.tokenMint,tokenProgram:t.TOKEN_PROGRAM_ID,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeTokenAccount:s}).instruction()).then(function(e){return y.add(e),Promise.resolve(c.programLoader.getRecentBlockHash()).then(function(e){return y.recentBlockhash=e.blockhash,y.feePayer=n,y})})})})})})}console.log("[*] Bids info to refund: ",JSON.stringify(r,null,4));var p,y=new e.Transaction,A=!1,P=!1,v=T(function(){return M(function(){i=u(r);var e=function(e,r,t){for(var n;;){var o=e();if(L(o)&&(o=o.v),!o)return i;if(o.then){n=0;break}var i=t();if(i&&i.then){if(!L(i)){n=1;break}i=i.s}if(r){var a=r();if(a&&a.then&&!L(a)){n=2;break}}}var s=new w,c=B.bind(null,s,2);return(0===n?o.then(m):1===n?i.then(u):a.then(d)).then(void 0,c),s;function u(n){i=n;do{if(r&&(a=r())&&a.then&&!L(a))return void a.then(d).then(void 0,c);if(!(o=e())||L(o)&&!o.v)return void B(s,1,i);if(o.then)return void o.then(m).then(void 0,c);L(i=t())&&(i=i.v)}while(!i||!i.then);i.then(u).then(void 0,c)}function m(e){e?(i=t())&&i.then?i.then(u).then(void 0,c):u(i):B(s,1,i)}function d(){(o=e())?o.then?o.then(m).then(void 0,c):m(o):B(s,1,i)}}(function(){return Promise.resolve(i.next()).then(function(e){return A=!(s=e).done})},function(){return!!(A=!1)},function(){var e=s.value;return Promise.resolve(c.bidReceiptProgram.refund(e.receipt,e.bidder,o)).then(function(e){y.add(e)})});if(e&&e.then)return e.then(function(){})},function(e){P=!0,p=e})},function(e,r){function t(t){if(e)throw r;return r}var n=T(function(){var e=function(){if(A&&null!=i.return)return Promise.resolve(i.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(P)throw p;if(e)throw r;return r});return n&&n.then?n.then(t):t()});return v&&v.then?v.then(f):f()})})})})})})},function(e){throw console.error(e),new Error("Failed to execute sale: "+e.message)}))}catch(e){return Promise.reject(e)}},r}();function B(e,r,t){if(!e.s){if(t instanceof w){if(!t.s)return void(t.o=B.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(B.bind(null,e,r),B.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var w=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(r,t){var n=new e,o=this.s;if(o){var i=1&o?r:t;if(i){try{B(n,1,i(this.v))}catch(e){B(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?B(n,1,r?r(o):o):t?B(n,1,t(o)):B(n,2,o)}catch(e){B(n,2,e)}},n},e}();function L(e){return e instanceof w&&1&e.s}function T(e,r){try{var t=e()}catch(e){return r(!0,e)}return t&&t.then?t.then(r.bind(null,!1),r.bind(null,!0)):r(!1,t)}var I={version:"0.1.0",name:"auction",instructions:[{name:"initialize",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initializeAccount",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"updateApplicationState",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0}],args:[{name:"feeAccount",type:"publicKey"}]},{name:"createAuctionManager",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"createListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"userdata",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"nftOwner",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"timeExtension",type:"u64"},{name:"startingPrice",type:"u128"},{name:"startTime",type:"u64"},{name:"endTime",type:{option:"u64"}}]},{name:"bidOnListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidderAccount",isMut:!0,isSigner:!1},{name:"bidderNftAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u128"},{name:"submittedAt",type:"u64"}]},{name:"cancelListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"originalNftHolder",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"cancelledAt",type:"u64"}]},{name:"increaseBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"bidderAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"newAmount",type:"u128"},{name:"updatedAt",type:"u64"}]},{name:"cancelBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"cancellerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bidReceipts",type:{vec:{defined:"ReceiptInfo"}}},{name:"submittedAt",type:"u64"}]},{name:"refundBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"userRefundAccount",isMut:!0,isSigner:!1},{name:"refundBidReceipt",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"refundedAt",type:"u64"}]},{name:"executeSale",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"winnerNftAccount",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"submittedAt",type:"u64"}]},{name:"createBidRequest",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"bidRequest",isMut:!0,isSigner:!1},{name:"nftOwner",isMut:!1,isSigner:!1},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"userTokenAccount",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u128"},{name:"createdAt",type:"u64"}]},{name:"acceptBidRequest",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"sellerNftTokenAccount",isMut:!0,isSigner:!1},{name:"buyerNftTokenAccount",isMut:!0,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"sellerTokenAccount",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"acceptedAt",type:"u64"}]},{name:"rejectBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"requesterTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"rejectedAt",type:"u64"}]},{name:"cancelBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"cancellerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"cancelledAt",type:"u64"}]},{name:"increaseBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"ownerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"newAmount",type:"u128"},{name:"submittedAt",type:"u64"}]},{name:"makeBidRequestPublic",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"creatorUserdata",isMut:!0,isSigner:!1},{name:"bidderUserdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"bidder",isMut:!1,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"bidRequest",isMut:!1,isSigner:!1},{name:"bidRequestTokenAccount",isMut:!0,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"escrowNftAccount",isMut:!0,isSigner:!1},{name:"creatorNftAccount",isMut:!0,isSigner:!1},{name:"creatorTokenAccount",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],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:"Sol