UNPKG

@deserialize/auction-sdk

Version:

An SDK for Auction on SVMs

1 lines 79.1 kB
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@solana/web3.js"),require("@coral-xyz/anchor"),require("@solana/spl-token"),require("@project-serum/anchor")):"function"==typeof define&&define.amd?define(["exports","@solana/web3.js","@coral-xyz/anchor","@solana/spl-token","@project-serum/anchor"],r):r((e||self).auctionSdk={},e.web3_js,e.anchor,e.splToken,e.anchor$1)}(this,function(e,r,t,n,o){function i(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 a,s=/*#__PURE__*/i(t),c=/*#__PURE__*/i(o);function u(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 m(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 d(r.call(e));t="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function d(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 d=function(e){this.s=e,this.n=e.next},d.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 d(e)}function l(e,r){if(e.hasOwnProperty(r))return!0}function f(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"}(a||(a={}));var g=/*#__PURE__*/function(){function e(e){this.programLoader=void 0,this.programLoader=e}var t=e.prototype;return t.getListingProgram=function(){return new A(this.programLoader)},t.create=function(e,t,o,i){try{var a=this;return Promise.resolve(f(function(){var c=a.getListingProgram();return Promise.resolve(c.get(e)).then(function(e){return Promise.resolve(a.programLoader.program.account.applicationState.fetch(a.programLoader.applicationState)).then(function(c){var u=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(e.nft.toBuffer()),Uint8Array.from(e.authority.toBuffer())],m=r.PublicKey.findProgramAddressSync(u,a.programLoader.program.programId)[0],d=[s.utils.bytes.utf8.encode("listing"),Uint8Array.from(e.nft.toBuffer()),Uint8Array.from(e.authority.toBuffer()),Uint8Array.from(m.toBuffer()),Uint8Array.from(e.tokenMint.toBuffer())],l=r.PublicKey.findProgramAddressSync(d,a.programLoader.program.programId),f=l[0],g=l[1];console.log("[*] Listing: ",f),console.log("[*] Listing bump: ",g);var p=[s.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(f.toBuffer()),Uint8Array.from(t.toBuffer()),Uint8Array.from(e.tokenMint.toBuffer())],h=r.PublicKey.findProgramAddressSync(p,a.programLoader.program.programId),y=h[0],A=h[1];console.log("[*] Bid receipt: ",y),console.log("[*] Bid receipt bump: ",A);var P=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(t.toBuffer()),Uint8Array.from(c.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],v=r.PublicKey.findProgramAddressSync(P,a.programLoader.program.programId),b=v[0],S=v[1];return console.log("[*] Userdata: ",b),console.log("[*] Userdata bump: ",S),Promise.resolve(n.getAssociatedTokenAddress(e.nft,m,!0)).then(function(u){return Promise.resolve(n.getAssociatedTokenAddress(e.tokenMint,e.authority,!0,i)).then(function(d){return Promise.resolve(n.getAssociatedTokenAddress(e.tokenMint,t,!0,i)).then(function(l){return Promise.resolve(n.getAssociatedTokenAddress(e.nft,t,!0)).then(function(g){return Promise.resolve(n.getAssociatedTokenAddress(e.tokenMint,m,!0,i)).then(function(p){return Promise.resolve(n.getAssociatedTokenAddress(e.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(a.programLoader.connection.getAccountInfo(l)).then(function(P){return Promise.resolve(a.programLoader.connection.getAccountInfo(g)).then(function(v){return Promise.resolve(a.programLoader.connection.getAccountInfo(p)).then(function(S){return Promise.resolve(a.programLoader.connection.getAccountInfo(h)).then(function(M){if(!M){var k=n.createAssociatedTokenAccountInstruction(t,h,c.feeAccount,e.tokenMint,i);A.push(k)}if(!P){var B=n.createAssociatedTokenAccountInstruction(t,l,t,e.tokenMint,i);A.push(B)}if(!v){var w=n.createAssociatedTokenAccountInstruction(t,g,t,e.nft);A.push(w)}if(!S){var L=n.createAssociatedTokenAccountInstruction(t,p,m,e.tokenMint,i);A.push(L)}var T=Math.floor(Date.now()/1e3);return Promise.resolve(a.programLoader.program.methods.bidOnListing(new s.BN(o),new s.BN(T)).accounts({applicationState:a.programLoader.applicationState,userdata:b,bidReceipt:y,user:t,listing:f,nft:e.nft,auctionManager:m,proceedsWallet:d,nftEscrow:u,bidderNftAccount:g,bidderAccount:l,tokenEscrow:p,tokenMint:e.tokenMint,tokenProgram:n.TOKEN_PROGRAM_ID,associatedTokenProgram:n.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:r.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)}},t.createTransaction=function(e,t,n,o){try{var i=this;return Promise.resolve(f(function(){return Promise.resolve(i.create(e,t,n,o)).then(function(e){for(var n,o=new r.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 u(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)?u(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.")}(e);!(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)}},t.get=function(e){try{var r=this;return Promise.resolve(f(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)}},t.fetchMany=function(e){try{var r=this;return Promise.resolve(f(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)}},t.getAll=function(){try{var e=this;return Promise.resolve(f(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)}},t.getByState=function(e){try{var r=this;return Promise.resolve(f(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)}},t.getUserBidOnListing=function(e,r){try{var t=this;return Promise.resolve(f(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)}},t.cancel=function(e,t,o){try{var i=this;return Promise.resolve(f(function(){return Promise.resolve(i.get(e)).then(function(e){var a=i.getListingProgram();return Promise.resolve(a.get(e.listing)).then(function(a){if(!e.bidder.equals(t))throw new Error("You cannot cancel another user's bid");return Promise.resolve(i.programLoader.program.account.applicationState.fetch(i.programLoader.applicationState)).then(function(e){var c=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(a.nft.toBuffer()),Uint8Array.from(a.authority.toBuffer())],u=r.PublicKey.findProgramAddressSync(c,i.programLoader.program.programId)[0],m=[s.utils.bytes.utf8.encode("listing"),Uint8Array.from(a.nft.toBuffer()),Uint8Array.from(a.authority.toBuffer()),Uint8Array.from(u.toBuffer()),Uint8Array.from(a.tokenMint.toBuffer())],d=r.PublicKey.findProgramAddressSync(m,i.programLoader.program.programId),l=d[0],f=d[1];console.log("[*] Listing: ",l),console.log("[*] Listing bump: ",f);var g=[s.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(l.toBuffer()),Uint8Array.from(t.toBuffer()),Uint8Array.from(a.tokenMint.toBuffer())],p=r.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=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(t.toBuffer()),Uint8Array.from(e.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],P=r.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(n.getAssociatedTokenAddress(a.nft,u,!0)).then(function(c){return Promise.resolve(n.getAssociatedTokenAddress(a.nft,a.authority,!0)).then(function(m){return console.log("[*] AUCTION MANAGER NFT escrow: ",c),console.log("[*] LISTER NFT owner: ",m),Promise.resolve(n.getAssociatedTokenAddress(a.tokenMint,t,!0,o)).then(function(c){return Promise.resolve(n.getAssociatedTokenAddress(a.nft,t,!0)).then(function(m){return Promise.resolve(n.getAssociatedTokenAddress(a.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(a.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 s.BN(d)).accounts({applicationState:i.programLoader.applicationState,userdata:v,bidReceipt:h,user:t,listing:l,nft:a.nft,auctionManager:u,cancellerTokenAccount:c,tokenEscrow:o,tokenMint:a.tokenMint,tokenProgram:n.TOKEN_PROGRAM_ID,associatedTokenProgram:n.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId,feeAccount:e.feeAccount}).transaction()).then(function(e){return Promise.resolve(i.programLoader.getRecentBlockHash()).then(function(r){return e.recentBlockhash=r.blockhash,e.feePayer=t,e})})})})})})})})})})})},function(e){throw console.error(e),new Error("Failed to cancel bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},t.refund=function(e,t,o){try{var i=this;return Promise.resolve(f(function(){return Promise.resolve(i.get(e)).then(function(e){console.log("[*] Bid receipt data: ",JSON.stringify(e,null,4));var c=i.getListingProgram();return Promise.resolve(c.get(e.listing)).then(function(c){if(console.log("[*] Listing data: ",JSON.stringify(c,null,4)),!e.bidder.equals(t))throw new Error("You cannot cancel another user's bid");if(!l(e.state,a.Active))throw new Error("You cannot refund a bid that is not active");return Promise.resolve(i.programLoader.program.account.applicationState.fetch(i.programLoader.applicationState)).then(function(e){console.log("[*] Application state: ",JSON.stringify(e,null,4));var a=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(c.nft.toBuffer()),Uint8Array.from(c.authority.toBuffer())],u=r.PublicKey.findProgramAddressSync(a,i.programLoader.program.programId)[0];console.log("[*] AUCTION MANAGER",u);var m=[s.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=r.PublicKey.findProgramAddressSync(m,i.programLoader.program.programId),l=d[0],f=d[1];console.log("[*] Listing: ",l),console.log("[*] Listing bump: ",f);var g=[s.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(l.toBuffer()),Uint8Array.from(t.toBuffer()),Uint8Array.from(c.tokenMint.toBuffer())],p=r.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=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(t.toBuffer()),Uint8Array.from(e.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],P=r.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(n.getAssociatedTokenAddress(c.nft,u,!0)).then(function(e){return Promise.resolve(n.getAssociatedTokenAddress(c.nft,c.authority,!0)).then(function(a){return console.log("[*] AUCTION MANAGER NFT escrow: ",e),console.log("[*] LISTER NFT owner: ",a),Promise.resolve(n.getAssociatedTokenAddress(c.tokenMint,t,!0,o)).then(function(e){return Promise.resolve(n.getAssociatedTokenAddress(c.nft,t,!0)).then(function(a){return Promise.resolve(n.getAssociatedTokenAddress(c.tokenMint,u,!0,o)).then(function(o){console.log("[*] BIDDER TOKEN account: ",e),console.log("[*] BIDDER NFT account: ",a),console.log("[*] AUCTION MANAGER TOKEN escrow: ",o);var m=Math.floor(Date.now()/1e3);return Promise.resolve(i.programLoader.program.methods.refundBid(new s.BN(m)).accounts({applicationState:i.programLoader.applicationState,user:t,auctionManager:u,listing:l,nft:c.nft,userdata:v,userRefundAccount:e,refundBidReceipt:h,tokenEscrow:o,tokenMint:c.tokenMint,tokenProgram:n.TOKEN_PROGRAM_ID,associatedTokenProgram:n.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId}).instruction())})})})})})})})})},function(e){throw console.error(e),new Error("Failed to refund bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},t.increase=function(e,t,o,i){try{var c=this;return Promise.resolve(f(function(){return Promise.resolve(c.get(e)).then(function(e){var u=c.getListingProgram();return Promise.resolve(u.get(e.listing)).then(function(u){if(!e.bidder.equals(t))throw new Error("You cannot increase another user's bid");if(e.state!==a.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(e){var a=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(u.nft.toBuffer()),Uint8Array.from(u.authority.toBuffer())],m=r.PublicKey.findProgramAddressSync(a,c.programLoader.program.programId)[0],d=[s.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=r.PublicKey.findProgramAddressSync(d,c.programLoader.program.programId),f=l[0],g=l[1];console.log("[*] Listing: ",f),console.log("[*] Listing bump: ",g);var p=[s.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(f.toBuffer()),Uint8Array.from(t.toBuffer()),Uint8Array.from(u.tokenMint.toBuffer())],h=r.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=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(t.toBuffer()),Uint8Array.from(e.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],v=r.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(n.getAssociatedTokenAddress(u.nft,m,!0)).then(function(a){return Promise.resolve(n.getAssociatedTokenAddress(u.nft,u.authority,!0)).then(function(d){return console.log("[*] AUCTION MANAGER NFT escrow: ",a),console.log("[*] LISTER NFT owner: ",d),Promise.resolve(n.getAssociatedTokenAddress(u.tokenMint,t,!0,i)).then(function(a){return Promise.resolve(n.getAssociatedTokenAddress(u.nft,t,!0)).then(function(d){return Promise.resolve(n.getAssociatedTokenAddress(u.tokenMint,m,!0,i)).then(function(i){console.log("[*] BIDDER TOKEN account: ",a),console.log("[*] BIDDER NFT account: ",d),console.log("[*] AUCTION MANAGER TOKEN escrow: ",i);var l=Math.floor(Date.now()/1e3);return Promise.resolve(c.programLoader.program.methods.increaseBid(new s.BN(o),new s.BN(l)).accounts({applicationState:c.programLoader.applicationState,userdata:b,bidReceipt:y,user:t,listing:f,nft:u.nft,auctionManager:m,bidderAccount:a,tokenEscrow:i,tokenMint:u.tokenMint,tokenProgram:n.TOKEN_PROGRAM_ID,associatedTokenProgram:n.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId,feeAccount:e.feeAccount}).transaction()).then(function(e){return Promise.resolve(c.programLoader.getRecentBlockHash()).then(function(r){return e.recentBlockhash=r.blockhash,e.feePayer=t,e})})})})})})})})})})},function(e){throw console.error(e),new Error("Failed to increase bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},e}();function p(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}var h=/*#__PURE__*/function(){function e(e){this.programLoader=void 0,this.programLoader=e}var t=e.prototype;return t.create=function(e,t){try{var o=this;return Promise.resolve(p(function(){var i=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(e.toBuffer()),Uint8Array.from(t.toBuffer())],a=r.PublicKey.findProgramAddressSync(i,o.programLoader.program.programId),c=a[0],u=a[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:e,systemProgram:r.SystemProgram.programId,auctionManager:c,tokenProgram:n.TOKEN_PROGRAM_ID,rent:s.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(p(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)}},e}();function y(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}var A=/*#__PURE__*/function(){function e(e){this.programLoader=void 0,this.auctionManagerProgram=void 0,this.programLoader=e,this.auctionManagerProgram=new h(e)}var t=e.prototype;return t.create=function(e,t,o,i,a,c,u){try{var m=this;return Promise.resolve(y(function(){var d=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(e.toBuffer()),Uint8Array.from(i.toBuffer())],l=r.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=[s.utils.bytes.utf8.encode("listing"),Uint8Array.from(e.toBuffer()),Uint8Array.from(i.toBuffer()),Uint8Array.from(f.toBuffer()),Uint8Array.from(t.toBuffer())],h=r.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=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(i.toBuffer()),Uint8Array.from(d.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],g=r.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(n.getAssociatedTokenAddress(e,f,!0)).then(function(l){return Promise.resolve(n.getAssociatedTokenAddress(e,i,!0)).then(function(g){return Promise.resolve(n.getAssociatedTokenAddress(t,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=n.createAssociatedTokenAccountInstruction(i,l,f,e);A.push(S)}if(!v){var M=n.createAssociatedTokenAccountInstruction(i,g,i,e);A.push(M)}if(!b){var k=n.createAssociatedTokenAccountInstruction(i,h,i,t,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 s.BN(a),new s.BN(c),new s.BN(B),w?new s.BN(w):w).accounts({applicationState:m.programLoader.applicationState,auctionManager:f,listing:y,owner:i,userdata:p,nft:e,nftEscrow:l,proceedsWallet:h,tokenMint:t,feeAccount:d.feeAccount,nftOwner:g,tokenProgram:n.TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId,rent:s.web3.SYSVAR_RENT_PUBKEY}).instruction()).then(function(e){return A.push(e),A})}var k=function(){if(!S)return Promise.resolve(m.auctionManagerProgram.create(e,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)}},t.createTransaction=function(e,t,n,o,i,a,s){try{var c=this;return Promise.resolve(y(function(){return Promise.resolve(c.create(e,t,n,o,i,a,s)).then(function(e){var t,n=(t=new r.Transaction).add.apply(t,e);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)}},t.get=function(e){try{var r=this;return Promise.resolve(y(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)}},t.fetchMany=function(e){try{var r=this;return Promise.resolve(y(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)}},t.getAll=function(){try{var e=this;return Promise.resolve(y(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)}},t.cancel=function(e){try{var t=this;return Promise.resolve(y(function(){return Promise.resolve(t.get(e)).then(function(e){var o=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(e.nft.toBuffer()),Uint8Array.from(e.authority.toBuffer())],i=r.PublicKey.findProgramAddressSync(o,t.programLoader.program.programId)[0],a=[s.utils.bytes.utf8.encode("listing"),Uint8Array.from(e.nft.toBuffer()),Uint8Array.from(e.authority.toBuffer()),Uint8Array.from(i.toBuffer()),Uint8Array.from(e.tokenMint.toBuffer())],c=r.PublicKey.findProgramAddressSync(a,t.programLoader.program.programId),u=c[0],m=c[1];return console.log("[*] Listing: ",u),console.log("[*] Listing bump: ",m),Promise.resolve(t.programLoader.program.account.applicationState.fetch(t.programLoader.applicationState)).then(function(o){var a=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(e.authority.toBuffer()),Uint8Array.from(o.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],c=r.PublicKey.findProgramAddressSync(a,t.programLoader.program.programId),m=c[0],d=c[1];return console.log("[*] Userdata: ",m),console.log("[*] Userdata bump: ",d),Promise.resolve(n.getAssociatedTokenAddress(e.nft,i,!0)).then(function(a){return Promise.resolve(n.getAssociatedTokenAddress(e.nft,e.authority,!0)).then(function(c){var d=Math.floor(Date.now()/1e3);return Promise.resolve(t.programLoader.program.methods.cancelListing(new s.BN(d)).accounts({applicationState:t.programLoader.applicationState,auctionManager:i,listing:u,userdata:m,nft:e.nft,nftEscrow:a,originalNftHolder:c,feeAccount:o.feeAccount,user:e.authority,tokenProgram:n.TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId}).transaction()).then(function(r){return Promise.resolve(t.programLoader.getRecentBlockHash()).then(function(t){return r.recentBlockhash=t.blockhash,r.feePayer=e.authority,r})})})})})})},function(r){throw console.error(r),new Error("Failed to cancel listing ("+e+"): "+r.message)}))}catch(e){return Promise.reject(e)}},t.getBids=function(e){try{var r=this;return Promise.resolve(y(function(){var t=new g(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)}},t.getByState=function(e){try{var r=this;return Promise.resolve(y(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)}},t.getOneTimeSales=function(){try{var e=this;return Promise.resolve(y(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)}},t.getAuctions=function(){try{var e=this;return Promise.resolve(y(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)}},t.getHighestBidInfo=function(e){try{var r=this;return Promise.resolve(y(function(){var t=new g(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)}},t.getBidsInfoToRefund=function(e){try{var r,t,n=this;return Promise.resolve(y(function(){return Promise.resolve(n.get(e)).then(function(e){var o=e.bidReceipts.filter(function(r){return r!==e.highestBidReceipt}),i=new g(n.programLoader);if(0===e.bidReceipts.length)return[];var a,s=[],c=!1,u=!1,d=M(function(){return y(function(){r=m(o);var n=function(e,r,t){for(var n;;){var o=e();if(S(o)&&(o=o.v),!o)return i;if(o.then){n=0;break}var i=t();if(i&&i.then){if(!S(i)){n=1;break}i=i.s}if(r){var a=r();if(a&&a.then&&!S(a)){n=2;break}}}var s=new b,c=P.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&&!S(a))return void a.then(d).then(void 0,c);if(!(o=e())||S(o)&&!o.v)return void P(s,1,i);if(o.then)return void o.then(m).then(void 0,c);S(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):P(s,1,i)}function d(){(o=e())?o.then?o.then(m).then(void 0,c):m(o):P(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){u=!0,a=e})},function(e,t){function n(r){if(e)throw t;return t}var o=M(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(u)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)}},e}();function P(e,r,t){if(!e.s){if(t instanceof b){if(!t.s)return void(t.o=P.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(P.bind(null,e,r),P.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var v,b=/*#__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{P(n,1,i(this.v))}catch(e){P(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?P(n,1,r?r(o):o):t?P(n,1,t(o)):P(n,2,o)}catch(e){P(n,2,e)}},n},e}();function S(e){return e instanceof b&&1&e.s}function M(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 k(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}e.ListingState=void 0,(v=e.ListingState||(e.ListingState={})).Active="active",v.Sold="sold",v.Cancelled="cancelled";var B=/*#__PURE__*/function(){function t(e){this.programLoader=void 0,this.listingProgram=void 0,this.bidReceiptProgram=void 0,this.programLoader=e,this.listingProgram=new A(e),this.bidReceiptProgram=new g(e)}var o=t.prototype;return o.create=function(e){try{var t=this;return Promise.resolve(k(function(){var n=[s.utils.bytes.utf8.encode("deserialize"),Uint8Array.from(t.programLoader.wallet.publicKey.toBuffer())],o=r.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:e,systemProgram:r.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)}},o.getAll=function(){try{var e=this;return Promise.resolve(k(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)}},o.get=function(e){try{var r=this;return Promise.resolve(k(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)}},o.update=function(e,r){try{var t=this;return Promise.resolve(k(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)}},o.executeSale=function(t,o,i){try{var a,c,u=this;return Promise.resolve(k(function(){return Promise.resolve(u.listingProgram.get(t)).then(function(d){return console.log("[*] Listing data: ",JSON.stringify(d,null,4)),Promise.resolve(u.programLoader.program.account.applicationState.fetch(u.programLoader.applicationState)).then(function(f){console.log("[*] Application state: ",JSON.stringify(f,null,4));var g=[s.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(d.nft.toBuffer()),Uint8Array.from(d.authority.toBuffer())],p=r.PublicKey.findProgramAddressSync(g,u.programLoader.program.programId)[0];return Promise.resolve(u.programLoader.program.account.auctionManager.fetch(p)).then(function(g){console.log("[*] Auction manager state: ",JSON.stringify(g,null,4));var h=[s.utils.bytes.utf8.encode("listing"),Uint8Array.from(d.nft.toBuffer()),Uint8Array.from(d.authority.toBuffer()),Uint8Array.from(p.toBuffer()),Uint8Array.from(d.tokenMint.toBuffer())],y=r.PublicKey.findProgramAddressSync(h,u.programLoader.program.programId)[0];return Promise.resolve(u.programLoader.program.account.listing.fetch(y)).then(function(g){if(console.log("[*] Listing: ",JSON.stringify(g,null,4)),!t.equals(y))throw new Error("Invalid Listing");if(console.log("[*] Listing state: ",d.state),!l(d.state,e.ListingState.Active))throw new Error("Listing is not active");return Promise.resolve(u.listingProgram.getHighestBidInfo(t)).then(function(e){return console.log("[*] Highest bid info: ",JSON.stringify(e,null,4)),Promise.resolve(u.listingProgram.getBidsInfoToRefund(t)).then(function(t){function l(t){return Promise.resolve(n.getAssociatedTokenAddress(d.nft,p,!0)).then(function(t){return Promise.resolve(n.getAssociatedTokenAddress(d.nft,e.bidder,!0)).then(function(i){return Promise.resolve(n.getAssociatedTokenAddress(d.tokenMint,p,!0)).then(function(a){return Promise.resolve(n.getAssociatedTokenAddress(d.tokenMint,f.feeAccount,!0)).then(function(c){var m=[s.utils.bytes.utf8.encode("user_account"),Uint8Array.from(e.bidder.toBuffer()),Uint8Array.from(f.listingAuthority.toBuffer()),s.utils.bytes.utf8.encode("deserialize")],l=r.PublicKey.findProgramAddressSync(m,u.programLoader.program.programId)[0];console.log("[*] WINNER NFT account: ",i),console.log("[*] AUCTION MANAGER Token escrow: ",a);var g=Math.floor(Date.now()/1e3);return Promise.resolve(u.programLoader.program.methods.executeSale(new s.BN(g)).accounts({applicationState:u.programLoader.applicationState,userdata:l,bidReceipt:e.receipt,user:o,listing:y,nft:d.nft,auctionManager:p,nftEscrow:t,winnerNftAccount:i,proceedsWallet:d.auctionProceedsWallet,tokenEscrow:a,tokenMint:d.tokenMint,tokenProgram:n.TOKEN_PROGRAM_ID,associatedTokenProgram:n.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:r.SystemProgram.programId,feeTokenAccount:c}).instruction()).then(function(e){return h.add(e),Promise.resolve(u.programLoader.getRecentBlockHash()).then(function(e){return h.recentBlockhash=e.blockhash,h.feePayer=o,h})})})})})})}console.log("[*] Bids info to refund: ",JSON.stringify(t,null,4));var g,h=new r.Transaction,A=!1,P=!1,v=I(function(){return k(function(){a=m(t);var e=function(e,r,t){for(var n;;){var o=e();if(T(o)&&(o=o.v),!o)return i;if(o.then){n=0;break}var i=t();if(i&&i.then){if(!T(i)){n=1;break}i=i.s}if(r){var a=r();if(a&&a.then&&!T(a)){n=2;break}}}var s=new L,c=w.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&&!T(a))return void a.then(d).then(void 0,c);if(!(o=e())||T(o)&&!o.v)return void w(s,1,i);if(o.then)return void o.then(m).then(void 0,c);T(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):w(s,1,i)}function d(){(o=e())?o.then?o.then(m).then(void 0,c):m(o):w(s,1,i)}}(function(){return Promise.resolve(a.next()).then(function(e){return A=!(c=e).done})},function(){return!!(A=!1)},function(){var e=c.value;return Promise.resolve(u.bidReceiptProgram.refund(e.receipt,e.bidder,i)).then(function(e){h.add(e)})});if(e&&e.then)return e.then(function(){})},function(e){P=!0,g=e})},function(e,r){function t(t){if(e)throw r;return r}var n=I(function(){var e=function(){if(A&&null!=a.return)return Promise.resolve(a.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(P)throw g;if(e)throw r;return r});return n&&n.then?n.then(t):t()});return v&&v.then?v.then(l):l()})})})})})})},function(e){throw console.error(e),new Error("Failed to execute sale: "+e.message)}))}catch(e){return Promise.reject(e)}},t}();function w(e,r,t){if(!e.s){if(t instanceof L){if(!t.s)return void(t.o=w.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(w.bind(null,e,r),w.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var L=/*#__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{w(n,1,i(this.v))}catch(e){w(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?w(n,1,r?r(o):o):t?w(n,1,t(o)):w(n,2,o)}catch(e){w(n,2,e)}},n},e}();function T(e){return e instanceof L&&1&e.s}function I(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 R={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"}