@deserialize/auction-sdk
Version:
An SDK for Auction on SVMs
1 lines • 79.1 kB
JavaScript
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,s){try{var c=this;return Promise.resolve(l(function(){var u=c.getListingProgram();return Promise.resolve(u.get(r)).then(function(r){return Promise.resolve(c.programLoader.program.account.applicationState.fetch(c.programLoader.applicationState)).then(function(u){var m=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer())],d=e.PublicKey.findProgramAddressSync(m,c.programLoader.program.programId)[0],l=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(d.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],f=e.PublicKey.findProgramAddressSync(l,c.programLoader.program.programId),g=f[0],p=f[1];console.log("[*] Listing: ",g),console.log("[*] Listing bump: ",p);var h=[a.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(g.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],y=e.PublicKey.findProgramAddressSync(h,c.programLoader.program.programId),A=y[0],P=y[1];console.log("[*] Bid receipt: ",A),console.log("[*] Bid receipt bump: ",P);var v=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(u.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],b=e.PublicKey.findProgramAddressSync(v,c.programLoader.program.programId),S=b[0],M=b[1];return console.log("[*] Userdata: ",S),console.log("[*] Userdata bump: ",M),Promise.resolve(t.getAssociatedTokenAddress(r.nft,d,!0)).then(function(m){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,r.authority,!0,i)).then(function(l){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,n,!0,i)).then(function(f){return Promise.resolve(t.getAssociatedTokenAddress(r.nft,n,!0)).then(function(p){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,d,!0,i)).then(function(h){return Promise.resolve(t.getAssociatedTokenAddress(r.tokenMint,u.feeAccount,!0,i)).then(function(y){console.log("[*] BIDDER TOKEN account: ",f),console.log("[*] BIDDER NFT account: ",p),console.log("[*] AUCTION MANAGER TOKEN escrow: ",h),console.log("[*] FEE TOKEN account: ",y);var P=[];return Promise.resolve(c.programLoader.connection.getAccountInfo(f)).then(function(v){return Promise.resolve(c.programLoader.connection.getAccountInfo(p)).then(function(b){return Promise.resolve(c.programLoader.connection.getAccountInfo(h)).then(function(M){return Promise.resolve(c.programLoader.connection.getAccountInfo(y)).then(function(k){if(!k){var B=t.createAssociatedTokenAccountInstruction(n,y,u.feeAccount,r.tokenMint,i);P.push(B)}if(!v){var w=t.createAssociatedTokenAccountInstruction(n,f,n,r.tokenMint,i);P.push(w)}if(!b){var L=t.createAssociatedTokenAccountInstruction(n,p,n,r.nft);P.push(L)}if(!M){var T=t.createAssociatedTokenAccountInstruction(n,h,d,r.tokenMint,i);P.push(T)}var I=Math.floor(Date.now()/1e3);return Promise.resolve(c.programLoader.program.methods.bidOnListing(new a.BN(o),new a.BN(I)).accounts({applicationState:c.programLoader.applicationState,userdata:S,bidReceipt:A,user:n,listing:g,nft:r.nft,auctionManager:d,proceedsWallet:l,nftEscrow:m,bidderNftAccount:p,bidderAccount:f,tokenEscrow:h,tokenMint:r.tokenMint,tokenProgram:i,nftTokenProgram:s,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeAccount:u.feeAccount,feeTokenAccount:y}).instruction()).then(function(e){return P.push(e),P})})})})})})})})})})})})})},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,i){try{var a=this;return Promise.resolve(l(function(){return Promise.resolve(a.create(r,t,n,o,i)).then(function(r){for(var n,o=new e.Transaction,i=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=i()).done;)o.add(n.value);return Promise.resolve(a.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(d){return console.log("[*] BIDDER TOKEN account: ",c),console.log("[*] BIDDER NFT account: ",m),console.log("[*] AUCTION MANAGER TOKEN escrow: ",d),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 f=Math.floor(Date.now()/1e3);return Promise.resolve(i.programLoader.program.methods.cancelBid(m,new a.BN(f)).accounts({applicationState:i.programLoader.applicationState,userdata:v,bidReceipt:h,user:n,listing:l,nft:s.nft,auctionManager:u,cancellerTokenAccount:c,tokenEscrow:d,tokenMint:s.tokenMint,tokenProgram:o,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(n){return Promise.resolve(t.getAssociatedTokenAddress(c.tokenMint,u,!0,o)).then(function(i){console.log("[*] BIDDER TOKEN account: ",r),console.log("[*] BIDDER NFT account: ",n),console.log("[*] AUCTION MANAGER TOKEN escrow: ",i);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:c.authority,auctionManager:u,listing:l,nft:c.nft,userdata:v,userRefundAccount:r,refundBidReceipt:h,tokenEscrow:i,tokenMint:c.tokenMint,tokenProgram:o,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){console.log("bidReceiptData: ",r.state);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(!d(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(l){console.log("[*] BIDDER TOKEN account: ",i),console.log("[*] BIDDER NFT account: ",d),console.log("[*] AUCTION MANAGER TOKEN escrow: ",l);var g=Math.floor(Date.now()/1e3);return Promise.resolve(c.programLoader.program.methods.increaseBid(new a.BN(o),new a.BN(g)).accounts({applicationState:c.programLoader.applicationState,userdata:b,bidReceipt:y,user:n,listing:f,nft:u.nft,auctionManager:m,bidderAccount:i,tokenEscrow:l,tokenMint:u.tokenMint,tokenProgram:s,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 t=r.prototype;return t.create=function(r,t,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(t.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:n,rent:a.web3.SYSVAR_RENT_PUBKEY,user:t}).instruction())},function(e){throw console.error(e),new Error("Failed to create auction: "+e.message)}))}catch(e){return Promise.reject(e)}},t.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)}},t.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)}},t.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,m,d){try{var l=this;return Promise.resolve(h(function(){var f=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.toBuffer()),Uint8Array.from(s.toBuffer())],g=e.PublicKey.findProgramAddressSync(f,l.programLoader.program.programId),p=g[0],h=g[1];console.log("[*] Auction manager: ",p),console.log("[*] Auction manager bump: ",h);var y=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.toBuffer()),Uint8Array.from(s.toBuffer()),Uint8Array.from(p.toBuffer()),Uint8Array.from(o.toBuffer())],A=e.PublicKey.findProgramAddressSync(y,l.programLoader.program.programId),P=A[0],v=A[1];return console.log("[*] Listing: ",P),console.log("[*] Listing bump: ",v),Promise.resolve(l.programLoader.program.account.applicationState.fetch(l.programLoader.applicationState)).then(function(f){var g=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(s.toBuffer()),Uint8Array.from(f.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],h=e.PublicKey.findProgramAddressSync(g,l.programLoader.program.programId),y=h[0],A=h[1];console.log("[*] Userdata: ",y),console.log("[*] Userdata bump: ",A);var v=[];return Promise.resolve(t.getAssociatedTokenAddress(r,p,!0)).then(function(g){return Promise.resolve(t.getAssociatedTokenAddress(r,s,!0)).then(function(h){return Promise.resolve(t.getAssociatedTokenAddress(o,s,!0,i)).then(function(A){return Promise.resolve(l.programLoader.connection.getAccountInfo(g)).then(function(b){return Promise.resolve(l.programLoader.connection.getAccountInfo(h)).then(function(S){return Promise.resolve(l.programLoader.connection.getAccountInfo(A)).then(function(M){return Promise.resolve(l.programLoader.connection.getAccountInfo(p)).then(function(k){function B(){if(!b){var k=t.createAssociatedTokenAccountInstruction(s,g,p,r);v.push(k)}if(!S){var B=t.createAssociatedTokenAccountInstruction(s,h,s,r);v.push(B)}if(!M){var w=t.createAssociatedTokenAccountInstruction(s,A,s,o,i);v.push(w)}var L=Math.floor(Date.now()/1e3),T=null;return m&&(T=L+86400*m),console.log("tokenMintProgramId: ",i),Promise.resolve(l.programLoader.program.methods.createListing(new a.BN(c),new a.BN(u),new a.BN(L),T?new a.BN(T):T,new a.BN(d)).accounts({applicationState:l.programLoader.applicationState,auctionManager:p,listing:P,owner:s,userdata:y,nft:r,nftEscrow:g,proceedsWallet:A,tokenMint:o,feeAccount:f.feeAccount,nftOwner:h,tokenProgram:n,systemProgram:e.SystemProgram.programId,rent:a.web3.SYSVAR_RENT_PUBKEY}).instruction()).then(function(e){return v.push(e),v})}var w=function(){if(!k)return Promise.resolve(l.auctionManagerProgram.create(r,s,n)).then(function(e){v.push(e)})}();return w&&w.then?w.then(B):B()})})})})})})})})},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,c,u){try{var m=this;return console.log("tokenMintProgramId 1: ",o),Promise.resolve(h(function(){return Promise.resolve(m.create(r,t,n,o,i,a,s,c,u)).then(function(r){var t,n=(t=new e.Transaction).add.apply(t,r);return Promise.resolve(m.programLoader.getRecentBlockHash()).then(function(e){return n.recentBlockhash=e.blockhash,n.feePayer=i,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,n){try{var o=this;return Promise.resolve(h(function(){return Promise.resolve(o.get(r)).then(function(r){var i=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer())],s=e.PublicKey.findProgramAddressSync(i,o.programLoader.program.programId)[0],c=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(r.nft.toBuffer()),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(s.toBuffer()),Uint8Array.from(r.tokenMint.toBuffer())],u=e.PublicKey.findProgramAddressSync(c,o.programLoader.program.programId),m=u[0],d=u[1];return console.log("[*] Listing: ",m),console.log("[*] Listing bump: ",d),Promise.resolve(o.programLoader.program.account.applicationState.fetch(o.programLoader.applicationState)).then(function(i){var c=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(r.authority.toBuffer()),Uint8Array.from(i.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],u=e.PublicKey.findProgramAddressSync(c,o.programLoader.program.programId),d=u[0],l=u[1];return console.log("[*] Userdata: ",d),console.log("[*] Userdata bump: ",l),Promise.resolve(t.getAssociatedTokenAddress(r.nft,s,!0)).then(function(c){return Promise.resolve(t.getAssociatedTokenAddress(r.nft,r.authority,!0)).then(function(t){var u=Math.floor(Date.now()/1e3);return Promise.resolve(o.programLoader.program.methods.cancelListing(new a.BN(u)).accounts({applicationState:o.programLoader.applicationState,auctionManager:s,listing:m,userdata:d,nft:r.nft,nftEscrow:c,originalNftHolder:t,tokenMint:r.tokenMint,feeAccount:i.feeAccount,user:r.authority,tokenProgram:n,systemProgram:e.SystemProgram.programId}).transaction()).then(function(e){return Promise.resolve(o.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,i){try{var s,c,m=this;return Promise.resolve(M(function(){return Promise.resolve(m.listingProgram.get(r)).then(function(l){return console.log("[*] Listing data: ",JSON.stringify(l,null,4)),Promise.resolve(m.programLoader.program.account.applicationState.fetch(m.programLoader.applicationState)).then(function(f){console.log("[*] Application state: ",JSON.stringify(f,null,4));var g=[a.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(l.nft.toBuffer()),Uint8Array.from(l.authority.toBuffer())],p=e.PublicKey.findProgramAddressSync(g,m.programLoader.program.programId)[0];return Promise.resolve(m.programLoader.program.account.auctionManager.fetch(p)).then(function(g){console.log("[*] Auction manager state: ",JSON.stringify(g,null,4));var h=[a.utils.bytes.utf8.encode("listing"),Uint8Array.from(l.nft.toBuffer()),Uint8Array.from(l.authority.toBuffer()),Uint8Array.from(p.toBuffer()),Uint8Array.from(l.tokenMint.toBuffer())],y=e.PublicKey.findProgramAddressSync(h,m.programLoader.program.programId)[0];return Promise.resolve(m.programLoader.program.account.listing.fetch(y)).then(function(g){if(console.log("[*] Listing: ",JSON.stringify(g,null,4)),!r.equals(y))throw new Error("Invalid Listing");if(console.log("[*] Listing state: ",l.state),!d(l.state,exports.ListingState.Active))throw new Error("Listing is not active");return Promise.resolve(m.listingProgram.getHighestBidInfo(r)).then(function(d){return console.log("[*] Highest bid info: ",JSON.stringify(d,null,4)),Promise.resolve(m.listingProgram.getBidsInfoToRefund(r)).then(function(r){function g(r){return Promise.resolve(t.getAssociatedTokenAddress(l.nft,p,!0)).then(function(r){return Promise.resolve(t.getAssociatedTokenAddress(l.nft,d.bidder,!0,i)).then(function(s){return Promise.resolve(t.getAssociatedTokenAddress(l.tokenMint,p,!0,o)).then(function(c){return Promise.resolve(t.getAssociatedTokenAddress(l.tokenMint,f.feeAccount,!0,o)).then(function(u){var g=[a.utils.bytes.utf8.encode("user_account"),Uint8Array.from(d.bidder.toBuffer()),Uint8Array.from(f.listingAuthority.toBuffer()),a.utils.bytes.utf8.encode("deserialize")],h=e.PublicKey.findProgramAddressSync(g,m.programLoader.program.programId)[0];console.log("[*] WINNER NFT account: ",s),console.log("[*] AUCTION MANAGER Token escrow: ",c);var P=Math.floor(Date.now()/1e3);return Promise.resolve(m.programLoader.program.methods.executeSale(new a.BN(P)).accounts({applicationState:m.programLoader.applicationState,userdata:h,bidReceipt:d.receipt,user:n,listing:y,nft:l.nft,auctionManager:p,nftEscrow:r,winnerNftAccount:s,proceedsWallet:l.auctionProceedsWallet,tokenEscrow:c,tokenMint:l.tokenMint,tokenProgram:o,nftTokenProgram:i,associatedTokenProgram:t.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:e.SystemProgram.programId,feeTokenAccount:u}).instruction()).then(function(e){return A.add(e),Promise.resolve(m.programLoader.getRecentBlockHash()).then(function(e){return A.recentBlockhash=e.blockhash,A.feePayer=n,A})})})})})})}console.log("[*] Bids info to refund: ",JSON.stringify(r,null,4));var h,A=new e.Transaction,P=!1,v=!1,b=T(function(){return M(function(){s=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(s.next()).then(function(e){return P=!(c=e).done})},function(){return!!(P=!1)},function(){var e=c.value;return Promise.resolve(m.bidReceiptProgram.refund(e.receipt,e.bidder,o)).then(function(e){A.add(e)})});if(e&&e.then)return e.then(function(){})},function(e){v=!0,h=e})},function(e,r){function t(t){if(e)throw r;return r}var n=T(function(){var e=function(){if(P&&null!=s.return)return Promise.resolve(s.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(v)throw h;if(e)throw r;return r});return n&&n.then?n.then(t):t()});return b&&b.then?b.then(g):g()})})})})})})},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:"minimumBidThreshold",type:"u128"}]},{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:"nftTokenProgram",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:"nftTokenProgram",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:"nftTokenProgram",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:"nftTokenProgram",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:"u