UNPKG

@deserialize/auction-sdk

Version:

An SDK for Auction on SVMs

1 lines 75.1 kB
import{PublicKey as e,SystemProgram as r,Transaction as t,Connection as n,Keypair as o}from"@solana/web3.js";import*as i from"@coral-xyz/anchor";import{getAssociatedTokenAddress as a,createAssociatedTokenAccountInstruction as s,TOKEN_PROGRAM_ID as u,ASSOCIATED_TOKEN_PROGRAM_ID as c}from"@solana/spl-token";import*as m from"@project-serum/anchor";import{Program as f}from"@project-serum/anchor";function l(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 d(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 g(r.call(e));t="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function g(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 g=function(e){this.s=e,this.n=e.next},g.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 g(e)}var p;function h(e,r){if(e.hasOwnProperty(r))return!0}function y(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"}(p||(p={}));var v=/*#__PURE__*/function(){function n(e){this.programLoader=void 0,this.programLoader=e}var o=n.prototype;return o.getListingProgram=function(){return new S(this.programLoader)},o.create=function(t,n,o,m){try{var f=this;return Promise.resolve(y(function(){var l=f.getListingProgram();return Promise.resolve(l.get(t)).then(function(t){return Promise.resolve(f.programLoader.program.account.applicationState.fetch(f.programLoader.applicationState)).then(function(l){var d=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(t.nft.toBuffer()),Uint8Array.from(t.authority.toBuffer())],g=e.findProgramAddressSync(d,f.programLoader.program.programId)[0],p=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(t.nft.toBuffer()),Uint8Array.from(t.authority.toBuffer()),Uint8Array.from(g.toBuffer()),Uint8Array.from(t.tokenMint.toBuffer())],h=e.findProgramAddressSync(p,f.programLoader.program.programId),y=h[0],v=h[1];console.log("[*] Listing: ",y),console.log("[*] Listing bump: ",v);var P=[i.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(y.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(t.tokenMint.toBuffer())],A=e.findProgramAddressSync(P,f.programLoader.program.programId),b=A[0],S=A[1];console.log("[*] Bid receipt: ",b),console.log("[*] Bid receipt bump: ",S);var M=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(l.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],B=e.findProgramAddressSync(M,f.programLoader.program.programId),w=B[0],L=B[1];return console.log("[*] Userdata: ",w),console.log("[*] Userdata bump: ",L),Promise.resolve(a(t.nft,g,!0)).then(function(e){return Promise.resolve(a(t.tokenMint,t.authority,!0,m)).then(function(d){return Promise.resolve(a(t.tokenMint,n,!0,m)).then(function(p){return Promise.resolve(a(t.nft,n,!0)).then(function(h){return Promise.resolve(a(t.tokenMint,g,!0,m)).then(function(v){return Promise.resolve(a(t.tokenMint,l.feeAccount,!0,m)).then(function(a){console.log("[*] BIDDER TOKEN account: ",p),console.log("[*] BIDDER NFT account: ",h),console.log("[*] AUCTION MANAGER TOKEN escrow: ",v),console.log("[*] FEE TOKEN account: ",a);var P=[];return Promise.resolve(f.programLoader.connection.getAccountInfo(p)).then(function(A){return Promise.resolve(f.programLoader.connection.getAccountInfo(h)).then(function(S){return Promise.resolve(f.programLoader.connection.getAccountInfo(v)).then(function(M){return Promise.resolve(f.programLoader.connection.getAccountInfo(a)).then(function(B){if(!B){var L=s(n,a,l.feeAccount,t.tokenMint,m);P.push(L)}if(!A){var k=s(n,p,n,t.tokenMint,m);P.push(k)}if(!S){var U=s(n,h,n,t.nft);P.push(U)}if(!M){var R=s(n,v,g,t.tokenMint,m);P.push(R)}var I=Math.floor(Date.now()/1e3);return Promise.resolve(f.programLoader.program.methods.bidOnListing(new i.BN(o),new i.BN(I)).accounts({applicationState:f.programLoader.applicationState,userdata:w,bidReceipt:b,user:n,listing:y,nft:t.nft,auctionManager:g,proceedsWallet:d,nftEscrow:e,bidderNftAccount:h,bidderAccount:p,tokenEscrow:v,tokenMint:t.tokenMint,tokenProgram:u,associatedTokenProgram:c,systemProgram:r.programId,feeAccount:l.feeAccount,feeTokenAccount:a}).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)}},o.createTransaction=function(e,r,n,o){try{var i=this;return Promise.resolve(y(function(){return Promise.resolve(i.create(e,r,n,o)).then(function(e){for(var n,o=new t,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 l(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)?l(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=r,o})})},function(e){throw console.error(e),new Error("Failed to create bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},o.get=function(e){try{var r=this;return Promise.resolve(y(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)}},o.fetchMany=function(e){try{var r=this;return Promise.resolve(y(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)}},o.getAll=function(){try{var e=this;return Promise.resolve(y(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)}},o.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(e){throw console.error(e),new Error("Failed to get bid receipts by state: "+e.message)}))}catch(e){return Promise.reject(e)}},o.getUserBidOnListing=function(e,r){try{var t=this;return Promise.resolve(y(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)}},o.cancel=function(t,n,o){try{var s=this;return Promise.resolve(y(function(){return Promise.resolve(s.get(t)).then(function(t){var m=s.getListingProgram();return Promise.resolve(m.get(t.listing)).then(function(m){if(!t.bidder.equals(n))throw new Error("You cannot cancel another user's bid");return Promise.resolve(s.programLoader.program.account.applicationState.fetch(s.programLoader.applicationState)).then(function(t){var f=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer())],l=e.findProgramAddressSync(f,s.programLoader.program.programId)[0],d=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer()),Uint8Array.from(l.toBuffer()),Uint8Array.from(m.tokenMint.toBuffer())],g=e.findProgramAddressSync(d,s.programLoader.program.programId),p=g[0],h=g[1];console.log("[*] Listing: ",p),console.log("[*] Listing bump: ",h);var y=[i.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(p.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(m.tokenMint.toBuffer())],v=e.findProgramAddressSync(y,s.programLoader.program.programId),P=v[0],A=v[1];console.log("[*] Bid receipt: ",P),console.log("[*] Bid receipt bump: ",A);var b=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(t.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],S=e.findProgramAddressSync(b,s.programLoader.program.programId),M=S[0],B=S[1];return console.log("[*] Userdata: ",M),console.log("[*] Userdata bump: ",B),Promise.resolve(a(m.nft,l,!0)).then(function(e){return Promise.resolve(a(m.nft,m.authority,!0)).then(function(f){return console.log("[*] AUCTION MANAGER NFT escrow: ",e),console.log("[*] LISTER NFT owner: ",f),Promise.resolve(a(m.tokenMint,n,!0,o)).then(function(e){return Promise.resolve(a(m.nft,n,!0)).then(function(f){return Promise.resolve(a(m.tokenMint,l,!0,o)).then(function(o){return console.log("[*] BIDDER TOKEN account: ",e),console.log("[*] BIDDER NFT account: ",f),console.log("[*] AUCTION MANAGER TOKEN escrow: ",o),Promise.resolve(Promise.all(m.bidReceipts.map(function(e){try{return Promise.resolve(s.get(e)).then(function(r){return{amount:r.amount,key:e}})}catch(e){return Promise.reject(e)}}))).then(function(a){var f=Math.floor(Date.now()/1e3);return Promise.resolve(s.programLoader.program.methods.cancelBid(a,new i.BN(f)).accounts({applicationState:s.programLoader.applicationState,userdata:M,bidReceipt:P,user:n,listing:p,nft:m.nft,auctionManager:l,cancellerTokenAccount:e,tokenEscrow:o,tokenMint:m.tokenMint,tokenProgram:u,associatedTokenProgram:c,systemProgram:r.programId,feeAccount:t.feeAccount}).transaction()).then(function(e){return Promise.resolve(s.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)}},o.refund=function(t,n,o){try{var s=this;return Promise.resolve(y(function(){return Promise.resolve(s.get(t)).then(function(t){console.log("[*] Bid receipt data: ",JSON.stringify(t,null,4));var m=s.getListingProgram();return Promise.resolve(m.get(t.listing)).then(function(m){if(console.log("[*] Listing data: ",JSON.stringify(m,null,4)),!t.bidder.equals(n))throw new Error("You cannot cancel another user's bid");if(!h(t.state,p.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(t){console.log("[*] Application state: ",JSON.stringify(t,null,4));var f=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer())],l=e.findProgramAddressSync(f,s.programLoader.program.programId)[0];console.log("[*] AUCTION MANAGER",l);var d=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(m.nft.toBuffer()),Uint8Array.from(m.authority.toBuffer()),Uint8Array.from(l.toBuffer()),Uint8Array.from(m.tokenMint.toBuffer())],g=e.findProgramAddressSync(d,s.programLoader.program.programId),p=g[0],h=g[1];console.log("[*] Listing: ",p),console.log("[*] Listing bump: ",h);var y=[i.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(p.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(m.tokenMint.toBuffer())],v=e.findProgramAddressSync(y,s.programLoader.program.programId),P=v[0],A=v[1];console.log("[*] Bid receipt: ",P),console.log("[*] Bid receipt bump: ",A);var b=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(t.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],S=e.findProgramAddressSync(b,s.programLoader.program.programId),M=S[0],B=S[1];return console.log("[*] Userdata: ",M),console.log("[*] Userdata bump: ",B),Promise.resolve(a(m.nft,l,!0)).then(function(e){return Promise.resolve(a(m.nft,m.authority,!0)).then(function(t){return console.log("[*] AUCTION MANAGER NFT escrow: ",e),console.log("[*] LISTER NFT owner: ",t),Promise.resolve(a(m.tokenMint,n,!0,o)).then(function(e){return Promise.resolve(a(m.nft,n,!0)).then(function(t){return Promise.resolve(a(m.tokenMint,l,!0,o)).then(function(o){console.log("[*] BIDDER TOKEN account: ",e),console.log("[*] BIDDER NFT account: ",t),console.log("[*] AUCTION MANAGER TOKEN escrow: ",o);var a=Math.floor(Date.now()/1e3);return Promise.resolve(s.programLoader.program.methods.refundBid(new i.BN(a)).accounts({applicationState:s.programLoader.applicationState,user:n,auctionManager:l,listing:p,nft:m.nft,userdata:M,userRefundAccount:e,refundBidReceipt:P,tokenEscrow:o,tokenMint:m.tokenMint,tokenProgram:u,associatedTokenProgram:c,systemProgram:r.programId}).instruction())})})})})})})})})},function(e){throw console.error(e),new Error("Failed to refund bid receipt: "+e.message)}))}catch(e){return Promise.reject(e)}},o.increase=function(t,n,o,s){try{var m=this;return Promise.resolve(y(function(){return Promise.resolve(m.get(t)).then(function(t){var f=m.getListingProgram();return Promise.resolve(f.get(t.listing)).then(function(f){if(!t.bidder.equals(n))throw new Error("You cannot increase another user's bid");if(t.state!==p.Active)throw new Error("You cannot increase a bid that is not active");return Promise.resolve(m.programLoader.program.account.applicationState.fetch(m.programLoader.applicationState)).then(function(t){var l=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(f.nft.toBuffer()),Uint8Array.from(f.authority.toBuffer())],d=e.findProgramAddressSync(l,m.programLoader.program.programId)[0],g=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(f.nft.toBuffer()),Uint8Array.from(f.authority.toBuffer()),Uint8Array.from(d.toBuffer()),Uint8Array.from(f.tokenMint.toBuffer())],p=e.findProgramAddressSync(g,m.programLoader.program.programId),h=p[0],y=p[1];console.log("[*] Listing: ",h),console.log("[*] Listing bump: ",y);var v=[i.utils.bytes.utf8.encode("bid_receipt"),Uint8Array.from(h.toBuffer()),Uint8Array.from(n.toBuffer()),Uint8Array.from(f.tokenMint.toBuffer())],P=e.findProgramAddressSync(v,m.programLoader.program.programId),A=P[0],b=P[1];console.log("[*] Bid receipt: ",A),console.log("[*] Bid receipt bump: ",b);var S=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(n.toBuffer()),Uint8Array.from(t.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],M=e.findProgramAddressSync(S,m.programLoader.program.programId),B=M[0],w=M[1];return console.log("[*] Userdata: ",B),console.log("[*] Userdata bump: ",w),Promise.resolve(a(f.nft,d,!0)).then(function(e){return Promise.resolve(a(f.nft,f.authority,!0)).then(function(l){return console.log("[*] AUCTION MANAGER NFT escrow: ",e),console.log("[*] LISTER NFT owner: ",l),Promise.resolve(a(f.tokenMint,n,!0,s)).then(function(e){return Promise.resolve(a(f.nft,n,!0)).then(function(l){return Promise.resolve(a(f.tokenMint,d,!0,s)).then(function(a){console.log("[*] BIDDER TOKEN account: ",e),console.log("[*] BIDDER NFT account: ",l),console.log("[*] AUCTION MANAGER TOKEN escrow: ",a);var s=Math.floor(Date.now()/1e3);return Promise.resolve(m.programLoader.program.methods.increaseBid(new i.BN(o),new i.BN(s)).accounts({applicationState:m.programLoader.applicationState,userdata:B,bidReceipt:A,user:n,listing:h,nft:f.nft,auctionManager:d,bidderAccount:e,tokenEscrow:a,tokenMint:f.tokenMint,tokenProgram:u,associatedTokenProgram:c,systemProgram:r.programId,feeAccount:t.feeAccount}).transaction()).then(function(e){return Promise.resolve(m.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)}},n}();function P(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 t(e){this.programLoader=void 0,this.programLoader=e}var n=t.prototype;return n.create=function(t,n){try{var o=this;return Promise.resolve(P(function(){var a=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(t.toBuffer()),Uint8Array.from(n.toBuffer())],s=e.findProgramAddressSync(a,o.programLoader.program.programId),c=s[0],m=s[1];return console.log("[*] Auction manager: ",c),console.log("[*] Auction manager bump: ",m),Promise.resolve(o.programLoader.program.methods.createAuctionManager().accounts({applicationState:o.programLoader.applicationState,nft:t,systemProgram:r.programId,auctionManager:c,tokenProgram:u,rent:i.web3.SYSVAR_RENT_PUBKEY,user:n}).instruction())},function(e){throw console.error(e),new Error("Failed to create auction: "+e.message)}))}catch(e){return Promise.reject(e)}},n.get=function(e){try{var r=this;return Promise.resolve(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)}},n.getAll=function(){try{return Promise.resolve(this.programLoader.program.account.auctionManager.all()).then(function(e){return console.log("[*] Auction manager accounts: ",JSON.stringify(e,null,2)),e})}catch(e){return Promise.reject(e)}},n.fetchMany=function(e){try{return Promise.resolve(this.programLoader.program.account.auctionManager.fetchMultiple(e)).then(function(e){return console.log("[*] Auction manager accounts: ",JSON.stringify(e,null,2)),e})}catch(e){return Promise.reject(e)}},t}();function b(e,r){try{var t=e()}catch(e){return r(e)}return t&&t.then?t.then(void 0,r):t}var S=/*#__PURE__*/function(){function n(e){this.programLoader=void 0,this.auctionManagerProgram=void 0,this.programLoader=e,this.auctionManagerProgram=new A(e)}var o=n.prototype;return o.create=function(t,n,o,c,m,f,l){try{var d=this;return Promise.resolve(b(function(){var g=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(t.toBuffer()),Uint8Array.from(c.toBuffer())],p=e.findProgramAddressSync(g,d.programLoader.program.programId),h=p[0],y=p[1];console.log("[*] Auction manager: ",h),console.log("[*] Auction manager bump: ",y);var v=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(t.toBuffer()),Uint8Array.from(c.toBuffer()),Uint8Array.from(h.toBuffer()),Uint8Array.from(n.toBuffer())],P=e.findProgramAddressSync(v,d.programLoader.program.programId),A=P[0],b=P[1];return console.log("[*] Listing: ",A),console.log("[*] Listing bump: ",b),Promise.resolve(d.programLoader.program.account.applicationState.fetch(d.programLoader.applicationState)).then(function(g){var p=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(c.toBuffer()),Uint8Array.from(g.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],y=e.findProgramAddressSync(p,d.programLoader.program.programId),v=y[0],P=y[1];console.log("[*] Userdata: ",v),console.log("[*] Userdata bump: ",P);var b=[];return Promise.resolve(a(t,h,!0)).then(function(e){return Promise.resolve(a(t,c,!0)).then(function(p){return Promise.resolve(a(n,c,!0,o)).then(function(a){return Promise.resolve(d.programLoader.connection.getAccountInfo(e)).then(function(y){return Promise.resolve(d.programLoader.connection.getAccountInfo(p)).then(function(P){return Promise.resolve(d.programLoader.connection.getAccountInfo(a)).then(function(S){return Promise.resolve(d.programLoader.connection.getAccountInfo(h)).then(function(M){function B(){if(!y){var M=s(c,e,h,t);b.push(M)}if(!P){var B=s(c,p,c,t);b.push(B)}if(!S){var w=s(c,a,c,n,o);b.push(w)}var L=Math.floor(Date.now()/1e3),k=null;return l&&(k=L+86400*l),Promise.resolve(d.programLoader.program.methods.createListing(new i.BN(m),new i.BN(f),new i.BN(L),k?new i.BN(k):k).accounts({applicationState:d.programLoader.applicationState,auctionManager:h,listing:A,owner:c,userdata:v,nft:t,nftEscrow:e,proceedsWallet:a,tokenMint:n,feeAccount:g.feeAccount,nftOwner:p,tokenProgram:u,systemProgram:r.programId,rent:i.web3.SYSVAR_RENT_PUBKEY}).instruction()).then(function(e){return b.push(e),b})}var w=function(){if(!M)return Promise.resolve(d.auctionManagerProgram.create(t,c)).then(function(e){b.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)}},o.createTransaction=function(e,r,n,o,i,a,s){try{var u=this;return Promise.resolve(b(function(){return Promise.resolve(u.create(e,r,n,o,i,a,s)).then(function(e){var r,n=(r=new t).add.apply(r,e);return Promise.resolve(u.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)}},o.get=function(e){try{var r=this;return Promise.resolve(b(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)}},o.fetchMany=function(e){try{var r=this;return Promise.resolve(b(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)}},o.getAll=function(){try{var e=this;return Promise.resolve(b(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)}},o.cancel=function(t){try{var n=this;return Promise.resolve(b(function(){return Promise.resolve(n.get(t)).then(function(t){var o=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(t.nft.toBuffer()),Uint8Array.from(t.authority.toBuffer())],s=e.findProgramAddressSync(o,n.programLoader.program.programId)[0],c=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(t.nft.toBuffer()),Uint8Array.from(t.authority.toBuffer()),Uint8Array.from(s.toBuffer()),Uint8Array.from(t.tokenMint.toBuffer())],m=e.findProgramAddressSync(c,n.programLoader.program.programId),f=m[0],l=m[1];return console.log("[*] Listing: ",f),console.log("[*] Listing bump: ",l),Promise.resolve(n.programLoader.program.account.applicationState.fetch(n.programLoader.applicationState)).then(function(o){var c=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(t.authority.toBuffer()),Uint8Array.from(o.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],m=e.findProgramAddressSync(c,n.programLoader.program.programId),l=m[0],d=m[1];return console.log("[*] Userdata: ",l),console.log("[*] Userdata bump: ",d),Promise.resolve(a(t.nft,s,!0)).then(function(e){return Promise.resolve(a(t.nft,t.authority,!0)).then(function(a){var c=Math.floor(Date.now()/1e3);return Promise.resolve(n.programLoader.program.methods.cancelListing(new i.BN(c)).accounts({applicationState:n.programLoader.applicationState,auctionManager:s,listing:f,userdata:l,nft:t.nft,nftEscrow:e,originalNftHolder:a,feeAccount:o.feeAccount,user:t.authority,tokenProgram:u,systemProgram:r.programId}).transaction()).then(function(e){return Promise.resolve(n.programLoader.getRecentBlockHash()).then(function(r){return e.recentBlockhash=r.blockhash,e.feePayer=t.authority,e})})})})})})},function(e){throw console.error(e),new Error("Failed to cancel listing ("+t+"): "+e.message)}))}catch(e){return Promise.reject(e)}},o.getBids=function(e){try{var r=this;return Promise.resolve(b(function(){var t=new v(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)}},o.getByState=function(e){try{var r=this;return Promise.resolve(b(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)}},o.getOneTimeSales=function(){try{var e=this;return Promise.resolve(b(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)}},o.getAuctions=function(){try{var e=this;return Promise.resolve(b(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)}},o.getHighestBidInfo=function(e){try{var r=this;return Promise.resolve(b(function(){var t=new v(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)}},o.getBidsInfoToRefund=function(e){try{var r,t,n=this;return Promise.resolve(b(function(){return Promise.resolve(n.get(e)).then(function(e){var o=e.bidReceipts.filter(function(r){return r!==e.highestBidReceipt}),i=new v(n.programLoader);if(0===e.bidReceipts.length)return[];var a,s=[],u=!1,c=!1,m=k(function(){return b(function(){r=d(o);var n=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,u=M.bind(null,s,2);return(0===n?o.then(m):1===n?i.then(c):a.then(f)).then(void 0,u),s;function c(n){i=n;do{if(r&&(a=r())&&a.then&&!L(a))return void a.then(f).then(void 0,u);if(!(o=e())||L(o)&&!o.v)return void M(s,1,i);if(o.then)return void o.then(m).then(void 0,u);L(i=t())&&(i=i.v)}while(!i||!i.then);i.then(c).then(void 0,u)}function m(e){e?(i=t())&&i.then?i.then(c).then(void 0,u):c(i):M(s,1,i)}function f(){(o=e())?o.then?o.then(m).then(void 0,u):m(o):M(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return u=!(t=e).done})},function(){return!!(u=!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){c=!0,a=e})},function(e,t){function n(r){if(e)throw t;return t}var o=k(function(){var e=function(){if(u&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(c)throw a;if(e)throw r;return r});return o&&o.then?o.then(n):n()});return m&&m.then?m.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)}},n}();function M(e,r,t){if(!e.s){if(t instanceof w){if(!t.s)return void(t.o=M.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(M.bind(null,e,r),M.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var B,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{M(n,1,i(this.v))}catch(e){M(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?M(n,1,r?r(o):o):t?M(n,1,t(o)):M(n,2,o)}catch(e){M(n,2,e)}},n},e}();function L(e){return e instanceof w&&1&e.s}function k(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 U(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.Sold="sold",e.Cancelled="cancelled"}(B||(B={}));var R=/*#__PURE__*/function(){function n(e){this.programLoader=void 0,this.listingProgram=void 0,this.bidReceiptProgram=void 0,this.programLoader=e,this.listingProgram=new S(e),this.bidReceiptProgram=new v(e)}var o=n.prototype;return o.create=function(t){try{var n=this;return Promise.resolve(U(function(){var o=[i.utils.bytes.utf8.encode("deserialize"),Uint8Array.from(n.programLoader.wallet.publicKey.toBuffer())],a=e.findProgramAddressSync(o,n.programLoader.program.programId)[0];return console.log("[*] NEW APPLICATION STATE:- "+a),Promise.resolve(n.programLoader.program.methods.initialize().accounts({applicationState:a,user:n.programLoader.wallet.publicKey,feeAccount:t,systemProgram:r.programId}).signers([n.programLoader.wallet]).rpc()).then(function(e){return console.log("[*] Transaction signature:- ",e),Promise.resolve(n.programLoader.program.account.applicationState.fetch(a))})},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(U(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(U(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(U(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(n,o,s){try{var m,f,l=this;return Promise.resolve(U(function(){return Promise.resolve(l.listingProgram.get(n)).then(function(g){return console.log("[*] Listing data: ",JSON.stringify(g,null,4)),Promise.resolve(l.programLoader.program.account.applicationState.fetch(l.programLoader.applicationState)).then(function(p){console.log("[*] Application state: ",JSON.stringify(p,null,4));var y=[i.utils.bytes.utf8.encode("auction_manager"),Uint8Array.from(g.nft.toBuffer()),Uint8Array.from(g.authority.toBuffer())],v=e.findProgramAddressSync(y,l.programLoader.program.programId)[0];return Promise.resolve(l.programLoader.program.account.auctionManager.fetch(v)).then(function(y){console.log("[*] Auction manager state: ",JSON.stringify(y,null,4));var P=[i.utils.bytes.utf8.encode("listing"),Uint8Array.from(g.nft.toBuffer()),Uint8Array.from(g.authority.toBuffer()),Uint8Array.from(v.toBuffer()),Uint8Array.from(g.tokenMint.toBuffer())],A=e.findProgramAddressSync(P,l.programLoader.program.programId)[0];return Promise.resolve(l.programLoader.program.account.listing.fetch(A)).then(function(y){if(console.log("[*] Listing: ",JSON.stringify(y,null,4)),!n.equals(A))throw new Error("Invalid Listing");if(console.log("[*] Listing state: ",g.state),!h(g.state,B.Active))throw new Error("Listing is not active");return Promise.resolve(l.listingProgram.getHighestBidInfo(n)).then(function(h){return console.log("[*] Highest bid info: ",JSON.stringify(h,null,4)),Promise.resolve(l.listingProgram.getBidsInfoToRefund(n)).then(function(n){function y(t){return Promise.resolve(a(g.nft,v,!0)).then(function(t){return Promise.resolve(a(g.nft,h.bidder,!0)).then(function(n){return Promise.resolve(a(g.tokenMint,v,!0)).then(function(s){return Promise.resolve(a(g.tokenMint,p.feeAccount,!0)).then(function(a){var m=[i.utils.bytes.utf8.encode("user_account"),Uint8Array.from(h.bidder.toBuffer()),Uint8Array.from(p.listingAuthority.toBuffer()),i.utils.bytes.utf8.encode("deserialize")],f=e.findProgramAddressSync(m,l.programLoader.program.programId)[0];console.log("[*] WINNER NFT account: ",n),console.log("[*] AUCTION MANAGER Token escrow: ",s);var d=Math.floor(Date.now()/1e3);return Promise.resolve(l.programLoader.program.methods.executeSale(new i.BN(d)).accounts({applicationState:l.programLoader.applicationState,userdata:f,bidReceipt:h.receipt,user:o,listing:A,nft:g.nft,auctionManager:v,nftEscrow:t,winnerNftAccount:n,proceedsWallet:g.auctionProceedsWallet,tokenEscrow:s,tokenMint:g.tokenMint,tokenProgram:u,associatedTokenProgram:c,systemProgram:r.programId,feeTokenAccount:a}).instruction()).then(function(e){return b.add(e),Promise.resolve(l.programLoader.getRecentBlockHash()).then(function(e){return b.recentBlockhash=e.blockhash,b.feePayer=o,b})})})})})})}console.log("[*] Bids info to refund: ",JSON.stringify(n,null,4));var P,b=new t,S=!1,M=!1,B=N(function(){return U(function(){m=d(n);var e=function(e,r,t){for(var n;;){var o=e();if(E(o)&&(o=o.v),!o)return i;if(o.then){n=0;break}var i=t();if(i&&i.then){if(!E(i)){n=1;break}i=i.s}if(r){var a=r();if(a&&a.then&&!E(a)){n=2;break}}}var s=new T,u=I.bind(null,s,2);return(0===n?o.then(m):1===n?i.then(c):a.then(f)).then(void 0,u),s;function c(n){i=n;do{if(r&&(a=r())&&a.then&&!E(a))return void a.then(f).then(void 0,u);if(!(o=e())||E(o)&&!o.v)return void I(s,1,i);if(o.then)return void o.then(m).then(void 0,u);E(i=t())&&(i=i.v)}while(!i||!i.then);i.then(c).then(void 0,u)}function m(e){e?(i=t())&&i.then?i.then(c).then(void 0,u):c(i):I(s,1,i)}function f(){(o=e())?o.then?o.then(m).then(void 0,u):m(o):I(s,1,i)}}(function(){return Promise.resolve(m.next()).then(function(e){return S=!(f=e).done})},function(){return!!(S=!1)},function(){var e=f.value;return Promise.resolve(l.bidReceiptProgram.refund(e.receipt,e.bidder,s)).then(function(e){b.add(e)})});if(e&&e.then)return e.then(function(){})},function(e){M=!0,P=e})},function(e,r){function t(t){if(e)throw r;return r}var n=N(function(){var e=function(){if(S&&null!=m.return)return Promise.resolve(m.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,r){if(M)throw P;if(e)throw r;return r});return n&&n.then?n.then(t):t()});return B&&B.then?B.then(y):y()})})})})})})},function(e){throw console.error(e),new Error("Failed to execute sale: "+e.message)}))}catch(e){return Promise.reject(e)}},n}();function I(e,r,t){if(!e.s){if(t instanceof T){if(!t.s)return void(t.o=I.bind(null,e,r));1&r&&(r=t.s),t=t.v}if(t&&t.then)return void t.then(I.bind(null,e,r),I.bind(null,e,2));e.s=r,e.v=t;const n=e.o;n&&n(e)}}var T=/*#__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{I(n,1,i(this.v))}catch(e){I(n,2,e)}return n}return this}return this.o=function(e){try{var o=e.v;1&e.s?I(n,1,r?r(o):o):t?I(n,1,t(o)):I(n,2,o)}catch(e){I(n,2,e)}},n},e}();function E(e){return e instanceof T&&1&e.s}function N(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 q={version:"0.1.0",name:"auction",instructions:[{name:"initialize",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initializeAccount",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"updateApplicationState",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0}],args:[{name:"feeAccount",type:"publicKey"}]},{name:"createAuctionManager",accounts:[{name:"applicationState",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"createListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"userdata",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"nftOwner",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"timeExtension",type:"u64"},{name:"startingPrice",type:"u128"},{name:"startTime",type:"u64"},{name:"endTime",type:{option:"u64"}}]},{name:"bidOnListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidderAccount",isMut:!0,isSigner:!1},{name:"bidderNftAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u128"},{name:"submittedAt",type:"u64"}]},{name:"cancelListing",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"originalNftHolder",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"cancelledAt",type:"u64"}]},{name:"increaseBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"bidderAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"newAmount",type:"u128"},{name:"updatedAt",type:"u64"}]},{name:"cancelBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"cancellerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bidReceipts",type:{vec:{defined:"ReceiptInfo"}}},{name:"submittedAt",type:"u64"}]},{name:"refundBid",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"userRefundAccount",isMut:!0,isSigner:!1},{name:"refundBidReceipt",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"refundedAt",type:"u64"}]},{name:"executeSale",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"listing",isMut:!0,isSigner:!1},{name:"userdata",isMut:!1,isSigner:!1},{name:"winnerNftAccount",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"tokenEscrow",isMut:!0,isSigner:!1},{name:"nftEscrow",isMut:!0,isSigner:!1},{name:"proceedsWallet",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"submittedAt",type:"u64"}]},{name:"createBidRequest",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"userdata",isMut:!0,isSigner:!1},{name:"bidRequest",isMut:!0,isSigner:!1},{name:"nftOwner",isMut:!1,isSigner:!1},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"userTokenAccount",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u128"},{name:"createdAt",type:"u64"}]},{name:"acceptBidRequest",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"sellerNftTokenAccount",isMut:!0,isSigner:!1},{name:"buyerNftTokenAccount",isMut:!0,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"sellerTokenAccount",isMut:!0,isSigner:!1},{name:"feeTokenAccount",isMut:!0,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"acceptedAt",type:"u64"}]},{name:"rejectBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"requesterTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"rejectedAt",type:"u64"}]},{name:"cancelBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"cancellerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"cancelledAt",type:"u64"}]},{name:"increaseBidRequest",accounts:[{name:"bidRequest",isMut:!1,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"ownerTokenAccount",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"newAmount",type:"u128"},{name:"submittedAt",type:"u64"}]},{name:"makeBidRequestPublic",accounts:[{name:"applicationState",isMut:!1,isSigner:!1},{name:"creatorUserdata",isMut:!0,isSigner:!1},{name:"bidderUserdata",isMut:!0,isSigner:!1},{name:"user",isMut:!0,isSigner:!0},{name:"bidder",isMut:!1,isSigner:!1},{name:"listing",isMut:!0,isSigner:!1},{name:"auctionManager",isMut:!0,isSigner:!1},{name:"bidReceipt",isMut:!0,isSigner:!1},{name:"bidRequest",isMut:!1,isSigner:!1},{name:"bidRequestTokenAccount",isMut:!0,isSigner:!1},{name:"escrowTokenAccount",isMut:!0,isSigner:!1},{name:"escrowNftAccount",isMut:!0,isSigner:!1},{name:"creatorNftAccount",isMut:!0,isSigner:!1},{name:"creatorTokenAccount",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!1,isSigner:!1},{name:"nft",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"createdAt",type:"u64"},{name:"endTime",type:{option:"u64"}},{name:"timeExtension",type:"u64"}]}],accounts:[{name:"applicationState",docs:["* The different states we need to keep track of are the \n * \n * 1. General Application State\n * 2. Auction Manager State\n * 3. Listing State\n * 4. BidReceipt State\n *"],type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"listingAuthority",type:"publicKey"},{name:"feeAccount",type:"publicKey"}]}},{name:"auctionManager",type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"nft",type:"publicKey"},{name:"listingAuthority",type:"publicKey"},{name:"updateAuthority",type:"publicKey"}]}},{name:"userData",type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"listings",type:{vec:"publicKey"}},{name:"bids",type:{vec:"publicKey"}},{name:"bidRequests",type:{vec:"publicKey"}}]}},{name:"listing",type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"auctionManager",type:"publicKey"},{name:"nft",type:"publicKey"},{name:"tokenMint",type:"publicKey"},{name:"startingPrice",type:"u128"},{name:"startTime",type:"u64"},{name:"endTime",type:{option:"u64"}},{name:"highestBidReceipt",type:{option:"publicKey"}},{name:"bidReceipts",type:{vec:"publicKey"}},{name:"highestBidAmount",type:{option:"u128"}},{name:"nftEscrow",type:"publicKey"},{name:"auctionProceedsWallet",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"rewardPercentage",type:"u8"},{name:"timeExtension",type:"u64"},{name:"state",type:{defined:"ListingState"}},{name:"cancelledAt",type:{option:"u64"}}]}},{name:"bidReceipt",type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"listing",type:"publicKey"},{name:"bidder",type:"publicKey"},{name:"amount",type:"u128"},{name:"createdAt",type:"u64"},{name:"updatedAt",type:{option:"u64"}},{name:"state",type:{defined:"BidReceiptState"}},{name:"cancelledAt",type:{option:"u64"}},{name:"refundedAt",type:{option:"u64"}}]}},{name:"bidRequest",type:{kind:"struct",fields:[{name:"key",type:"publicKey"},{name:"nft",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"amount",type:"u128"},{name:"createdAt",type:"u64"},{name:"updatedAt",type:{option:"u64"}},{name:"status",type:{defined:"BidRequestStatus"}},{name:"owner",type:"publicKey"}]}}],types:[{name:"ReceiptInfo",type:{kind:"struct",fields:[{name:"amount",type:"u128"},{name:"key",type:"publicKey"}]}},{name:"ListingState",type:{kind:"enum",variants:[{name:"Active"},{name:"Sold"},{name:"Cancelled"}]}},{name:"BidReceiptState",type:{kind:"enum",variants:[{name:"Executed"},{name:"Cancelled"},{name:"Active"},{name:"Refunded"}]}},{name:"BidRequestStatus",type:{kind:"enum",variants:[{name:"Accepted"},{name:"Rejected"},{name:"Pending"},{name:"Cancelled"},{name:"Public"}]}}],events:[{name:"AuctionManagerCreated",fields:[{name:"auctionManager",type:"publicKey",index:!1},{name:"nft",type:"publicKey",index:!1}]},{name:"AuctionListingCreated",fields:[{name:"auctionManager",type:"publicKey",index:!1},{name:"nft",type:"publicKey",index:!1},{name:"listing",type:"publicKey",index:!1},{name:"tokenMint",type:"publicKey",index:!1},{name:"endTime",type:{option:"u64"},index:!1}]},{name:"BidOnListingCreated",fields:[{name:"listing",type:"publicKey",index:!1},{name:"bidder",type:"publicKey",index:!1},{name:"amount",type:"u128",index:!1},{name:"receipt",type:"publicKey",index:!1},{name:"createdAt",type:"u64",index:!1}]},{name:"ListingSold",fields:[{name:"listing",type:"publicKey",index:!1},{name:"buyer",type:"publicKey",index:!1},{name:"amount",type:"u128",index:!1},{name:"createdAt",type:"u64",index:!1}]},{name:"ListingCancelled",fields:[{name:"by",type:"publicKey",index:!1},{name:"nft",type:"publicKey",index:!1},{name:"listing",type:"publicKey",index:!1},{name:"cancelledAt",type:"u64",index:!1}]},{name:"BidCancelled",fields:[{name:"bidReceipt",type:"publicKey",index:!1},{name:"receiver",type:"publicKey",index:!1},{name:"amount",type:"u128",index:!1},{name:"refundedAt",type:"u64",index:!1}]},{name:"BidIncreased",fields:[{name:"bidReceipt",type:"publicKey",index:!1},{name:"bidder",type:"publicKey",index:!1},{name:"oldAmount",type:"u128",index:!1},{name:"newAmount",type:"u128",index:!1},{name:"updatedAt",type:"u64",index:!1}]},{name:"BidExecuted",fields:[{name:"bidReceipt",type:"publicKey",index:!1},{name:"receiver",type:"publicKey",index:!1},{name: