From aaff0398c18de898578355d876e1c3774057b682 Mon Sep 17 00:00:00 2001 From: armaniferrante Date: Mon, 26 Apr 2021 13:20:57 -0700 Subject: [PATCH] Updates --- asset-manifest.json | 6 +++--- index.html | 2 +- static/js/main.234e3a05.chunk.js | 2 -- static/js/main.234e3a05.chunk.js.map | 1 - static/js/main.316c9313.chunk.js | 2 ++ static/js/main.316c9313.chunk.js.map | 1 + 6 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 static/js/main.234e3a05.chunk.js delete mode 100644 static/js/main.234e3a05.chunk.js.map create mode 100644 static/js/main.316c9313.chunk.js create mode 100644 static/js/main.316c9313.chunk.js.map diff --git a/asset-manifest.json b/asset-manifest.json index 8feb888..a4481b3 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,8 +1,8 @@ { "files": { "main.css": "./static/css/main.6dea0f05.chunk.css", - "main.js": "./static/js/main.234e3a05.chunk.js", - "main.js.map": "./static/js/main.234e3a05.chunk.js.map", + "main.js": "./static/js/main.316c9313.chunk.js", + "main.js.map": "./static/js/main.316c9313.chunk.js.map", "runtime-main.js": "./static/js/runtime-main.df379664.js", "runtime-main.js.map": "./static/js/runtime-main.df379664.js.map", "static/js/2.2182b180.chunk.js": "./static/js/2.2182b180.chunk.js", @@ -17,6 +17,6 @@ "static/js/runtime-main.df379664.js", "static/js/2.2182b180.chunk.js", "static/css/main.6dea0f05.chunk.css", - "static/js/main.234e3a05.chunk.js" + "static/js/main.316c9313.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 922a9c6..73816be 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Stake | Serum
\ No newline at end of file +Stake | Serum
\ No newline at end of file diff --git a/static/js/main.234e3a05.chunk.js b/static/js/main.234e3a05.chunk.js deleted file mode 100644 index b456ef3..0000000 --- a/static/js/main.234e3a05.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(this["webpackJsonp@project-serum/stake-ui"]=this["webpackJsonp@project-serum/stake-ui"]||[]).push([[0],{133:function(e,t,n){"use strict";(function(e){var r=n(202),a=n(191),i=n(80),c=n(81),s=n(413),o=n(193),u=n(127),d=n(128),l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setLayoutEncoder=t.setLayoutDecoder=t.accountFlagsLayout=t.selfTradeBehaviorLayout=t.orderTypeLayout=t.sideLayout=t.VersionedLayout=t.WideBits=t.u128=t.u64=t.publicKeyLayout=t.zeros=void 0;var p=n(5),m=n(4),b=l(n(29)),g=function(e){u(n,e);var t=d(n);function n(){return i(this,n),t.apply(this,arguments)}return c(n,[{key:"decode",value:function(e,t){var r=s(o(n.prototype),"decode",this).call(this,e,t);if(!r.every((function(e){return 0===e})))throw new Error("nonzero padding bytes");return r}}]),n}(p.Blob);t.zeros=function(e){return new g(e)};var f=function(e){u(n,e);var t=d(n);function n(e){return i(this,n),t.call(this,32,e)}return c(n,[{key:"decode",value:function(e,t){return new m.PublicKey(s(o(n.prototype),"decode",this).call(this,e,t))}},{key:"encode",value:function(e,t,r){return s(o(n.prototype),"encode",this).call(this,e.toBuffer(),t,r)}}]),n}(p.Blob);t.publicKeyLayout=function(e){return new f(e)};var h=function(t){u(r,t);var n=d(r);function r(){return i(this,r),n.apply(this,arguments)}return c(r,[{key:"decode",value:function(e,t){return new b.default(s(o(r.prototype),"decode",this).call(this,e,t),10,"le")}},{key:"encode",value:function(t,n,a){return s(o(r.prototype),"encode",this).call(this,t.toArrayLike(e,"le",this.span),n,a)}}]),r}(p.Blob);t.u64=function(e){return new h(8,e)},t.u128=function(e){return new h(16,e)};var y=function(e){u(n,e);var t=d(n);function n(e){var r;return i(this,n),(r=t.call(this,8,e))._lower=p.bits(p.u32(),!1),r._upper=p.bits(p.u32(),!1),r}return c(n,[{key:"addBoolean",value:function(e){this._lower.fields.length<32?this._lower.addBoolean(e):this._upper.addBoolean(e)}},{key:"decode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this._lower.decode(e,t),r=this._upper.decode(e,t+this._lower.span);return a(a({},n),r)}},{key:"encode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this._lower.encode(e,t,n)+this._upper.encode(e,t,n+this._lower.span)}}]),n}(p.Layout);t.WideBits=y;var j=function(e){u(n,e);var t=d(n);function n(e,r,a){var c;return i(this,n),(c=t.call(this,r.span>0?r.span+1:r.span,a)).version=e,c.inner=r,c}return c(n,[{key:"decode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this.inner.decode(e,t+1)}},{key:"encode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t.writeUInt8(this.version,n),1+this.inner.encode(e,t,n+1)}},{key:"getSpan",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return 1+this.inner.getSpan(e,t+1)}}]),n}(p.Layout);t.VersionedLayout=j;var v=function(e){u(n,e);var t=d(n);function n(e,r,a){var c;return i(this,n),(c=t.call(this,r,a)).values=e,c}return c(n,[{key:"encode",value:function(e,t,r){if(void 0!==this.values[e])return s(o(n.prototype),"encode",this).call(this,this.values[e],t,r);throw new Error("Invalid "+this.property)}},{key:"decode",value:function(e,t){var a=s(o(n.prototype),"decode",this).call(this,e,t),i=Object.entries(this.values).find((function(e){return r(e,2)[1]===a}));if(i)return i[0];throw new Error("Invalid "+this.property)}}]),n}(p.UInt);t.sideLayout=function(e){return new v({buy:0,sell:1},4,e)},t.orderTypeLayout=function(e){return new v({limit:0,ioc:1,postOnly:2},4,e)},t.selfTradeBehaviorLayout=function(e){return new v({decrementTake:0,cancelProvide:1,abortTransaction:2},4,e)};var x=new y;x.addBoolean("initialized"),x.addBoolean("market"),x.addBoolean("openOrders"),x.addBoolean("requestQueue"),x.addBoolean("eventQueue"),x.addBoolean("bids"),x.addBoolean("asks"),t.accountFlagsLayout=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"accountFlags";return x.replicate(e)},t.setLayoutDecoder=function(e,t){var n=e.decode;e.decode=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t(n.call(this,e,r))}},t.setLayoutEncoder=function(e,t){var n=e.encode;return e.encode=function(e,r,a){return n.call(this,t(e),r,a)},e}}).call(this,n(32).Buffer)},154:function(e,t,n){"use strict";(function(e){var r=n(132),a=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),c=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&a(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.closeAccount=t.mintTo=t.setAuthority=t.revoke=t.approve=t.transfer=t.initializeAccount=t.initializeMint=t.decodeTokenInstructionData=t.SRM_DECIMALS=t.SRM_MINT=t.MSRM_DECIMALS=t.MSRM_MINT=t.WRAPPED_SOL_MINT=t.TOKEN_PROGRAM_ID=t.CLOSE_ACCOUNT_OWNER_INDEX=t.CLOSE_ACCOUNT_DESTINATION_INDEX=t.CLOSE_ACCOUNT_SOURCE_INDEX=t.TRANSFER_OWNER_INDEX=t.TRANSFER_DESTINATION_INDEX=t.TRANSFER_SOURCE_INDEX=t.INITIALIZE_ACCOUNT_OWNER_INDEX=t.INITIALIZE_ACCOUNT_MINT_INDEX=t.INITIALIZE_ACCOUNT_ACCOUNT_INDEX=void 0;var s=c(n(5)),o=n(4),u=n(133);t.INITIALIZE_ACCOUNT_ACCOUNT_INDEX=0,t.INITIALIZE_ACCOUNT_MINT_INDEX=1,t.INITIALIZE_ACCOUNT_OWNER_INDEX=2,t.TRANSFER_SOURCE_INDEX=0,t.TRANSFER_DESTINATION_INDEX=1,t.TRANSFER_OWNER_INDEX=2,t.CLOSE_ACCOUNT_SOURCE_INDEX=0,t.CLOSE_ACCOUNT_DESTINATION_INDEX=1,t.CLOSE_ACCOUNT_OWNER_INDEX=2,t.TOKEN_PROGRAM_ID=new o.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),t.WRAPPED_SOL_MINT=new o.PublicKey("So11111111111111111111111111111111111111112"),t.MSRM_MINT=new o.PublicKey("MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L"),t.MSRM_DECIMALS=0,t.SRM_MINT=new o.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),t.SRM_DECIMALS=6;var d=s.union(s.u8("instruction"));d.addVariant(0,s.struct([s.u8("decimals"),u.publicKeyLayout("mintAuthority"),s.u8("freezeAuthorityOption"),u.publicKeyLayout("freezeAuthority")]),"initializeMint"),d.addVariant(1,s.struct([]),"initializeAccount"),d.addVariant(3,s.struct([s.nu64("amount")]),"transfer"),d.addVariant(4,s.struct([s.nu64("amount")]),"approve"),d.addVariant(5,s.struct([]),"revoke"),d.addVariant(6,s.struct([s.u8("authorityType"),s.u8("newAuthorityOption"),u.publicKeyLayout("newAuthority")]),"setAuthority"),d.addVariant(7,s.struct([s.nu64("amount")]),"mintTo"),d.addVariant(8,s.struct([s.nu64("amount")]),"burn"),d.addVariant(9,s.struct([]),"closeAccount");var l=Math.max.apply(Math,r(Object.values(d.registry).map((function(e){return e.span}))));function p(t){var n=e.alloc(l),r=d.encode(t,n);return n.slice(0,r)}t.decodeTokenInstructionData=function(e){return d.decode(e)},t.initializeMint=function(e){var n=e.mint,r=e.decimals,a=e.mintAuthority,i=e.freezeAuthority,c=void 0===i?null:i,s=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new o.TransactionInstruction({keys:s,data:p({initializeMint:{decimals:r,mintAuthority:a,freezeAuthorityOption:!!c,freezeAuthority:c||new o.PublicKey(0)}}),programId:t.TOKEN_PROGRAM_ID})},t.initializeAccount=function(e){var n=[{pubkey:e.account,isSigner:!1,isWritable:!0},{pubkey:e.mint,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!1,isWritable:!1},{pubkey:o.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new o.TransactionInstruction({keys:n,data:p({initializeAccount:{}}),programId:t.TOKEN_PROGRAM_ID})},t.transfer=function(e){var n=e.source,r=e.destination,a=e.amount,i=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:i,data:p({transfer:{amount:a}}),programId:t.TOKEN_PROGRAM_ID})},t.approve=function(e){var n=e.source,r=e.delegate,a=e.amount,i=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:i,data:p({approve:{amount:a}}),programId:t.TOKEN_PROGRAM_ID})},t.revoke=function(e){var n=[{pubkey:e.source,isSigner:!1,isWritable:!0},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:n,data:p({revoke:{}}),programId:t.TOKEN_PROGRAM_ID})},t.setAuthority=function(e){var n=e.target,r=e.currentAuthority,a=e.newAuthority,i=e.authorityType,c=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:c,data:p({setAuthority:{authorityType:i,newAuthorityOption:!!a,newAuthority:a}}),programId:t.TOKEN_PROGRAM_ID})},t.mintTo=function(e){var n=e.mint,r=e.destination,a=e.amount,i=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e.mintAuthority,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:i,data:p({mintTo:{amount:a}}),programId:t.TOKEN_PROGRAM_ID})},t.closeAccount=function(e){var n=[{pubkey:e.source,isSigner:!1,isWritable:!0},{pubkey:e.destination,isSigner:!1,isWritable:!0},{pubkey:e.owner,isSigner:!0,isWritable:!1}];return new o.TransactionInstruction({keys:n,data:p({closeAccount:{}}),programId:t.TOKEN_PROGRAM_ID})}}).call(this,n(32).Buffer)},155:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MARKETS=t.TOKEN_MINTS=t.getLayoutVersion=t.PROGRAM_LAYOUT_VERSIONS=void 0;var a=n(4),i=r(n(416)),c=r(n(417));t.PROGRAM_LAYOUT_VERSIONS={"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn":1,BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg:1,EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o:2,"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin":3},t.getLayoutVersion=function(e){return t.PROGRAM_LAYOUT_VERSIONS[e.toString()]||3},t.TOKEN_MINTS=c.default.map((function(e){return{address:new a.PublicKey(e.address),name:e.name}})),t.MARKETS=i.default.map((function(e){return{address:new a.PublicKey(e.address),name:e.name,programId:new a.PublicKey(e.programId),deprecated:e.deprecated}}))},174:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r={active:"#43a047",ready:"#3f51b5",notReady:"#ccc",inactive:"red",deactivating:"rgb(255, 121, 42)"};function a(){return r}},175:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return s}));var r=n(5),a=n(38),i=Object(a.rustEnum)([Object(r.struct)([],"create"),Object(r.struct)([],"createBuffer"),Object(r.struct)([],"write"),Object(r.struct)([],"setBuffer"),Object(r.struct)([],"setAuthority")]);function c(t){var n=e.alloc(1e3),r=i.encode(t,n);return e.concat([s,n.slice(0,r)])}var s=e.from("0a69e9a778bcf440","hex").reverse()}).call(this,n(32).Buffer)},19:function(e,t,n){"use strict";var r;n.d(t,"a",(function(){return r})),function(e){e[e.CommonTriggerBootstrap=0]="CommonTriggerBootstrap",e[e.CommonAppWillBootstrap=1]="CommonAppWillBootstrap",e[e.CommonAppDidBootstrap=2]="CommonAppDidBootstrap",e[e.CommonTriggerShutdown=3]="CommonTriggerShutdown",e[e.CommonDidShutdown=4]="CommonDidShutdown",e[e.CommonWalletDidConnect=5]="CommonWalletDidConnect",e[e.CommonWalletDidDisconnect=6]="CommonWalletDidDisconnect",e[e.CommonWalletSetProvider=7]="CommonWalletSetProvider",e[e.CommonSetNetwork=8]="CommonSetNetwork",e[e.CommonOwnedTokenAccountsSet=9]="CommonOwnedTokenAccountsSet",e[e.CommonOwnedTokenAccountsUpdate=10]="CommonOwnedTokenAccountsUpdate",e[e.CommonWalletReset=11]="CommonWalletReset",e[e.LockupSetVestings=12]="LockupSetVestings",e[e.LockupUpdateVesting=13]="LockupUpdateVesting",e[e.LockupCreateVesting=14]="LockupCreateVesting",e[e.RegistrySetMember=15]="RegistrySetMember",e[e.RegistrySetRegistrar=16]="RegistrySetRegistrar",e[e.RegistrySetPendingWithdrawals=17]="RegistrySetPendingWithdrawals",e[e.RegistryCreatePendingWithdrawal=18]="RegistryCreatePendingWithdrawal",e[e.RegistryUpdatePendingWithdrawal=19]="RegistryUpdatePendingWithdrawal",e[e.AccountAdd=20]="AccountAdd",e[e.AccountUpdate=21]="AccountUpdate"}(r||(r={}))},214:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return M})),n.d(t,"a",(function(){return D}));var r=n(31),a=n(36),i=n(3),c=n.n(i),s=n(9),o=n(11),u=n(1),d=n(0),l=n(18),p=n(27),m=n(121),b=n(171),g=n.n(b),f=n(222),h=n(85),y=n(69),j=n(120),v=n(89),x=n.n(v),O=n(90),S=n.n(O),w=n(61),k=n(4),T=n(39),E=n(65),A=n(24),P=n(22),W=n(41);function M(e){var t=e.rewards,n=!1;return t.forEach((function(e){null===e&&(n=!0)})),Object(u.jsx)(f.a,{children:n?Object(u.jsx)(m.a,{style:{display:"block",marginLeft:"auto",marginRight:"auto"}}):t.length>0?t.filter((function(e){return!1===e.vendor.account.expired})).map((function(e){return Object(u.jsx)(R,{rli:e})})):Object(u.jsx)(h.a,{children:Object(u.jsx)(y.a,{primary:"No rewards found"})})})}function R(e){var t=e.rli,n=Object(d.useState)(!1),r=Object(o.a)(n,2),a=r[0],i=r[1],c=new Date(1e3*t.vendor.account.startTs.toNumber()).toLocaleString(),s="Dropped by ".concat(t.vendor.account.from.toString()," | ").concat(c);return Object(u.jsxs)(u.Fragment,{children:[Object(u.jsxs)(h.a,{button:!0,onClick:function(){return i((function(e){return!e}))},children:[Object(u.jsx)(g.a,{style:{visibility:t.reward.locked?"visible":"hidden",marginRight:"16px"}}),Object(u.jsx)(y.a,{primary:Object(u.jsx)("div",{style:{display:"flex",justifyContent:"space-between",color:t.needsClaim?"#54a15e":""},children:Object(u.jsx)("div",{children:"".concat(Object(P.c)(t.vendor.account.total,t.mint.account.decimals)," ").concat(t.mint.publicKey)})}),secondary:s}),a?Object(u.jsx)(x.a,{}):Object(u.jsx)(S.a,{})]}),Object(u.jsx)(j.a,{in:a,timeout:"auto",unmountOnExit:!0,children:void 0===t.vendor?Object(u.jsx)(m.a,{}):Object(u.jsx)(U,{vendor:t.vendor})})]})}function U(t){var n=t.vendor,r=Object(A.b)().registryClient,a=Object(p.b)(),i=a.enqueueSnackbar,m=a.closeSnackbar,b=Object(l.c)((function(e){return{registrar:e.registry.registrar,vendorMint:e.accounts[n.account.mint.toString()]}})),g=b.vendorMint,f=b.registrar,h=Object(d.useState)(null),y=Object(o.a)(h,2),j=y[0],v=y[1],x=function(){var t=Object(s.a)(c.a.mark((function t(){var a,s;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i("Expiring reward",{variant:"info"}),t.next=3,k.PublicKey.createProgramAddress([f.toBuffer(),n.publicKey.toBuffer(),e.from([n.account.nonce])],r.programId);case 3:return a=t.sent,t.next=6,r.rpc.expireReward({accounts:{registrar:f,vendor:n.publicKey,vault:n.account.vault,vendorSigner:a,expiryReceiver:n.account.expiryReceiver,expiryReceiverToken:j,tokenProgram:T.TokenInstructions.TOKEN_PROGRAM_ID,clock:k.SYSVAR_CLOCK_PUBKEY}});case 6:s=t.sent,m(),i("Reward expired",{variant:"success",action:Object(u.jsx)(W.a,{signature:s})});case 9:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return Object(u.jsxs)("div",{style:{marginLeft:"56px"},children:[Object(u.jsx)("div",{children:"Vendor"}),Object(u.jsxs)("ul",{children:[Object(u.jsxs)("li",{children:["Address ",n.publicKey.toString()]}),Object(u.jsxs)("li",{children:["Vault: ",n.account.vault.toString()]}),Object(u.jsxs)("li",{children:["Mint: ",n.account.mint.toString()]}),Object(u.jsxs)("li",{children:["Pool token supply snapshot:"," ",n.account.poolTokenSupply.toString()]}),Object(u.jsxs)("li",{children:["Expiry:"," ",new Date(1e3*n.account.expiryTs.toNumber()).toLocaleDateString()," (".concat(n.account.expiryTs.toNumber(),")")]}),Object(u.jsxs)("li",{children:["Expiry receiver: ",n.account.expiryReceiver.toString()]}),Object(u.jsxs)("li",{children:["Expired: ",n.account.expired.toString()]}),Object(u.jsxs)("li",{children:["Reward queue cursor: ",n.account.rewardEventQCursor.toString()]})]}),n.account.expiryTs.toNumber()<=Date.now()/1e3&&Object(u.jsxs)("div",{style:{display:"flex",flexDirection:"row-reverse"},children:[Object(u.jsx)(w.a,{color:"primary",variant:"outlined",onClick:x,style:{marginRight:"24px"},children:"Expire"}),Object(u.jsx)("div",{style:{flex:1,marginRight:"24px"},children:Object(u.jsx)(E.a,{variant:"outlined",decimals:g.decimals,mint:n.account.mint,onChange:function(e){v(e)}})})]})]})}var D=function(){function e(t,n,a,i,c){Object(r.a)(this,e),this.reward=t,this.cursor=n,this.needsClaim=a,this.mint=i,this.vendor=c}return Object(a.a)(e,null,[{key:"fromMessage",value:function(t,n){var r=!1,a=t.accounts[n.vendor.toString()];if(void 0===a)return null;var i={publicKey:a.mint,account:t.accounts[a.mint.toString()]};if(void 0!==t.member){var c=t.accounts[t.member.account.balances.spt.toString()],s=t.accounts[t.member.account.balancesLocked.spt.toString()],o=c.amount+s.amount>0,u=a.rewardEventQCursor>=t.member.account.rewardsCursor,d=t.member.account.lastStakeTs1},t.getFeeRates=function(e){return 1===e?{taker:.002,maker:-3e-4}:2===e?{taker:.0018,maker:-3e-4}:3===e?{taker:.0016,maker:-3e-4}:4===e?{taker:.0014,maker:-3e-4}:5===e?{taker:.0012,maker:-3e-4}:6===e?{taker:.001,maker:-5e-4}:{taker:.0022,maker:-3e-4}},t.getFeeTier=function(e,t){return e>=1?6:t>=1e6?5:t>=1e5?4:t>=1e4?3:t>=1e3?2:t>=100?1:0}},264:function(e,t,n){"use strict";var r=n(3),a=n(92);function i(){return(i=a(r.mark((function e(t,n,a){var i,c,s,o,u;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t._recentBlockhash(t._disableBlockhashCaching);case 2:return n.recentBlockhash=e.sent,i=n.serializeMessage(),c=n._serialize(i),s=c.toString("base64"),o=[s,{encoding:"base64",commitment:a}],e.next=10,t._rpcRequest("simulateTransaction",o);case 10:if(!(u=e.sent).error){e.next=13;break}throw new Error("failed to simulate transaction: "+u.error.message);case 13:return e.abrupt("return",u.result);case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)}Object.defineProperty(t,"__esModule",{value:!0}),t.simulateTransaction=void 0,t.simulateTransaction=function(e,t,n){return i.apply(this,arguments)}},283:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return F}));var r=n(51),a=n(11),i=n(3),c=n.n(i),s=n(9),o=n(1),u=n(0),d=n(18),l=n(29),p=n.n(l),m=n(27),b=n(4),g=n(142),f=n(143),h=n(144),y=n(33),j=n(79),v=n(121),x=n(436),O=n(439),S=n(61),w=n(86),k=n(103),T=n(170),E=n.n(T),A=n(104),P=n(122),W=n(434),M=n(305),R=n(26),U=n(167),D=n(39),I=n(24),C=n(41),K=n(19),L=n(174),_=n(22),N=n(45);function F(){var e=Object(I.b)().registryClient,t=Object(d.b)(),n=Object(d.c)((function(e){var t=e.accounts[e.registry.registrar.toString()];return{member:e.registry.member,memberAccount:e.registry.member?e.accounts[e.registry.member.toString()]:void 0,registrarAccount:t,registrar:e.registry.registrar}})),r=n.member,a=n.memberAccount,i=n.registrarAccount,u=n.registrar,l=Object(m.b)(),p=l.enqueueSnackbar,g=l.closeSnackbar,f=function(){var t=Object(s.a)(c.a.mark((function t(n,s){var d;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return p("Staking ".concat(Object(_.d)(i.poolMint)," Pool tokens"),{variant:"info"}),t.t0=e.rpc,t.t1=new U.u64(n),t.t2=s,t.t3=u,t.t4=i.rewardEventQ,t.t5=i.poolMint,t.t6=r,t.t7=e.provider.wallet.publicKey,t.t8=a.balances,t.t9=a.balancesLocked,t.next=13,Object(N.c)(e.programId,u,r);case 13:return t.t10=t.sent.publicKey,t.next=16,Object(N.d)(e.programId,u);case 16:return t.t11=t.sent.publicKey,t.t12=b.SYSVAR_CLOCK_PUBKEY,t.t13=D.TokenInstructions.TOKEN_PROGRAM_ID,t.t14={registrar:t.t3,rewardEventQ:t.t4,poolMint:t.t5,member:t.t6,beneficiary:t.t7,balances:t.t8,balancesLocked:t.t9,memberSigner:t.t10,registrarSigner:t.t11,clock:t.t12,tokenProgram:t.t13},t.t15={accounts:t.t14},t.next=23,t.t0.stake.call(t.t0,t.t1,t.t2,t.t15);case 23:d=t.sent,g(),p("Staking complete",{variant:"success",action:Object(o.jsx)(C.a,{signature:d})});case 26:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),h=function(){var n=Object(s.a)(c.a.mark((function n(s,d){var l,m,f;return c.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return p("Unstaking ".concat(s," ").concat(Object(_.d)(i.poolMint)," Pool tokens"),{variant:"info"}),l=new b.Account,n.t0=e.rpc,n.t1=new U.u64(s),n.t2=d,n.t3=u,n.t4=i.rewardEventQ,n.t5=i.poolMint,n.t6=l.publicKey,n.t7=r,n.t8=e.provider.wallet.publicKey,n.t9=a.balances,n.t10=a.balancesLocked,n.next=15,Object(N.c)(e.programId,u,r);case 15:return n.t11=n.sent.publicKey,n.t12=D.TokenInstructions.TOKEN_PROGRAM_ID,n.t13=b.SYSVAR_CLOCK_PUBKEY,n.t14=b.SYSVAR_RENT_PUBKEY,n.t15={registrar:n.t3,rewardEventQ:n.t4,poolMint:n.t5,pendingWithdrawal:n.t6,member:n.t7,beneficiary:n.t8,balances:n.t9,balancesLocked:n.t10,memberSigner:n.t11,tokenProgram:n.t12,clock:n.t13,rent:n.t14},n.t16=[l],n.next=23,e.account.pendingWithdrawal.createInstruction(l);case 23:return n.t17=n.sent,n.t18=[n.t17],n.t19={accounts:n.t15,signers:n.t16,instructions:n.t18},n.next=28,n.t0.startUnstake.call(n.t0,n.t1,n.t2,n.t19);case 28:return m=n.sent,n.next=31,e.account.pendingWithdrawal(l.publicKey);case 31:f=n.sent,t({type:K.a.RegistryCreatePendingWithdrawal,item:{pendingWithdrawal:{publicKey:l.publicKey,account:f}}}),g(),p("Stake transfer initiated",{variant:"success",action:Object(o.jsx)(C.a,{signature:m})});case 35:case"end":return n.stop()}}),n)})));return function(e,t){return n.apply(this,arguments)}}(),y=function(){var e=Object(s.a)(c.a.mark((function e(t,n){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t>0&&f(t,n).catch((function(e){console.error(e),p("Error staking: ".concat(e.toString()),{variant:"error"})}));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),j=function(){var e=Object(s.a)(c.a.mark((function e(t,n){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t>0&&h(t,n).catch((function(e){console.error(e),p("Error unstaking: ".concat(e.toString()),{variant:"error"})}));case 1:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}();return Object(o.jsxs)("div",{style:{width:"100%"},children:[Object(o.jsxs)("div",{style:{display:"flex",width:"100%"},children:[Object(o.jsx)("div",{style:{flex:1,marginTop:"24px",marginBottom:"24px"},children:Object(o.jsx)(V,{title:"Stake Pool",create:y,redeem:j})}),Object(o.jsx)(B,{style:{marginBottom:"24px"}})]}),Object(o.jsx)(q,{})]})}function V(e){var t=e.title,n=e.create,r=e.redeem,i=Object(u.useState)(null),c=Object(a.a)(i,2),s=c[0],l=c[1],m=Object(u.useState)(!1),b=Object(a.a)(m,2),g=b[0],f=b[1],h=Object(d.c)((function(e){var t=e.accounts[e.registry.registrar.toString()];return{poolTokenMint:{publicKey:t.poolMint,account:e.accounts[t.poolMint.toString()]},member:e.registry.member,registrarAccount:t,mint:{publicKey:t.mint,account:e.accounts[t.mint.toString()]}}})),y=h.poolTokenMint,j=h.member,v=h.registrarAccount,k=h.mint,T=Object(_.c)(v.stakeRate,k.account.decimals),E=s?Object(_.c)(v.stakeRate.mul(new p.a(s)),k.account.decimals):0;return Object(o.jsxs)(A.a,{style:{marginBottom:"24px"},children:[Object(o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(o.jsx)(W.a,{title:t,subheader:y.publicKey.toString()}),Object(o.jsx)("div",{style:{paddingRight:"16px",display:"flex",justifyContent:"center",flexDirection:"column"},children:Object(o.jsx)(R.a,{color:"textSecondary"})})]}),Object(o.jsxs)(P.a,{children:[Object(o.jsxs)("div",{style:{marginBottom:"16px"},children:[Object(o.jsxs)(R.a,{children:["Please enter the amount of pool tokens you would like to purchase in the form below. Upon pressing ",Object(o.jsx)("b",{children:"stake"})," you will create new pool tokens at a fixed price, adding to the amount of pool tokens outstanding."]}),Object(o.jsx)("br",{}),Object(o.jsx)(R.a,{children:"Unstaking works similarly, except one must incur an unbonding period where funds will not be able to be retrieved until the unbonding period ends. At the end of the unbonding period, click the blue checkbox next to your pending transfer. If the checkbox is grey, your unbonding period has not yet completed."}),Object(o.jsx)("br",{}),Object(o.jsx)(R.a,{style:{fontWeight:"bold"},children:"Total pool tokens outstanding"}),Object(o.jsx)(R.a,{children:y.account.supply.toString()}),Object(o.jsx)(R.a,{style:{fontWeight:"bold"},children:"Price per pool token"}),Object(o.jsx)(R.a,{children:T.toString()}),Object(o.jsx)(R.a,{style:{fontWeight:"bold"},children:"Your total cost"}),Object(o.jsxs)(R.a,{children:[E," ",Object(_.d)(k.publicKey)]}),Object(o.jsx)(R.a,{style:{fontWeight:"bold"},children:"Unbonding period (days)"}),Object(o.jsx)(R.a,{children:(v.withdrawalTimelock/86400).toString()})]}),Object(o.jsxs)("div",{children:[Object(o.jsx)("div",{style:{marginBottom:"10px"},children:Object(o.jsx)(M.a,{children:Object(o.jsx)(w.a,{style:{width:"100%"},label:"Pool tokens",type:"number",variant:"outlined",onChange:function(e){return l(parseInt(e.target.value))}})})}),Object(o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(o.jsxs)("div",{children:[Object(o.jsx)(S.a,{disabled:void 0===j,color:"primary",variant:"contained",onClick:function(){return n(s,g)},children:"Stake"}),Object(o.jsx)(S.a,{disabled:void 0===j,color:"secondary",variant:"contained",style:{marginLeft:"10px"},onClick:function(){return r(s,g)},children:"Unstake"})]}),Object(o.jsx)("div",{children:Object(o.jsx)(x.a,{control:Object(o.jsx)(O.a,{checked:g,onChange:function(){return f(!g)}}),labelPlacement:"start",label:"Locked balances"})})]})]})]})]})}function B(t){var n=Object(I.b)().registryClient,r=Object(d.b)(),a=Object(d.c)((function(e){var t=e.registry.member?{publicKey:e.registry.member,account:e.accounts[e.registry.member.toString()]}:void 0,n={publicKey:e.registry.registrar,account:e.accounts[e.registry.registrar.toString()]},r={publicKey:n.account.mint,account:e.accounts[n.account.mint.toString()]};return{member:t,registrar:n,mint:r,pendingWithdrawals:null===e.registry.pendingWithdrawals?null:e.registry.pendingWithdrawals.map((function(t){return{publicKey:t,account:e.accounts[t.toString()]}}))}})),i=a.member,c=a.registrar,s=a.mint,l=a.pendingWithdrawals;return Object(u.useEffect)((function(){if(i&&null===l){var t=e.concat([c.publicKey.toBuffer(),i.publicKey.toBuffer()]);n.account.pendingWithdrawal.all(t).then((function(e){r({type:K.a.RegistrySetPendingWithdrawals,item:{pendingWithdrawals:e}})}))}}),[r,c,i,l,n.account.pendingWithdrawal]),Object(o.jsx)("div",{style:t.style,children:Object(o.jsx)(A.a,{style:{marginLeft:"20px",marginTop:"24px",width:"294px"},children:Object(o.jsxs)(P.a,{style:{paddingLeft:0,paddingRight:0,paddingBottom:0,paddingTop:0},children:[Object(o.jsxs)("div",{style:{marginLeft:"24px",marginTop:"24px",marginRight:"24px",borderBottom:"solid 1pt #ccc",paddingBottom:"12px"},children:[Object(o.jsx)(R.a,{style:{},children:"Your Pending Transfers"}),Object(o.jsx)(R.a,{style:{fontSize:"12px"},color:"textSecondary",children:'Click the checkmark to complete a transfer on or after the "end" date.'})]}),Object(o.jsx)("div",{style:{paddingLeft:"24px",paddingRight:"24px"},children:i&&null===l?Object(o.jsx)("div",{style:{paddingTop:"24px",marginBottom:"24px"},children:Object(o.jsx)(v.a,{style:{display:"block",marginLeft:"auto",marginRight:"auto"}})}):null!==l&&l.length>0?l.map((function(e,t){return Object(o.jsx)(z,{isLast:t===l.length-1,registrar:c,pw:e,member:i,mint:s},e.publicKey.toString())})):Object(o.jsx)("div",{style:{paddingBottom:"24px",paddingTop:"12px"},children:Object(o.jsx)(R.a,{color:"textSecondary",style:{fontSize:"14px"},children:"None found"})})})]})})})}function z(e){var t=e.isLast,n=e.pw,r=e.member,a=e.registrar,i=e.mint,c=function(){var e=n.account.locked?"(locked)":"";return"".concat(Object(_.c)(n.account.amount,i.account.decimals)," ").concat(Object(_.d)(i.publicKey)," ").concat(e)}();return Object(o.jsxs)("div",{style:{paddingBottom:t?"24px":"12px",paddingTop:"12px",borderBottom:"solid 1pt #ccc"},children:[Object(o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",overflow:"hidden"},children:[Object(o.jsx)("div",{children:Object(o.jsx)(R.a,{style:{whiteSpace:"pre",maxWidth:"195px",overflow:"hidden",fontWeight:"bold",fontSize:"14px"},children:"".concat(c)})}),Object(o.jsx)("div",{children:Object(o.jsx)(Q,{registrar:a,member:r,pendingWithdrawal:n})})]}),Object(o.jsx)(R.a,{style:{fontSize:"14px"},children:"Start: ".concat(new Date(1e3*n.account.startTs.toNumber()).toLocaleString())}),Object(o.jsx)(R.a,{style:{fontSize:"14px"},children:"End: ".concat(new Date(1e3*n.account.endTs.toNumber()).toLocaleString())}),Object(o.jsx)(R.a,{color:"textSecondary",style:{fontSize:"14px",overflow:"hidden"},children:n.account.pool.toString()})]})}function Q(e){var t=e.pendingWithdrawal,n=e.member,a=e.registrar,i=Object(I.b)().registryClient,u=Object(m.b)(),l=u.enqueueSnackbar,p=u.closeSnackbar,g=Object(d.b)(),f=function(){var e=Object(s.a)(c.a.mark((function e(){var s,u,d;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l("Completing redemption",{variant:"info"}),s=t.account.locked?n.account.balancesLocked:n.account.balances,e.t0=i.rpc,e.t1=a.publicKey,e.t2=n.publicKey,e.t3=i.provider.wallet.publicKey,e.t4=t.publicKey,e.t5=s.vault,e.t6=s.vaultPw,e.next=11,Object(N.c)(i.programId,a.publicKey,n.publicKey);case 11:return e.t7=e.sent.publicKey,e.t8=b.SYSVAR_CLOCK_PUBKEY,e.t9=D.TokenInstructions.TOKEN_PROGRAM_ID,e.t10={registrar:e.t1,member:e.t2,beneficiary:e.t3,pendingWithdrawal:e.t4,vault:e.t5,vaultPw:e.t6,memberSigner:e.t7,clock:e.t8,tokenProgram:e.t9},e.t11={accounts:e.t10},e.next=18,e.t0.endUnstake.call(e.t0,e.t11);case 18:u=e.sent,d={publicKey:t.publicKey,account:Object(r.a)(Object(r.a)({},t.account),{},{burned:!0})},g({type:K.a.RegistryUpdatePendingWithdrawal,item:{pendingWithdrawal:d}}),p(),l("Stake transfer completed",{variant:"success",action:Object(o.jsx)(C.a,{signature:u})});case 23:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),h=!1,y=L.a().ready,j=function(){var e=Object(s.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",f().catch((function(e){console.error("Error completing transfer: ".concat(e.toString())),l("Error completing transfer. Wait for the transfer's timelock to end and try again.",{variant:"error"})})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return t.account.burned&&(h=!0,y=L.a().active,j=function(){var e=Object(s.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()),t.account.endTs.toNumber()>Date.now()/1e3&&(h=!0,y=L.a().notReady,j=function(){var e=Object(s.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()),Object(o.jsx)("div",{onClick:j,style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:Object(o.jsx)(k.a,{disabled:h,style:{width:"25px",height:"25px"},children:Object(o.jsx)(E.a,{style:{color:y,fontSize:"20px"}})})})}function q(){var e=Object(I.b)().registryClient,t=Object(d.c)((function(e){var t=e.accounts[e.registry.registrar.toString()];return{registrar:e.registry.registrar,registrarAccount:t,mintAccount:e.accounts[t.mint.toString()]}})),n=t.registrar,r=t.registrarAccount,i=t.mintAccount,l=Object(u.useState)(null),p=Object(a.a)(l,2),m=p[0],b=p[1];return Object(u.useEffect)((function(){(function(){var t=Object(s.a)(c.a.mark((function t(){var r;return c.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.account.pendingWithdrawal.all(n.toBuffer());case 2:r=(r=t.sent).filter((function(e){return!1===e.account.burned})).sort((function(e,t){return e.account.startTst.account.startTs?-1:0})),b(r);case 5:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}})()()}),[e,n]),Object(o.jsxs)(A.a,{style:{maxHeight:"900px",overflow:"auto"},children:[Object(o.jsx)(R.a,{variant:"h5",style:{padding:"16px",borderBottom:"solid 1pt #ccc"},children:"All pending transfers"}),null!==m?Object(o.jsxs)(g.a,{children:[Object(o.jsx)(f.a,{children:Object(o.jsxs)(j.a,{children:[Object(o.jsx)(y.a,{children:"Member Account"}),Object(o.jsx)(y.a,{children:"Amount"}),Object(o.jsx)(y.a,{children:"Pool"}),Object(o.jsx)(y.a,{children:"Locked"}),Object(o.jsx)(y.a,{children:"Start"}),Object(o.jsx)(y.a,{children:"End"})]})}),Object(o.jsx)(h.a,{children:m.map((function(e){return Object(o.jsxs)(j.a,{children:[Object(o.jsx)(y.a,{children:e.account.member.toString()}),Object(o.jsx)(y.a,{children:Object(_.c)(e.account.amount.toString(),i.decimals)}),Object(o.jsx)(y.a,{children:e.account.amount.div(r.stakeRate).toString()}),Object(o.jsx)(y.a,{children:e.account.locked.toString()}),Object(o.jsx)(y.a,{children:new Date(1e3*e.account.startTs.toNumber()).toString()}),Object(o.jsx)(y.a,{children:new Date(1e3*e.account.endTs.toNumber()).toString()})]})}))})]}):Object(o.jsx)("div",{style:{padding:"24px"},children:Object(o.jsx)(v.a,{style:{display:"block",marginLeft:"auto",marginRight:"auto"}})})]})}}).call(this,n(32).Buffer)},329:function(e,t,n){},335:function(e,t){},336:function(e,t){},35:function(e,t,n){"use strict";var r=n(3),a=n(132),i=n(92),c=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||c(t,e,n)},u=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&c(t,e,n);return s(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.sleep=t.parseTokenAccount=t.getTokenAccount=t.parseMintAccount=t.getMintInfo=t.createAccountRentExempt=t.createTokenAccountInstrs=t.createTokenAccount=t.createMintAndVault=t.createMintInstructions=t.createMint=t.SPL_SHARED_MEMORY_ID=t.connection=t.simulateTransaction=t.token=void 0;var d=n(4),l=n(167),p=n(39);o(n(419),t),t.token=u(n(420));var m=n(264);function b(){return(b=i(r.mark((function e(t,n,i){var c,s,o;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n=t.wallet.publicKey),c=new d.Account,e.next=4,g(t,n,c.publicKey,i);case 4:return s=e.sent,(o=new d.Transaction).add.apply(o,a(s)),e.next=9,t.send(o,[c]);case 9:return e.abrupt("return",c.publicKey);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function g(e,t,n,r){return f.apply(this,arguments)}function f(){return(f=i(r.mark((function e(t,n,a,i){var c;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=d.SystemProgram,e.t1=t.wallet.publicKey,e.t2=a,e.next=5,t.connection.getMinimumBalanceForRentExemption(82);case 5:return e.t3=e.sent,e.t4=p.TokenInstructions.TOKEN_PROGRAM_ID,e.t5={fromPubkey:e.t1,newAccountPubkey:e.t2,space:82,lamports:e.t3,programId:e.t4},e.t6=e.t0.createAccount.call(e.t0,e.t5),e.t7=p.TokenInstructions.initializeMint({mint:a,decimals:null!==i&&void 0!==i?i:0,mintAuthority:n}),c=[e.t6,e.t7],e.abrupt("return",c);case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function h(){return(h=i(r.mark((function e(t,n,a,i){var c,s,o;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===a&&(a=t.wallet.publicKey),c=new d.Account,s=new d.Account,o=new d.Transaction,e.t0=o,e.t1=d.SystemProgram,e.t2=t.wallet.publicKey,e.t3=c.publicKey,e.next=10,t.connection.getMinimumBalanceForRentExemption(82);case 10:return e.t4=e.sent,e.t5=p.TokenInstructions.TOKEN_PROGRAM_ID,e.t6={fromPubkey:e.t2,newAccountPubkey:e.t3,space:82,lamports:e.t4,programId:e.t5},e.t7=e.t1.createAccount.call(e.t1,e.t6),e.t8=p.TokenInstructions.initializeMint({mint:c.publicKey,decimals:null!==i&&void 0!==i?i:0,mintAuthority:t.wallet.publicKey}),e.t9=d.SystemProgram,e.t10=t.wallet.publicKey,e.t11=s.publicKey,e.next=20,t.connection.getMinimumBalanceForRentExemption(165);case 20:return e.t12=e.sent,e.t13=p.TokenInstructions.TOKEN_PROGRAM_ID,e.t14={fromPubkey:e.t10,newAccountPubkey:e.t11,space:165,lamports:e.t12,programId:e.t13},e.t15=e.t9.createAccount.call(e.t9,e.t14),e.t16=p.TokenInstructions.initializeAccount({account:s.publicKey,mint:c.publicKey,owner:a}),e.t17=p.TokenInstructions.mintTo({mint:c.publicKey,destination:s.publicKey,amount:n,mintAuthority:t.wallet.publicKey}),e.t0.add.call(e.t0,e.t7,e.t8,e.t15,e.t16,e.t17),e.next=29,t.send(o,[c,s]);case 29:return e.abrupt("return",[c.publicKey,s.publicKey]);case 30:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function y(){return(y=i(r.mark((function e(t,n,i){var c,s;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=new d.Account,s=new d.Transaction,e.t0=s.add,e.t1=s,e.t2=a,e.next=7,j(t,c.publicKey,n,i);case 7:return e.t3=e.sent,e.t4=(0,e.t2)(e.t3),e.t0.apply.call(e.t0,e.t1,e.t4),e.next=12,t.send(s,[c]);case 12:return e.abrupt("return",c.publicKey);case 13:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function j(e,t,n,r,a){return v.apply(this,arguments)}function v(){return(v=i(r.mark((function e(t,n,a,i,c){return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==c){e.next=4;break}return e.next=3,t.connection.getMinimumBalanceForRentExemption(165);case 3:c=e.sent;case 4:return e.abrupt("return",[d.SystemProgram.createAccount({fromPubkey:t.wallet.publicKey,newAccountPubkey:n,space:165,lamports:c,programId:p.TokenInstructions.TOKEN_PROGRAM_ID}),p.TokenInstructions.initializeAccount({account:n,mint:a,owner:i})]);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function x(){return(x=i(r.mark((function e(t,n,a){var i,c;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new d.Account,c=new d.Transaction,e.t0=c,e.t1=d.SystemProgram,e.t2=t.wallet.publicKey,e.t3=i.publicKey,e.t4=a,e.next=9,t.connection.getMinimumBalanceForRentExemption(a);case 9:return e.t5=e.sent,e.t6=n,e.t7={fromPubkey:e.t2,newAccountPubkey:e.t3,space:e.t4,lamports:e.t5,programId:e.t6},e.t8=e.t1.createAccount.call(e.t1,e.t7),e.t0.add.call(e.t0,e.t8),e.next=16,t.send(c,[i]);case 16:return e.abrupt("return",i);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function O(){return(O=i(r.mark((function e(t,n){var a;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.connection.getAccountInfo(n);case 2:if(null!==(a=e.sent)){e.next=5;break}throw new Error("Failed to find token account");case 5:return e.abrupt("return",S(a.data));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(e){var t=l.MintLayout.decode(e);return t.mintAuthority=new d.PublicKey(t.mintAuthority),t.supply=l.u64.fromBuffer(t.supply),t.isInitialized=0!==t.state,t}function w(){return(w=i(r.mark((function e(t,n){var a;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.connection.getAccountInfo(n);case 2:if(null!==(a=e.sent)){e.next=5;break}throw new Error("Failed to find token account");case 5:return e.abrupt("return",k(a.data));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function k(e){var t=l.AccountLayout.decode(e);return t.mint=new d.PublicKey(t.mint),t.owner=new d.PublicKey(t.owner),t.amount=l.u64.fromBuffer(t.amount),0===t.delegateOption?(t.delegate=null,t.delegatedAmount=new l.u64(0)):(t.delegate=new d.PublicKey(t.delegate),t.delegatedAmount=l.u64.fromBuffer(t.delegatedAmount)),t.isInitialized=0!==t.state,t.isFrozen=2===t.state,1===t.isNativeOption?(t.rentExemptReserve=l.u64.fromBuffer(t.isNative),t.isNative=!0):(t.rentExemptReserve=null,t.isNative=!1),0===t.closeAuthorityOption?t.closeAuthority=null:t.closeAuthority=new d.PublicKey(t.closeAuthority),t}Object.defineProperty(t,"simulateTransaction",{enumerable:!0,get:function(){return m.simulateTransaction}}),t.connection=u(n(421)),t.SPL_SHARED_MEMORY_ID=new d.PublicKey("shmem4EWT2sPdVGvTZCzXXRAURL9G5vpPxNwSeKhHUL"),t.createMint=function(e,t,n){return b.apply(this,arguments)},t.createMintInstructions=g,t.createMintAndVault=function(e,t,n,r){return h.apply(this,arguments)},t.createTokenAccount=function(e,t,n){return y.apply(this,arguments)},t.createTokenAccountInstrs=j,t.createAccountRentExempt=function(e,t,n){return x.apply(this,arguments)},t.getMintInfo=function(e,t){return O.apply(this,arguments)},t.parseMintAccount=S,t.getTokenAccount=function(e,t){return w.apply(this,arguments)},t.parseTokenAccount=k,t.sleep=function(e){return new Promise((function(t){return setTimeout(t,e)}))}},364:function(e,t){},366:function(e,t){},378:function(e,t){},379:function(e,t){},38:function(e,t,n){"use strict";(function(e){var r=n(80),a=n(81),i=n(127),c=n(128),s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.array=t.rustEnum=t.str=t.vecU8=t.tagged=t.vec=t.bool=t.option=t.publicKey=t.i128=t.u128=t.i64=t.u64=t.struct=t.u32=t.u8=void 0;var o=n(5),u=n(4),d=s(n(29)),l=n(5);Object.defineProperty(t,"u8",{enumerable:!0,get:function(){return l.u8}}),Object.defineProperty(t,"u32",{enumerable:!0,get:function(){return l.u32}}),Object.defineProperty(t,"struct",{enumerable:!0,get:function(){return l.struct}});var p=function(t){i(s,t);var n=c(s);function s(e,t,a){var i;return r(this,s),(i=n.call(this,e,a)).blob=o.blob(e),i.signed=t,i}return a(s,[{key:"decode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=new d.default(this.blob.decode(e,t),10,"le");return this.signed?n.fromTwos(8*this.span).clone():n}},{key:"encode",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this.signed&&(t=t.toTwos(8*this.span)),this.blob.encode(t.toArrayLike(e,"le",this.span),n,r)}}]),s}(o.Layout);function m(e){return new p(8,!1,e)}t.u64=m,t.i64=function(e){return new p(8,!0,e)},t.u128=function(e){return new p(16,!1,e)},t.i128=function(e){return new p(16,!0,e)};var b=function(e){i(n,e);var t=c(n);function n(e,a,i,c){var s;return r(this,n),(s=t.call(this,e.span,c)).layout=e,s.decoder=a,s.encoder=i,s}return a(n,[{key:"decode",value:function(e,t){return this.decoder(this.layout.decode(e,t))}},{key:"encode",value:function(e,t,n){return this.layout.encode(this.encoder(e),t,n)}},{key:"getSpan",value:function(e,t){return this.layout.getSpan(e,t)}}]),n}(o.Layout);t.publicKey=function(e){return new b(o.blob(32),(function(e){return new u.PublicKey(e)}),(function(e){return e.toBuffer()}),e)};var g=function(e){i(n,e);var t=c(n);function n(e,a){var i;return r(this,n),(i=t.call(this,-1,a)).layout=e,i.discriminator=o.u8(),i}return a(n,[{key:"encode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return null===e||void 0===e?this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+1)+1)}},{key:"decode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+1);throw new Error("Invalid option "+this.property)}},{key:"getSpan",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.discriminator.decode(e,t);if(0===n)return 1;if(1===n)return this.layout.getSpan(e,t+1)+1;throw new Error("Invalid option "+this.property)}}]),n}(o.Layout);function f(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}function h(e){return e?1:0}function y(e){var t=o.u32("length"),n=o.struct([t,o.blob(o.offset(t,-t.span),"data")]);return new b(n,(function(e){return e.data}),(function(e){return{data:e}}),e)}t.option=function(e,t){return new g(e,t)},t.bool=function(e){return new b(o.u8(),f,h,e)},t.vec=function(e,t){var n=o.u32("length"),r=o.struct([n,o.seq(e,o.offset(n,-n.span),"values")]);return new b(r,(function(e){return e.values}),(function(e){return{values:e}}),t)},t.tagged=function(e,t,n){var r=o.struct([m("tag"),t.replicate("data")]);return new b(r,(function(t){var n=t.tag,r=t.data;if(!n.eq(e))throw new Error("Invalid tag, expected: "+e.toString("hex")+", got: "+n.toString("hex"));return r}),(function(t){return{tag:e,data:t}}),n)},t.vecU8=y,t.str=function(t){return new b(y(),(function(e){return e.toString("utf-8")}),(function(t){return e.from(t,"utf-8")}),t)},t.rustEnum=function(e,t){var n=o.union(o.u8(),t);return e.forEach((function(e,t){return n.addVariant(t,e,e.property)})),n},t.array=function(e,t,n){var r=o.struct([o.seq(e,t,"values")]);return new b(r,(function(e){return e.values}),(function(e){return{values:e}}),n)}}).call(this,n(32).Buffer)},39:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return a(t,e),t},c=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.TokenInstructions=t.EVENT_QUEUE_LAYOUT=t.REQUEST_QUEUE_LAYOUT=t.decodeRequestQueue=t.decodeEventQueue=t.getLayoutVersion=t.MARKETS=t.TOKEN_MINTS=t.supportsSrmFeeDiscounts=t.getFeeRates=t.getFeeTier=t.NEW_ORDER_V3_OWNER_INDEX=t.NEW_ORDER_V3_OPEN_ORDERS_INDEX=t.NEW_ORDER_OWNER_INDEX=t.NEW_ORDER_OPEN_ORDERS_INDEX=t.SETTLE_FUNDS_QUOTE_WALLET_INDEX=t.SETTLE_FUNDS_BASE_WALLET_INDEX=t.decodeInstruction=t.DexInstructions=t.OpenOrders=t.Orderbook=t.Market=void 0;var s=n(409);Object.defineProperty(t,"Market",{enumerable:!0,get:function(){return s.Market}}),Object.defineProperty(t,"Orderbook",{enumerable:!0,get:function(){return s.Orderbook}}),Object.defineProperty(t,"OpenOrders",{enumerable:!0,get:function(){return s.OpenOrders}});var o=n(261);Object.defineProperty(t,"DexInstructions",{enumerable:!0,get:function(){return o.DexInstructions}}),Object.defineProperty(t,"decodeInstruction",{enumerable:!0,get:function(){return o.decodeInstruction}}),Object.defineProperty(t,"SETTLE_FUNDS_BASE_WALLET_INDEX",{enumerable:!0,get:function(){return o.SETTLE_FUNDS_BASE_WALLET_INDEX}}),Object.defineProperty(t,"SETTLE_FUNDS_QUOTE_WALLET_INDEX",{enumerable:!0,get:function(){return o.SETTLE_FUNDS_QUOTE_WALLET_INDEX}}),Object.defineProperty(t,"NEW_ORDER_OPEN_ORDERS_INDEX",{enumerable:!0,get:function(){return o.NEW_ORDER_OPEN_ORDERS_INDEX}}),Object.defineProperty(t,"NEW_ORDER_OWNER_INDEX",{enumerable:!0,get:function(){return o.NEW_ORDER_OWNER_INDEX}}),Object.defineProperty(t,"NEW_ORDER_V3_OPEN_ORDERS_INDEX",{enumerable:!0,get:function(){return o.NEW_ORDER_V3_OPEN_ORDERS_INDEX}}),Object.defineProperty(t,"NEW_ORDER_V3_OWNER_INDEX",{enumerable:!0,get:function(){return o.NEW_ORDER_V3_OWNER_INDEX}});var u=n(263);Object.defineProperty(t,"getFeeTier",{enumerable:!0,get:function(){return u.getFeeTier}}),Object.defineProperty(t,"getFeeRates",{enumerable:!0,get:function(){return u.getFeeRates}}),Object.defineProperty(t,"supportsSrmFeeDiscounts",{enumerable:!0,get:function(){return u.supportsSrmFeeDiscounts}});var d=n(155);Object.defineProperty(t,"TOKEN_MINTS",{enumerable:!0,get:function(){return d.TOKEN_MINTS}}),Object.defineProperty(t,"MARKETS",{enumerable:!0,get:function(){return d.MARKETS}}),Object.defineProperty(t,"getLayoutVersion",{enumerable:!0,get:function(){return d.getLayoutVersion}});var l=n(262);Object.defineProperty(t,"decodeEventQueue",{enumerable:!0,get:function(){return l.decodeEventQueue}}),Object.defineProperty(t,"decodeRequestQueue",{enumerable:!0,get:function(){return l.decodeRequestQueue}}),Object.defineProperty(t,"REQUEST_QUEUE_LAYOUT",{enumerable:!0,get:function(){return l.REQUEST_QUEUE_LAYOUT}}),Object.defineProperty(t,"EVENT_QUEUE_LAYOUT",{enumerable:!0,get:function(){return l.EVENT_QUEUE_LAYOUT}}),t.TokenInstructions=i(n(154)),c(n(418),t)},409:function(e,t,n){"use strict";var r=n(151),a=n(191),i=n(132),c=n(202),s=n(3),o=n(92),u=n(80),d=n(81),l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getMintDecimals=t.Orderbook=t.ORDERBOOK_LAYOUT=t.OpenOrders=t._OPEN_ORDERS_LAYOUT_V2=t._OPEN_ORDERS_LAYOUT_V1=t.Market=t._MARKET_STATE_LAYOUT_V2=t._MARKET_STAT_LAYOUT_V1=void 0;var p=n(5),m=n(133),b=n(415),g=n(261),f=l(n(29)),h=n(4),y=n(262),j=n(32),v=n(263),x=n(154),O=n(155);t._MARKET_STAT_LAYOUT_V1=p.struct([p.blob(5),m.accountFlagsLayout("accountFlags"),m.publicKeyLayout("ownAddress"),m.u64("vaultSignerNonce"),m.publicKeyLayout("baseMint"),m.publicKeyLayout("quoteMint"),m.publicKeyLayout("baseVault"),m.u64("baseDepositsTotal"),m.u64("baseFeesAccrued"),m.publicKeyLayout("quoteVault"),m.u64("quoteDepositsTotal"),m.u64("quoteFeesAccrued"),m.u64("quoteDustThreshold"),m.publicKeyLayout("requestQueue"),m.publicKeyLayout("eventQueue"),m.publicKeyLayout("bids"),m.publicKeyLayout("asks"),m.u64("baseLotSize"),m.u64("quoteLotSize"),m.u64("feeRateBps"),p.blob(7)]),t._MARKET_STATE_LAYOUT_V2=p.struct([p.blob(5),m.accountFlagsLayout("accountFlags"),m.publicKeyLayout("ownAddress"),m.u64("vaultSignerNonce"),m.publicKeyLayout("baseMint"),m.publicKeyLayout("quoteMint"),m.publicKeyLayout("baseVault"),m.u64("baseDepositsTotal"),m.u64("baseFeesAccrued"),m.publicKeyLayout("quoteVault"),m.u64("quoteDepositsTotal"),m.u64("quoteFeesAccrued"),m.u64("quoteDustThreshold"),m.publicKeyLayout("requestQueue"),m.publicKeyLayout("eventQueue"),m.publicKeyLayout("bids"),m.publicKeyLayout("asks"),m.u64("baseLotSize"),m.u64("quoteLotSize"),m.u64("feeRateBps"),m.u64("referrerRebatesAccrued"),p.blob(7)]);var S=function(){function e(t,n,r){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4?arguments[4]:void 0;u(this,e);var c=a.skipPreflight,s=void 0!==c&&c,o=a.commitment,d=void 0===o?"recent":o;if(!t.accountFlags.initialized||!t.accountFlags.market)throw new Error("Invalid market state");this._decoded=t,this._baseSplTokenDecimals=n,this._quoteSplTokenDecimals=r,this._skipPreflight=s,this._commitment=d,this._programId=i,this._openOrdersAccountsCache={},this._feeDiscountKeysCache={}}return d(e,[{key:"loadBids",value:function(){var e=o(s.mark((function e(t){var n,r;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=U,e.next=3,t.getAccountInfo(this._decoded.bids);case 3:return e.t1=e.sent,n=(0,e.t0)(e.t1),r=n.data,e.abrupt("return",k.decode(this,r));case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"loadAsks",value:function(){var e=o(s.mark((function e(t){var n,r;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=U,e.next=3,t.getAccountInfo(this._decoded.asks);case 3:return e.t1=e.sent,n=(0,e.t0)(e.t1),r=n.data,e.abrupt("return",k.decode(this,r));case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"loadOrdersForOwner",value:function(){var e=o(s.mark((function e(t,n){var r,a,i,o,u,d,l=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=l.length>2&&void 0!==l[2]?l[2]:0,e.next=3,Promise.all([this.loadBids(t),this.loadAsks(t),this.findOpenOrdersAccountsForOwner(t,n,r)]);case 3:return a=e.sent,i=c(a,3),o=i[0],u=i[1],d=i[2],e.abrupt("return",this.filterForOpenOrders(o,u,d));case 9:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"filterForOpenOrders",value:function(e,t,n){return[].concat(i(e),i(t)).filter((function(e){return n.some((function(t){return e.openOrdersAddress.equals(t.address)}))}))}},{key:"findBaseTokenAccountsForOwner",value:function(){var e=o(s.mark((function e(t,n){var r,a,o,u,d,l=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=l.length>2&&void 0!==l[2]&&l[2],!this.baseMintAddress.equals(x.WRAPPED_SOL_MINT)||!r){e.next=11;break}return e.next=4,Promise.all([this.findBaseTokenAccountsForOwner(t,n,!1),t.getAccountInfo(n)]);case 4:if(a=e.sent,o=c(a,2),u=o[0],null===(d=o[1])){e.next=10;break}return e.abrupt("return",[{pubkey:n,account:d}].concat(i(u)));case 10:return e.abrupt("return",u);case 11:return e.next=13,this.getTokenAccountsByOwnerForMint(t,n,this.baseMintAddress);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"getTokenAccountsByOwnerForMint",value:function(){var e=o(s.mark((function e(t,n,r){return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.getTokenAccountsByOwner(n,{mint:r});case 2:return e.abrupt("return",e.sent.value);case 3:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"findQuoteTokenAccountsForOwner",value:function(){var e=o(s.mark((function e(t,n){var r,a,o,u,d,l=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=l.length>2&&void 0!==l[2]&&l[2],!this.quoteMintAddress.equals(x.WRAPPED_SOL_MINT)||!r){e.next=11;break}return e.next=4,Promise.all([this.findQuoteTokenAccountsForOwner(t,n,!1),t.getAccountInfo(n)]);case 4:if(a=e.sent,o=c(a,2),u=o[0],null===(d=o[1])){e.next=10;break}return e.abrupt("return",[{pubkey:n,account:d}].concat(i(u)));case 10:return e.abrupt("return",u);case 11:return e.next=13,this.getTokenAccountsByOwnerForMint(t,n,this.quoteMintAddress);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"findOpenOrdersAccountsForOwner",value:function(){var e=o(s.mark((function e(t,n){var r,a,i,c,o=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=o.length>2&&void 0!==o[2]?o[2]:0,a=n.toBase58(),i=(new Date).getTime(),!(a in this._openOrdersAccountsCache&&i-this._openOrdersAccountsCache[a].ts2&&void 0!==l[2]?l[2]:0,a=[],i=(new Date).getTime(),!((c=n.toBase58())in this._feeDiscountKeysCache&&i-this._feeDiscountKeysCache[c].tst.feeTier?-1:e.feeTiert.balance?-1:e.balance2&&void 0!==i[2]?i[2]:3e4,e.next=3,this.findFeeDiscountKeys(t,n,r);case 3:if(!((a=e.sent).length>0)){e.next=6;break}return e.abrupt("return",{pubkey:a[0].pubkey,feeTier:a[0].feeTier});case 6:return e.abrupt("return",{pubkey:null,feeTier:0});case 7:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"makePlaceOrderTransaction",value:function(){var e=o(s.mark((function e(t,n){var r,a,i,c,o,u,d,l,p,m,b,g,f,y,j,v,O,S,k,T,E,A,P,W,M,R,U,D,I=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.owner,a=n.payer,i=n.side,c=n.price,o=n.size,u=n.orderType,d=void 0===u?"limit":u,l=n.clientId,p=n.openOrdersAddressKey,m=n.openOrdersAccount,b=n.feeDiscountPubkey,g=void 0===b?void 0:b,f=n.selfTradeBehavior,y=void 0===f?"decrementTake":f,j=I.length>2&&void 0!==I[2]?I[2]:0,v=I.length>3&&void 0!==I[3]?I[3]:0,k=null!==(O=r.publicKey)&&void 0!==O?O:r,e.next=6,this.findOpenOrdersAccountsForOwner(t,k,j);case 6:if(T=e.sent,E=new h.Transaction,A=[],!g){e.next=13;break}P=g,e.next=20;break;case 13:if(void 0!==g||!this.supportsSrmFeeDiscounts){e.next=19;break}return e.next=16,this.findBestFeeDiscountKey(t,k,v);case 16:P=e.sent.pubkey,e.next=20;break;case 19:P=null;case 20:if(0!==T.length){e.next=32;break}return M=m||new h.Account,e.t0=E,e.next=25,w.makeCreateAccountTransaction(t,this.address,k,M.publicKey,this._programId);case 25:e.t1=e.sent,e.t0.add.call(e.t0,e.t1),W=M.publicKey,A.push(M),this._openOrdersAccountsCache[k.toBase58()].ts=0,e.next=33;break;case 32:W=m?m.publicKey:p||T[0].address;case 33:if(R=null,!a.equals(k)){e.next=45;break}if(!("buy"===i&&this.quoteMintAddress.equals(x.WRAPPED_SOL_MINT)||"sell"===i&&this.baseMintAddress.equals(x.WRAPPED_SOL_MINT))){e.next=44;break}R=new h.Account,"buy"===i?(U=Math.round(c*o*1.01*h.LAMPORTS_PER_SOL),T.length>0&&(U-=T[0].quoteTokenFree.toNumber())):(U=Math.round(o*h.LAMPORTS_PER_SOL),T.length>0&&(U-=T[0].baseTokenFree.toNumber())),U=Math.max(U,0)+1e7,E.add(h.SystemProgram.createAccount({fromPubkey:k,newAccountPubkey:R.publicKey,lamports:U,space:165,programId:x.TOKEN_PROGRAM_ID})),E.add(x.initializeAccount({account:R.publicKey,mint:x.WRAPPED_SOL_MINT,owner:k})),A.push(R),e.next=45;break;case 44:throw new Error("Invalid payer account");case 45:return D=this.makePlaceOrderInstruction(t,{owner:r,payer:null!==(S=null===R||void 0===R?void 0:R.publicKey)&&void 0!==S?S:a,side:i,price:c,size:o,orderType:d,clientId:l,openOrdersAddressKey:W,feeDiscountPubkey:P,selfTradeBehavior:y}),E.add(D),R&&E.add(x.closeAccount({source:R.publicKey,destination:k,owner:k})),e.abrupt("return",{transaction:E,signers:A,payer:r});case 49:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"makePlaceOrderInstruction",value:function(e,t){var n,r=t.owner,a=t.payer,i=t.side,c=t.price,s=t.size,o=t.orderType,u=void 0===o?"limit":o,d=t.clientId,l=t.openOrdersAddressKey,p=t.openOrdersAccount,m=t.feeDiscountPubkey,b=void 0===m?null:m,h=t.selfTradeBehavior,y=void 0===h?"decrementTake":h,j=null!==(n=r.publicKey)&&void 0!==n?n:r;if(this.baseSizeNumberToLots(s).lte(new f.default(0)))throw new Error("size too small");if(this.priceNumberToLots(c).lte(new f.default(0)))throw new Error("invalid price");return this.supportsSrmFeeDiscounts||(b=null),this.usesRequestQueue?g.DexInstructions.newOrder({market:this.address,requestQueue:this._decoded.requestQueue,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,openOrders:p?p.publicKey:l,owner:j,payer:a,side:i,limitPrice:this.priceNumberToLots(c),maxQuantity:this.baseSizeNumberToLots(s),orderType:u,clientId:d,programId:this._programId,feeDiscountPubkey:b}):g.DexInstructions.newOrderV3({market:this.address,bids:this._decoded.bids,asks:this._decoded.asks,requestQueue:this._decoded.requestQueue,eventQueue:this._decoded.eventQueue,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,openOrders:p?p.publicKey:l,owner:j,payer:a,side:i,limitPrice:this.priceNumberToLots(c),maxBaseQuantity:this.baseSizeNumberToLots(s),maxQuoteQuantity:new f.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(s).mul(this.priceNumberToLots(c))),orderType:u,clientId:d,programId:this._programId,selfTradeBehavior:y,feeDiscountPubkey:b})}},{key:"_sendTransaction",value:function(){var e=o(s.mark((function e(t,n,r){var a,i,c;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.sendTransaction(n,r,{skipPreflight:this._skipPreflight});case 2:return a=e.sent,e.next=5,t.confirmTransaction(a,this._commitment);case 5:if(i=e.sent,!(null===(c=i.value)||void 0===c?void 0:c.err)){e.next=9;break}throw new Error(JSON.stringify(c.err));case 9:return e.abrupt("return",a);case 10:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"cancelOrderByClientId",value:function(){var e=o(s.mark((function e(t,n,r,a){var i;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.makeCancelOrderByClientIdTransaction(t,n.publicKey,r,a);case 2:return i=e.sent,e.next=5,this._sendTransaction(t,i,[n]);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r,a){return e.apply(this,arguments)}}()},{key:"makeCancelOrderByClientIdTransaction",value:function(){var e=o(s.mark((function e(t,n,r,a){var i;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new h.Transaction,this.usesRequestQueue?i.add(g.DexInstructions.cancelOrderByClientId({market:this.address,owner:n,openOrders:r,requestQueue:this._decoded.requestQueue,clientId:a,programId:this._programId})):i.add(g.DexInstructions.cancelOrderByClientIdV2({market:this.address,openOrders:r,owner:n,bids:this._decoded.bids,asks:this._decoded.asks,eventQueue:this._decoded.eventQueue,clientId:a,programId:this._programId})),e.abrupt("return",i);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n,r,a){return e.apply(this,arguments)}}()},{key:"cancelOrder",value:function(){var e=o(s.mark((function e(t,n,r){var a;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.makeCancelOrderTransaction(t,n.publicKey,r);case 2:return a=e.sent,e.next=5,this._sendTransaction(t,a,[n]);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"makeCancelOrderTransaction",value:function(){var e=o(s.mark((function e(t,n,r){var a;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(a=new h.Transaction).add(this.makeCancelOrderInstruction(t,n,r)),e.abrupt("return",a);case 3:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"makeCancelOrderInstruction",value:function(e,t,n){return this.usesRequestQueue?g.DexInstructions.cancelOrder({market:this.address,owner:t,openOrders:n.openOrdersAddress,requestQueue:this._decoded.requestQueue,side:n.side,orderId:n.orderId,openOrdersSlot:n.openOrdersSlot,programId:this._programId}):g.DexInstructions.cancelOrderV2({market:this.address,owner:t,openOrders:n.openOrdersAddress,bids:this._decoded.bids,asks:this._decoded.asks,eventQueue:this._decoded.eventQueue,side:n.side,orderId:n.orderId,openOrdersSlot:n.openOrdersSlot,programId:this._programId})}},{key:"settleFunds",value:function(){var e=o(s.mark((function e(t,n,r,a,c){var o,u,d,l,p=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=p.length>5&&void 0!==p[5]?p[5]:null,r.owner.equals(n.publicKey)){e.next=3;break}throw new Error("Invalid open orders account");case 3:if(!o||this.supportsReferralFees){e.next=5;break}throw new Error("This program ID does not support referrerQuoteWallet");case 5:return e.next=7,this.makeSettleFundsTransaction(t,r,a,c,o);case 7:return u=e.sent,d=u.transaction,l=u.signers,e.next=12,this._sendTransaction(t,d,[n].concat(i(l)));case 12:return e.abrupt("return",e.sent);case 13:case"end":return e.stop()}}),e,this)})));return function(t,n,r,a,i){return e.apply(this,arguments)}}()},{key:"makeSettleFundsTransaction",value:function(){var e=o(s.mark((function e(t,n,r,a){var i,c,o,u,d,l=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=l.length>4&&void 0!==l[4]?l[4]:null,e.next=3,h.PublicKey.createProgramAddress([this.address.toBuffer(),this._decoded.vaultSignerNonce.toArrayLike(j.Buffer,"le",8)],this._programId);case 3:if(c=e.sent,o=new h.Transaction,u=[],d=null,!(this.baseMintAddress.equals(x.WRAPPED_SOL_MINT)&&r.equals(n.owner)||this.quoteMintAddress.equals(x.WRAPPED_SOL_MINT)&&a.equals(n.owner))){e.next=22;break}return d=new h.Account,e.t0=o,e.t1=h.SystemProgram,e.t2=n.owner,e.t3=d.publicKey,e.next=15,t.getMinimumBalanceForRentExemption(165);case 15:e.t4=e.sent,e.t5=x.TOKEN_PROGRAM_ID,e.t6={fromPubkey:e.t2,newAccountPubkey:e.t3,lamports:e.t4,space:165,programId:e.t5},e.t7=e.t1.createAccount.call(e.t1,e.t6),e.t0.add.call(e.t0,e.t7),o.add(x.initializeAccount({account:d.publicKey,mint:x.WRAPPED_SOL_MINT,owner:n.owner})),u.push(d);case 22:return o.add(g.DexInstructions.settleFunds({market:this.address,openOrders:n.address,owner:n.owner,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,baseWallet:r.equals(n.owner)&&d?d.publicKey:r,quoteWallet:a.equals(n.owner)&&d?d.publicKey:a,vaultSigner:c,programId:this._programId,referrerQuoteWallet:i})),d&&o.add(x.closeAccount({source:d.publicKey,destination:n.owner,owner:n.owner})),e.abrupt("return",{transaction:o,signers:u,payer:n.owner});case 25:case"end":return e.stop()}}),e,this)})));return function(t,n,r,a){return e.apply(this,arguments)}}()},{key:"matchOrders",value:function(){var e=o(s.mark((function e(t,n,r){var a;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=this.makeMatchOrdersTransaction(r),e.next=3,this._sendTransaction(t,a,[n]);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"makeMatchOrdersTransaction",value:function(e){var t=new h.Transaction;return t.add(g.DexInstructions.matchOrders({market:this.address,requestQueue:this._decoded.requestQueue,eventQueue:this._decoded.eventQueue,bids:this._decoded.bids,asks:this._decoded.asks,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,limit:e,programId:this._programId})),t}},{key:"loadRequestQueue",value:function(){var e=o(s.mark((function e(t){var n,r;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=U,e.next=3,t.getAccountInfo(this._decoded.requestQueue);case 3:return e.t1=e.sent,n=(0,e.t0)(e.t1),r=n.data,e.abrupt("return",y.decodeRequestQueue(r));case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"loadEventQueue",value:function(){var e=o(s.mark((function e(t){var n,r;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=U,e.next=3,t.getAccountInfo(this._decoded.eventQueue);case 3:return e.t1=e.sent,n=(0,e.t0)(e.t1),r=n.data,e.abrupt("return",y.decodeEventQueue(r));case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"loadFills",value:function(){var e=o(s.mark((function e(t){var n,r,a,i,c=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=c.length>1&&void 0!==c[1]?c[1]:100,e.t0=U,e.next=4,t.getAccountInfo(this._decoded.eventQueue);case 4:return e.t1=e.sent,r=(0,e.t0)(e.t1),a=r.data,i=y.decodeEventQueue(a,n),e.abrupt("return",i.filter((function(e){return e.eventFlags.fill&&e.nativeQuantityPaid.gtn(0)})).map(this.parseFillEvent.bind(this)));case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"parseFillEvent",value:function(e){var t,n,r;return e.eventFlags.bid?(r="buy",n=E((e.eventFlags.maker?e.nativeQuantityPaid.add(e.nativeFeeOrRebate):e.nativeQuantityPaid.sub(e.nativeFeeOrRebate)).mul(this._baseSplTokenMultiplier),this._quoteSplTokenMultiplier.mul(e.nativeQuantityReleased)),t=E(e.nativeQuantityReleased,this._baseSplTokenMultiplier)):(r="sell",n=E((e.eventFlags.maker?e.nativeQuantityReleased.sub(e.nativeFeeOrRebate):e.nativeQuantityReleased.add(e.nativeFeeOrRebate)).mul(this._baseSplTokenMultiplier),this._quoteSplTokenMultiplier.mul(e.nativeQuantityPaid)),t=E(e.nativeQuantityPaid,this._baseSplTokenMultiplier)),a(a({},e),{},{side:r,price:n,feeCost:this.quoteSplSizeToNumber(e.nativeFeeOrRebate)*(e.eventFlags.maker?-1:1),size:t})}},{key:"priceLotsToNumber",value:function(e){return E(e.mul(this._decoded.quoteLotSize).mul(this._baseSplTokenMultiplier),this._decoded.baseLotSize.mul(this._quoteSplTokenMultiplier))}},{key:"priceNumberToLots",value:function(e){return new f.default(Math.round(e*Math.pow(10,this._quoteSplTokenDecimals)*this._decoded.baseLotSize.toNumber()/(Math.pow(10,this._baseSplTokenDecimals)*this._decoded.quoteLotSize.toNumber())))}},{key:"baseSplSizeToNumber",value:function(e){return E(e,this._baseSplTokenMultiplier)}},{key:"quoteSplSizeToNumber",value:function(e){return E(e,this._quoteSplTokenMultiplier)}},{key:"baseSizeLotsToNumber",value:function(e){return E(e.mul(this._decoded.baseLotSize),this._baseSplTokenMultiplier)}},{key:"baseSizeNumberToLots",value:function(e){return new f.default(Math.round(e*Math.pow(10,this._baseSplTokenDecimals))).div(this._decoded.baseLotSize)}},{key:"quoteSizeLotsToNumber",value:function(e){return E(e.mul(this._decoded.quoteLotSize),this._quoteSplTokenMultiplier)}},{key:"quoteSizeNumberToLots",value:function(e){return new f.default(Math.round(e*Math.pow(10,this._quoteSplTokenDecimals))).div(this._decoded.quoteLotSize)}},{key:"programId",get:function(){return this._programId}},{key:"address",get:function(){return this._decoded.ownAddress}},{key:"publicKey",get:function(){return this.address}},{key:"baseMintAddress",get:function(){return this._decoded.baseMint}},{key:"quoteMintAddress",get:function(){return this._decoded.quoteMint}},{key:"bidsAddress",get:function(){return this._decoded.bids}},{key:"asksAddress",get:function(){return this._decoded.asks}},{key:"supportsSrmFeeDiscounts",get:function(){return v.supportsSrmFeeDiscounts(this._programId)}},{key:"supportsReferralFees",get:function(){return O.getLayoutVersion(this._programId)>1}},{key:"usesRequestQueue",get:function(){return O.getLayoutVersion(this._programId)<=2}},{key:"_baseSplTokenMultiplier",get:function(){return new f.default(10).pow(new f.default(this._baseSplTokenDecimals))}},{key:"_quoteSplTokenMultiplier",get:function(){return new f.default(10).pow(new f.default(this._quoteSplTokenDecimals))}},{key:"minOrderSize",get:function(){return this.baseSizeLotsToNumber(new f.default(1))}},{key:"tickSize",get:function(){return this.priceLotsToNumber(new f.default(1))}}],[{key:"getLayout",value:function(e){return 1===O.getLayoutVersion(e)?t._MARKET_STAT_LAYOUT_V1:t._MARKET_STATE_LAYOUT_V2}},{key:"findAccountsByMints",value:function(){var t=o(s.mark((function t(n,r,a,i){var c;return s.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=[{memcmp:{offset:this.getLayout(i).offsetOf("baseMint"),bytes:r.toBase58()}},{memcmp:{offset:e.getLayout(i).offsetOf("quoteMint"),bytes:a.toBase58()}}],t.abrupt("return",M(n,i,c));case 2:case"end":return t.stop()}}),t,this)})));return function(e,n,r,a){return t.apply(this,arguments)}}()},{key:"load",value:function(){var t=o(s.mark((function t(n,r){var a,i,o,u,d,l,p,m,b,g,f=arguments;return s.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3?f[3]:void 0,console.log("loading armani."),t.t0=U,t.next=6,n.getAccountInfo(r);case 6:if(t.t1=t.sent,o=(0,t.t0)(t.t1,"Market not found"),u=o.owner,d=o.data,u.equals(i)){t.next=12;break}throw new Error("Address not owned by program: "+u.toBase58());case 12:if(console.log("wtf"),(l=this.getLayout(i).decode(d)).accountFlags.initialized&&l.accountFlags.market&&l.ownAddress.equals(r)){t.next=16;break}throw new Error("Invalid market");case 16:return t.next=18,Promise.all([P(n,l.baseMint),P(n,l.quoteMint)]);case 18:return p=t.sent,m=c(p,2),b=m[0],g=m[1],t.abrupt("return",new e(l,b,g,a,i));case 23:case"end":return t.stop()}}),t,this)})));return function(e,n){return t.apply(this,arguments)}}()}]),e}();t.Market=S,t._OPEN_ORDERS_LAYOUT_V1=p.struct([p.blob(5),m.accountFlagsLayout("accountFlags"),m.publicKeyLayout("market"),m.publicKeyLayout("owner"),m.u64("baseTokenFree"),m.u64("baseTokenTotal"),m.u64("quoteTokenFree"),m.u64("quoteTokenTotal"),m.u128("freeSlotBits"),m.u128("isBidBits"),p.seq(m.u128(),128,"orders"),p.seq(m.u64(),128,"clientIds"),p.blob(7)]),t._OPEN_ORDERS_LAYOUT_V2=p.struct([p.blob(5),m.accountFlagsLayout("accountFlags"),m.publicKeyLayout("market"),m.publicKeyLayout("owner"),m.u64("baseTokenFree"),m.u64("baseTokenTotal"),m.u64("quoteTokenFree"),m.u64("quoteTokenTotal"),m.u128("freeSlotBits"),m.u128("isBidBits"),p.seq(m.u128(),128,"orders"),p.seq(m.u64(),128,"clientIds"),m.u64("referrerRebatesAccrued"),p.blob(7)]);var w=function(){function e(t,n,r){u(this,e),this.address=t,this._programId=r,Object.assign(this,n)}return d(e,[{key:"publicKey",get:function(){return this.address}}],[{key:"getLayout",value:function(e){return 1===O.getLayoutVersion(e)?t._OPEN_ORDERS_LAYOUT_V1:t._OPEN_ORDERS_LAYOUT_V2}},{key:"findForOwner",value:function(){var t=o(s.mark((function t(n,r,a){var i,c;return s.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=[{memcmp:{offset:this.getLayout(a).offsetOf("owner"),bytes:r.toBase58()}},{dataSize:this.getLayout(a).span}],t.next=3,M(n,a,i);case 3:return c=t.sent,t.abrupt("return",c.map((function(t){var n=t.publicKey,r=t.accountInfo;return e.fromAccountInfo(n,r,a)})));case 5:case"end":return t.stop()}}),t,this)})));return function(e,n,r){return t.apply(this,arguments)}}()},{key:"findForMarketAndOwner",value:function(){var t=o(s.mark((function t(n,r,a,i){var c,o;return s.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=[{memcmp:{offset:this.getLayout(i).offsetOf("market"),bytes:r.toBase58()}},{memcmp:{offset:this.getLayout(i).offsetOf("owner"),bytes:a.toBase58()}},{dataSize:this.getLayout(i).span}],t.next=3,M(n,i,c);case 3:return o=t.sent,t.abrupt("return",o.map((function(t){var n=t.publicKey,r=t.accountInfo;return e.fromAccountInfo(n,r,i)})));case 5:case"end":return t.stop()}}),t,this)})));return function(e,n,r,a){return t.apply(this,arguments)}}()},{key:"load",value:function(){var t=o(s.mark((function t(n,r,a){var i;return s.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.getAccountInfo(r);case 2:if(null!==(i=t.sent)){t.next=5;break}throw new Error("Open orders account not found");case 5:return t.abrupt("return",e.fromAccountInfo(r,i,a));case 6:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}()},{key:"fromAccountInfo",value:function(t,n,r){var a=n.owner,i=n.data;if(!a.equals(r))throw new Error("Address not owned by program");var c=this.getLayout(r).decode(i);if(!c.accountFlags.initialized||!c.accountFlags.openOrders)throw new Error("Invalid open orders account");return new e(t,c,r)}},{key:"makeCreateAccountTransaction",value:function(){var e=o(s.mark((function e(t,n,r,a,i){return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=h.SystemProgram,e.t1=r,e.t2=a,e.next=5,t.getMinimumBalanceForRentExemption(this.getLayout(i).span);case 5:return e.t3=e.sent,e.t4=this.getLayout(i).span,e.t5=i,e.t6={fromPubkey:e.t1,newAccountPubkey:e.t2,lamports:e.t3,space:e.t4,programId:e.t5},e.abrupt("return",e.t0.createAccount.call(e.t0,e.t6));case 10:case"end":return e.stop()}}),e,this)})));return function(t,n,r,a,i){return e.apply(this,arguments)}}()}]),e}();t.OpenOrders=w,t.ORDERBOOK_LAYOUT=p.struct([p.blob(5),m.accountFlagsLayout("accountFlags"),b.SLAB_LAYOUT.replicate("slab"),p.blob(7)]);var k=function(){function e(t,n,r){if(u(this,e),!n.initialized||!(n.bids^n.asks))throw new Error("Invalid orderbook");this.market=t,this.isBids=n.bids,this.slab=r}return d(e,[{key:"getL2",value:function(e){var t,n=this,a=this.isBids,i=[],s=r(this.slab.items(a));try{for(s.s();!(t=s.n()).done;){var o=t.value,u=o.key,d=o.quantity,l=T(u);if(i.length>0&&i[i.length-1][0].eq(l))i[i.length-1][1].iadd(d);else{if(i.length===e)break;i.push([l,d])}}}catch(p){s.e(p)}finally{s.f()}return i.map((function(e){var t=c(e,2),r=t[0],a=t[1];return[n.market.priceLotsToNumber(r),n.market.baseSizeLotsToNumber(a),r,a]}))}},{key:Symbol.iterator,value:function(){return this.items(!1)}},{key:"items",value:s.mark((function e(){var t,n,a,i,c,o,u,d,l,p,m,b=arguments;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=b.length>0&&void 0!==b[0]&&b[0],n=r(this.slab.items(t)),e.prev=2,n.s();case 4:if((a=n.n()).done){e.next=11;break}return i=a.value,c=i.key,o=i.ownerSlot,u=i.owner,d=i.quantity,l=i.feeTier,p=i.clientOrderId,m=T(c),e.next=9,{orderId:c,clientId:p,openOrdersAddress:u,openOrdersSlot:o,feeTier:l,price:this.market.priceLotsToNumber(m),priceLots:m,size:this.market.baseSizeLotsToNumber(d),sizeLots:d,side:this.isBids?"buy":"sell"};case 9:e.next=4;break;case 11:e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),n.e(e.t0);case 16:return e.prev=16,n.f(),e.finish(16);case 19:case"end":return e.stop()}}),e,this,[[2,13,16,19]])}))}],[{key:"decode",value:function(n,r){var a=t.ORDERBOOK_LAYOUT.decode(r);return new e(n,a.accountFlags,a.slab)}},{key:"LAYOUT",get:function(){return t.ORDERBOOK_LAYOUT}}]),e}();function T(e){return e.ushrn(64)}function E(e,t){var n=e.div(t).toNumber(),r=e.umod(t),a=r.gcd(t);return n+r.div(a).toNumber()/t.div(a).toNumber()}t.Orderbook=k;var A=p.struct([p.blob(44),p.u8("decimals"),p.blob(37)]);function P(e,t){return W.apply(this,arguments)}function W(){return(W=o(s.mark((function e(t,n){var r,a,i,c;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.equals(x.WRAPPED_SOL_MINT)){e.next=2;break}return e.abrupt("return",9);case 2:return e.t0=U,e.next=5,t.getAccountInfo(n);case 5:return e.t1=e.sent,r=(0,e.t0)(e.t1,"mint not found"),a=r.data,i=A.decode(a),c=i.decimals,e.abrupt("return",c);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function M(e,t,n){return R.apply(this,arguments)}function R(){return(R=o(s.mark((function e(t,n,r){var a;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t._rpcRequest("getProgramAccounts",[n.toBase58(),{commitment:t.commitment,filters:r,encoding:"base64"}]);case 2:if(!(a=e.sent).error){e.next=5;break}throw new Error(a.error.message);case 5:return e.abrupt("return",a.result.map((function(e){var t=e.pubkey,n=e.account,r=n.data,a=n.executable,i=n.owner,c=n.lamports;return{publicKey:new h.PublicKey(t),accountInfo:{data:j.Buffer.from(r[0],"base64"),executable:a,owner:new h.PublicKey(i),lamports:c}}})));case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function U(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"account not found";if(null===e)throw new Error(t);return e}t.getMintDecimals=P},41:function(e,t,n){"use strict";n.d(t,"b",(function(){return u})),n.d(t,"a",(function(){return l}));var r=n(3),a=n.n(r),i=n(9),c=n(1),s=(n(0),n(18)),o=n(61);function u(e,t,n,r){return d.apply(this,arguments)}function d(){return(d=Object(i.a)(a.a.mark((function e(t,n,r,i){var s;return a.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.enqueueSnackbar(n,{variant:"info"}),e.prev=1,e.next=4,i();case 4:s=e.sent,t.closeSnackbar(),t.enqueueSnackbar(r,{variant:"success",action:Object(c.jsx)(l,{signature:s})}),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),t.enqueueSnackbar("Error: ".concat(e.t0.toString()),{variant:"error"});case 12:case"end":return e.stop()}}),e,null,[[1,9]])})))).apply(this,arguments)}function l(e){var t=e.signature,n=Object(s.c)((function(e){return{explorerClusterSuffix:e.common.network.explorerClusterSuffix}})).explorerClusterSuffix,r="?cluster=".concat(n);return Object(c.jsx)(o.a,{color:"inherit",component:"a",target:"_blank",rel:"noopener",href:"https://explorer.solana.com/tx/".concat(t)+r,children:"View on Solana Explorer"})}},415:function(e,t,n){"use strict";var r=n(3),a=n(80),i=n(81),c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Slab=t.SLAB_LAYOUT=void 0;var s=c(n(29)),o=n(5),u=n(133),d=o.struct([o.u32("bumpIndex"),u.zeros(4),o.u32("freeListLen"),u.zeros(4),o.u32("freeListHead"),o.u32("root"),o.u32("leafCount"),u.zeros(4)],"header"),l=o.union(o.u32("tag"),o.blob(68),"node");l.addVariant(0,o.struct([]),"uninitialized"),l.addVariant(1,o.struct([o.u32("prefixLen"),u.u128("key"),o.seq(o.u32(),2,"children")]),"innerNode"),l.addVariant(2,o.struct([o.u8("ownerSlot"),o.u8("feeTier"),o.blob(2),u.u128("key"),u.publicKeyLayout("owner"),u.u64("quantity"),u.u64("clientOrderId")]),"leafNode"),l.addVariant(3,o.struct([o.u32("next")]),"freeNode"),l.addVariant(4,o.struct([]),"lastFreeNode"),t.SLAB_LAYOUT=o.struct([d,o.seq(l,o.offset(d.layoutFor("bumpIndex"),d.offsetOf("bumpIndex")-d.span),"nodes")]);var p=function(){function e(t,n){a(this,e),this.header=t,this.nodes=n}return i(e,[{key:"get",value:function(e){if(0===this.header.leafCount)return null;e instanceof s.default||(e=new s.default(e));for(var t=this.header.root;;){var n=this.nodes[t],r=n.leafNode,a=n.innerNode;if(r)return r.key.eq(e)?r:null;if(!a)throw new Error("Invalid slab");if(!a.key.xor(e).iushrn(128-a.prefixLen).isZero())return null;t=a.children[e.testn(128-a.prefixLen-1)?1:0]}}},{key:Symbol.iterator,value:function(){return this.items(!1)}},{key:"items",value:r.mark((function e(){var t,n,a,i,c,s,o=arguments;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]&&o[0],0!==this.header.leafCount){e.next=3;break}return e.abrupt("return");case 3:n=[this.header.root];case 4:if(!(n.length>0)){e.next=15;break}if(a=n.pop(),i=this.nodes[a],c=i.leafNode,s=i.innerNode,!c){e.next=12;break}return e.next=10,c;case 10:e.next=13;break;case 12:s&&(t?n.push(s.children[0],s.children[1]):n.push(s.children[1],s.children[0]));case 13:e.next=4;break;case 15:case"end":return e.stop()}}),e,this)}))}],[{key:"decode",value:function(e){return t.SLAB_LAYOUT.decode(e)}}]),e}();t.Slab=p,u.setLayoutDecoder(t.SLAB_LAYOUT,(function(e){var t=e.header,n=e.nodes;return new p(t,n)}))},416:function(e){e.exports=JSON.parse('[{"address":"B37pZmwrwXHjpgvd9hHDAx1yeDsNevTnbbrN9W12BoGK","deprecated":true,"name":"ALEPH/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"CAgAeMD7quTdnr6RPa7JySQpjf3irAmefYNdTb6anemq","deprecated":true,"name":"BTC/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"ASKiV944nKg1W9vsf7hf3fTsjawK6DwLwrnB2LH9n61c","deprecated":true,"name":"ETH/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Cdp72gDcYMCLLk3aDkPxjeiirKoFqK38ECm8Ywvk94Wi","deprecated":true,"name":"SOL/WUSDC","programId":"BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg"},{"address":"68J6nkWToik6oM9rTatKSR5ibVSykAtzftBUEAvpRsys","deprecated":true,"name":"SRM/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8Jzed8Fafu1RU1CQDWdiETSrqAJy1ukZ5JL6Pma3p3a2","deprecated":true,"name":"SRM/SOL","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9wDmxsfwaDb2ysmZpBLzxKzoWrF1zHzBN7PV5EmJe19R","deprecated":true,"name":"SUSHI/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"GbQSffne1NcJbS4jsewZEpRGYVR4RNnuVUN8Ht6vAGb6","deprecated":true,"name":"SXP/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"7kgkDyW7dmyMeP8KFXzbcUZz1R2WHsovDZ7n3ihZuNDS","deprecated":true,"name":"MSRM/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FZqrBXz7ADGsmDf1TM9YgysPUfvtG8rJiNUrqDpHc9Au","deprecated":true,"name":"FTT/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FJg9FUtbN3fg3YFbMCFiZKjGh5Bn4gtzxZmtxFzmz9kT","deprecated":true,"name":"YFI/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"7GZ59DMgJ7D6dfoJTpszPayTRyua9jwcaGJXaRMMF1my","deprecated":true,"name":"LINK/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"uPNcBgFhrLW3FtvyYYbBUi53BBEQf9e4NPgwxaLu5Hn","deprecated":true,"name":"HGET/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"3puWJFZyCso14EdxhywjD7xqyTarpsULx483mzvqxQRW","deprecated":true,"name":"CREAM/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8Ae7Uhigx8k4fKdJG7irdPCVDZLvWsJfeTH2t5fr3TVD","deprecated":true,"name":"UBXT/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Hze5AUX4Qp1cTujiJ4CsAMRGn4g6ZpgXsmptFn3xxhWg","deprecated":true,"name":"HNT/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FJq4HX3bUSgF3yQZ8ADALtJYfAyr9fz36SNG18hc3dgF","deprecated":true,"name":"FRONT/WUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"BZMuoQ2i2noNUXMdrRDivc7MwjGspNJTCfZkdHMwK18T","deprecated":true,"name":"ALEPH/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5LgJphS6D5zXwUVPU7eCryDBkyta3AidrJ5vjNU6BcGW","deprecated":true,"name":"BTC/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DmEDKZPXXkWgaYiKgWws2ZXWWKCh41eryDPRVD4zKnD9","deprecated":true,"name":"ETH/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EBFTQNg2QjyxV7WDDenoLbfLLXLcbSz6w1YrdTCGPWT5","deprecated":true,"name":"SOL/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8YmQZRXGizZXYPCDmxgjwB8X8XN4PZG7MMwNg76iAmPZ","deprecated":true,"name":"SRM/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9vFuX2BizwinWjkZLQTmThDcNMFEcY3wVXYuqnRQtcD","deprecated":true,"name":"SUSHI/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"C5NReXAeQhfjiDCGPFj1UUmDxDqF8v2CUVKoYuQqb4eW","deprecated":true,"name":"SXP/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"58H7ZRmiyWtsrz2sQGz1qQCMW6n7447xhNNehUSQGPj5","deprecated":true,"name":"MSRM/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"ES8skmkEeyH1BYFThd2FtyaFKhkqtwH7XWp8mXptv3vg","deprecated":true,"name":"FTT/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"Gw78CYLLFbgmmn4rps9KoPAnNtBQ2S1foL2Mn6Z5ZHYB","deprecated":true,"name":"YFI/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"WjfsTPyrvUUrhGJ9hVQFubMnKDcnQS8VxSXU7L2gLcA","deprecated":true,"name":"LINK/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2ZmB255T4FVUugpeXTFxD6Yz5GE47yTByYvqSTDUbk3G","deprecated":true,"name":"HGET/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FGJtCDXoHLHjagP5Ht6xcUFt2rW3z8MJPe87rFKP2ZW6","deprecated":true,"name":"CREAM/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7K6MPog6LskZmyaYwqtLvRUuedoiE68nirbQ9tK3LasE","deprecated":true,"name":"UBXT/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9RyozJe3bkAFfH3jmoiKHjkWCoLTxn7aBQSi6YfaV6ab","deprecated":true,"name":"HNT/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AGtBbGuJZiv3Ko3dfT4v6g4kCqnNc9DXfoGLe5HpjmWx","deprecated":true,"name":"FRONT/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AA1HSrsMcRNzjaQfRMTNarHR9B7e4U79LJ2319UtiqPF","deprecated":true,"name":"AKRO/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AUAobJdffexcoJBMeyLorpShu3ZtG9VvPEPjoeTN4u5Z","deprecated":true,"name":"HXRO/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GpdYLFbKHeSeDGqsnQ4jnP7D1294iBpQcsN1VPwhoaFS","deprecated":true,"name":"UNI/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"sxS9EdTx1UPe4j2c6Au9f1GKZXrFj5pTgNKgjGGtGdY","deprecated":true,"name":"KEEP/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CfnnU38ACScF6pcurxSB3FLXeZmfFYunVKExeUyosu5P","deprecated":true,"name":"MATH/WUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7NR5GDouQYkkfppVkNhpa4HfJ2LwqUQymE3b4CYQiYHa","deprecated":true,"name":"ALEPH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CVfYa8RGXnuDBeGmniCcdkBwoLqVxh92xB1JqgRQx3F","deprecated":true,"name":"BTC/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H5uzEytiByuXt964KampmuNCurNDwkVVypkym75J2DQW","deprecated":true,"name":"ETH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7xMDbYTCqQEcK2aM9LbetGtNFJpzKdfXzLL5juaLh4GJ","deprecated":true,"name":"SOL/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CDdR97S8y96v3To93aKvi3nCnjUrbuVSuumw8FLvbVeg","deprecated":true,"name":"SRM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7LVJtqSrF6RudMaz5rKGTmR3F3V5TKoDcN6bnk68biYZ","deprecated":true,"name":"SUSHI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"13vjJ8pxDMmzen26bQ5UrouX8dkXYPW1p3VLVDjxXrKR","deprecated":true,"name":"SXP/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AwvPwwSprfDZ86beBJDNH5vocFvuw4ZbVQ6upJDbSCXZ","deprecated":true,"name":"MSRM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FfDb3QZUdMW2R2aqJQgzeieys4ETb3rPrFFfPSemzq7R","deprecated":true,"name":"FTT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"4QL5AQvXdMSCVZmnKXiuMMU83Kq3LCwVfU8CyznqZELG","deprecated":true,"name":"YFI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7JCG9TsCx3AErSV3pvhxiW4AbkKRcJ6ZAveRmJwrgQ16","deprecated":true,"name":"LINK/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"3otQFkeQ7GNUKT3i2p3aGTQKS2SAw6NLYPE5qxh3PoqZ","deprecated":true,"name":"HGET/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2M8EBxFbLANnCoHydypL1jupnRHG782RofnvkatuKyLL","deprecated":true,"name":"CREAM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"3UqXdFtNBZsFrFtRGAWGvy9R8H6GJR2hAyGRdYT9BgG3","deprecated":true,"name":"UBXT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9jiasgdYGGh34fAbBQSwkKe1dYSapXbjy2sLsYpetqFp","deprecated":true,"name":"HNT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7oKqJhnz9b8af8Mw47dieTiuxeaHnRYYGBiqCrRpzTRD","deprecated":true,"name":"FRONT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"F1rxD8Ns5w4WzVcTRdaJ96LG7YKaA5a25BBmM32yFP4b","deprecated":true,"name":"AKRO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"6ToedDwjRCvrcKX7fnHSTA9uABQe1dcLK6YgS5B9M3wo","deprecated":true,"name":"HXRO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FURvCsDUiuUaxZ13pZqQbbfktFGWmQVTHz7tL992LQVZ","deprecated":true,"name":"UNI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EcfDRMrEJ3yW4SgrRyyxTPoKqAZDNSBV8EerigT7BNSS","deprecated":true,"name":"KEEP/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2bPsJ6bZ9KDLfJ8QgSN1Eb4mRsbAiaGyHN6cJkoVLpwd","deprecated":true,"name":"MATH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"B1GypajMh7S8zJVp6M1xMfu6zGsMgvYrt3cSn9wG7Dd6","deprecated":true,"name":"TOMO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"rPTGvVrNFYzBeTEcYnHiaWGNnkSXsWNNjUgk771LkwJ","deprecated":true,"name":"LUA/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FrDavxi4QawYnQY259PVfYUjUvuyPNfqSXbLBqMnbfWJ","deprecated":true,"name":"FIDA/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CVn1nJ5Utuseyy2qqwrpYoJz9Y7jjYonVL4UYvcCepDH","deprecated":true,"name":"KIN/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"BqjGW7ousAizgs8VrHo5SR1LxTksAQPtb8cKZZiNvX5D","deprecated":true,"name":"MAPS/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GcoKtAmTy5QyuijXSmJKBtFdt99e6Buza18Js7j9AJ6e","deprecated":false,"name":"ALEPH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw","deprecated":false,"name":"BTC/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4tSvZvnbyzHXLMTiFonMyxZoHmFqau1XArcRCVHLZ5gX","deprecated":false,"name":"ETH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA","deprecated":false,"name":"SRM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"A1Q9iJDVVS8Wsswr9ajeZugmj64bQVCYLZQLra2TMBMo","deprecated":false,"name":"SUSHI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4LUro5jaPaTurXK737QAxgJywdhABnFAMQkXX4ZyqqaZ","deprecated":false,"name":"SXP/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4VKLSYdvrQ5ngQrt1d2VS8o4ewvb2MMUZLiejbnGPV33","deprecated":false,"name":"MSRM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2Pbh1CvRVku1TgewMfycemghf6sU9EyuFDcNXqvRmSxc","deprecated":false,"name":"FTT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7qcCo8jqepnjjvB5swP4Afsr3keVBs6gNpBTNubd1Kr2","deprecated":false,"name":"YFI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3hwH1txjJVS8qv588tWrjHfRxdqNjBykM1kMcit484up","deprecated":false,"name":"LINK/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"88vztw7RTN6yJQchVvxrs6oXUDryvpv9iJaFa1EEmg87","deprecated":false,"name":"HGET/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7nZP6feE94eAz9jmfakNJWPwEKaeezuKKC5D1vrnqyo2","deprecated":false,"name":"CREAM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2wr3Ab29KNwGhtzr5HaPCyfU1qGJzTUAN4amCLZWaD1H","deprecated":false,"name":"UBXT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CnUV42ZykoKUnMDdyefv5kP6nDSJf7jFd7WXAecC6LYr","deprecated":false,"name":"HNT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9Zx1CvxSVdroKMMWf2z8RwrnrLiQZ9VkQ7Ex3syQqdSH","deprecated":false,"name":"FRONT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5CZXTTgVZKSzgSA3AFMN5a2f3hmwmmJ6hU8BHTEJ3PX8","deprecated":false,"name":"AKRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6Pn1cSiRos3qhBf54uBP9ZQg8x3JTardm1dL3n4p29tA","deprecated":false,"name":"HXRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6JYHjaQBx6AtKSSsizDMwozAEDEZ5KBsSUzH7kRjGJon","deprecated":false,"name":"UNI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"J7cPYBrXVy8Qeki2crZkZavcojf2sMRyQU7nx438Mf8t","deprecated":false,"name":"MATH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8BdpjpSD5n3nk8DQLqPUyTZvVqFu6kcff5bzUX5dqDpy","deprecated":false,"name":"TOMO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4xyWjQ74Eifq17vbue5Ut9xfFNfuVB116tZLEpiZuAn8","deprecated":false,"name":"LUA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"jyei9Fpj2GtHLDDGgcuhDacxYLLiSyxU4TY7KxB2xai","deprecated":false,"name":"SRM/SOL","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT","deprecated":false,"name":"SOL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"E14BKBhDWD4EuTkWj1ooZezesGxMW8LPCps4W5PuzZJo","deprecated":false,"name":"FIDA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Bn6NPyr6UzrFAwC4WmvPvDr2Vm8XSUnFykM2aQroedgn","deprecated":false,"name":"KIN/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3A8XQRWXC7BjLpgLDDBhQJLT5yPCzS16cGYRKHkKxvYo","deprecated":false,"name":"MAPS/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3rgacody9SvM88QR83GHaNdEEx4Fe2V2ed5GJp2oeKDr","deprecated":false,"name":"KEEP/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EmCzMQfXMgNHcnRoFwAdPe1i2SuiSzMj1mx6wu3KN2uA","deprecated":true,"name":"ALEPH/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8AcVjMG2LTbpkjNoyq8RwysokqZunkjy3d5JDzxC6BJa","deprecated":true,"name":"BTC/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"HfCZdJ1wfsWKfYP2qyWdXTT5PWAGWFctzFjLH48U1Hsd","deprecated":true,"name":"ETH/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8mDuvJJSgoodovMRYArtVVYBbixWYdGzR47GPrRT65YJ","deprecated":true,"name":"SOL/WUSDT","programId":"BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg"},{"address":"HARFLhSq8nECZk4DVFKvzqXMNMA9a3hjvridGMFizeLa","deprecated":true,"name":"SRM/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"DzFjazak6EKHnaB2w6qSsArnj28CV1TKd2Smcj9fqtHW","deprecated":true,"name":"SUSHI/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"GuvWMATdEV6DExWnXncPYEzn4ePWYkvGdC8pu8gsn7m7","deprecated":true,"name":"SXP/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"H4snTKK9adiU15gP22ErfZYtro3aqR9BTMXiH3AwiUTQ","deprecated":true,"name":"MSRM/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"DHDdghmkBhEpReno3tbzBPtsxCt6P3KrMzZvxavTktJt","deprecated":true,"name":"FTT/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"5zu5bTZZvqESAAgFsr12CUMxdQvMrvU9CgvC1GW8vJdf","deprecated":true,"name":"YFI/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"F5xschQBMpu1gD2q1babYEAVJHR1buj1YazLiXyQNqSW","deprecated":true,"name":"LINK/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"BAbc9baz4hV1hnYjWSJ6cZDRjfvziWbYGQu9UFkcdUmx","deprecated":true,"name":"HGET/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"EBxJWA2nLV57ZntbjizxH527ZjPNLT5cpUHMnY5k3oq","deprecated":true,"name":"CREAM/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"46VdEkj4MJwZinwVb3Y7DUDpVXLNb9YW7P2waKU3vCqr","deprecated":true,"name":"UBXT/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Hc22rHKrhbrZBaQMmhJvPTkp1yDr31PDusU8wKoqFSZV","deprecated":true,"name":"HNT/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"HFoca5HKwiTPpw9iUY5iXWqzkXdu88dS7YrpSvt2uhyF","deprecated":true,"name":"FRONT/WUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"5xnYnWca2bFwC6cPufpdsCbDJhMjYCC59YgwoZHEfiee","deprecated":true,"name":"ALEPH/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EXnGBBSamqzd3uxEdRLUiYzjJkTwQyorAaFXdfteuGXe","deprecated":true,"name":"BTC/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5abZGhrELnUnfM9ZUnvK6XJPoBU5eShZwfFPkdhAC7o","deprecated":true,"name":"ETH/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7xLk17EQQ5KLDLDe44wCmupJKJjTGd8hs3eSVVhCx932","deprecated":true,"name":"SOL/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H3APNWA8bZW2gLMSq5sRL41JSMmEJ648AqoEdDgLcdvB","deprecated":true,"name":"SRM/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"4uZTPc72sCDcVRfKKii67dTPm2Xe4ri3TYnGcUQrtnU9","deprecated":true,"name":"SUSHI/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"33GHmwG9woY95JuWNi74Aa8uKvysSXxif9P1EwwkrCRz","deprecated":true,"name":"SXP/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FUaF58sDrgbqakHTR8RUwRLauSofRTjqyCsqThFPh6YM","deprecated":true,"name":"MSRM/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5NqjQVXLuLSDnsnQMfWp3rF9gbWDusWG4B1Xwtk3rZ5S","deprecated":true,"name":"FTT/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"97NiXHUNkpYd1eb2HthSDGhaPfepuqMAV3QsZhAgb1wm","deprecated":true,"name":"YFI/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"hBswhpNyz4m5nt4KwtCA7jYXvh7VmyZ4TuuPmpaKQb1","deprecated":true,"name":"LINK/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GaeUpY7CT8rjoeVGjY1t3mJJDd1bdXxYWtrGSpsVFors","deprecated":true,"name":"HGET/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7qq9BABQvTWKZuJ5fX2PeTKX6XVtduEs9zW9WS21fSzN","deprecated":true,"name":"CREAM/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DCHvVahuLTNWBGUtEzF5GrTdx5FRpxqEJiS6Ru1hrDfD","deprecated":true,"name":"UBXT/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DWjJ8VHdGYBxDQYdrRBVDWkHswrgjuBFEv5pBhiRoPBz","deprecated":true,"name":"HNT/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"56eqxJYzPigm4FkigiBdsfebjMgAbKNh24E7oiKLBtye","deprecated":true,"name":"FRONT/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FQbCNSVH3RgosCPB4CJRstkLh5hXkvuXzAjQzT11oMYo","deprecated":true,"name":"AKRO/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"Fs5xtGUmJTYo8Ao75M3R3m3mVX53KMUhzfXCmyRLnp2P","deprecated":true,"name":"HXRO/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"ChKV7mxecPqFPGYJjhzowPHDiLKFWXXVujUiE3EWxFcg","deprecated":true,"name":"UNI/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"6N3oU7ALvn2RPwdpYVzPBgQJ8njT29inBbS2tSrwx8fh","deprecated":true,"name":"KEEP/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5P6dJbyKySFXMYNWiEcNQu8xPRYsehYzCeVpae9Ueqrg","deprecated":true,"name":"MATH/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H7c8FcQPJ2E5tJmpWBPSi7xCAbk8immdtUxKFRUyE4Ro","deprecated":true,"name":"TOMO/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7PSeX1AEtBY9KvgegF5rUh452VemMh7oDzFtJgH7sxMG","deprecated":true,"name":"LUA/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AF2oQQaLtcrTnQyVs3EPTdyw57TPaK6njKYDq2Qw7LqP","deprecated":true,"name":"SWAG/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9TE15E5h61zJ5VmQAAHkGrAuQdFTth33aBbKdcrppZBp","deprecated":true,"name":"FIDA/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8HEaA1vSA5mGQoHcvRPNibnuZvnUpSjJJru9HJNH3SqM","deprecated":true,"name":"KIN/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8EuuEwULFM7n7zthPjC7kA64LPRzYkpAyuLFiLuVg7D4","deprecated":true,"name":"WUSDT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8grUs4WZoTs4KJ8LfRNUBs6SNkMTp5BnVRzJgQ2ranDT","deprecated":true,"name":"MAPS/WUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FoCuWt4KboucUg2PwmQ3dbkvLqYPLnAo1Rsm8p7QPyf","deprecated":true,"name":"ALEPH/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5r8FfnbNYcQbS1m4CYmoHYGjBtu6bxfo6UJHNRfzPiYH","deprecated":true,"name":"BTC/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"71CtEComq2XdhGNbXBuYPmosAjMCPSedcgbNi5jDaGbR","deprecated":true,"name":"ETH/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EZyQ9zyqQsw3QcsLksoWyd1UFVjHZkzRx8N4ZMnZQrS2","deprecated":true,"name":"SRM/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6ERBjj692XHLWwWSRAUpiKenXshcwmPqhMy7RMapeoKa","deprecated":true,"name":"SUSHI/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CQ3kAGxPmpBbak2RSHWyMeRhyLYbH6oVZHJxgjzDLpLW","deprecated":true,"name":"SXP/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2Hqn46jhwaQMQ3zEnHtxrWxQZom6qwLXAgdsFJM1Srwh","deprecated":true,"name":"MSRM/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"G5jqZNo2UVCTnJxgEhKCYvqFRs3MxsnH8Bervq3rfLoL","deprecated":true,"name":"FTT/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CbwtTHEpfTnCyLw4GoTbKk7WyrXkuATLfLadY2odBSsY","deprecated":true,"name":"YFI/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5GjhBAYx8pYeCeUQt7rt93KQZnoQFuDq9Jx4iqq97Mip","deprecated":true,"name":"LINK/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9jMPV9E23pTirMjC7vz5suRNkd25311G3Httg7jTib8R","deprecated":true,"name":"CREAM/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"DsSz9KWT97T4RewRTqTNDpNFQyxMPcuYNAJw2xHAzSiZ","deprecated":true,"name":"UBXT/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3k1sURztjxhjYczjyioQ7y2UkMB6K5Ksi3SWvLeLx6Ex","deprecated":true,"name":"HNT/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"B791G8UCahfmABVcR2wPAMK6LJnuqxSAqiG6wX3mmVVM","deprecated":true,"name":"FRONT/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"95f7fxfUh8WqUTrdjorHRXm6rTfkWqr23ioGMmKMjedP","deprecated":true,"name":"AKRO/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"H4RxtmQ4P3TYPt78G3DuHgaGzyFct6MfaeYneLB5PyeG","deprecated":true,"name":"HXRO/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7myaZEGZf9m72T1Mqm8GTx5MnmSFS5NCXSwRP18W4EA3","deprecated":true,"name":"UNI/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7cRKzNoqjF9VtzvdnP129VYP3izivk9iY3jMJBMzREVT","deprecated":true,"name":"HGET/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GV9fYzdwipoaagXFxe5tzDMPcmSVQati5CUvBPsEZThH","deprecated":true,"name":"MATH/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AaMLXcwYYi5fA41JNCB2ukAmQyKHitYx5NnpsiWWev6R","deprecated":true,"name":"TOMO/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5ZeNLrduGi3WkH9CPwv2Zpbkh38MH8v63aSi2aBUW23g","deprecated":true,"name":"LUA/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Ec1aq54XKH9o5fe169cU2sCcxxTP54eeQCe77SpizKuc","deprecated":true,"name":"WUSDT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"G3uhFg2rBFunHUXtCera13vyQ5KCS8Hx3d4HohLoZbT5","deprecated":true,"name":"SOL/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2NMTG7tFZidRpQk9Sf4dgQyJb9HxKCyXjQdiuXww3sKm","deprecated":true,"name":"SWAG/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7QpJAiwGmqY1SiucjfPXvgeWwCobyV6hZSgzMysZX6Ww","deprecated":true,"name":"FIDA/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CmLhvXARncLncE1949XBfQWeJh6Zvw3FE5A3Z5ecPYQH","deprecated":true,"name":"KIN/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"FhP3X2ptdi7L1RtWK9Vfow5dyzD92gfXiA57e8eqxvka","deprecated":true,"name":"MAPS/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"DE7xJE2EkaV81wLabDMuhBzUwFhhwfURLdz1aXBBQZQ1","deprecated":true,"name":"KEEP/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5nLJ22h1DUfeCfwbFxPYK8zbfbri7nA9bXoDcR8AcJjs","deprecated":false,"name":"MSRM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF","deprecated":false,"name":"ETH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8afKwzHR3wJE7W7Y5hvQkngXh6iTepSZuutRMMy96MjR","deprecated":false,"name":"SXP/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"cgani53cMZgYfRMgSrNekJTMaLmccRfspsfTbXWRg7u","deprecated":false,"name":"CEL/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Gyp1UGRgbrb6z8t7fpssxEKQgEmcJ4pVnWW3ds2p6ZPY","deprecated":false,"name":"ALEPH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4ztJEvQyryoYagj2uieep3dyPwG2pyEwb2dKXTwmXe82","deprecated":false,"name":"CREAM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HEGnaVL5i48ubPBqWAhodnZo8VsSLzEM3Gfc451DnFj9","deprecated":false,"name":"KEEP/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8FpuMGLtMZ7Wt9ZvyTGuTVwTwwzLYfS5NZWcHxbP1Wuh","deprecated":false,"name":"HNT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5GAPymgnnWieGcRrcghZdA3aanefqa4cZx1ZSE8UTyMV","deprecated":false,"name":"MAPS/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AADohBGxvf7bvixs2HKC3dG2RuU3xpZDwaTzYFJThM8U","deprecated":false,"name":"TRYB/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EbV7pPpEvheLizuYX3gUCvWM8iySbSRAhu2mQ5Vz2Mxf","deprecated":false,"name":"FIDA/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"FcPet5fz9NLdbXwVM6kw2WTHzRAD7mT78UjwTpawd7hJ","deprecated":false,"name":"RSR/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AtNnsY1AyRERWJ8xCskfz38YdvruWVJQUVXgScC1iPb","deprecated":false,"name":"SRM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"teE55QrL4a4QSfydR9dnHF97jgCfptpuigbb53Lo95g","deprecated":false,"name":"RAY/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"C1EuT9VokAKLiW7i2ASnZUvxDoKuKkCpDDeNxAptuNe4","deprecated":false,"name":"BTC/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Hr3wzG8mZXNHV7TuL6YqtgfVUesCqMxGYCEyP3otywZE","deprecated":false,"name":"FTT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HLvRdctRB48F9yLnu9E24LUTRt89D48Z35yi1HcxayDf","deprecated":false,"name":"AKRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2SSnWNrc83otLpfRo792P6P3PESZpdr8cu2r8zCE6bMD","deprecated":false,"name":"UNI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"F1T7b6pnR8Pge3qmfNUfW6ZipRDiGpMww6TKTrRU4NiL","deprecated":false,"name":"UBXT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1","deprecated":false,"name":"SOL/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"35tV8UsHH8FnSAi3YFRrgCu4K9tb883wKnAXpnihot5r","deprecated":false,"name":"LUA/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6DgQRTpJTnAYBSShngAVZZDq7j9ogRN1GfSQ3cq9tubW","deprecated":false,"name":"SUSHI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2WghiBkDL2yRhHdvm8CpprrkmfguuQGJTCDfPSudKBAZ","deprecated":false,"name":"MATH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"ErQXxiNfJgd4fqQ58PuEw5xY35TZG84tHT6FXf5s4UxY","deprecated":false,"name":"HGET/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CGC4UgWwqA9PET6Tfx6o6dLv94EK2coVkPtxgNHuBtxj","deprecated":false,"name":"FRONT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GnKPri4thaGipzTbp8hhSGSrHgG4F8MFiZVrbRn16iG2","deprecated":false,"name":"TOMO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6bxuB5N3bt3qW8UnPNLgMMzDq5sEH8pFmYJYGgzvE11V","deprecated":false,"name":"AAVE/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7cknqHAuGpfVXPtFoJpFvUjJ8wkmyEfbFusmwMfNy3FE","deprecated":false,"name":"MAPS/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4absuMsgemvdjfkgdLQq1zKEjw3dHBoCWkzKoctndyqd","deprecated":false,"name":"HXRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4nCFQr8sahhhL4XJ7kngGFBmpkmyf3xLzemuMhn6mWTm","deprecated":false,"name":"KIN/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3Xg9Q4VtZhD4bVYJbTfgGWFV5zjE3U7ztSHa938zizte","deprecated":false,"name":"YFI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3yEZ9ZpXSQapmKjLAGKZEzUNA1rcupJtsDp5mPBWmGZR","deprecated":false,"name":"LINK/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"J2XSt77XWim5HwtUM8RUwQvmRXNZsbMKpp5GTKpHafvf","deprecated":false,"name":"SWAG/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS","deprecated":false,"name":"USDT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GKLev6UHeX1KSDCyo2bzyG6wqhByEzDBkmYTxEdmYJgB","deprecated":false,"name":"OXY/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HdBhZrnrxpje39ggXnTb6WuTWVvj5YKcSHwYGQCRsVj","deprecated":false,"name":"OXY/WUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"OXY/USDT","address":"HdBhZrnrxpje39ggXnTb6WuTWVvj5YKcSHwYGQCRsVj","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"OXY/USDC","address":"GZ3WBFsqntmERPwumFEYgrX2B7J7G11MzNZAy7Hje27X","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"COPE/USDC","address":"7MpMwArporUHEGW7quUpkPZp5L5cHPs9eKUfKCdaPHq2","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"}]')},417:function(e){e.exports=JSON.parse('[{"address":"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E","name":"BTC"},{"address":"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk","name":"ETH"},{"address":"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3","name":"FTT"},{"address":"3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB","name":"YFI"},{"address":"CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG","name":"LINK"},{"address":"Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8","name":"XRP"},{"address":"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","name":"USDT"},{"address":"BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4","name":"WUSDT"},{"address":"BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW","name":"WUSDC"},{"address":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","name":"USDC"},{"address":"MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L","name":"MSRM"},{"address":"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt","name":"SRM"},{"address":"AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy","name":"SUSHI"},{"address":"SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX","name":"SXP"},{"address":"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K","name":"ALEPH"},{"address":"BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN","name":"HGET"},{"address":"5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv","name":"CREAM"},{"address":"873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei","name":"UBXT"},{"address":"HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e","name":"HNT"},{"address":"9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw","name":"FRONT"},{"address":"6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF","name":"AKRO"},{"address":"DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc","name":"HXRO"},{"address":"DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw","name":"UNI"},{"address":"GUohe4DJUA5FKPWo3joiPgsB7yzer7LpDmt1Vhzy3Zht","name":"KEEP"},{"address":"GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza","name":"MATH"},{"address":"So11111111111111111111111111111111111111112","name":"SOL"},{"address":"GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd","name":"TOMO"},{"address":"EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX","name":"LUA"},{"address":"9F9fNTT6qwjsu4X4yWYKZpsbw5qT7o6yR2i57JF2jagy","name":"SWAG"},{"address":"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","name":"FIDA"},{"address":"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6","name":"KIN"},{"address":"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb","name":"MAPS"},{"address":"z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M","name":"OXY"},{"address":"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R","name":"RAY"},{"address":"3K6rftdAaQYMPunrtNRHgnK2UAtjm2JwyT2oCiTDouYE","name":"COPE"},{"address":"dK83wTVypEpa1pqiBbHY3MNuUnT3ADUZM4wk9VZXZEc","name":"AAVE"},{"address":"DgHK9mfhMtUwwv54GChRrU54T2Em5cuszq2uMuen1ZVE","name":"CEL"},{"address":"7ncCLJpP3MNww17LW8bRvx8odQQnubNtfNZBL5BgAEHW","name":"RSR"},{"address":"6ry4WBDvAwAnrYJVv6MCog4J8zx6S3cPgSqnTsDZ73AR","name":"TRYB"}]')},418:function(e,t,n){"use strict";var r,a=n(202),i=n(239);Object.defineProperty(t,"__esModule",{value:!0}),t.parseInstructionErrorResponse=t.KNOWN_PROGRAMS=t.DexError=void 0;var c,s=n(4),o=n(155),u=n(154);!function(e){e[e.InvalidMarketFlags=0]="InvalidMarketFlags",e[e.InvalidAskFlags=1]="InvalidAskFlags",e[e.InvalidBidFlags=2]="InvalidBidFlags",e[e.InvalidQueueLength=3]="InvalidQueueLength",e[e.OwnerAccountNotProvided=4]="OwnerAccountNotProvided",e[e.ConsumeEventsQueueFailure=5]="ConsumeEventsQueueFailure",e[e.WrongCoinVault=6]="WrongCoinVault",e[e.WrongPcVault=7]="WrongPcVault",e[e.WrongCoinMint=8]="WrongCoinMint",e[e.WrongPcMint=9]="WrongPcMint",e[e.CoinVaultProgramId=10]="CoinVaultProgramId",e[e.PcVaultProgramId=11]="PcVaultProgramId",e[e.CoinMintProgramId=12]="CoinMintProgramId",e[e.PcMintProgramId=13]="PcMintProgramId",e[e.WrongCoinMintSize=14]="WrongCoinMintSize",e[e.WrongPcMintSize=15]="WrongPcMintSize",e[e.WrongCoinVaultSize=16]="WrongCoinVaultSize",e[e.WrongPcVaultSize=17]="WrongPcVaultSize",e[e.UninitializedVault=18]="UninitializedVault",e[e.UninitializedMint=19]="UninitializedMint",e[e.CoinMintUninitialized=20]="CoinMintUninitialized",e[e.PcMintUninitialized=21]="PcMintUninitialized",e[e.WrongMint=22]="WrongMint",e[e.WrongVaultOwner=23]="WrongVaultOwner",e[e.VaultHasDelegate=24]="VaultHasDelegate",e[e.AlreadyInitialized=25]="AlreadyInitialized",e[e.WrongAccountDataAlignment=26]="WrongAccountDataAlignment",e[e.WrongAccountDataPaddingLength=27]="WrongAccountDataPaddingLength",e[e.WrongAccountHeadPadding=28]="WrongAccountHeadPadding",e[e.WrongAccountTailPadding=29]="WrongAccountTailPadding",e[e.RequestQueueEmpty=30]="RequestQueueEmpty",e[e.EventQueueTooSmall=31]="EventQueueTooSmall",e[e.SlabTooSmall=32]="SlabTooSmall",e[e.BadVaultSignerNonce=33]="BadVaultSignerNonce",e[e.InsufficientFunds=34]="InsufficientFunds",e[e.SplAccountProgramId=35]="SplAccountProgramId",e[e.SplAccountLen=36]="SplAccountLen",e[e.WrongFeeDiscountAccountOwner=37]="WrongFeeDiscountAccountOwner",e[e.WrongFeeDiscountMint=38]="WrongFeeDiscountMint",e[e.CoinPayerProgramId=39]="CoinPayerProgramId",e[e.PcPayerProgramId=40]="PcPayerProgramId",e[e.ClientIdNotFound=41]="ClientIdNotFound",e[e.TooManyOpenOrders=42]="TooManyOpenOrders",e[e.FakeErrorSoWeDontChangeNumbers=43]="FakeErrorSoWeDontChangeNumbers",e[e.BorrowError=44]="BorrowError",e[e.WrongOrdersAccount=45]="WrongOrdersAccount",e[e.WrongBidsAccount=46]="WrongBidsAccount",e[e.WrongAsksAccount=47]="WrongAsksAccount",e[e.WrongRequestQueueAccount=48]="WrongRequestQueueAccount",e[e.WrongEventQueueAccount=49]="WrongEventQueueAccount",e[e.RequestQueueFull=50]="RequestQueueFull",e[e.EventQueueFull=51]="EventQueueFull",e[e.MarketIsDisabled=52]="MarketIsDisabled",e[e.WrongSigner=53]="WrongSigner",e[e.TransferFailed=54]="TransferFailed",e[e.ClientOrderIdIsZero=55]="ClientOrderIdIsZero",e[e.WrongRentSysvarAccount=56]="WrongRentSysvarAccount",e[e.RentNotProvided=57]="RentNotProvided",e[e.OrdersNotRentExempt=58]="OrdersNotRentExempt",e[e.OrderNotFound=59]="OrderNotFound",e[e.OrderNotYours=60]="OrderNotYours",e[e.WouldSelfTrade=61]="WouldSelfTrade",e[e.Unknown=1e3]="Unknown"}(c=t.DexError||(t.DexError={})),t.KNOWN_PROGRAMS=(i(r={},u.TOKEN_PROGRAM_ID.toString(),"Token program"),i(r,s.SystemProgram.programId.toString(),"System program"),r),t.parseInstructionErrorResponse=function(e,n){var r,i=a(n,2),s=i[0],u=i[1],d=e.instructions[s];if(d.programId.toString()in o.PROGRAM_LAYOUT_VERSIONS)r=c[u.Custom];else if(d.programId.toString()in t.KNOWN_PROGRAMS){var l=t.KNOWN_PROGRAMS[d.programId.toString()];r="".concat(l," error ").concat(u.Custom)}else r="Unknown program ".concat(d.programId.toString()," custom error: ").concat(u.Custom);return{failedInstructionIndex:s,error:r,failedProgram:d.programId.toString()}}},419:function(e,t,n){"use strict";(function(e){var r=n(3),a=n(132),i=n(92),c=n(80),s=n(81);Object.defineProperty(t,"__esModule",{value:!0}),t.NodeWallet=t.Provider=void 0;var o=n(4),u=n(264),d=function(){function e(t,n,r){c(this,e),this.connection=t,this.wallet=n,this.opts=r}return s(e,[{key:"send",value:function(){var e=i(r.mark((function e(t,n,i){var c,s,d,l,p,m;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n=[]),void 0===i&&(i=this.opts),s=n.filter((function(e){return void 0!==e})),d=[this.wallet.publicKey].concat(s.map((function(e){return e.publicKey}))),t.setSigners.apply(t,a(d)),e.next=7,this.connection.getRecentBlockhash(i.preflightCommitment);case 7:return t.recentBlockhash=e.sent.blockhash,e.next=10,this.wallet.signTransaction(t);case 10:return s.forEach((function(e){t.partialSign(e)})),l=t.serialize(),e.prev=12,e.next=15,o.sendAndConfirmRawTransaction(this.connection,l,i);case 15:return p=e.sent,e.abrupt("return",p);case 19:return e.prev=19,e.t0=e.catch(12),console.error("Transaction failed. Simulating for logs..."),e.next=24,u.simulateTransaction(this.connection,t,null!==(c=i.commitment)&&void 0!==c?c:"recent");case 24:throw m=e.sent,console.error(m),e.t0;case 27:case"end":return e.stop()}}),e,this,[[12,19]])})));return function(t,n,r){return e.apply(this,arguments)}}()},{key:"sendAll",value:function(){var e=i(r.mark((function e(t,n){var i,c,s,d,l,p,m,b,g,f=this;return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n=this.opts),e.next=3,this.connection.getRecentBlockhash(n.preflightCommitment);case 3:return c=e.sent,s=t.map((function(e){var t=e.tx,n=e.signers;void 0===n&&(n=[]);var r=n.filter((function(e){return void 0!==e})),i=[f.wallet.publicKey].concat(r.map((function(e){return e.publicKey})));return t.setSigners.apply(t,a(i)),t.recentBlockhash=c.blockhash,r.forEach((function(e){t.partialSign(e)})),t})),e.next=7,this.wallet.signAllTransactions(s);case 7:d=e.sent,l=[],p=0;case 10:if(!(p0&&void 0!==arguments[0]?arguments[0]:v,t=arguments.length>1?arguments[1]:void 0,n={common:Object(h.a)({},e.common),lockup:Object(h.a)({},e.lockup),registry:Object(h.a)({},e.registry),accounts:Object(h.a)({},e.accounts)};switch(t.type){case y.a.CommonAppWillBootstrap:return n.common.bootstrapState=r.IsBootstrapping,n.common.bootstrapTrigger=!1,n;case y.a.CommonAppDidBootstrap:return n.common.bootstrapState=r.Bootstrapped,n;case y.a.CommonWalletSetProvider:return n.common.walletProvider=t.item.walletProvider,n;case y.a.CommonWalletDidConnect:return n.common.isWalletConnected=!0,n;case y.a.CommonWalletDidDisconnect:return n.common.isWalletConnected=!1,n;case y.a.CommonSetNetwork:if(n.common.network.label!==t.item.network.label){n.common.network=t.item.network,n.common.bootstrapState=r.NeedsBootstrap,n.common.shutdownTrigger=!0;var a=j.a[t.item.networkKey];n.registry.registrar=Object.values(a.registrars)[0]}return n;case y.a.CommonTriggerBootstrap:return n.common.bootstrapState=r.NeedsBootstrap,n.common.bootstrapTrigger=!0,n;case y.a.CommonTriggerShutdown:return n.common.bootstrapState=r.NeedsBootstrap,n.common.shutdownTrigger=!0,n;case y.a.CommonDidShutdown:var i=Object(h.a)({},v);return i.common.network=n.common.network,i.registry.registrar=n.registry.registrar,i;case y.a.CommonOwnedTokenAccountsSet:return n.common.ownedTokenAccounts=t.item.ownedTokenAccounts,n;case y.a.CommonOwnedTokenAccountsUpdate:return n.common.ownedTokenAccounts=n.common.ownedTokenAccounts.map((function(e){return e.publicKey.equals(t.item.account.publicKey)?t.item.account:e})),n;case y.a.LockupSetVestings:return n.lockup.vestings=t.item.vestingAccounts,n;case y.a.LockupUpdateVesting:return n.accounts[t.item.vesting.publicKey.toString()]=t.item.vesting.account,n;case y.a.LockupCreateVesting:return n.lockup.vestings.unshift(t.item.vesting.publicKey),n.accounts[t.item.vesting.publicKey.toString()]=t.item.vesting.account,n;case y.a.RegistrySetMember:return n.registry.member=t.item.member,n;case y.a.RegistrySetRegistrar:return n.registry.registrar=t.item.registrar,n.registry.member=t.item.member,n.registry.pendingWithdrawals=null,n;case y.a.RegistrySetPendingWithdrawals:return t.item.pendingWithdrawals.forEach((function(e){n.accounts[e.publicKey.toString()]=e.account})),n.registry.pendingWithdrawals=t.item.pendingWithdrawals.map((function(e){return e.publicKey})),n;case y.a.RegistryCreatePendingWithdrawal:return n.accounts[t.item.pendingWithdrawal.publicKey.toString()]=t.item.pendingWithdrawal.account,null===n.registry.pendingWithdrawals&&(n.registry.pendingWithdrawals=[]),n.registry.pendingWithdrawals.unshift(t.item.pendingWithdrawal.publicKey),n;case y.a.RegistryUpdatePendingWithdrawal:return n.accounts[t.item.pendingWithdrawal.publicKey.toString()]=t.item.pendingWithdrawal.account,n;case y.a.AccountAdd:case y.a.AccountUpdate:return n.accounts[t.item.account.publicKey.toString()]=t.item.account.account,n;default:return n}})),O=n(24),S=n(3),w=n.n(S),k=n(9),T=n(4),E=n(35),A=n(42),P=n(45);function W(e){var t=Object(u.c)((function(e){return{bootstrapTrigger:e.common.bootstrapTrigger,shutdownTrigger:e.common.shutdownTrigger,network:e.common.network,registrar:e.registry.registrar}})),n=t.bootstrapTrigger,r=t.shutdownTrigger,c=t.network,s=t.registrar,o=Object(u.b)(),d=Object(O.b)(),l=d.wallet,m=d.lockupClient,b=d.registryClient,g=Object(p.b)().enqueueSnackbar,f=Object(i.useCallback)(Object(k.a)(w.a.mark((function e(){var t,n,r,a;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return g("Connecting to ".concat(c.label),{variant:"info",autoHideDuration:2500}),o({type:y.a.CommonAppWillBootstrap,item:{}}),e.next=4,M({dispatch:o,lockupClient:m,registryClient:b,network:c,wallet:l});case 4:return t=e.sent,n=t.registrars,r=t.members,a=Object.fromEntries(new Map(n.map((function(e){return[e.publicKey.toString(),e.account]})))),r.forEach((function(e){a[e.publicKey.toString()]=e.account})),e.next=11,U(b,a,o,s,void 0);case 11:o({type:y.a.CommonAppDidBootstrap,item:{}}),g("Connection established",{variant:"success",autoHideDuration:2500});case 13:case"end":return e.stop()}}),e)}))),[o,g,b,s,m,c,l]),h=Object(i.useCallback)(Object(k.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:l.disconnect(),o({type:y.a.CommonDidShutdown,item:{}});case 2:case"end":return e.stop()}}),e)}))),[o,l]);return Object(i.useEffect)((function(){n&&f().catch((function(e){console.error(e),g("Error bootstrapping application: ".concat(e.toString()),{variant:"error"})})),r&&h().catch((function(e){console.error(e),g("Error shutting down application: ".concat(e.toString()),{variant:"error"})}))}),[n,f,r,h,g]),Object(a.jsx)(a.Fragment,{children:e.children})}function M(e){return R.apply(this,arguments)}function R(){return(R=Object(k.a)(w.a.mark((function e(t){var n,r,a,i,c,s,o,u,d,l,p,m;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.dispatch,r=t.lockupClient,a=t.registryClient,i=t.network,c=t.wallet,s=function(){var e=Object(k.a)(w.a.mark((function e(){var t,r,c,s;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=Object.values(i.registrars),e.next=3,A.d.getMultipleAccounts(a.provider.connection,t);case 3:return r=e.sent.map((function(e){var t=a.coder.accounts.decode("Registrar",e.account.data);return{publicKey:e.publicKey,account:t}})),e.next=6,A.d.getMultipleAccounts(a.provider.connection,r.map((function(e){return e.account.mint})));case 6:return c=e.sent.map((function(e){var t=Object(E.parseMintAccount)(e.account.data);return{publicKey:e.publicKey,account:t}})),e.next=9,A.d.getMultipleAccounts(a.provider.connection,r.map((function(e){return e.account.rewardEventQ})));case 9:return s=e.sent.map((function(e){var t=a.coder.accounts.decode("RewardQueue",e.account.data);return{publicKey:e.publicKey,account:t}})),r.concat(c).concat(s).forEach((function(e){n({type:y.a.AccountAdd,item:{account:e}})})),e.abrupt("return",r);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),o=function(){var e=Object(k.a)(w.a.mark((function e(t){var r,i,s;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(t.map((function(e){return e.publicKey})).map((function(e){return Object(P.b)(e).then((function(e){return T.PublicKey.createWithSeed(c.publicKey,e,a.programId)})).then((function(t){return{memberPublicKey:t,registrar:e}}))})));case 2:return r=e.sent,i=r.map((function(e){return e.memberPublicKey})),e.next=6,A.d.getMultipleAccounts(a.provider.connection,i);case 6:return s=e.sent.filter((function(e){return null!==e})).map((function(e){var t=a.coder.accounts.decode("Member",e.account.data);return{publicKey:e.publicKey,account:t}})),e.next=9,Promise.all(s.map((function(e){return L(e,n,a.provider.connection)})));case 9:return s.forEach((function(e){n({type:y.a.AccountAdd,item:{account:e}})})),e.abrupt("return",s);case 11:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),u=function(){var e=Object(k.a)(w.a.mark((function e(t){var r;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.map((function(e){return e.account.mint})).concat(t.map((function(e){return e.account.poolMint}))),e.next=3,A.d.getMultipleAccounts(a.provider.connection,r);case 3:e.sent.map((function(e){var t=Object(E.parseMintAccount)(e.account.data);return{publicKey:e.publicKey,account:t}})).forEach((function(e){n({type:y.a.AccountAdd,item:{account:e}})}));case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),d=function(){var e=Object(k.a)(w.a.mark((function e(){var t;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E.token.getOwnedTokenAccounts(r.provider.connection,c.publicKey);case 2:t=e.sent,n({type:y.a.CommonOwnedTokenAccountsSet,item:{ownedTokenAccounts:t}});case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),l=function(){var e=Object(k.a)(w.a.mark((function e(){var t;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.account.vesting.all(c.publicKey.toBuffer());case 2:(t=e.sent).forEach((function(e){n({type:y.a.AccountAdd,item:{account:e}})})),n({type:y.a.LockupSetVestings,item:{vestingAccounts:t.map((function(e){return e.publicKey}))}});case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),e.next=8,s();case 8:return p=e.sent,e.next=11,o(p);case 11:return m=e.sent,e.next=14,u(p);case 14:return e.next=16,d();case 16:return e.next=18,l();case 18:return e.abrupt("return",{registrars:p,members:m});case 19:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function U(e,t,n,r,a){return D.apply(this,arguments)}function D(){return(D=Object(k.a)(w.a.mark((function e(t,n,r,a,i){var c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(k.a)(w.a.mark((function e(){var r,a;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==i){e.next=2;break}return e.abrupt("return",void 0);case 2:return e.t0=T.PublicKey,e.t1=t.provider.wallet.publicKey,e.next=6,Object(P.b)(i);case 6:return e.t2=e.sent,e.t3=t.programId,e.next=10,e.t0.createWithSeed.call(e.t0,e.t1,e.t2,e.t3);case 10:return r=e.sent,a=n[r.toString()],e.abrupt("return",void 0!==a?{publicKey:r,account:a}:void 0);case 13:case"end":return e.stop()}}),e)})))();case 2:return e.sent,e.next=5,Object(k.a)(w.a.mark((function e(){var r,i;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=T.PublicKey,e.t1=t.provider.wallet.publicKey,e.next=4,Object(P.b)(a);case 4:return e.t2=e.sent,e.t3=t.programId,e.next=8,e.t0.createWithSeed.call(e.t0,e.t1,e.t2,e.t3);case 8:return r=e.sent,i=n[r.toString()],e.abrupt("return",i?{publicKey:r,account:i}:void 0);case 11:case"end":return e.stop()}}),e)})))();case 5:return c=e.sent,e.next=8,I(t,n,r,a,i);case 8:c&&K(c,t,r),r({type:y.a.RegistrySetRegistrar,item:{registrar:a,member:c?c.publicKey:void 0}});case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function I(e,t,n,r,a){return C.apply(this,arguments)}function C(){return(C=Object(k.a)(w.a.mark((function e(t,n,r,a,i){var c,s;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i&&(c=n[i.toString()],t.account.rewardQueue.unsubscribe(c.rewardEventQ)),s=n[a.toString()],t.account.rewardQueue.subscribe(s.rewardEventQ).on("change",(function(e){r({type:y.a.AccountUpdate,item:{account:{publicKey:s.rewardEventQ,account:e}}})})),t.provider.connection.onAccountChange(s.poolMint,(function(e){var t=Object(E.parseMintAccount)(e.data);r({type:y.a.AccountUpdate,item:{account:{publicKey:s.poolMint,account:t}}})}),"recent");case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function K(e,t,n){t.account.member.subscribe(e.publicKey).on("change",(function(t){n({type:y.a.AccountUpdate,item:{account:{publicKey:e.publicKey,account:t}}})}));var r=function(e){t.provider.connection.onAccountChange(e,(function(t){var r=Object(E.parseTokenAccount)(t.data);n({type:y.a.AccountUpdate,item:{account:{publicKey:e,account:r}}})}),"recent")};r(e.account.balances.vault),r(e.account.balances.vaultStake),r(e.account.balances.vaultPw),r(e.account.balances.spt),r(e.account.balancesLocked.vault),r(e.account.balancesLocked.vaultStake),r(e.account.balancesLocked.vaultPw),r(e.account.balancesLocked.spt)}function L(e,t,n){return _.apply(this,arguments)}function _(){return(_=Object(k.a)(w.a.mark((function e(t,n,r){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,A.d.getMultipleAccounts(r,[t.account.balances.vault,t.account.balances.vaultStake,t.account.balances.vaultPw,t.account.balances.spt,t.account.balancesLocked.vault,t.account.balancesLocked.vaultStake,t.account.balancesLocked.vaultPw,t.account.balancesLocked.spt]);case 2:e.sent.filter((function(e){return null!==e})).map((function(e){return{publicKey:e.publicKey,account:Object(E.parseTokenAccount)(e.account.data)}})).forEach((function(e){n({type:y.a.AccountAdd,item:{account:e}})}));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var N=n(22),F=n(11),V=n(26),B=n(476),z=n(479),Q=n(61),q=n(430),Z=n(431),G=n(308),J=n(299),H=n(477),Y=n(304),X=n(103),$=n(213),ee=n.n($),te=n(281),ne=n.n(te),re=n(280),ae=n.n(re),ie=n(279),ce=n.n(ie),se=n(121);function oe(e){var t=e.isAppReady,n=Object(u.c)((function(e){return{network:e.common.network,isAppReady:e.common.isWalletConnected&&e.common.bootstrapState===r.Bootstrapped}})).network,c=Object(u.b)(),s=Object(p.b)(),o=s.enqueueSnackbar,d=s.closeSnackbar,l=Object(O.b)(),m=l.wallet,b=l.registryClient,g=l.lockupClient,f=Object(i.useState)(!1),h=Object(F.a)(f,2),y=h[0],j=h[1];return Object(a.jsx)(q.a,{position:"static",style:{background:"#ffffff",color:"#272727",boxShadow:"none",borderBottom:"solid 1pt #ccc"},children:Object(a.jsx)(Z.a,{children:Object(a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[Object(a.jsxs)("div",{style:{display:"flex"},children:[Object(a.jsx)(ue,{}),Object(a.jsx)(de,{label:"Stake",hrefClient:"/stake"}),Object(a.jsx)(de,{label:"Lockup",hrefClient:"/lockup"}),Object(a.jsx)(de,{label:"Multisig",href:"https://multisig.projectserum.com"}),Object(a.jsx)(de,{label:"Trade",href:"https://dex.projectserum.com"}),n.srmFaucet&&Object(a.jsx)(de,{label:"Faucet",href:"https://www.spl-token-ui.com/#/token-faucets"})]}),Object(a.jsxs)("div",{style:{display:"flex"},children:[Object(a.jsx)("div",{onClick:function(){j(!0),o("Refreshing",{variant:"info"}),M({dispatch:c,lockupClient:g,registryClient:b,network:n,wallet:m}).then((function(){j(!1),d()})).catch((function(e){j(!1),d(),o("There was a problem refreshing: ".concat(e),{variant:"error",autoHideDuration:2500})}))},style:{display:t?"block":"none",justifyContent:"center",flexDirection:"column",marginRight:"10px"},children:y?Object(a.jsx)("div",{style:{marginTop:"8px",padding:"10px"},children:Object(a.jsx)(se.a,{style:{width:"24px",height:"24px"}})}):Object(a.jsx)("div",{children:Object(a.jsx)(X.a,{children:Object(a.jsx)(ce.a,{})})})}),Object(a.jsx)(le,{}),Object(a.jsx)(me,{style:{display:t?"none":""}}),t&&Object(a.jsx)(pe,{})]})]})})})}function ue(){var e=Object(l.e)();return Object(a.jsx)("div",{style:{display:"flex"},onClick:function(){return e.push("/")},children:Object(a.jsx)(Q.a,{color:"inherit",children:Object(a.jsx)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center"},children:Object(a.jsx)("img",{style:{display:"block",height:"35px"},alt:"Logo",src:"http://dex.projectserum.com/static/media/logo.49174c73.svg"})})})})}function de(e){var t=Object(l.e)(),n=e.label,r=e.href,i=e.hrefClient;return Object(a.jsx)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center"},onClick:function(){return i&&t.push(i)},children:Object(a.jsx)(H.a,{style:{color:"inherit",textDecoration:"none"},href:r,target:"_blank",children:Object(a.jsx)(Q.a,{color:"inherit",children:Object(a.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:Object(a.jsx)(V.a,{style:{fontSize:"15px"},children:n})})})})})}function le(){var e=Object(u.c)((function(e){return e.common.network})),t=Object(u.b)(),n=Object(i.useState)(null),r=Object(F.a)(n,2),c=r[0],s=r[1],o=function(){s(null)};return Object(a.jsxs)("div",{style:{marginRight:"10px",fontSize:"15px",display:"flex",justifyContent:"center",flexDirection:"column"},children:[Object(a.jsxs)(Q.a,{color:"inherit",onClick:function(e){return s(e.currentTarget)},children:[Object(a.jsx)(ae.a,{}),Object(a.jsx)(V.a,{style:{marginLeft:"5px",fontSize:"15px"},children:e.label})]}),Object(a.jsx)(J.a,{anchorEl:c,open:Boolean(c),onClose:o,style:{marginLeft:"12px",color:"white"},children:Object.keys(j.a).map((function(e){return Object(a.jsx)(Y.a,{onClick:function(){o(),t({type:y.a.CommonSetNetwork,item:{network:j.a[e],networkKey:e}})},children:Object(a.jsx)(V.a,{children:j.a[e].label})},e)}))})]})}function pe(){var e=Object(O.b)().wallet;return Object(a.jsx)(G.a,{displayEmpty:!0,renderValue:function(){return Object(a.jsx)(V.a,{style:{overflow:"hidden"},children:e.publicKey.toString()})},style:{marginLeft:"12px",width:"150px"},onChange:function(t){"disconnect"===t.target.value&&e.disconnect()},children:Object(a.jsx)(Y.a,{value:"disconnect",children:Object(a.jsxs)(X.a,{color:"inherit",children:[Object(a.jsx)(ee.a,{}),Object(a.jsx)(V.a,{style:{marginLeft:"15px"},children:"Disconnect"})]})})})}function me(e){var t=Object(u.c)((function(e){return{showDisconnect:e.common.isWalletConnected}})).showDisconnect,n=Object(u.b)(),r=Object(O.b)(),c=r.wallet,s=r.lockupClient,o=Object(p.b)().enqueueSnackbar;return Object(i.useEffect)((function(){c.on("disconnect",(function(){o("Disconnected from wallet",{variant:"info",autoHideDuration:2500}),n({type:y.a.CommonWalletDidDisconnect,item:{}}),n({type:y.a.CommonTriggerShutdown,item:{}})})),c.on("connect",Object(k.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n({type:y.a.CommonWalletDidConnect,item:{}}),n({type:y.a.CommonTriggerBootstrap,item:{}});case 2:case"end":return e.stop()}}),e)}))))}),[c,n,o,s.provider.connection]),t?Object(a.jsxs)(Q.a,{style:e.style,color:"inherit",onClick:function(){return c.disconnect()},children:[Object(a.jsx)(ee.a,{}),Object(a.jsx)(V.a,{style:{marginLeft:"5px",fontSize:"15px"},children:"Disconnect"})]}):Object(a.jsxs)(Q.a,{style:e.style,color:"inherit",onClick:function(){return c.connect()},children:[Object(a.jsx)(ne.a,{}),Object(a.jsx)(V.a,{style:{marginLeft:"5px",fontSize:"15px"},children:"Connect wallet"})]})}function be(){return Object(a.jsx)("div",{style:{zIndex:99,position:"fixed",width:"100%",bottom:0,textAlign:"center",height:"30px",backgroundColor:"#fbfbfb",borderTop:"solid 1pt #ccc",display:"flex",justifyContent:"space-between",paddingLeft:"10px",paddingRight:"10px"},children:Object(a.jsxs)("div",{style:{marginLeft:"auto",marginRight:"auto",display:"flex"},children:[Object(a.jsx)(ge,{href:"https://github.com/project-serum/anchor/blob/master/examples/lockup/docs/staking.md",label:"Technical Documentation"}),Object(a.jsx)(ge,{href:"https://github.com/project-serum/awesome-serum",label:"Developer Resources"}),Object(a.jsx)(ge,{href:"https://discord.com/channels/739225212658122886",label:"Discord"}),Object(a.jsx)(ge,{href:"https://t.me/ProjectSerum",label:"Telegram"}),Object(a.jsx)(ge,{href:"https://github.com/project-serum",label:"GitHub"}),Object(a.jsx)(ge,{href:"https://solanabeach.io/",label:"Solana Network",isEnd:!0})]})})}function ge(e){var t=e.label,n=e.href,r=e.isEnd;return Object(a.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column",marginRight:r?"":"15px"},children:Object(a.jsx)(H.a,{href:n,target:"_blank",color:"inherit",children:Object(a.jsx)(V.a,{style:{fontSize:"14px"},children:t})})})}function fe(e){var t=Object(u.c)((function(e){return{isAppReady:e.common.isWalletConnected&&e.common.bootstrapState===r.Bootstrapped}})).isAppReady,n=Object(i.useState)(!1),c=Object(F.a)(n,2),s=c[0],o=c[1];return Object(a.jsxs)("div",{style:{display:"flex",minHeight:"100vh",flexDirection:"column",backgroundColor:"rgb(251, 251, 251)"},children:[Object(a.jsxs)("div",{style:{position:"fixed",width:"100%",zIndex:99},children:[Object(a.jsx)(he,{}),Object(a.jsx)(oe,{isAppReady:t})]}),Object(a.jsx)("div",{style:{width:"100%",marginTop:"94px",flex:1,display:"flex",marginBottom:"30px"},children:window.localStorage.getItem("consent")?t?Object(a.jsx)("div",{style:{width:"100%"},children:e.children}):Object(a.jsx)(ve,{}):Object(a.jsx)(je,{onConsent:function(){window.localStorage.setItem("consent","true"),o(!s)}})}),Object(a.jsx)(be,{})]})}function he(){return Object(a.jsx)("div",{style:{color:"#fff",backgroundColor:"rgb(39, 39, 39)",height:"30px",textAlign:"center"},children:Object(a.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"},children:Object(a.jsx)(V.a,{style:{fontSize:"14px"},children:"Stake is unaudited software. Use at your own risk."})})})}var ye=Object(B.a)((function(e){return{root:{width:"100%","& > * + *":{marginTop:e.spacing(2)}}}}));function je(e){var t=e.onConsent;return Object(a.jsxs)("div",{style:{flex:"1",display:"flex",justifyContent:"center",flexDirection:"column",textAlign:"center"},children:[Object(a.jsx)("div",{style:{width:"100%",display:"flex"},children:Object(a.jsx)("div",{style:{display:"flex",marginLeft:"auto",marginRight:"auto"},children:Object(a.jsx)(V.a,{style:{marginBottom:"16px",maxWidth:"1000px"},color:"textSecondary",variant:"h4",children:"No statement or warranty is provided in relation to the utility of this program, the safety of its code or its suitability for your use, and by using it, you agree to bear any risk associated with such potential vulnerabilities, including, but not limited to the potential loss of tokens."})})}),Object(a.jsx)("div",{style:{display:"flex",marginLeft:"auto",marginRight:"auto"},children:Object(a.jsx)(Q.a,{variant:"contained",color:"primary",onClick:t,children:"I agree"})})]})}function ve(){var e=ye(),t=Object(u.c)((function(e){return{network:e.common.network,isDisconnected:!e.common.isWalletConnected}})),n=t.network,r=t.isDisconnected;return Object(a.jsx)("div",{style:{flex:"1",display:"flex",justifyContent:"center",flexDirection:"column",textAlign:"center"},children:Object(a.jsx)("div",{style:{width:"100%",display:"flex"},children:r?Object(a.jsx)("div",{style:{display:"flex",marginLeft:"auto",marginRight:"auto"},children:Object(a.jsx)(V.a,{style:{marginLeft:"24px"},color:"textSecondary",variant:"h4",children:"Disconnected"})}):Object(a.jsx)("div",{style:{width:"100%"},children:Object(a.jsxs)("div",{style:{width:"100%"},className:e.root,children:[Object(a.jsx)("div",{children:Object(a.jsx)(V.a,{variant:"h5",children:"Connecting to ".concat(n.label,"...")})}),Object(a.jsx)("div",{style:{marginLeft:"auto",marginRight:"auto",width:"300px"},children:Object(a.jsx)(z.a,{style:{width:"100%"}})})]})})})})}var xe=n(282),Oe=n(284),Se=n(171),we=n.n(Se),ke=n(437),Te=n(288),Ee=n.n(Te),Ae=n(289),Pe=n.n(Ae),We=n(225),Me=n(306),Re=n(224),Ue=n(223),De=n(86),Ie=n(305),Ce=n(474),Ke=n(435),Le=n(485),_e=n(481),Ne=n(436),Fe=n(439),Ve=n(39),Be=n(65),ze=n(41);function Qe(e){return Object.keys(e.common.network.registrars).map((function(t){return[t,{publicKey:e.common.network.registrars[t],account:e.accounts[e.common.network.registrars[t].toString()]}]})).filter((function(e){return void 0!==e[1].account})).filter((function(t){var n=Object(F.a)(t,2);n[0];return n[1].publicKey.equals(e.registry.registrar)})).map((function(e){var t=Object(F.a)(e,2);return{label:t[0],programAccount:t[1]}})).pop()}function qe(){var e=Object(O.b)().registryClient,t=Object(u.c)((function(e){var t=Object.keys(e.common.network.registrars).map((function(t){return[t,{publicKey:e.common.network.registrars[t],account:e.accounts[e.common.network.registrars[t].toString()]}]})).filter((function(e){return void 0!==e[1].account})),n=t.filter((function(t){var n=Object(F.a)(t,2);n[0];return n[1].publicKey.equals(e.registry.registrar)})).map((function(e){var t=Object(F.a)(e,2);return{label:t[0],programAccount:t[1]}})).pop();return{network:e.common.network,accounts:e.accounts,registrars:t,selectedRegistrar:n}})),n=t.registrars,r=t.selectedRegistrar,i=t.accounts,c=t.network,s=Object(u.b)(),o=Object(N.e)();return Object(a.jsx)(G.a,{style:{width:"294px",height:"36px"},variant:"outlined",fullWidth:!0,value:r.label,onChange:function(){var t=Object(k.a)(w.a.mark((function t(a){var c;return w.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:c=n.filter((function(e){var t=Object(F.a)(e,2),n=t[0];t[1];return n===a.target.value})).map((function(e){var t=Object(F.a)(e,2);t[0];return t[1]})).pop(),U(e,i,s,c.publicKey,r.programAccount.publicKey);case 2:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),children:0===n.length?Object(a.jsx)(Y.a,{value:"_loading",children:"Loading registrars..."}):n.map((function(e){var t=Object(F.a)(e,2),n=t[0],r=t[1];return Object(a.jsx)(Y.a,{value:n,children:Object(a.jsxs)("div",{style:{display:"flex"},children:[Object(a.jsx)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center"},children:Ge(o.get(r.account.mint.toString()))}),Object(a.jsx)("div",{style:{overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center"},children:"".concat(Ze(r,c))})]})},n)}))})}function Ze(e,t){var n=Object.keys(t.registrars).filter((function(n){return t.registrars[n].equals(e.publicKey)})).pop();return void 0!==n?n.toUpperCase():e.publicKey.toString()}function Ge(e,t){return e?Object(a.jsx)("img",{alt:"Token Icon",style:null!==t&&void 0!==t?t:{marginRight:"10px",height:"25px"},src:e.logoURI}):Object(a.jsx)("div",{style:{marginLeft:"32px"}})}var Je=n(104),He=n(122),Ye=n(142),Xe=n(144),$e=n(33),et=n(480),tt=n(143),nt=n(79);function rt(){var e=Object(u.c)((function(e){return{member:e.registry.member}})).member;return Object(a.jsx)("div",{style:{display:"flex",width:"100%"},children:Object(a.jsx)("div",{style:{flex:1,marginTop:"24px",marginBottom:"24px"},children:e&&Object(a.jsx)(at,{})})})}function at(){var e=Object(u.c)((function(e){var t=e.accounts[e.registry.member.toString()],n=e.accounts[e.registry.registrar.toString()];return{registrar:n,mint:e.accounts[n.mint.toString()],vault:e.accounts[t.balances.vault],vaultStake:e.accounts[t.balances.vaultStake],vaultPw:e.accounts[t.balances.vaultPw],spt:e.accounts[t.balances.spt],lockedVault:e.accounts[t.balancesLocked.vault],lockedVaultStake:e.accounts[t.balancesLocked.vaultStake],lockedVaultPw:e.accounts[t.balancesLocked.vaultPw],lockedSpt:e.accounts[t.balancesLocked.spt]}})),t=e.mint,n=e.registrar,r=e.vault,i=e.vaultStake,c=e.vaultPw,s=e.spt,o=e.lockedVault,d=e.lockedVaultStake,l=e.lockedVaultPw,p=e.lockedSpt,m=[{title:"Main Balances",description:"Balances deposited directly from the connected wallet.",rows:[{token:Object(N.d)(n.mint),balance:Object(N.c)(r.amount,t.decimals),stake:Object(N.c)(i.amount,t.decimals),pending:Object(N.c)(c.amount,t.decimals),spt:Object(N.c)(s.amount,0)}]},{title:"Locked Balances",description:"Balances deposited from the lockup program. These funds are isolated from the Main Balances and may only be withdrawn back to the lockup program. At all times they are program controlled.",rows:[{token:Object(N.d)(n.mint),balance:Object(N.c)(o.amount,t.decimals),stake:Object(N.c)(d.amount,t.decimals),pending:Object(N.c)(l.amount,t.decimals),spt:Object(N.c)(p.amount,0)}]}];return Object(a.jsx)(Je.a,{style:{marginBottom:"24px"},children:Object(a.jsx)(He.a,{style:{marginTop:"24px",position:"relative",paddingTop:0,paddingBottom:"16px"},children:m.map((function(e){return Object(a.jsx)(it,{title:e.title,description:e.description,rows:e.rows},e.title)}))})})}function it(e){var t=e.title,n=e.rows,r=e.description;return Object(a.jsxs)("div",{style:{marginBottom:"16px"},children:[Object(a.jsx)(V.a,{style:{fontWeight:"bold"},children:t}),Object(a.jsx)(V.a,{color:"textSecondary",style:{fontSize:"14px"},children:r}),Object(a.jsx)(et.a,{children:Object(a.jsxs)(Ye.a,{children:[Object(a.jsx)(tt.a,{children:Object(a.jsxs)(nt.a,{children:[Object(a.jsx)($e.a,{children:"Token"}),Object(a.jsx)($e.a,{align:"right",children:"Available"}),Object(a.jsx)($e.a,{align:"right",children:"Pending"}),Object(a.jsx)($e.a,{align:"right",children:"Staked"}),Object(a.jsx)($e.a,{align:"right",children:"Pool"})]})}),Object(a.jsx)(Xe.a,{children:null===n?Object(a.jsx)(se.a,{}):n.map((function(e){return Object(a.jsxs)(nt.a,{children:[Object(a.jsx)($e.a,{component:"th",scope:"row",children:e.token}),Object(a.jsx)($e.a,{align:"right",children:e.balance}),Object(a.jsx)($e.a,{align:"right",children:e.pending}),Object(a.jsx)($e.a,{align:"right",children:e.stake}),Object(a.jsx)($e.a,{align:"right",children:e.spt})]},e.token)}))})]})})]})}function ct(e,t){return st.apply(this,arguments)}function st(){return(st=Object(k.a)(w.a.mark((function e(t,n){var r,a,i,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,A.e.PublicKey.findProgramAddress([n.toBuffer()],t);case 2:return r=e.sent,a=Object(F.a)(r,2),i=a[0],c=a[1],e.abrupt("return",{publicKey:i,nonce:c});case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ot(){return(ot=Object(k.a)(w.a.mark((function e(t,n){var r,a,i;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=t.transaction.availableForWithdrawal({accounts:{vesting:n,clock:T.SYSVAR_CLOCK_PUBKEY}})).setSigners.apply(r,[t.provider.wallet.publicKey]),e.next=4,Object(E.simulateTransaction)(t.provider.connection,r,"recent");case 4:if(!(a=e.sent).value.err){e.next=7;break}throw new Error("RPC error: ".concat(a.value.err.toString()));case 7:return i=a.value.logs[1].slice("Program log: ".length),e.abrupt("return",new A.a(JSON.parse(i).result));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var ut,dt,lt=n(283),pt=n(221),mt=n(214),bt=n(20),gt=n(29),ft=n.n(gt),ht=n(440);function yt(){var e=Object(i.useState)(!1),t=Object(F.a)(e,2),n=t[0],r=t[1];return Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)("div",{onClick:function(){return r(!0)},children:Object(a.jsx)(Q.a,{variant:"contained",color:"secondary",children:"Drop Rewards"})}),Object(a.jsx)(jt,{open:n,onClose:function(){return r(!1)}})]})}function jt(e){var t=e.open,n=e.onClose,r=Object(u.c)((function(e){return{selectedRegistrar:Qe(e)}})).selectedRegistrar,c=Object(i.useState)(ut.Unlocked),s=Object(F.a)(c,2),o=s[0],d=s[1];return Object(a.jsxs)(We.a,{open:t,onClose:n,fullWidth:!0,maxWidth:"md",children:[Object(a.jsx)(Ue.a,{children:Object(a.jsx)("div",{style:{display:"flex",justifyContent:"space-between"},children:Object(a.jsx)(V.a,{variant:"h4",component:"h2",children:"Drop Rewards on ".concat(r.label.toUpperCase()," Stakers")})})}),Object(a.jsxs)(Re.a,{children:[Object(a.jsxs)(Le.a,{value:o,onChange:function(e,t){return d(t)},children:[Object(a.jsx)(_e.a,{value:ut.Unlocked,label:"Unlocked"}),Object(a.jsx)(_e.a,{value:ut.Locked,label:"Locked"})]}),o===ut.Unlocked&&Object(a.jsx)(vt,{onClose:n}),o===ut.Locked&&Object(a.jsx)(xt,{onClose:n})]})]})}function vt(e){var t=e.onClose,n=Object(p.b)(),r=Object(O.b)().registryClient,c=Object(u.c)((function(e){return{network:e.common.network,registrar:{publicKey:e.registry.registrar,account:e.accounts[e.registry.registrar.toString()]},accounts:e.accounts}})),s=c.network,o=c.registrar,d=c.accounts,l=Object(i.useState)(null),m=Object(F.a)(l,2),b=m[0],g=m[1],f=Object(i.useState)(null),h=Object(F.a)(f,2),y=h[0],j=h[1],v=Object(i.useState)(null),x=Object(F.a)(v,2),S=x[0],A=x[1],P=Object(i.useState)(null),W=Object(F.a)(P,2),M=W[0],R=W[1],U=null!==M&&null!==S&&null!==b&&b>=100&&null!==y,D=function(){var e=Object(k.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ze.b(n,"Dropping unlocked reward...","Unlocked reward dropped",Object(k.a)(w.a.mark((function e(){var t,n,a,i,c,u,l,p,m;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=d[s.mints[M].toString()]){e.next=5;break}return e.next=4,E.getMintInfo(r.provider,s.mints[M]);case 4:t=e.sent;case 5:return n=Object(N.b)(b,t.decimals),a={unlocked:{}},i=new T.Account,c=new T.Account,e.next=11,T.PublicKey.findProgramAddress([o.publicKey.toBuffer(),i.publicKey.toBuffer()],r.programId);case 11:return u=e.sent,l=Object(F.a)(u,2),p=l[0],m=l[1],e.t0=r.rpc,e.t1=a,e.t2=n,e.t3=new ft.a(y),e.t4=r.provider.wallet.publicKey,e.t5=m,e.t6={registrar:o.publicKey,rewardEventQ:o.account.rewardEventQ,poolMint:o.account.poolMint,vendor:i.publicKey,vendorVault:c.publicKey,depositor:S,depositorAuthority:r.provider.wallet.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,clock:T.SYSVAR_CLOCK_PUBKEY,rent:T.SYSVAR_RENT_PUBKEY},e.t7=[c,i],e.t8=[],e.t9=bt.a,e.next=27,E.createTokenAccountInstrs(r.provider,c.publicKey,s.mints[M],p);case 27:return e.t10=e.sent,e.t11=(0,e.t9)(e.t10),e.next=31,r.account.rewardVendor.createInstruction(i);case 31:return e.t12=e.sent,e.t13=[e.t12],e.t14=e.t8.concat.call(e.t8,e.t11,e.t13),e.t15={accounts:e.t6,signers:e.t7,instructions:e.t14},e.next=37,e.t0.dropReward.call(e.t0,e.t1,e.t2,e.t3,e.t4,e.t5,e.t15);case 37:return e.abrupt("return",e.sent);case 38:case"end":return e.stop()}}),e)}))));case 2:t();case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(a.jsx)(Ot,{network:s,mint:M,setMint:R,setDepositor:A,setRewardDisplayAmount:g,expiryTs:y,setExpiryTs:j,onCancel:t,onClick:function(){D().catch((function(e){console.error(e),n.enqueueSnackbar("Error dropping unlocked reward: ".concat(e.toString()),{variant:"error"})}))},isSendEnabled:U})}function xt(e){var t=e.onClose,n=Object(p.b)(),r=Object(O.b)().registryClient,c=Object(u.c)((function(e){return{network:e.common.network,registrar:{publicKey:e.registry.registrar,account:e.accounts[e.registry.registrar.toString()]},accounts:e.accounts}})),s=c.network,o=c.registrar,d=c.accounts,l=Object(i.useState)(null),m=Object(F.a)(l,2),b=m[0],g=m[1],f=Object(i.useState)(null),h=Object(F.a)(f,2),y=h[0],j=h[1],v=Object(i.useState)(null),x=Object(F.a)(v,2),S=x[0],A=x[1],P=Object(i.useState)(null),W=Object(F.a)(P,2),M=W[0],R=W[1],U=Object(i.useState)(null),D=Object(F.a)(U,2),I=D[0],C=D[1],K=Object(i.useState)(null),L=Object(F.a)(K,2),_=L[0],V=L[1],B=Object(i.useState)(7),z=Object(F.a)(B,2),Q=z[0],q=z[1],Z=null!==y&&null!==S&&null!==_&&null!==I&&null!==b&&b>=100&&null!==M,G=function(){var e=Object(k.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ze.b(n,"Dropping locked reward...","Locked reward dropped",Object(k.a)(w.a.mark((function e(){var t,n,a,i,c,u,l,p,m;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={locked:{startTs:new ft.a(y),endTs:new ft.a(S),periodCount:new ft.a(Q)}},n=new T.Account,a=new T.Account,e.next=5,T.PublicKey.findProgramAddress([o.publicKey.toBuffer(),n.publicKey.toBuffer()],r.programId);case 5:return i=e.sent,c=Object(F.a)(i,2),u=c[0],l=c[1],p=d[s.mints[_].toString()],m=Object(N.b)(b,p.decimals),e.t0=r.rpc,e.t1=t,e.t2=m,e.t3=new ft.a(M),e.t4=r.provider.wallet.publicKey,e.t5=l,e.t6={registrar:o.publicKey,rewardEventQ:o.account.rewardEventQ,poolMint:o.account.poolMint,vendor:n.publicKey,vendorVault:a.publicKey,depositor:I,depositorAuthority:r.provider.wallet.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,clock:T.SYSVAR_CLOCK_PUBKEY,rent:T.SYSVAR_RENT_PUBKEY},e.t7=[a,n],e.t8=[],e.t9=bt.a,e.next=23,E.createTokenAccountInstrs(r.provider,a.publicKey,s.mints[_],u);case 23:return e.t10=e.sent,e.t11=(0,e.t9)(e.t10),e.next=27,r.account.rewardVendor.createInstruction(n);case 27:return e.t12=e.sent,e.t13=[e.t12],e.t14=e.t8.concat.call(e.t8,e.t11,e.t13),e.t15={accounts:e.t6,signers:e.t7,instructions:e.t14},e.next=33,e.t0.dropReward.call(e.t0,e.t1,e.t2,e.t3,e.t4,e.t5,e.t15);case 33:return e.abrupt("return",e.sent);case 34:case"end":return e.stop()}}),e)}))));case 2:t();case 3:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(a.jsx)(Ot,{network:s,mint:_,setMint:V,setDepositor:C,setRewardDisplayAmount:g,setStartTs:j,setEndTs:A,periodCount:Q,setPeriodCount:q,expiryTs:M,setExpiryTs:R,onCancel:t,onClick:function(){G().catch((function(e){n.enqueueSnackbar("Error dropping locked reward: ".concat(e.toString()),{variant:"error"})}))},isSendEnabled:Z})}function Ot(e){var t=e.network,n=e.mint,r=e.setDepositor,i=e.setMint,c=e.setRewardDisplayAmount,s=e.setStartTs,o=e.setEndTs,u=e.periodCount,d=e.setPeriodCount,l=e.expiryTs,p=e.setExpiryTs,m=e.onCancel,b=e.onClick,g=e.isSendEnabled,f=Object.keys(t.mints).map((function(e){return{label:e,publicKey:t.mints[e]}}));return Object(a.jsxs)(a.Fragment,{children:[Object(a.jsxs)("div",{children:[Object(a.jsxs)("div",{style:{display:"flex",marginTop:"10px"},children:[Object(a.jsxs)("div",{style:{flex:1},children:[Object(a.jsx)(Be.a,{style:{height:"100%"},mint:null===n?void 0:t.mints[n],onChange:function(e){return r(e)}}),Object(a.jsx)(Ke.a,{children:"Account to send from"})]}),Object(a.jsx)("div",{children:Object(a.jsxs)(Ie.a,{variant:"outlined",style:{width:"200px",marginLeft:"10px",marginTop:"10px"},children:[Object(a.jsx)(ht.a,{children:"Mint"}),Object(a.jsx)(G.a,{value:n,onChange:function(e){return i(e.target.value)},label:"Mint",children:f.map((function(e){return Object(a.jsx)(Y.a,{value:e.label,children:e.label.toUpperCase()})}))})]})}),Object(a.jsx)("div",{children:Object(a.jsx)(De.a,{style:{marginLeft:"10px",marginTop:"10px"},id:"outlined-number",label:"Amount",type:"number",InputLabelProps:{shrink:!0},variant:"outlined",onChange:function(e){return c(parseFloat(e.target.value))},InputProps:{inputProps:{min:0}}})})]}),void 0!==o&&void 0!==s&&Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)("div",{style:{display:"flex",marginTop:"37px"},children:Object(a.jsxs)("div",{style:{flex:1},children:[Object(a.jsx)(De.a,{fullWidth:!0,label:"Start date",type:"datetime-local",InputLabelProps:{shrink:!0},onChange:function(e){var t=new Date(e.target.value);s(t.getTime()/1e3)}}),Object(a.jsx)(Ke.a,{children:"Date vesting begins"})]})}),Object(a.jsxs)("div",{style:{flex:1,marginTop:"20px"},children:[Object(a.jsx)(De.a,{fullWidth:!0,label:"End date",type:"datetime-local",InputLabelProps:{shrink:!0},onChange:function(e){var t=new Date(e.target.value);o(t.getTime()/1e3)}}),Object(a.jsx)(Ke.a,{children:"Date the vesting account is fully vested"})]}),Object(a.jsx)("div",{children:Object(a.jsx)(Ie.a,{fullWidth:!0,children:Object(a.jsx)(De.a,{style:{marginTop:"37px"},id:"outlined-number",label:"Period Count",type:"number",InputLabelProps:{shrink:!0},variant:"outlined",value:u,onChange:function(e){return d(parseInt(e.target.value))},InputProps:{inputProps:{min:1}}})})})]}),Object(a.jsxs)("div",{style:{marginTop:"37px",display:"flex"},children:[Object(a.jsxs)("div",{style:{flex:1,height:"100%",marginRight:"10px"},children:[Object(a.jsx)(De.a,{fullWidth:!0,label:"Expiry date",type:"datetime-local",InputLabelProps:{shrink:!0},onChange:function(e){var t=new Date(e.target.value);p(t.getTime()/1e3)}}),Object(a.jsx)(Ke.a,{children:"Date after which the account owner dropping rewards can withdraw all unclaimed rewards."})]}),Object(a.jsx)("div",{style:{marginTop:"26px"},children:Object(a.jsx)(De.a,{style:{height:"100%"},disabled:!0,placeholder:"Expiry Unix timestamp",fullWidth:!0,value:l})})]})]}),Object(a.jsxs)(Me.a,{children:[Object(a.jsx)(Q.a,{onClick:m,children:"Cancel"}),Object(a.jsx)(Q.a,{onClick:b,type:"submit",color:"primary",disabled:!g,children:"Send"})]})]})}function St(e){var t=Object(O.b)(),n=t.registryClient,r=t.lockupClient,c=Object(u.c)((function(e){return{registrar:{publicKey:e.registry.registrar,account:e.accounts[e.registry.registrar.toString()]},member:e.registry.member?{publicKey:e.registry.member,account:e.accounts[e.registry.member.toString()]}:void 0}})),s=c.member,o=c.registrar,d=e.rli,l=Object(u.b)(),m=Object(p.b)(),b=Object(i.useState)(null),g=Object(F.a)(b,2),f=g[0],j=g[1],v=function(){var e=Object(k.a)(w.a.mark((function e(){return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:ze.b(m,"Processing vendor reward ".concat(d.vendor.publicKey.toString()),"Reward processed",Object(k.a)(w.a.mark((function e(){var t,a,i,c,u,p,m,b;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n.account.rewardVendor(d.vendor.publicKey);case 2:return t=e.sent,e.next=5,Object(P.f)(n.programId,o.publicKey,d.vendor.publicKey);case 5:if(a=e.sent,!d.reward.locked){e.next=45;break}return i=new T.Account,c=new T.Account,e.next=11,ct(r.programId,i.publicKey);case 11:return u=e.sent,p=r.instruction.createVesting.accounts({vesting:i.publicKey,vault:c.publicKey,depositor:t.vault,depositorAuthority:a.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,rent:T.SYSVAR_RENT_PUBKEY,clock:T.SYSVAR_CLOCK_PUBKEY}).map((function(e){return e.pubkey.equals(a.publicKey)?Object(h.a)(Object(h.a)({},e),{},{isSigner:!1}):e})),e.t0=n.rpc,e.t1=u.nonce,e.next=17,n.state.address();case 17:return e.t2=e.sent,e.t3=r.programId,e.t4={registrar:o.publicKey,member:s.publicKey,beneficiary:n.provider.wallet.publicKey,balances:s.account.balances,balancesLocked:s.account.balancesLocked,vendor:d.vendor.publicKey,vault:d.vendor.account.vault,vendorSigner:a.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,clock:T.SYSVAR_CLOCK_PUBKEY},e.t5={registry:e.t2,lockupProgram:e.t3,cmn:e.t4},e.t6=p,e.t7=[i,c],e.next=25,r.account.vesting.createInstruction(i);case 25:return e.t9=e.sent,e.t8=[e.t9],e.t10=bt.a,e.next=30,Object(E.createTokenAccountInstrs)(n.provider,c.publicKey,d.vendor.account.mint,u.publicKey);case 30:return e.t11=e.sent,e.t12=(0,e.t10)(e.t11),e.t13=e.t8.concat.call(e.t8,e.t12),e.t14={accounts:e.t5,remainingAccounts:e.t6,signers:e.t7,instructions:e.t13},e.next=36,e.t0.claimRewardLocked.call(e.t0,e.t1,e.t14);case 36:return m=e.sent,e.next=39,r.account.vesting.all(n.provider.wallet.publicKey.toBuffer());case 39:return(b=e.sent).forEach((function(e){l({type:y.a.AccountAdd,item:{account:e}})})),l({type:y.a.LockupSetVestings,item:{vestingAccounts:b.map((function(e){return e.publicKey}))}}),e.abrupt("return",m);case 45:return e.next=47,n.rpc.claimReward({accounts:{to:f,cmn:{registrar:o.publicKey,member:s.publicKey,beneficiary:n.provider.wallet.publicKey,balances:s.account.balances,balancesLocked:s.account.balancesLocked,vendor:d.vendor.publicKey,vault:t.vault,vendorSigner:a.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,clock:T.SYSVAR_CLOCK_PUBKEY}}});case 47:return e.abrupt("return",e.sent);case 48:case"end":return e.stop()}}),e)}))));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return Object(a.jsxs)(a.Fragment,{children:[!d.reward.locked&&Object(a.jsx)("div",{children:Object(a.jsx)(Be.a,{style:{width:"400px",height:"100%"},mint:d.vendor.account.mint,onChange:function(e){return j(e)}})}),Object(a.jsx)("div",{style:{marginLeft:"10px",marginRight:"10px"},children:Object(a.jsx)(Q.a,{disabled:d.reward.unlockedAlloc&&null===f,variant:"contained",color:"primary",onClick:function(){return v().catch((function(e){console.error(e),m.enqueueSnackbar("Error ending pending redemption: ".concat(e.toString()),{variant:"error"})}))},children:"Process Reward"})})]})}function wt(){var e=Object(O.b)().registryClient,t=Object(u.b)(),n=Object(p.b)(),r=Object(u.c)((function(e){var t=e.accounts[e.registry.registrar.toString()],n={publicKey:t.rewardEventQ,account:e.accounts[t.rewardEventQ.toString()]};return{accounts:e.accounts,rewardEventQueue:n,member:e.registry.member?{publicKey:e.registry.member,account:e.accounts[e.registry.member.toString()]}:void 0,network:e.common.network}})),c=r.rewardEventQueue,s=r.accounts,o=Object(P.e)(c.account);Object(i.useEffect)((function(){o.forEach((function(r){s[r.vendor.toString()]||e.account.rewardVendor(r.vendor).then((function(e){t({type:y.a.AccountAdd,item:{account:{publicKey:r.vendor,account:e}}})})).catch((function(e){console.error(e),n.enqueueSnackbar("Error fetching reward vendor",{variant:"error"})}))}))}));var d=o.map((function(e){return mt.a.fromMessage(r,e)})).reverse(),l=null;return 0===d.filter((function(e){return null===e})).length&&(l=d.filter((function(e){return e.needsClaim})).sort((function(e,t){return e.cursort.cursor?1:0})).shift()),Object(a.jsxs)("div",{style:{width:"100%",marginTop:"24px"},children:[l&&Object(a.jsx)(Je.a,{style:{marginBottom:"24px"},children:Object(a.jsx)(He.a,{children:Object(a.jsxs)(V.a,{variant:"h6",children:['You were staked during a previous reward. To prove eligibility, click the "Process" button until you\'ve processed ',Object(a.jsx)("b",{children:"all"})," ","eligible rewards. For unlocked rewards, don't forget to select the address you wish to send your stake reward to."]})})}),Object(a.jsxs)("div",{style:{marginBottom:"10px",display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)(V.a,{style:{fontWeight:"bold",fontSize:"20px"},children:"Reward History"}),Object(a.jsxs)("div",{style:{display:"flex"},children:[l&&Object(a.jsx)(St,{rli:l}),localStorage.getItem("private")&&Object(a.jsx)(yt,{})]})]}),Object(a.jsx)("div",{style:{marginBottom:"16px"},children:Object(a.jsxs)(V.a,{children:["When rewards are dropped, one must prove one was staked during the time of drop. This means sending a transaction to the staking program to ",Object(a.jsx)("b",{children:"process"})," the reward. For ",Object(a.jsx)("b",{children:"unlocked"})," rewards, select the token address to transfer the reward to. For ",Object(a.jsx)("b",{children:"locked"})," rewards, a locked vesting account will be created and realized to the staker upon unstaking. See the Lockup tab."]})}),Object(a.jsx)(pt.a,{children:Object(a.jsx)(mt.b,{rewards:d})})]})}function kt(e){var t=e.mint,n=e.decimals,r=e.variant,c=e.onChange,s=e.style,o=e.deposit,d=Object(u.c)((function(e){return t?e.lockup.vestings.map((function(t){return{publicKey:t,account:e.accounts[t.toString()]}})).filter((function(e){return e.account.mint.equals(t)})):[]})),l=Object(i.useState)(""),p=Object(F.a)(l,2),m=p[0],b=p[1];return Object(a.jsx)(G.a,{style:s,variant:r,fullWidth:!0,value:m,onChange:function(e){var t=e.target.value;b(t);var n=new T.PublicKey(t),r=d.filter((function(e){return e.publicKey.equals(n)})).pop();c(n,Tt(r,o))},children:0===d.length?Object(a.jsx)(Y.a,{value:"",children:"No vesting accounts found"}):d.map((function(e){return Object(a.jsx)(Y.a,{value:e.publicKey.toString(),children:Object(a.jsxs)("div",{style:{width:"100%",display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)("div",{children:"".concat(e.publicKey.toString())}),Object(a.jsx)("div",{style:{float:"right",color:"#ccc"},children:"".concat(Object(N.c)(Tt(e,o),n))})]})})}))})}function Tt(e,t){return t?e.account.outstanding.sub(e.account.whitelistOwned):e.account.whitelistOwned}function Et(){var e=Object(xe.a)(["\n :hover {\n cursor: pointer;\n }\n "]);return Et=function(){return e},e}function At(){var e=Object(i.useState)(dt.Me),t=Object(F.a)(e,2),n=t[0],r=t[1];return Object(a.jsxs)("div",{children:[Object(a.jsx)(Pt,{setTab:r}),Object(a.jsxs)(ke.a,{fixed:!0,maxWidth:"md",style:{flex:1,display:"flex"},children:[n===dt.Me&&Object(a.jsx)(rt,{}),n===dt.Stake&&Object(a.jsx)(lt.a,{}),n===dt.Rewards&&Object(a.jsx)(wt,{})]})]})}function Pt(e){var t=Object(i.useState)(dt.Me),n=Object(F.a)(t,2),r=n[0],c=n[1],s=Object(u.c)((function(e){return{member:e.registry.member,registrar:e.registry.registrar,registrarAccount:e.accounts[e.registry.registrar.toString()]}})),o=s.member,d=s.registrar,l=s.registrarAccount,m=Object(i.useState)(!1),b=Object(F.a)(m,2),g=b[0],f=b[1],h=Object(i.useState)(!1),j=Object(F.a)(h,2),v=j[0],x=j[1],S=Object(p.b)(),E=S.enqueueSnackbar,A=S.closeSnackbar,W=Object(O.b)(),M=W.wallet,R=W.registryClient,U=Object(u.b)(),D=function(){var e=Object(k.a)(w.a.mark((function e(){var t,n,r,a,i,c,s,o,u,p,m,b,g,f,h,j,v,x,O;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return E("Creating stake account",{variant:"info"}),e.next=3,Object(P.b)(d);case 3:return t=e.sent,e.next=6,T.PublicKey.createWithSeed(M.publicKey,t,R.programId);case 6:return n=e.sent,e.next=9,Object(P.c)(R.programId,d,n);case 9:return r=e.sent,a=r.publicKey,i=r.nonce,c=a,e.next=15,Object(P.a)(R.provider,l,c);case 15:return s=e.sent,o=Object(F.a)(s,2),u=o[0],p=o[1],e.next=21,Object(P.a)(R.provider,l,c);case 21:return m=e.sent,b=Object(F.a)(m,2),g=b[0],f=b[1],e.t0=R.transaction,e.t1=i,e.t2={registrar:d,member:n,beneficiary:M.publicKey,memberSigner:c,balances:p,balancesLocked:f,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,rent:T.SYSVAR_RENT_PUBKEY},e.t3=T.SystemProgram,e.t4=M.publicKey,e.t5=n,e.t6=M.publicKey,e.t7=t,e.next=35,R.provider.connection.getMinimumBalanceForRentExemption(R.account.member.size);case 35:return e.t8=e.sent,e.t9=R.account.member.size,e.t10=R.programId,e.t11={fromPubkey:e.t4,newAccountPubkey:e.t5,basePubkey:e.t6,seed:e.t7,lamports:e.t8,space:e.t9,programId:e.t10},e.t12=e.t3.createAccountWithSeed.call(e.t3,e.t11),e.t13=[e.t12],e.t14={accounts:e.t2,instructions:e.t13},h=e.t0.createMember.call(e.t0,e.t1,e.t14),j=[u,g,{tx:h,signers:[]}],e.next=47,R.provider.sendAll(j,{commitment:"recent",preflightCommitment:"recent",skipPreflight:!0});case 47:return v=e.sent,console.log("Accounts created with transactions:",v),e.next=51,R.account.member(n);case 51:return x=e.sent,O={publicKey:n,account:x},U({type:y.a.AccountAdd,item:{account:O}}),e.next=56,L(O,U,R.provider.connection);case 56:K(O,R,U),U({type:y.a.RegistrySetMember,item:{member:n}}),A(),E("Stake account created ".concat(n.toString()),{variant:"success"});case 60:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),I=Oe.a.span(Et());return Object(a.jsxs)(a.Fragment,{children:[Object(a.jsxs)("div",{style:{backgroundColor:"#fff",paddingTop:"24px",borderBottom:"solid 1pt #ccc"},children:[Object(a.jsxs)(ke.a,{fixed:!0,maxWidth:"md",style:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[Object(a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)("div",{children:Object(a.jsx)(V.a,{variant:"h4",style:{marginBottom:"10px"},children:"My Stake"})}),Object(a.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:Object(a.jsx)(qe,{})})]}),Object(a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)("div",{children:Object(a.jsx)(V.a,{children:void 0!==o?o.toString():Object(a.jsxs)(a.Fragment,{children:["Account not found. Please"," ",Object(a.jsx)(I,{onClick:function(){D().catch((function(e){console.error(e),E("Error creating stake account: ".concat(e.toString()),{variant:"error"})}))},style:{color:"black",fontWeight:"bold",textDecoration:"underline"},children:"create"})," ","a stake account."]})})}),Object(a.jsx)("div",{children:Object(a.jsxs)("div",{children:[Object(a.jsxs)(Q.a,{disabled:void 0===o,onClick:function(){return f(!0)},variant:"outlined",color:"primary",style:{marginRight:"10px"},children:[Object(a.jsx)(Ee.a,{style:{fontSize:"20px"}}),Object(a.jsx)(V.a,{style:{marginLeft:"5px",marginRight:"5px"},children:"Deposit"})]}),Object(a.jsxs)(Q.a,{disabled:void 0===o,variant:"outlined",color:"primary",onClick:function(){return x(!0)},children:[Object(a.jsx)(Pe.a,{style:{fontSize:"20px"}}),Object(a.jsx)(V.a,{style:{marginLeft:"5px",marginRight:"5px"},children:"Withdraw"})]})]})})]})]}),Object(a.jsx)("div",{style:{maxWidth:"960px",marginLeft:"auto",marginRight:"auto",paddingLeft:"24px",paddingRight:"24px",marginTop:"10px"},children:Object(a.jsxs)(Le.a,{value:r,onChange:function(t,n){c(n),e.setTab(n)},children:[Object(a.jsx)(_e.a,{value:dt.Me,label:"Me"}),Object(a.jsx)(_e.a,{value:dt.Stake,label:"Stake"}),Object(a.jsx)(_e.a,{value:dt.Rewards,label:"Rewards"})]})})]}),void 0!==o&&Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)(Wt,{open:g,onClose:function(){return f(!1)}}),Object(a.jsx)(Mt,{open:v,onClose:function(){return x(!1)}})]})]})}function Wt(e){var t=e.open,n=e.onClose,r=Object(p.b)(),i=r.enqueueSnackbar,c=r.closeSnackbar,s=Object(O.b)(),o=s.registryClient,d=s.lockupClient,l=Object(u.b)(),m=Object(u.c)((function(e){var t=void 0;e.registry.member&&(t=e.accounts[e.registry.member.toString()]);var n=e.accounts[e.registry.registrar.toString()],r={publicKey:e.registry.registrar,account:n};return{registrar:r,memberAccount:t,member:e.registry.member,mintAccount:e.accounts[r.account.mint.toString()],accounts:e.accounts}})),b=m.registrar,g=m.member,f=m.memberAccount,h=m.mintAccount,j=m.accounts;return Object(a.jsx)(Rt,{deposit:!0,title:"Deposit",contextText:"Select the amount to deposit",open:t,onClose:n,onTransfer:function(){var e=Object(k.a)(w.a.mark((function e(t,r,s){var u,p;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=Object(N.b)(r,h.decimals),i("Depositing ".concat(r," ").concat(Object(N.d)(b.account.mint)," from ").concat(t.toString()),{variant:"info"}),e.next=4,Object(k.a)(w.a.mark((function e(){var n,r,a,i,c,p,m,h,v;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!s){e.next=45;break}return n=o.coder.instruction.encode("deposit_locked",{amount:u}),r=j[t.toString()],e.next=5,Object(P.c)(o.programId,b.publicKey,g);case 5:return a=e.sent.publicKey,e.next=8,ct(d.programId,t);case 8:return i=e.sent.publicKey,e.next=11,o.state.address();case 11:return e.t0=e.sent,e.t1={pubkey:e.t0,isWritable:!1,isSigner:!1},e.t2={pubkey:b.publicKey,isWritable:!1,isSigner:!1},e.t3={pubkey:g,isWritable:!1,isSigner:!1},e.t4={pubkey:o.provider.wallet.publicKey,isWritable:!1,isSigner:!0},c=[e.t1,e.t2,e.t3,e.t4],e.t5=d.rpc,e.t6=n,e.t7=u,e.next=22,d.state.address();case 22:return e.t8=e.sent,e.t9=o.provider.wallet.publicKey,e.t10=o.programId,e.t11=t,e.t12=r.vault,e.t13=i,e.t14=Ve.TokenInstructions.TOKEN_PROGRAM_ID,e.t15=f.balancesLocked.vault,e.t16=a,e.t17={lockup:e.t8,beneficiary:e.t9,whitelistedProgram:e.t10,vesting:e.t11,vault:e.t12,vestingSigner:e.t13,tokenProgram:e.t14,whitelistedProgramVault:e.t15,whitelistedProgramVaultAuthority:e.t16},e.t18={transfer:e.t17},e.t19=c,e.t20={accounts:e.t18,remainingAccounts:e.t19},e.next=37,e.t5.whitelistWithdraw.call(e.t5,e.t6,e.t7,e.t20);case 37:return p=e.sent,e.next=40,d.account.vesting(t);case 40:return m=e.sent,l({type:y.a.LockupUpdateVesting,item:{vesting:{publicKey:t,account:m}}}),e.abrupt("return",p);case 45:return e.next=47,o.rpc.deposit(u,{accounts:{depositor:t,depositorAuthority:o.provider.wallet.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,vault:f.balances.vault,beneficiary:o.provider.wallet.publicKey,member:g}});case 47:return h=e.sent,e.next=50,Object(E.getTokenAccount)(o.provider,t);case 50:return v=e.sent,l({type:y.a.CommonOwnedTokenAccountsUpdate,item:{account:{publicKey:t,account:v}}}),e.abrupt("return",h);case 53:case"end":return e.stop()}}),e)})))();case 4:p=e.sent,c(),i("Deposit complete",{variant:"success",action:Object(a.jsx)(ze.a,{signature:p})}),n();case 8:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()})}function Mt(e){var t=e.open,n=e.onClose,r=Object(O.b)(),i=r.registryClient,c=r.lockupClient,s=Object(p.b)(),o=s.enqueueSnackbar,d=s.closeSnackbar,l=Object(u.b)(),m=Object(u.c)((function(e){var t=void 0;e.registry.member&&(t=e.accounts[e.registry.member.toString()]);var n=e.accounts[e.registry.registrar.toString()];return{registrar:e.registry.registrar,registrarAccount:n,member:e.registry.member,memberAccount:t,mintAccount:e.accounts[n.mint.toString()],accounts:e.accounts}})),b=m.registrar,g=m.registrarAccount,f=m.member,h=m.memberAccount,j=m.mintAccount,v=m.accounts;return Object(a.jsx)(Rt,{title:"Withdraw",contextText:"Select the amount to withdraw",open:t,onClose:n,onTransfer:function(){var e=Object(k.a)(w.a.mark((function e(t,r,s){var u,p;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=Object(N.b)(r,j.decimals),o("Withdrawing ".concat(r," ").concat(Object(N.d)(g.mint)," to ").concat(t.toString()),{variant:"info"}),e.next=4,Object(k.a)(w.a.mark((function e(){var n,r,a,o,d,p,m,g,j,x;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(P.c)(i.programId,b,f);case 2:if(n=e.sent,!s){e.next=47;break}return r=i.coder.instruction.encode("withdraw_locked",{amount:u}),a=v[t.toString()],e.next=8,Object(P.c)(i.programId,b,f);case 8:return o=e.sent.publicKey,e.next=11,ct(c.programId,t);case 11:return d=e.sent.publicKey,e.next=14,i.state.address();case 14:return e.t0=e.sent,e.t1={pubkey:e.t0,isWritable:!1,isSigner:!1},e.t2={pubkey:b,isWritable:!1,isSigner:!1},e.t3={pubkey:f,isWritable:!1,isSigner:!1},e.t4={pubkey:i.provider.wallet.publicKey,isWritable:!1,isSigner:!0},p=[e.t1,e.t2,e.t3,e.t4],e.t5=c.rpc,e.t6=r,e.next=24,c.state.address();case 24:return e.t7=e.sent,e.t8=i.provider.wallet.publicKey,e.t9=i.programId,e.t10=t,e.t11=a.vault,e.t12=d,e.t13=Ve.TokenInstructions.TOKEN_PROGRAM_ID,e.t14=h.balancesLocked.vault,e.t15=o,e.t16={lockup:e.t7,beneficiary:e.t8,whitelistedProgram:e.t9,vesting:e.t10,vault:e.t11,vestingSigner:e.t12,tokenProgram:e.t13,whitelistedProgramVault:e.t14,whitelistedProgramVaultAuthority:e.t15},e.t17={transfer:e.t16},e.t18=p,e.t19={accounts:e.t17,remainingAccounts:e.t18},e.next=39,e.t5.whitelistDeposit.call(e.t5,e.t6,e.t19);case 39:return m=e.sent,e.next=42,c.account.vesting(t);case 42:return g=e.sent,l({type:y.a.LockupUpdateVesting,item:{vesting:{publicKey:t,account:g}}}),e.abrupt("return",m);case 47:return e.next=49,i.rpc.withdraw(u,{accounts:{registrar:b,member:f,beneficiary:i.provider.wallet.publicKey,vault:h.balances.vault,memberSigner:n.publicKey,depositor:t,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID}});case 49:return j=e.sent,e.next=52,Object(E.getTokenAccount)(i.provider,t);case 52:return x=e.sent,l({type:y.a.CommonOwnedTokenAccountsUpdate,item:{account:{publicKey:t,account:x}}}),e.abrupt("return",j);case 55:case"end":return e.stop()}}),e)})))();case 4:p=e.sent,d(),o("Withdraw complete",{variant:"success",action:Object(a.jsx)(ze.a,{signature:p})}),n();case 8:case"end":return e.stop()}}),e)})));return function(t,n,r){return e.apply(this,arguments)}}()})}function Rt(e){var t=Object(u.c)((function(e){var t=e.accounts[e.registry.registrar.toString()];return{mint:t?t.mint:void 0,mintAccount:e.accounts[t.mint.toString()]}})),n=t.mint,r=t.mintAccount,c=Object(p.b)().enqueueSnackbar,s=e.open,o=e.onClose,d=e.onTransfer,l=e.title,m=e.contextText,b=e.deposit,g=Object(i.useState)(null),f=Object(F.a)(g,2),h=f[0],y=f[1],j=Object(i.useState)(null),v=Object(F.a)(j,2),x=v[0],O=v[1],S=Object(i.useState)(null),w=Object(F.a)(S,2),k=w[0],T=w[1],E=Object(i.useState)(null),A=Object(F.a)(E,2),P=A[0],W=A[1],M=Object(i.useState)(!1),R=Object(F.a)(M,2),U=R[0],D=R[1],I=(U?!k:!x)||!h||!P||h>P;return Object(a.jsx)("div",{children:Object(a.jsxs)(We.a,{open:s,TransitionComponent:Ut,keepMounted:!0,onClose:o,fullWidth:!0,children:[Object(a.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[Object(a.jsx)(Ue.a,{children:l}),Object(a.jsxs)("div",{style:{display:"flex",paddingRight:"24px"},children:[Object(a.jsx)("div",{style:{display:"flex",justifyContent:"center",flexDirection:"column"},children:Object(a.jsx)(we.a,{})}),Object(a.jsx)(Ne.a,{style:{marginLeft:"0px",marginRight:"0px"},control:Object(a.jsx)(Fe.a,{checked:U,onChange:function(){return D(!U)}}),label:""})]})]}),Object(a.jsxs)(Re.a,{children:[Object(a.jsx)("div",{style:{display:"flex"},children:Object(a.jsxs)("div",{style:{flex:1},children:[Object(a.jsx)(De.a,{style:{width:"100%"},id:"outlined-number",label:"Amount",type:"number",InputLabelProps:{shrink:!0},variant:"outlined",onChange:function(e){return y(parseFloat(e.target.value))},InputProps:{inputProps:{min:0,max:null!==P&&void 0!==P?P:0}}}),Object(a.jsx)(Ke.a,{children:m})]})}),Object(a.jsx)(Ie.a,{fullWidth:!0,children:U?Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)(kt,{variant:"outlined",mint:n,decimals:r.decimals,deposit:b,onChange:function(e,t){T(e),W(t.toNumber())}}),Object(a.jsxs)(Ke.a,{children:["Vesting account to transfer to/from your ",Object(a.jsx)("b",{children:"locked"})," ","balances"]})]}):Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)(Be.a,{variant:"outlined",decimals:r.decimals,mint:n,onChange:function(e,t){O(e),W(Math.pow(2,53))}}),Object(a.jsx)(Ke.a,{children:"Token account to transfer to/from"})]})})]}),Object(a.jsxs)(Me.a,{children:[Object(a.jsx)(Q.a,{onClick:o,color:"primary",children:"Cancel"}),Object(a.jsx)(Q.a,{onClick:function(){d(U?k:x,h,U).catch((function(e){console.error(e),c("Error transferring funds: ".concat(e.toString()),{variant:"error"})}))},color:"primary",disabled:I,children:l})]})]})})}!function(e){e[e.Unlocked=0]="Unlocked",e[e.Locked=1]="Locked"}(ut||(ut={})),function(e){e[e.Me=0]="Me",e[e.Stake=1]="Stake",e[e.Rewards=2]="Rewards",e[e.Lockup=3]="Lockup"}(dt||(dt={}));var Ut=c.a.forwardRef((function(e,t){return Object(a.jsx)(Ce.a,Object(h.a)({direction:"up",ref:t},e))}));function Dt(){return Object(a.jsx)(At,{})}var It=n(85),Ct=n(222);function Kt(){var e=Object(i.useState)(!1),t=Object(F.a)(e,2),n=t[0],r=t[1];return Object(a.jsxs)(a.Fragment,{children:[Object(a.jsx)("div",{onClick:function(){return r(!0)},children:Object(a.jsx)(Q.a,{variant:"contained",color:"secondary",children:"New"})}),Object(a.jsx)(Lt,{open:n,onClose:function(){return r(!1)}})]})}function Lt(e){var t=e.open,n=e.onClose,r=Object(u.c)((function(e){return{network:e.common.network,accounts:e.accounts}})),c=r.network,s=r.accounts,o=(new Date).toString(),d=new Date(o).getTime()/1e3,l="2027-01-01T12:00",m=new Date(l).getTime()/1e3,b=Object(i.useState)(""),g=Object(F.a)(b,2),f=g[0],h=g[1],j=function(){try{return new T.PublicKey(f),!0}catch(e){return!1}}(),v=!j&&""!==f,x=Object(i.useState)(null),S=Object(F.a)(x,2),A=S[0],P=S[1],W=Object(i.useState)(d),M=Object(F.a)(W,2),R=M[0],U=M[1],D=Object(i.useState)(m),I=Object(F.a)(D,2),C=I[0],K=I[1],L=Object(i.useState)(7),_=Object(F.a)(L,2),B=_[0],z=_[1],q=Object(i.useState)(null),Z=Object(F.a)(q,2),J=Z[0],H=Z[1],X=Object(O.b)().lockupClient,$=Object(i.useState)(!1),ee=Object(F.a)($,2),te=ee[0],ne=ee[1],re=Object(i.useState)(null),ae=Object(F.a)(re,2),ie=ae[0],ce=ae[1],oe=Object(p.b)().enqueueSnackbar,ue=Object(u.b)(),de=null!==ie&&null!==A&&j&&null!==J,le=function(){var e=Object(k.a)(w.a.mark((function e(){var t,r,i,c,o,u,d,l,p;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return ne(!0),e.prev=1,t=new T.PublicKey(f),e.next=5,X.provider.connection.getAccountInfo(t);case 5:if(null!==(r=e.sent)){e.next=10;break}return oe("Unable to validate given beneficiary.",{variant:"error"}),ne(!1),e.abrupt("return");case 10:if(r.owner.equals(T.SystemProgram.programId)){e.next=14;break}return oe("The beneficiary must be owned by the System Program.",{variant:"error"}),ne(!1),e.abrupt("return");case 14:return oe("Creating vesting acount...",{variant:"info"}),i=s[ie.toString()],c=i?Object(N.b)(J,i.decimals):new ft.a(J),o=new T.Account,u=new T.Account,e.next=21,ct(X.programId,o.publicKey);case 21:return d=e.sent,e.t0=X.rpc,e.t1=t,e.t2=c,e.t3=d.nonce,e.t4=new ft.a(R),e.t5=new ft.a(C),e.t6=new ft.a(B),e.t7={vesting:o.publicKey,vault:u.publicKey,depositor:A,depositorAuthority:X.provider.wallet.publicKey,tokenProgram:Ve.TokenInstructions.TOKEN_PROGRAM_ID,rent:T.SYSVAR_RENT_PUBKEY,clock:T.SYSVAR_CLOCK_PUBKEY},e.t8=[o,u],e.next=33,X.account.vesting.createInstruction(o);case 33:return e.t10=e.sent,e.t9=[e.t10],e.t11=bt.a,e.next=38,Object(E.createTokenAccountInstrs)(X.provider,u.publicKey,ie,d.publicKey);case 38:return e.t12=e.sent,e.t13=(0,e.t11)(e.t12),e.t14=e.t9.concat.call(e.t9,e.t13),e.t15={accounts:e.t7,signers:e.t8,instructions:e.t14},e.next=44,e.t0.createVesting.call(e.t0,e.t1,e.t2,e.t3,e.t4,e.t5,e.t6,null,e.t15);case 44:if(l=e.sent,!t.equals(X.provider.wallet.publicKey)){e.next=50;break}return e.next=48,X.account.vesting(o.publicKey);case 48:p=e.sent,ue({type:y.a.LockupCreateVesting,item:{vesting:{publicKey:o.publicKey,account:p}}});case 50:oe("Vesting account created",{variant:"success",action:Object(a.jsx)(ze.a,{signature:l})}),n(),e.next=57;break;case 54:e.prev=54,e.t16=e.catch(1),oe("Error creating vesting account: ".concat(e.t16.toString()),{variant:"error"});case 57:ne(!1);case 58:case"end":return e.stop()}}),e,null,[[1,54]])})));return function(){return e.apply(this,arguments)}}();return Object(a.jsxs)(We.a,{open:t,onClose:n,fullWidth:!0,maxWidth:"md",children:[Object(a.jsx)(Ue.a,{children:Object(a.jsx)(V.a,{variant:"h4",component:"h2",children:"New Vesting Account"})}),Object(a.jsx)(Re.a,{children:Object(a.jsxs)("div",{children:[te&&Object(a.jsx)("div",{style:{width:"40px",marginLeft:"auto",marginRight:"auto",marginBottom:"24px"},children:Object(a.jsx)(se.a,{style:{marginLeft:"auto",marginRight:"auto"}})}),Object(a.jsxs)("div",{style:{display:"flex",width:"100%"},children:[Object(a.jsx)("div",{children:Object(a.jsxs)(Ie.a,{variant:"outlined",style:{width:"200px"},children:[Object(a.jsx)(ht.a,{children:"Mint"}),Object(a.jsx)(G.a,{value:ie?ie.toString():"",onChange:function(e){return ce(new T.PublicKey(e.target.value))},children:Object.keys(c.mints).map((function(e){return Object(a.jsx)(Y.a,{value:c.mints[e].toString(),children:e.toUpperCase()})}))})]})}),!1]}),Object(a.jsx)("div",{children:Object(a.jsx)("div",{style:{display:"flex",width:"100%"},children:Object(a.jsx)("div",{style:{flex:1},children:Object(a.jsxs)(Ie.a,{fullWidth:!0,children:[Object(a.jsx)(ht.a,{children:"From"}),Object(a.jsx)(Be.a,{mint:ie,onChange:function(e){return P(e)}}),Object(a.jsx)(Ke.a,{children:"Token account to send from"})]})})})}),Object(a.jsxs)("div",{style:{marginTop:"24px"},children:[Object(a.jsx)(De.a,{fullWidth:!0,error:v,helperText:v&&"Invalid beneficiary",label:"Beneficiary",value:f,onChange:function(e){return h(e.target.value)}}),Object(a.jsx)(Ke.a,{children:"Owner of the new vesting account"})]}),Object(a.jsxs)("div",{style:{marginTop:"24px"},children:[!1,Object(a.jsx)(De.a,{fullWidth:!0,label:"Amount",type:"number",value:J,InputProps:{inputProps:{min:0}},onChange:function(e){return H(parseFloat(e.target.value))}}),Object(a.jsx)(Ke.a,{children:"Amount to deposit into the vesting account"})]}),Object(a.jsxs)("div",{style:{marginTop:"24px",display:"flex"},children:[Object(a.jsxs)("div",{style:{flex:1,marginRight:"10px"},children:[Object(a.jsx)(De.a,{fullWidth:!0,label:"Start date",type:"datetime-local",defaultValue:o,InputLabelProps:{shrink:!0},onChange:function(e){var t=new Date(e.target.value);U(t.getTime()/1e3)}}),Object(a.jsx)(Ke.a,{children:"Date when vesting begins"})]}),Object(a.jsx)("div",{children:Object(a.jsx)(De.a,{disabled:!0,fullWidth:!0,label:"Unix Timestamp",value:R})})]}),Object(a.jsxs)("div",{style:{marginTop:"24px",display:"flex"},children:[Object(a.jsxs)("div",{style:{flex:1,marginRight:"10px"},children:[Object(a.jsx)(De.a,{fullWidth:!0,label:"End date",type:"datetime-local",defaultValue:l,InputLabelProps:{shrink:!0},onChange:function(e){var t=new Date(e.target.value);K(t.getTime()/1e3)}}),Object(a.jsx)(Ke.a,{children:"Date when all tokens are vested"})]}),Object(a.jsx)("div",{children:Object(a.jsx)(De.a,{disabled:!0,fullWidth:!0,label:"Unix Timestamp",value:C})})]}),Object(a.jsx)("div",{style:{marginTop:"24px"},children:Object(a.jsxs)(Ie.a,{fullWidth:!0,children:[Object(a.jsx)(De.a,{id:"outlined-number",label:"Period Count",type:"number",InputLabelProps:{shrink:!0},variant:"outlined",value:B,onChange:function(e){return z(parseInt(e.target.value))},InputProps:{inputProps:{min:1}}}),Object(a.jsx)(Ke.a,{children:"Number of vesting periods"})]})})]})}),Object(a.jsxs)(Me.a,{children:[Object(a.jsx)(Q.a,{onClick:n,children:"Cancel"}),Object(a.jsx)(Q.a,{variant:"contained",type:"submit",color:"primary",disabled:!de||te,onClick:function(){return le()},children:"Create"})]})]})}var _t=n(290),Nt=n.n(_t),Ft=n(172),Vt=n(145),Bt=n(69),zt=n(120);function Qt(e){var t=e.vesting,n=e.network,r=Object(O.b)(),c=r.lockupClient,s=r.registryClient,o=Object(p.b)().enqueueSnackbar,d=Object(N.e)(),l=Object(u.b)(),m=Object(u.c)((function(e){return{accounts:e.accounts,member:e.registry.member?{publicKey:e.registry.member,account:e.accounts[e.registry.member.toString()]}:void 0,mintAccount:e.accounts[t.account.mint.toString()]}})),b=m.accounts,g=m.member,f=m.mintAccount,h=Object(i.useState)(!1),j=Object(F.a)(h,2),v=j[0],x=j[1],S=Object(i.useState)(!1),E=Object(F.a)(S,2),A=E[0],P=E[1],W=b[t.account.mint.toString()],M=W?function(e){return Object(N.c)(e,W.decimals)}:function(e){return e.toString()},R="".concat(M(t.account.outstanding)," ").concat(Object(N.d)(t.account.mint)),U=t.account.startTs,D=t.account.endTs,I=D.sub(U).mod(t.account.periodCount),C=U.sub(I),K=D.sub(C).div(t.account.periodCount),L=Object(bt.a)(Array(t.account.periodCount.toNumber()+1)).map((function(e,t){return qt(new Date(1e3*(C.toNumber()+t*K.toNumber())))}));L[0]=qt(new Date(1e3*U.toNumber()));var _=t.account.startBalance.mod(t.account.periodCount),B=t.account.startBalance.sub(_).div(t.account.periodCount).toNumber(),z=Object(bt.a)(Array(L.length)).map((function(){return 0}));z[1]=B+_.toNumber();for(var q=2;q v === 0)) {\n throw new Error('nonzero padding bytes');\n }\n return slice;\n }\n}\nfunction zeros(length) {\n return new Zeros(length);\n}\nexports.zeros = zeros;\nclass PublicKeyLayout extends buffer_layout_1.Blob {\n constructor(property) {\n super(32, property);\n }\n decode(b, offset) {\n return new web3_js_1.PublicKey(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nfunction publicKeyLayout(property) {\n return new PublicKeyLayout(property);\n}\nexports.publicKeyLayout = publicKeyLayout;\nclass BNLayout extends buffer_layout_1.Blob {\n decode(b, offset) {\n return new bn_js_1.default(super.decode(b, offset), 10, 'le');\n }\n encode(src, b, offset) {\n return super.encode(src.toArrayLike(Buffer, 'le', this.span), b, offset);\n }\n}\nfunction u64(property) {\n return new BNLayout(8, property);\n}\nexports.u64 = u64;\nfunction u128(property) {\n return new BNLayout(16, property);\n}\nexports.u128 = u128;\nclass WideBits extends buffer_layout_1.Layout {\n constructor(property) {\n super(8, property);\n this._lower = buffer_layout_1.bits(buffer_layout_1.u32(), false);\n this._upper = buffer_layout_1.bits(buffer_layout_1.u32(), false);\n }\n addBoolean(property) {\n if (this._lower.fields.length < 32) {\n this._lower.addBoolean(property);\n }\n else {\n this._upper.addBoolean(property);\n }\n }\n decode(b, offset = 0) {\n const lowerDecoded = this._lower.decode(b, offset);\n const upperDecoded = this._upper.decode(b, offset + this._lower.span);\n return { ...lowerDecoded, ...upperDecoded };\n }\n encode(src, b, offset = 0) {\n return (this._lower.encode(src, b, offset) +\n this._upper.encode(src, b, offset + this._lower.span));\n }\n}\nexports.WideBits = WideBits;\nclass VersionedLayout extends buffer_layout_1.Layout {\n constructor(version, inner, property) {\n super(inner.span > 0 ? inner.span + 1 : inner.span, property);\n this.version = version;\n this.inner = inner;\n }\n decode(b, offset = 0) {\n // if (b.readUInt8(offset) !== this._version) {\n // throw new Error('invalid version');\n // }\n return this.inner.decode(b, offset + 1);\n }\n encode(src, b, offset = 0) {\n b.writeUInt8(this.version, offset);\n return 1 + this.inner.encode(src, b, offset + 1);\n }\n getSpan(b, offset = 0) {\n return 1 + this.inner.getSpan(b, offset + 1);\n }\n}\nexports.VersionedLayout = VersionedLayout;\nclass EnumLayout extends buffer_layout_1.UInt {\n constructor(values, span, property) {\n super(span, property);\n this.values = values;\n }\n encode(src, b, offset) {\n if (this.values[src] !== undefined) {\n return super.encode(this.values[src], b, offset);\n }\n throw new Error('Invalid ' + this.property);\n }\n decode(b, offset) {\n const decodedValue = super.decode(b, offset);\n const entry = Object.entries(this.values).find(([, value]) => value === decodedValue);\n if (entry) {\n return entry[0];\n }\n throw new Error('Invalid ' + this.property);\n }\n}\nfunction sideLayout(property) {\n return new EnumLayout({ buy: 0, sell: 1 }, 4, property);\n}\nexports.sideLayout = sideLayout;\nfunction orderTypeLayout(property) {\n return new EnumLayout({ limit: 0, ioc: 1, postOnly: 2 }, 4, property);\n}\nexports.orderTypeLayout = orderTypeLayout;\nfunction selfTradeBehaviorLayout(property) {\n return new EnumLayout({ decrementTake: 0, cancelProvide: 1, abortTransaction: 2 }, 4, property);\n}\nexports.selfTradeBehaviorLayout = selfTradeBehaviorLayout;\nconst ACCOUNT_FLAGS_LAYOUT = new WideBits();\nACCOUNT_FLAGS_LAYOUT.addBoolean('initialized');\nACCOUNT_FLAGS_LAYOUT.addBoolean('market');\nACCOUNT_FLAGS_LAYOUT.addBoolean('openOrders');\nACCOUNT_FLAGS_LAYOUT.addBoolean('requestQueue');\nACCOUNT_FLAGS_LAYOUT.addBoolean('eventQueue');\nACCOUNT_FLAGS_LAYOUT.addBoolean('bids');\nACCOUNT_FLAGS_LAYOUT.addBoolean('asks');\nfunction accountFlagsLayout(property = 'accountFlags') {\n return ACCOUNT_FLAGS_LAYOUT.replicate(property);\n}\nexports.accountFlagsLayout = accountFlagsLayout;\nfunction setLayoutDecoder(layout, decoder) {\n const originalDecode = layout.decode;\n layout.decode = function decode(b, offset = 0) {\n return decoder(originalDecode.call(this, b, offset));\n };\n}\nexports.setLayoutDecoder = setLayoutDecoder;\nfunction setLayoutEncoder(layout, encoder) {\n const originalEncode = layout.encode;\n layout.encode = function encode(src, b, offset) {\n return originalEncode.call(this, encoder(src), b, offset);\n };\n return layout;\n}\nexports.setLayoutEncoder = setLayoutEncoder;\n//# sourceMappingURL=layout.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.closeAccount = exports.mintTo = exports.setAuthority = exports.revoke = exports.approve = exports.transfer = exports.initializeAccount = exports.initializeMint = exports.decodeTokenInstructionData = exports.SRM_DECIMALS = exports.SRM_MINT = exports.MSRM_DECIMALS = exports.MSRM_MINT = exports.WRAPPED_SOL_MINT = exports.TOKEN_PROGRAM_ID = exports.CLOSE_ACCOUNT_OWNER_INDEX = exports.CLOSE_ACCOUNT_DESTINATION_INDEX = exports.CLOSE_ACCOUNT_SOURCE_INDEX = exports.TRANSFER_OWNER_INDEX = exports.TRANSFER_DESTINATION_INDEX = exports.TRANSFER_SOURCE_INDEX = exports.INITIALIZE_ACCOUNT_OWNER_INDEX = exports.INITIALIZE_ACCOUNT_MINT_INDEX = exports.INITIALIZE_ACCOUNT_ACCOUNT_INDEX = void 0;\nconst BufferLayout = __importStar(require(\"buffer-layout\"));\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst layout_1 = require(\"./layout\");\n// NOTE: Update these if the position of arguments for the initializeAccount instruction changes\nexports.INITIALIZE_ACCOUNT_ACCOUNT_INDEX = 0;\nexports.INITIALIZE_ACCOUNT_MINT_INDEX = 1;\nexports.INITIALIZE_ACCOUNT_OWNER_INDEX = 2;\n// NOTE: Update these if the position of arguments for the transfer instruction changes\nexports.TRANSFER_SOURCE_INDEX = 0;\nexports.TRANSFER_DESTINATION_INDEX = 1;\nexports.TRANSFER_OWNER_INDEX = 2;\n// NOTE: Update these if the position of arguments for the closeAccount instruction changes\nexports.CLOSE_ACCOUNT_SOURCE_INDEX = 0;\nexports.CLOSE_ACCOUNT_DESTINATION_INDEX = 1;\nexports.CLOSE_ACCOUNT_OWNER_INDEX = 2;\nexports.TOKEN_PROGRAM_ID = new web3_js_1.PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\nexports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');\nexports.MSRM_MINT = new web3_js_1.PublicKey('MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L');\nexports.MSRM_DECIMALS = 0;\nexports.SRM_MINT = new web3_js_1.PublicKey('SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt');\nexports.SRM_DECIMALS = 6;\nconst LAYOUT = BufferLayout.union(BufferLayout.u8('instruction'));\nLAYOUT.addVariant(0, BufferLayout.struct([\n BufferLayout.u8('decimals'),\n layout_1.publicKeyLayout('mintAuthority'),\n BufferLayout.u8('freezeAuthorityOption'),\n layout_1.publicKeyLayout('freezeAuthority'),\n]), 'initializeMint');\nLAYOUT.addVariant(1, BufferLayout.struct([]), 'initializeAccount');\nLAYOUT.addVariant(3, BufferLayout.struct([BufferLayout.nu64('amount')]), 'transfer');\nLAYOUT.addVariant(4, BufferLayout.struct([BufferLayout.nu64('amount')]), 'approve');\nLAYOUT.addVariant(5, BufferLayout.struct([]), 'revoke');\nLAYOUT.addVariant(6, BufferLayout.struct([\n BufferLayout.u8('authorityType'),\n BufferLayout.u8('newAuthorityOption'),\n layout_1.publicKeyLayout('newAuthority'),\n]), 'setAuthority');\nLAYOUT.addVariant(7, BufferLayout.struct([BufferLayout.nu64('amount')]), 'mintTo');\nLAYOUT.addVariant(8, BufferLayout.struct([BufferLayout.nu64('amount')]), 'burn');\nLAYOUT.addVariant(9, BufferLayout.struct([]), 'closeAccount');\nconst instructionMaxSpan = Math.max(...Object.values(LAYOUT.registry).map((r) => r.span));\nfunction encodeTokenInstructionData(instruction) {\n const b = Buffer.alloc(instructionMaxSpan);\n const span = LAYOUT.encode(instruction, b);\n return b.slice(0, span);\n}\nfunction decodeTokenInstructionData(instruction) {\n return LAYOUT.decode(instruction);\n}\nexports.decodeTokenInstructionData = decodeTokenInstructionData;\nfunction initializeMint({ mint, decimals, mintAuthority, freezeAuthority = null, }) {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeMint: {\n decimals,\n mintAuthority,\n freezeAuthorityOption: !!freezeAuthority,\n freezeAuthority: freezeAuthority || new web3_js_1.PublicKey(0),\n },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.initializeMint = initializeMint;\nfunction initializeAccount({ account, mint, owner }) {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeAccount: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.initializeAccount = initializeAccount;\nfunction transfer({ source, destination, amount, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n transfer: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.transfer = transfer;\nfunction approve({ source, delegate, amount, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n approve: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.approve = approve;\nfunction revoke({ source, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n revoke: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.revoke = revoke;\nfunction setAuthority({ target, currentAuthority, newAuthority, authorityType, }) {\n const keys = [\n { pubkey: target, isSigner: false, isWritable: true },\n { pubkey: currentAuthority, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n setAuthority: {\n authorityType,\n newAuthorityOption: !!newAuthority,\n newAuthority,\n },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.setAuthority = setAuthority;\nfunction mintTo({ mint, destination, amount, mintAuthority }) {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: mintAuthority, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n mintTo: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.mintTo = mintTo;\nfunction closeAccount({ source, destination, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n closeAccount: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.closeAccount = closeAccount;\n//# sourceMappingURL=token-instructions.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MARKETS = exports.TOKEN_MINTS = exports.getLayoutVersion = exports.PROGRAM_LAYOUT_VERSIONS = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst markets_json_1 = __importDefault(require(\"./markets.json\"));\nconst token_mints_json_1 = __importDefault(require(\"./token-mints.json\"));\nexports.PROGRAM_LAYOUT_VERSIONS = {\n '4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn': 1,\n 'BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg': 1,\n 'EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o': 2,\n '9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin': 3,\n};\nfunction getLayoutVersion(programId) {\n return exports.PROGRAM_LAYOUT_VERSIONS[programId.toString()] || 3;\n}\nexports.getLayoutVersion = getLayoutVersion;\nexports.TOKEN_MINTS = token_mints_json_1.default.map((mint) => {\n return {\n address: new web3_js_1.PublicKey(mint.address),\n name: mint.name,\n };\n});\nexports.MARKETS = markets_json_1.default.map((market) => {\n return {\n address: new web3_js_1.PublicKey(market.address),\n name: market.name,\n programId: new web3_js_1.PublicKey(market.programId),\n deprecated: market.deprecated,\n };\n});\n//# sourceMappingURL=tokens_and_markets.js.map","type Skin = {\n active: string;\n ready: string;\n inactive: string;\n notReady: string;\n deactivating: string;\n};\n\nconst _skin: Skin = {\n active: '#43a047',\n ready: '#3f51b5',\n notReady: '#ccc',\n inactive: 'red',\n deactivating: 'rgb(255, 121, 42)',\n};\n\nexport function instance(): Skin {\n return _skin;\n}\n","import { struct, Layout } from 'buffer-layout';\nimport { rustEnum } from '@project-serum/borsh';\n\n// Simplified since we only use the SetBuffer variant.\nexport type IdlInstruction =\n | Create\n | CreateBuffer\n | Write\n | SetBuffer\n | SetAuthority;\n\ntype Create = {};\ntype CreateBuffer = {};\ntype Write = {};\ntype SetBuffer = {};\ntype SetAuthority = {};\n\nconst IDL_INSTRUCTION_LAYOUT: Layout = rustEnum([\n struct([], 'create'),\n struct([], 'createBuffer'),\n struct([], 'write'),\n struct([], 'setBuffer'),\n struct([], 'setAuthority'),\n]);\n\nexport function encodeInstruction(i: IdlInstruction): Buffer {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const len = IDL_INSTRUCTION_LAYOUT.encode(i, buffer);\n return Buffer.concat([IDL_TAG, buffer.slice(0, len)]);\n}\n\n// Reverse for little endian.\nexport const IDL_TAG = Buffer.from('0a69e9a778bcf440', 'hex').reverse();\n","export type Action = {\n type: ActionType;\n item: any;\n};\n\nexport enum ActionType {\n // Common.\n CommonTriggerBootstrap,\n CommonAppWillBootstrap,\n CommonAppDidBootstrap,\n CommonTriggerShutdown,\n CommonDidShutdown,\n CommonWalletDidConnect,\n CommonWalletDidDisconnect,\n CommonWalletSetProvider,\n CommonSetNetwork,\n CommonOwnedTokenAccountsSet,\n CommonOwnedTokenAccountsUpdate,\n CommonWalletReset,\n\n // Lockup.\n LockupSetVestings,\n LockupUpdateVesting,\n LockupCreateVesting,\n\n // Registry.\n RegistrySetMember,\n RegistrySetRegistrar,\n RegistrySetPendingWithdrawals,\n RegistryCreatePendingWithdrawal,\n RegistryUpdatePendingWithdrawal,\n\n // Accounts.\n AccountAdd,\n AccountUpdate,\n}\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport LockIcon from '@material-ui/icons/Lock';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport Button from '@material-ui/core/Button';\nimport { PublicKey, SYSVAR_CLOCK_PUBKEY } from '@solana/web3.js';\nimport { TokenInstructions } from '@project-serum/serum';\nimport OwnedTokenAccountsSelect from '../../components/common/OwnedTokenAccountsSelect';\nimport { useWallet } from '../../components/common/WalletProvider';\nimport { toDisplay } from '../../utils/tokens';\nimport { ProgramAccount } from '../../store/reducer';\nimport { Network } from '../../store/config';\nimport { State as StoreState } from '../../store/reducer';\nimport { ViewTransactionOnExplorerButton } from '../../components/common/Notification';\n\ntype RewardsListProps = {\n rewards: (RewardListItemViewModel | null)[];\n};\n\nexport default function RewardsList(props: RewardsListProps) {\n const { rewards } = props;\n let loading = false;\n rewards.forEach(r => {\n if (r === null) {\n loading = true;\n }\n });\n return (\n \n {loading ? (\n \n ) : rewards.length > 0 ? (\n rewards\n .filter(r => r!.vendor.account.expired === false)\n .map(r => {\n return ;\n })\n ) : (\n \n \n \n )}\n \n );\n}\n\ntype RewardListItemProps = {\n rli: RewardListItemViewModel;\n};\n\nfunction RewardListItem(props: RewardListItemProps) {\n const { rli } = props;\n\n const [open, setOpen] = useState(false);\n\n const dateLabel = new Date(\n rli.vendor!.account.startTs.toNumber() * 1000,\n ).toLocaleString();\n let fromLabel = `Dropped by ${rli.vendor.account.from.toString()} | ${dateLabel}`;\n return (\n <>\n setOpen(open => !open)}>\n \n \n
{`${toDisplay(\n rli.vendor.account.total,\n rli.mint!.account.decimals,\n )} ${rli.mint!.publicKey}`}
\n \n }\n secondary={fromLabel}\n />\n {open ? : }\n
\n \n {rli.vendor === undefined ? (\n \n ) : (\n \n )}\n \n \n );\n}\n\ntype RewardListItemDetailsProps = {\n vendor: ProgramAccount;\n};\n\nfunction RewardListItemDetails(props: RewardListItemDetailsProps) {\n let { vendor } = props;\n const { registryClient } = useWallet();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { vendorMint, registrar } = useSelector((state: StoreState) => {\n return {\n registrar: state.registry.registrar,\n vendorMint: state.accounts[vendor.account.mint.toString()],\n };\n });\n const [\n expiryReceiverToken,\n setExpiryReceiverToken,\n ] = useState(null);\n const expire = async () => {\n enqueueSnackbar('Expiring reward', {\n variant: 'info',\n });\n const vendorSigner = await PublicKey.createProgramAddress(\n [\n registrar.toBuffer(),\n vendor.publicKey.toBuffer(),\n Buffer.from([vendor.account.nonce]),\n ],\n registryClient.programId,\n );\n\n const tx = await registryClient.rpc.expireReward({\n accounts: {\n registrar,\n vendor: vendor.publicKey,\n vault: vendor.account.vault,\n vendorSigner,\n expiryReceiver: vendor.account.expiryReceiver,\n expiryReceiverToken,\n tokenProgram: TokenInstructions.TOKEN_PROGRAM_ID,\n clock: SYSVAR_CLOCK_PUBKEY,\n },\n });\n closeSnackbar();\n enqueueSnackbar(`Reward expired`, {\n variant: 'success',\n action: ,\n });\n };\n return (\n \n
Vendor
\n
    \n
  • Address {vendor.publicKey.toString()}
  • \n
  • Vault: {vendor.account.vault.toString()}
  • \n
  • Mint: {vendor.account.mint.toString()}
  • \n
  • \n Pool token supply snapshot:{' '}\n {vendor.account.poolTokenSupply.toString()}\n
  • \n
  • \n Expiry:{' '}\n {new Date(\n vendor.account.expiryTs.toNumber() * 1000,\n ).toLocaleDateString()}\n {` (${vendor.account.expiryTs.toNumber()})`}\n
  • \n
  • Expiry receiver: {vendor.account.expiryReceiver.toString()}
  • \n
  • Expired: {vendor.account.expired.toString()}
  • \n
  • \n Reward queue cursor: {vendor.account.rewardEventQCursor.toString()}\n
  • \n
\n {(vendor.account.expiryTs.toNumber() <= Date.now()/1000) && (\n
\n \n Expire\n \n
\n {\n setExpiryReceiverToken(f);\n }}\n />\n
\n
\n )}\n \n );\n}\n\nexport class RewardListItemViewModel {\n constructor(\n readonly reward: any,\n readonly cursor: number,\n readonly needsClaim: boolean,\n readonly mint: ProgramAccount,\n readonly vendor: ProgramAccount,\n ) {}\n\n static fromMessage(ctx: Context, event: any): RewardListItemViewModel | null {\n let needsClaim = false;\n\n const vendor = ctx.accounts[event.vendor.toString()];\n\n if (vendor === undefined) {\n return null;\n }\n\n const mint = {\n publicKey: vendor.mint,\n account: ctx.accounts[vendor.mint.toString()],\n };\n\n if (ctx.member !== undefined) {\n // Must own shares of the reward's target pool.\n const sptAccount =\n ctx.accounts[ctx.member.account.balances.spt.toString()];\n const lockedSptAccount =\n ctx.accounts[ctx.member.account.balancesLocked.spt.toString()];\n\n const ownsPoolShares = sptAccount.amount + lockedSptAccount.amount > 0;\n\n // Must not have claimed the reward yet.\n const notYetClaimed =\n vendor.rewardEventQCursor >= ctx.member.account.rewardsCursor;\n\n // Must have staked before the reward was dropped.\n const isEligible = ctx.member.account.lastStakeTs < vendor.startTs;\n\n // Must not have let the reward expire.\n const expired = vendor.expired;\n\n needsClaim = ownsPoolShares && notYetClaimed && isEligible && !expired;\n }\n\n const vendorProgramAccount = {\n publicKey: event.vendor,\n account: vendor,\n };\n\n return new RewardListItemViewModel(\n event,\n vendor.rewardEventQCursor,\n needsClaim,\n mint,\n vendorProgramAccount,\n );\n }\n}\n\ntype Context = {\n accounts: any;\n rewardEventQueue: ProgramAccount;\n member?: ProgramAccount;\n network: Network;\n};\n","import React, { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router';\nimport { useSnackbar } from 'notistack';\nimport { encode as encodeBase64 } from 'js-base64';\nimport Container from '@material-ui/core/Container';\nimport AppBar from '@material-ui/core/AppBar';\nimport GavelIcon from '@material-ui/icons/Gavel';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport Paper from '@material-ui/core/Paper';\nimport SupervisorAccountIcon from '@material-ui/icons/SupervisorAccount';\nimport CheckIcon from '@material-ui/icons/Check';\nimport ReceiptIcon from '@material-ui/icons/Receipt';\nimport RemoveIcon from '@material-ui/icons/Remove';\nimport Collapse from '@material-ui/core/Collapse';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport InfoIcon from '@material-ui/icons/Info';\nimport Table from '@material-ui/core/Table';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport BuildIcon from '@material-ui/icons/Build';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport Typography from '@material-ui/core/Typography';\nimport Card from '@material-ui/core/Card';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport CardContent from '@material-ui/core/CardContent';\nimport TextField from '@material-ui/core/TextField';\nimport IconButton from '@material-ui/core/IconButton';\nimport Button from '@material-ui/core/Button';\nimport SearchIcon from '@material-ui/icons/Search';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport AddIcon from '@material-ui/icons/Add';\nimport List from '@material-ui/core/List';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport BN from 'bn.js';\nimport {\n Account,\n PublicKey,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_CLOCK_PUBKEY,\n} from '@solana/web3.js';\nimport * as anchor from '@project-serum/anchor';\nimport { useWallet } from '../common/WalletProvider';\nimport { ViewTransactionOnExplorerButton } from '../common/Notification';\nimport * as idl from '../../utils/idl';\n\nexport default function Multisig({ multisig }: { multisig?: PublicKey }) {\n const history = useHistory();\n const [multisigAddress, setMultisigAddress] = useState('');\n const disabled = !isValidPubkey(multisigAddress);\n const searchFn = () => {\n history.push(`/multisig/${multisigAddress}`);\n };\n return (\n
\n \n setMultisigAddress(e.target.value as string)}\n onKeyPress={e => {\n if (e.key === 'Enter') {\n searchFn();\n }\n }}\n />\n \n \n \n \n
\n
{multisig && }
\n \n );\n}\n\nfunction isValidPubkey(addr: string): boolean {\n try {\n new PublicKey(addr);\n return true;\n } catch (_) {\n return false;\n }\n}\n\nexport function MultisigInstance({ multisig }: { multisig: PublicKey }) {\n const { multisigClient } = useWallet();\n const [multisigAccount, setMultisigAccount] = useState(undefined);\n const [transactions, setTransactions] = useState(null);\n const [showSignerDialog, setShowSignerDialog] = useState(false);\n const [showAddTransactionDialog, setShowAddTransactionDialog] = useState(\n false,\n );\n const [forceRefresh, setForceRefresh] = useState(false);\n useEffect(() => {\n multisigClient.account\n .multisig(multisig)\n .then((account: any) => {\n setMultisigAccount(account);\n })\n .catch((err: any) => {\n console.error(err);\n setMultisigAccount(null);\n });\n }, [multisig, multisigClient.account]);\n useEffect(() => {\n multisigClient.account.transaction.all(multisig.toBuffer()).then(txs => {\n setTransactions(txs);\n });\n }, [multisigClient.account.transaction, multisig, forceRefresh]);\n useEffect(() => {\n multisigClient.account.multisig\n .subscribe(multisig)\n .on('change', account => {\n setMultisigAccount(account);\n });\n }, [multisigClient, multisig]);\n return (\n \n
\n \n {multisigAccount === undefined ? (\n
\n \n
\n ) : multisigAccount === null ? (\n \n \n Multisig not found\n \n \n ) : (\n <>\n )}\n
\n {multisigAccount && (\n \n \n \n \n {multisig.toString()} | {multisigAccount.threshold.toString()}{' '}\n of {multisigAccount.owners.length.toString()} Multisig\n \n \n setShowSignerDialog(true)}>\n \n \n \n \n setShowAddTransactionDialog(true)}>\n \n \n \n \n \n \n {transactions === null ? (\n
\n \n
\n ) : transactions.length === 0 ? (\n \n \n \n ) : (\n transactions.map((tx: any) => (\n \n ))\n )}\n
\n
\n )}\n
\n setShowAddTransactionDialog(false)}\n didAddTransaction={() => setForceRefresh(!forceRefresh)}\n />\n {multisigAccount && (\n setShowSignerDialog(false)}\n />\n )}\n
\n );\n}\n\nfunction NewMultisigButton() {\n const [open, setOpen] = useState(false);\n return (\n
\n setOpen(true)}>\n \n \n setOpen(false)} />\n
\n );\n}\n\nfunction NewMultisigDialog({\n open,\n onClose,\n}: {\n open: boolean;\n onClose: () => void;\n}) {\n const history = useHistory();\n const { multisigClient } = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n const [threshold, setThreshold] = useState(2);\n // @ts-ignore\n const zeroAddr = new PublicKey().toString();\n const [participants, setParticipants] = useState([\n multisigClient.provider.wallet.publicKey.toString(),\n zeroAddr,\n ]);\n const _onClose = () => {\n onClose();\n setThreshold(2);\n setParticipants([zeroAddr, zeroAddr]);\n };\n const createMultisig = async () => {\n enqueueSnackbar('Creating multisig', {\n variant: 'info',\n });\n const multisig = new Account();\n // Disc. + threshold + nonce.\n const baseSize = 8 + 8 + 1;\n // Can only grow the participant set by 2x the initialized value.\n const ownerSize = participants.length * 2 * 32 + 8;\n const multisigSize = baseSize + ownerSize;\n const [, nonce] = await PublicKey.findProgramAddress(\n [multisig.publicKey.toBuffer()],\n multisigClient.programId,\n );\n const owners = participants.map(p => new PublicKey(p));\n const tx = await multisigClient.rpc.createMultisig(\n owners,\n new BN(threshold),\n nonce,\n {\n accounts: {\n multisig: multisig.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [multisig],\n instructions: [\n await multisigClient.account.multisig.createInstruction(\n multisig,\n // @ts-ignore\n multisigSize,\n ),\n ],\n },\n );\n enqueueSnackbar(`Multisig created: ${multisig.publicKey.toString()}`, {\n variant: 'success',\n action: ,\n });\n _onClose();\n history.push(`/multisig/${multisig.publicKey.toString()}`);\n };\n return (\n \n \n \n New Multisig\n \n \n \n setThreshold(parseInt(e.target.value) as number)}\n />\n {participants.map((p, idx) => (\n {\n const p = [...participants];\n p[idx] = e.target.value;\n setParticipants(p);\n }}\n />\n ))}\n
\n {\n const p = [...participants];\n // @ts-ignore\n p.push(new PublicKey().toString());\n setParticipants(p);\n }}\n >\n \n \n
\n
\n \n \n \n createMultisig().catch(err => {\n const str = err ? err.toString() : '';\n enqueueSnackbar(`Error creating multisig: ${str}`, {\n variant: 'error',\n });\n })\n }\n >\n Create\n \n \n
\n );\n}\n\nfunction TxListItem({\n multisig,\n multisigAccount,\n tx,\n}: {\n multisig: PublicKey;\n multisigAccount: any;\n tx: any;\n}) {\n const { enqueueSnackbar } = useSnackbar();\n const { multisigClient } = useWallet();\n const [open, setOpen] = useState(false);\n const [txAccount, setTxAccount] = useState(tx.account);\n useEffect(() => {\n multisigClient.account.transaction\n .subscribe(tx.publicKey)\n .on('change', account => {\n setTxAccount(account);\n });\n }, [multisigClient, multisig, tx.publicKey]);\n const rows = [\n {\n field: 'Program ID',\n value: txAccount.programId.toString(),\n },\n {\n field: 'Did execute',\n value: txAccount.didExecute.toString(),\n },\n {\n field: 'Instruction data',\n value: (\n \n {encodeBase64(txAccount.data)}\n \n ),\n },\n {\n field: 'Multisig',\n value: txAccount.multisig.toString(),\n },\n {\n field: 'Transaction account',\n value: tx.publicKey.toString(),\n },\n {\n field: 'Owner set seqno',\n value: txAccount.ownerSetSeqno.toString(),\n },\n ];\n const msAccountRows = multisigAccount.owners.map(\n (owner: PublicKey, idx: number) => {\n return {\n field: owner.toString(),\n value: txAccount.signers[idx] ? : ,\n };\n },\n );\n const approve = async () => {\n enqueueSnackbar('Approving transaction', {\n variant: 'info',\n });\n await multisigClient.rpc.approve({\n accounts: {\n multisig,\n transaction: tx.publicKey,\n owner: multisigClient.provider.wallet.publicKey,\n },\n });\n enqueueSnackbar('Transaction approved', {\n variant: 'success',\n });\n };\n const execute = async () => {\n enqueueSnackbar('Executing transaction', {\n variant: 'info',\n });\n const [multisigSigner] = await PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n );\n await multisigClient.rpc.executeTransaction({\n accounts: {\n multisig,\n multisigSigner,\n transaction: tx.publicKey,\n },\n remainingAccounts: txAccount.accounts\n .map((t: any) => {\n if (t.pubkey.equals(multisigSigner)) {\n return { ...t, isSigner: false };\n }\n return t;\n })\n .concat({\n pubkey: txAccount.programId,\n isWritable: false,\n isSigner: false,\n }),\n });\n enqueueSnackbar('Transaction executed', {\n variant: 'success',\n });\n };\n return (\n <>\n setOpen(!open)}>\n {icon(tx, multisigClient)}\n {ixLabel(tx, multisigClient)}\n {txAccount.didExecute && (\n \n )}\n {open ? : }\n \n \n
\n
\n \n approve().catch(err => {\n let errStr = '';\n if (err) {\n errStr = err.toString();\n }\n enqueueSnackbar(`Unable to approve transaction: ${errStr}`, {\n variant: 'error',\n });\n })\n }\n >\n Approve\n \n \n execute().catch(err => {\n let errStr = '';\n if (err) {\n errStr = err.toString();\n }\n enqueueSnackbar(`Unable to execute transaction: ${errStr}`, {\n variant: 'error',\n });\n })\n }\n >\n Execute\n \n
\n \n \n \n \n \n Transaction Field\n Value\n \n \n \n {rows.map(r => (\n \n {r.field}\n {r.value}\n \n ))}\n \n
\n
\n
\n \n \n \n \n \n Multisig Owner\n Did Sign\n \n \n \n {txAccount.ownerSetSeqno === multisigAccount.ownerSetSeqno &&\n msAccountRows.map((r: any) => (\n \n {r.field}\n {r.value}\n \n ))}\n \n
\n {txAccount.ownerSetSeqno !== multisigAccount.ownerSetSeqno && (\n
\n \n The owner set has changed since this transaction was created\n \n
\n )}\n
\n
\n \n \n \n \n \n
\n
\n \n );\n}\n\nfunction ixLabel(tx: any, multisigClient: any) {\n if (tx.account.programId.equals(BPF_LOADER_UPGRADEABLE_PID)) {\n // Upgrade instruction.\n if (tx.account.data.equals(Buffer.from([3, 0, 0, 0]))) {\n return (\n \n );\n }\n }\n if (tx.account.programId.equals(multisigClient.programId)) {\n const setThresholdSighash = multisigClient.coder.sighash(\n 'global',\n 'change_threshold',\n );\n if (setThresholdSighash.equals(tx.account.data.slice(0, 8))) {\n return (\n \n );\n }\n const setOwnersSighash = multisigClient.coder.sighash(\n 'global',\n 'set_owners',\n );\n if (setOwnersSighash.equals(tx.account.data.slice(0, 8))) {\n return (\n \n );\n }\n }\n if (idl.IDL_TAG.equals(tx.account.data.slice(0, 8))) {\n return (\n \n );\n }\n return ;\n}\n\nfunction AccountsList({ accounts }: { accounts: any }) {\n return (\n \n \n \n Account\n Writable\n Signer\n \n \n \n {accounts.map((r: any) => (\n \n {r.pubkey.toString()}\n {r.isWritable.toString()}\n {r.isSigner.toString()}\n \n ))}\n \n
\n );\n}\n\nfunction SignerDialog({\n multisig,\n multisigAccount,\n open,\n onClose,\n}: {\n multisig: PublicKey;\n multisigAccount: any;\n open: boolean;\n onClose: () => void;\n}) {\n const { multisigClient } = useWallet();\n const [signer, setSigner] = useState(null);\n useEffect(() => {\n PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n ).then(addrNonce => setSigner(addrNonce[0].toString()));\n }, [multisig, multisigClient.programId, setSigner]);\n return (\n \n \n \n Multisig Info\n \n \n \n \n Program derived address: {signer}. This is the address one\n should use as the authority for data governed by the multisig.\n \n \n \n \n Owners\n \n \n \n {multisigAccount.owners.map((r: any) => (\n \n {r.toString()}\n \n ))}\n \n
\n
\n \n \n \n
\n );\n}\n\nfunction AddTransactionDialog({\n multisig,\n open,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n open: boolean;\n onClose: () => void;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n return (\n \n \n \n New Transaction\n \n \n \n \n Create a new transaction to be signed by the multisig. This\n transaction will not execute until enough owners have signed the\n transaction.\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ChangeThresholdListItem({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <>\n setOpen(open => !open)}>\n \n \n \n \n {open ? : }\n \n \n \n \n \n );\n}\n\nfunction ChangeThresholdListItemDetails({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [threshold, setThreshold] = useState(2);\n const { multisigClient } = useWallet();\n // @ts-ignore\n const { enqueueSnackbar } = useSnackbar();\n const changeThreshold = async () => {\n enqueueSnackbar('Creating change threshold transaction', {\n variant: 'info',\n });\n const data = changeThresholdData(multisigClient, threshold);\n const [multisigSigner] = await PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n );\n const accounts = [\n {\n pubkey: multisig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: multisigSigner,\n isWritable: false,\n isSigner: true,\n },\n ];\n const transaction = new Account();\n const txSize = 1000; // todo\n const tx = await multisigClient.rpc.createTransaction(\n multisigClient.programId,\n accounts,\n data,\n {\n accounts: {\n multisig,\n transaction: transaction.publicKey,\n proposer: multisigClient.provider.wallet.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [transaction],\n instructions: [\n await multisigClient.account.transaction.createInstruction(\n transaction,\n // @ts-ignore\n txSize,\n ),\n ],\n },\n );\n enqueueSnackbar('Transaction created', {\n variant: 'success',\n action: ,\n });\n didAddTransaction(transaction.publicKey);\n onClose();\n };\n return (\n \n {\n // @ts-ignore\n setThreshold(e.target.value);\n }}\n />\n
\n \n
\n \n );\n}\n\nfunction MultisigSetOwnersListItem({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <>\n setOpen(open => !open)}>\n \n \n \n \n {open ? : }\n \n \n \n \n \n );\n}\n\nfunction SetOwnersListItemDetails({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const { multisigClient } = useWallet();\n // @ts-ignore\n const zeroAddr = new PublicKey().toString();\n const [participants, setParticipants] = useState([\n multisigClient.provider.wallet.publicKey.toString(),\n zeroAddr,\n ]);\n const { enqueueSnackbar } = useSnackbar();\n const setOwners = async () => {\n enqueueSnackbar('Creating setOwners transaction', {\n variant: 'info',\n });\n const owners = participants.map(p => new PublicKey(p));\n const data = setOwnersData(multisigClient, owners);\n const [multisigSigner] = await PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n );\n const accounts = [\n {\n pubkey: multisig,\n isWritable: true,\n isSigner: false,\n },\n {\n pubkey: multisigSigner,\n isWritable: false,\n isSigner: true,\n },\n ];\n const transaction = new Account();\n const txSize = 5000; // TODO: tighter bound.\n const tx = await multisigClient.rpc.createTransaction(\n multisigClient.programId,\n accounts,\n data,\n {\n accounts: {\n multisig,\n transaction: transaction.publicKey,\n proposer: multisigClient.provider.wallet.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [transaction],\n instructions: [\n await multisigClient.account.transaction.createInstruction(\n transaction,\n // @ts-ignore\n txSize,\n ),\n ],\n },\n );\n enqueueSnackbar('Transaction created', {\n variant: 'success',\n action: ,\n });\n didAddTransaction(transaction.publicKey);\n onClose();\n };\n return (\n \n {participants.map((p, idx) => (\n {\n const p = [...participants];\n p[idx] = e.target.value;\n setParticipants(p);\n }}\n />\n ))}\n
\n {\n const p = [...participants];\n // @ts-ignore\n p.push(new PublicKey().toString());\n setParticipants(p);\n }}\n >\n \n \n
\n \n \n \n \n );\n}\n\nfunction IdlUpgradeListItem({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <>\n setOpen(open => !open)}>\n \n \n \n \n {open ? : }\n \n \n \n \n \n );\n}\n\nfunction UpgradeIdlListItemDetails({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [programId, setProgramId] = useState(null);\n const [buffer, setBuffer] = useState(null);\n\n const { multisigClient } = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n const createTransactionAccount = async () => {\n enqueueSnackbar('Creating transaction', {\n variant: 'info',\n });\n const programAddr = new PublicKey(programId as string);\n const bufferAddr = new PublicKey(buffer as string);\n const idlAddr = await anchor.utils.idlAddress(programAddr);\n const [multisigSigner] = await PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n );\n const data = idl.encodeInstruction({ setBuffer: {} });\n const accs = [\n {\n pubkey: bufferAddr,\n isWritable: true,\n isSigner: false,\n },\n { pubkey: idlAddr, isWritable: true, isSigner: false },\n { pubkey: multisigSigner, isWritable: true, isSigner: false },\n ];\n const txSize = 1000; // TODO: tighter bound.\n const transaction = new Account();\n const tx = await multisigClient.rpc.createTransaction(\n programAddr,\n accs,\n data,\n {\n accounts: {\n multisig,\n transaction: transaction.publicKey,\n proposer: multisigClient.provider.wallet.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [transaction],\n instructions: [\n await multisigClient.account.transaction.createInstruction(\n transaction,\n // @ts-ignore\n txSize,\n ),\n ],\n },\n );\n enqueueSnackbar('Transaction created', {\n variant: 'success',\n action: ,\n });\n didAddTransaction(transaction.publicKey);\n onClose();\n };\n\n return (\n \n setProgramId(e.target.value as string)}\n />\n setBuffer(e.target.value as string)}\n />\n \n \n \n \n );\n}\n\nfunction ProgramUpdateListItem({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [open, setOpen] = useState(false);\n return (\n <>\n setOpen(open => !open)}>\n \n \n \n \n {open ? : }\n \n \n \n \n \n );\n}\n\nconst BPF_LOADER_UPGRADEABLE_PID = new PublicKey(\n 'BPFLoaderUpgradeab1e11111111111111111111111',\n);\n\nfunction UpgradeProgramListItemDetails({\n multisig,\n onClose,\n didAddTransaction,\n}: {\n multisig: PublicKey;\n onClose: Function;\n didAddTransaction: (tx: PublicKey) => void;\n}) {\n const [programId, setProgramId] = useState(null);\n const [buffer, setBuffer] = useState(null);\n\n const { multisigClient } = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n const createTransactionAccount = async () => {\n enqueueSnackbar('Creating transaction', {\n variant: 'info',\n });\n const programAddr = new PublicKey(programId as string);\n const bufferAddr = new PublicKey(buffer as string);\n // Hard code serialization.\n const data = Buffer.from([3, 0, 0, 0]);\n\n const programAccount = await (async () => {\n const programAccount = await multisigClient.provider.connection.getAccountInfo(\n programAddr,\n );\n if (programAccount === null) {\n throw new Error('Invalid program ID');\n }\n return {\n // Hard code deserialization.\n programdataAddress: new PublicKey(programAccount.data.slice(4)),\n };\n })();\n const spill = multisigClient.provider.wallet.publicKey;\n const [multisigSigner] = await PublicKey.findProgramAddress(\n [multisig.toBuffer()],\n multisigClient.programId,\n );\n const accs = [\n {\n pubkey: programAccount.programdataAddress,\n isWritable: true,\n isSigner: false,\n },\n { pubkey: programAddr, isWritable: true, isSigner: false },\n { pubkey: bufferAddr, isWritable: true, isSigner: false },\n { pubkey: spill, isWritable: true, isSigner: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isWritable: false, isSigner: false },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isWritable: false, isSigner: false },\n { pubkey: multisigSigner, isWritable: false, isSigner: false },\n ];\n const txSize = 1000; // TODO: tighter bound.\n const transaction = new Account();\n const tx = await multisigClient.rpc.createTransaction(\n BPF_LOADER_UPGRADEABLE_PID,\n accs,\n data,\n {\n accounts: {\n multisig,\n transaction: transaction.publicKey,\n proposer: multisigClient.provider.wallet.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [transaction],\n instructions: [\n await multisigClient.account.transaction.createInstruction(\n transaction,\n // @ts-ignore\n txSize,\n ),\n ],\n },\n );\n enqueueSnackbar('Transaction created', {\n variant: 'success',\n action: ,\n });\n didAddTransaction(transaction.publicKey);\n onClose();\n };\n\n return (\n \n setProgramId(e.target.value as string)}\n />\n setBuffer(e.target.value as string)}\n />\n \n \n \n \n );\n}\n\n// @ts-ignore\nfunction icon(tx, multisigClient) {\n if (tx.account.programId.equals(BPF_LOADER_UPGRADEABLE_PID)) {\n return ;\n }\n if (tx.account.programId.equals(multisigClient.programId)) {\n const setThresholdSighash = multisigClient.coder.sighash(\n 'global',\n 'change_threshold',\n );\n if (setThresholdSighash.equals(tx.account.data.slice(0, 8))) {\n return ;\n }\n const setOwnersSighash = multisigClient.coder.sighash(\n 'global',\n 'set_owners',\n );\n if (setOwnersSighash.equals(tx.account.data.slice(0, 8))) {\n return ;\n }\n }\n if (idl.IDL_TAG.equals(tx.account.data.slice(0, 8))) {\n return ;\n }\n return ;\n}\n\n// @ts-ignore\nfunction changeThresholdData(multisigClient, threshold) {\n return multisigClient.coder.instruction.encode('change_threshold', {\n threshold: new BN(threshold),\n });\n}\n\n// @ts-ignore\nfunction setOwnersData(multisigClient, owners) {\n return multisigClient.coder.instruction.encode('set_owners', {\n owners,\n });\n}\n","import React, {\n ReactNode,\n PropsWithChildren,\n useContext,\n useState,\n useEffect,\n} from 'react';\nimport BN from 'bn.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { TokenListProvider, TokenInfo } from '@solana/spl-token-registry';\nimport { networks } from '../store/config';\n\nconst TokenListContext = React.createContext({\n tokenMap: new Map(),\n});\n\ntype TokenListContextValues = {\n tokenMap: Map;\n};\n\nexport function useTokenInfos(): Map {\n const { tokenMap } = useContext(TokenListContext);\n return tokenMap;\n}\n\nexport function TokenRegistryProvider(props: PropsWithChildren) {\n const [tokenMap, setTokenMap] = useState>(new Map());\n useEffect(() => {\n new TokenListProvider().resolve().then(tokens => {\n const tokenList = tokens.filterByClusterSlug('mainnet-beta').getList();\n setTokenMap(\n tokenList.reduce((map, item) => {\n map.set(item.address, item);\n return map;\n }, new Map()),\n );\n });\n }, [setTokenMap]);\n\n return (\n \n {props.children}\n \n );\n}\n\nexport function fromDisplay(amount: number, decimals: number): BN {\n return new BN(amount * 10 ** decimals);\n}\n\nexport function toDisplay(amount: BN | number, decimals: number): string {\n if (amount instanceof BN) {\n amount = amount.toNumber();\n }\n return (amount / 10 ** decimals).toString();\n}\n\nexport function toDisplayLabel(mint: PublicKey): string {\n let whitelistedMint = Object.keys(networks.mainnet.mints)\n .filter(label => networks.mainnet.mints[label].equals(mint))\n .pop();\n if (whitelistedMint) {\n return whitelistedMint.toUpperCase();\n }\n return mint.toString();\n}\n","import { Idl } from '@project-serum/anchor';\n\nconst idl: Idl = {\n version: '0.0.0',\n name: 'lockup',\n instructions: [\n {\n name: 'createVesting',\n accounts: [\n {\n name: 'vesting',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositorAuthority',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'beneficiary',\n type: 'publicKey',\n },\n {\n name: 'depositAmount',\n type: 'u64',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'startTs',\n type: 'i64',\n },\n {\n name: 'endTs',\n type: 'i64',\n },\n {\n name: 'periodCount',\n type: 'u64',\n },\n {\n name: 'realizor',\n type: {\n option: {\n defined: 'Realizor',\n },\n },\n },\n ],\n },\n {\n name: 'withdraw',\n accounts: [\n {\n name: 'vesting',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vestingSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'token',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'whitelistWithdraw',\n accounts: [\n {\n name: 'transfer',\n accounts: [\n {\n name: 'lockup',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'whitelistedProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vesting',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vestingSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'whitelistedProgramVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'whitelistedProgramVaultAuthority',\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: 'instructionData',\n type: 'bytes',\n },\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'whitelistDeposit',\n accounts: [\n {\n name: 'transfer',\n accounts: [\n {\n name: 'lockup',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'whitelistedProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vesting',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vestingSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'whitelistedProgramVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'whitelistedProgramVaultAuthority',\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: 'instructionData',\n type: 'bytes',\n },\n ],\n },\n {\n name: 'availableForWithdrawal',\n accounts: [\n {\n name: 'vesting',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n state: {\n struct: {\n name: 'Lockup',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'authority',\n type: 'publicKey',\n },\n {\n name: 'whitelist',\n type: {\n vec: {\n defined: 'WhitelistEntry',\n },\n },\n },\n ],\n },\n },\n methods: [\n {\n name: 'new',\n accounts: [\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'whitelistAdd',\n accounts: [\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'entry',\n type: {\n defined: 'WhitelistEntry',\n },\n },\n ],\n },\n {\n name: 'whitelistDelete',\n accounts: [\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'entry',\n type: {\n defined: 'WhitelistEntry',\n },\n },\n ],\n },\n {\n name: 'setAuthority',\n accounts: [\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'newAuthority',\n type: 'publicKey',\n },\n ],\n },\n ],\n },\n accounts: [\n {\n name: 'Vesting',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'beneficiary',\n type: 'publicKey',\n },\n {\n name: 'mint',\n type: 'publicKey',\n },\n {\n name: 'vault',\n type: 'publicKey',\n },\n {\n name: 'grantor',\n type: 'publicKey',\n },\n {\n name: 'outstanding',\n type: 'u64',\n },\n {\n name: 'startBalance',\n type: 'u64',\n },\n {\n name: 'createdTs',\n type: 'i64',\n },\n {\n name: 'startTs',\n type: 'i64',\n },\n {\n name: 'endTs',\n type: 'i64',\n },\n {\n name: 'periodCount',\n type: 'u64',\n },\n {\n name: 'whitelistOwned',\n type: 'u64',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'realizor',\n type: {\n option: {\n defined: 'Realizor',\n },\n },\n },\n ],\n },\n },\n ],\n types: [\n {\n name: 'Realizor',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'program',\n type: 'publicKey',\n },\n {\n name: 'metadata',\n type: 'publicKey',\n },\n ],\n },\n },\n {\n name: 'WhitelistEntry',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'programId',\n type: 'publicKey',\n },\n ],\n },\n },\n ],\n errors: [\n {\n code: 100,\n name: 'InvalidTimestamp',\n msg: 'Vesting end must be greater than the current unix timestamp.',\n },\n {\n code: 101,\n name: 'InvalidPeriod',\n msg: 'The number of vesting periods must be greater than zero.',\n },\n {\n code: 102,\n name: 'InvalidDepositAmount',\n msg: 'The vesting deposit amount must be greater than zero.',\n },\n {\n code: 103,\n name: 'InvalidWhitelistEntry',\n msg: 'The Whitelist entry is not a valid program address.',\n },\n {\n code: 104,\n name: 'InvalidProgramAddress',\n msg: 'Invalid program address. Did you provide the correct nonce?',\n },\n {\n code: 105,\n name: 'InvalidVaultOwner',\n msg: 'Invalid vault owner.',\n },\n {\n code: 106,\n name: 'InvalidVaultAmount',\n msg: 'Vault amount must be zero.',\n },\n {\n code: 107,\n name: 'InsufficientWithdrawalBalance',\n msg: 'Insufficient withdrawal balance.',\n },\n {\n code: 108,\n name: 'WhitelistFull',\n msg: 'Whitelist is full',\n },\n {\n code: 109,\n name: 'WhitelistEntryAlreadyExists',\n msg: 'Whitelist entry already exists',\n },\n {\n code: 110,\n name: 'InsufficientWhitelistDepositAmount',\n msg: 'Balance must go up when performing a whitelist deposit',\n },\n {\n code: 111,\n name: 'WhitelistDepositOverflow',\n msg: 'Cannot deposit more than withdrawn',\n },\n {\n code: 112,\n name: 'WhitelistWithdrawLimit',\n msg: 'Tried to withdraw over the specified limit',\n },\n {\n code: 113,\n name: 'WhitelistEntryNotFound',\n msg: 'Whitelist entry not found.',\n },\n {\n code: 114,\n name: 'Unauthorized',\n msg: 'You do not have sufficient permissions to perform this action.',\n },\n {\n code: 115,\n name: 'UnableToWithdrawWhileStaked',\n msg: 'You are unable to realize projected rewards until unstaking.',\n },\n {\n code: 116,\n name: 'InvalidLockRealizor',\n msg: \"The given lock realizor doesn't match the vesting account.\",\n },\n {\n code: 117,\n name: 'UnrealizedVesting',\n msg: 'You have not realized this vesting account.',\n },\n {\n code: 118,\n name: 'InvalidSchedule',\n msg: 'Invalid vesting schedule given.',\n },\n ],\n};\n\nexport default idl;\n","import { Idl } from '@project-serum/anchor';\n\nconst idl: Idl = {\n version: '0.0.0',\n name: 'registry',\n instructions: [\n {\n name: 'initialize',\n accounts: [\n {\n name: 'registrar',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'rewardEventQ',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'poolMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'mint',\n type: 'publicKey',\n },\n {\n name: 'authority',\n type: 'publicKey',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'withdrawalTimelock',\n type: 'i64',\n },\n {\n name: 'stakeRate',\n type: 'u64',\n },\n {\n name: 'rewardQLen',\n type: 'u32',\n },\n ],\n },\n {\n name: 'updateRegistrar',\n accounts: [\n {\n name: 'registrar',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'newAuthority',\n type: {\n option: 'publicKey',\n },\n },\n {\n name: 'withdrawalTimelock',\n type: {\n option: 'i64',\n },\n },\n ],\n },\n {\n name: 'createMember',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'balances',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'balancesLocked',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'nonce',\n type: 'u8',\n },\n ],\n },\n {\n name: 'updateMember',\n accounts: [\n {\n name: 'member',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'metadata',\n type: {\n option: 'publicKey',\n },\n },\n ],\n },\n {\n name: 'deposit',\n accounts: [\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositorAuthority',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'depositLocked',\n accounts: [\n {\n name: 'vesting',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vestingVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositorAuthority',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'memberVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'registry',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'stake',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rewardEventQ',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'poolMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'balances',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'balancesLocked',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'registrarSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'sptAmount',\n type: 'u64',\n },\n {\n name: 'locked',\n type: 'bool',\n },\n ],\n },\n {\n name: 'startUnstake',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rewardEventQ',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'poolMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'pendingWithdrawal',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'balances',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'balancesLocked',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'sptAmount',\n type: 'u64',\n },\n {\n name: 'locked',\n type: 'bool',\n },\n ],\n },\n {\n name: 'endUnstake',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'pendingWithdrawal',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'withdraw',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'depositor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'withdrawLocked',\n accounts: [\n {\n name: 'vesting',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vestingVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vestingSigner',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'memberVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'memberSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'registry',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'dropReward',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rewardEventQ',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'poolMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vendor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vendorVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'depositorAuthority',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'kind',\n type: {\n defined: 'RewardVendorKind',\n },\n },\n {\n name: 'total',\n type: 'u64',\n },\n {\n name: 'expiryTs',\n type: 'i64',\n },\n {\n name: 'expiryReceiver',\n type: 'publicKey',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n ],\n },\n {\n name: 'claimReward',\n accounts: [\n {\n name: 'cmn',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'balances',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'balancesLocked',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'vendor',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vendorSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: 'to',\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'claimRewardLocked',\n accounts: [\n {\n name: 'cmn',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'member',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'beneficiary',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'balances',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'balancesLocked',\n accounts: [\n {\n name: 'spt',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultStake',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vaultPw',\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: 'vendor',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vendorSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: 'registry',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'lockupProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'nonce',\n type: 'u8',\n },\n ],\n },\n {\n name: 'expireReward',\n accounts: [\n {\n name: 'registrar',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vendor',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'vendorSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'expiryReceiver',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'expiryReceiverToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'clock',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n state: {\n struct: {\n name: 'Registry',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'lockupProgram',\n type: 'publicKey',\n },\n ],\n },\n },\n methods: [\n {\n name: 'new',\n accounts: [\n {\n name: 'lockupProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'setLockupProgram',\n accounts: [\n {\n name: 'authority',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'lockupProgram',\n type: 'publicKey',\n },\n ],\n },\n ],\n },\n accounts: [\n {\n name: 'Registrar',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'authority',\n type: 'publicKey',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'withdrawalTimelock',\n type: 'i64',\n },\n {\n name: 'rewardEventQ',\n type: 'publicKey',\n },\n {\n name: 'mint',\n type: 'publicKey',\n },\n {\n name: 'poolMint',\n type: 'publicKey',\n },\n {\n name: 'stakeRate',\n type: 'u64',\n },\n ],\n },\n },\n {\n name: 'Member',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'registrar',\n type: 'publicKey',\n },\n {\n name: 'beneficiary',\n type: 'publicKey',\n },\n {\n name: 'metadata',\n type: 'publicKey',\n },\n {\n name: 'balances',\n type: {\n defined: 'BalanceSandbox',\n },\n },\n {\n name: 'balancesLocked',\n type: {\n defined: 'BalanceSandbox',\n },\n },\n {\n name: 'rewardsCursor',\n type: 'u32',\n },\n {\n name: 'lastStakeTs',\n type: 'i64',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n ],\n },\n },\n {\n name: 'PendingWithdrawal',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'registrar',\n type: 'publicKey',\n },\n {\n name: 'member',\n type: 'publicKey',\n },\n {\n name: 'burned',\n type: 'bool',\n },\n {\n name: 'pool',\n type: 'publicKey',\n },\n {\n name: 'startTs',\n type: 'i64',\n },\n {\n name: 'endTs',\n type: 'i64',\n },\n {\n name: 'amount',\n type: 'u64',\n },\n {\n name: 'locked',\n type: 'bool',\n },\n ],\n },\n },\n {\n name: 'RewardQueue',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'head',\n type: 'u32',\n },\n {\n name: 'tail',\n type: 'u32',\n },\n {\n name: 'events',\n type: {\n vec: {\n defined: 'RewardEvent',\n },\n },\n },\n ],\n },\n },\n {\n name: 'RewardVendor',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'registrar',\n type: 'publicKey',\n },\n {\n name: 'vault',\n type: 'publicKey',\n },\n {\n name: 'mint',\n type: 'publicKey',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'poolTokenSupply',\n type: 'u64',\n },\n {\n name: 'rewardEventQCursor',\n type: 'u32',\n },\n {\n name: 'startTs',\n type: 'i64',\n },\n {\n name: 'expiryTs',\n type: 'i64',\n },\n {\n name: 'expiryReceiver',\n type: 'publicKey',\n },\n {\n name: 'from',\n type: 'publicKey',\n },\n {\n name: 'total',\n type: 'u64',\n },\n {\n name: 'expired',\n type: 'bool',\n },\n {\n name: 'kind',\n type: {\n defined: 'RewardVendorKind',\n },\n },\n ],\n },\n },\n ],\n types: [\n {\n name: 'BalanceSandbox',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'spt',\n type: 'publicKey',\n },\n {\n name: 'vault',\n type: 'publicKey',\n },\n {\n name: 'vaultStake',\n type: 'publicKey',\n },\n {\n name: 'vaultPw',\n type: 'publicKey',\n },\n ],\n },\n },\n {\n name: 'RewardEvent',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'vendor',\n type: 'publicKey',\n },\n {\n name: 'ts',\n type: 'i64',\n },\n {\n name: 'locked',\n type: 'bool',\n },\n ],\n },\n },\n {\n name: 'RewardVendorKind',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'Unlocked',\n },\n {\n name: 'Locked',\n fields: [\n {\n name: 'start_ts',\n type: 'i64',\n },\n {\n name: 'end_ts',\n type: 'i64',\n },\n {\n name: 'period_count',\n type: 'u64',\n },\n ],\n },\n ],\n },\n },\n ],\n errors: [\n {\n code: 100,\n name: 'RewardQAlreadyInitialized',\n msg: 'The given reward queue has already been initialized.',\n },\n {\n code: 101,\n name: 'InvalidNonce',\n msg: \"The nonce given doesn't derive a valid program address.\",\n },\n {\n code: 102,\n name: 'InvalidPoolMintAuthority',\n msg: 'Invalid pool mint authority',\n },\n {\n code: 103,\n name: 'InvalidMemberSigner',\n msg: \"Member signer doesn't match the derived address.\",\n },\n {\n code: 104,\n name: 'InvalidVaultDeposit',\n msg: 'The given vault owner must match the signing depositor.',\n },\n {\n code: 105,\n name: 'InvalidDepositor',\n msg: \"The signing depositor doesn't match either of the balance accounts\",\n },\n {\n code: 106,\n name: 'InvalidVault',\n msg: 'The vault given does not match the vault expected.',\n },\n {\n code: 107,\n name: 'InvalidVaultOwner',\n msg: 'Invalid vault owner.',\n },\n {\n code: 108,\n name: 'Unknown',\n msg: 'An unknown error has occured.',\n },\n {\n code: 109,\n name: 'UnstakeTimelock',\n msg: 'The unstake timelock has not yet expired.',\n },\n {\n code: 110,\n name: 'InsufficientReward',\n msg: 'Reward vendors must have at least one token unit per pool token',\n },\n {\n code: 111,\n name: 'InvalidExpiry',\n msg: 'Reward expiry must be after the current clock timestamp.',\n },\n {\n code: 112,\n name: 'VendorExpired',\n msg: 'The reward vendor has been expired.',\n },\n {\n code: 113,\n name: 'CursorAlreadyProcessed',\n msg: 'This reward has already been processed.',\n },\n {\n code: 114,\n name: 'NotStakedDuringDrop',\n msg: 'The account was not staked at the time of this reward.',\n },\n {\n code: 115,\n name: 'VendorNotYetExpired',\n msg: 'The vendor is not yet eligible for expiry.',\n },\n {\n code: 116,\n name: 'RewardsNeedsProcessing',\n msg: 'Please collect your reward before otherwise using the program.',\n },\n {\n code: 117,\n name: 'ExpectedLockedVendor',\n msg: 'Locked reward vendor expected but an unlocked vendor was given.',\n },\n {\n code: 118,\n name: 'ExpectedUnlockedVendor',\n msg: 'Unlocked reward vendor expected but a locked vendor was given.',\n },\n {\n code: 119,\n name: 'InvalidVestingSigner',\n msg: 'Locked deposit from an invalid deposit authority.',\n },\n {\n code: 120,\n name: 'UnrealizedReward',\n msg: 'Locked rewards cannot be realized until one unstaked all tokens.',\n },\n {\n code: 121,\n name: 'InvalidBeneficiary',\n msg: \"The beneficiary doesn't match.\",\n },\n {\n code: 122,\n name: 'InvalidRealizorMetadata',\n msg: 'The given member account does not match the realizor metadata.',\n },\n {\n code: 123,\n name: 'InvalidVestingSchedule',\n msg: 'Invalid vesting schedule for the locked reward.',\n },\n {\n code: 124,\n name: 'InvalidProgramAuthority',\n msg: 'Please specify the correct authority for this program.',\n },\n ],\n};\n\nexport default idl;\n","import { Idl } from '@project-serum/anchor';\n\nconst idl: Idl = {\n version: '0.0.0',\n name: 'multisig',\n instructions: [\n {\n name: 'createMultisig',\n accounts: [\n {\n name: 'multisig',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'owners',\n type: {\n vec: 'publicKey',\n },\n },\n {\n name: 'threshold',\n type: 'u64',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n ],\n },\n {\n name: 'createTransaction',\n accounts: [\n {\n name: 'multisig',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'transaction',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'proposer',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'pid',\n type: 'publicKey',\n },\n {\n name: 'accs',\n type: {\n vec: {\n defined: 'TransactionAccount',\n },\n },\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n },\n {\n name: 'approve',\n accounts: [\n {\n name: 'multisig',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'transaction',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'owner',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'setOwners',\n accounts: [\n {\n name: 'multisig',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'multisigSigner',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'owners',\n type: {\n vec: 'publicKey',\n },\n },\n ],\n },\n {\n name: 'changeThreshold',\n accounts: [\n {\n name: 'multisig',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'multisigSigner',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'threshold',\n type: 'u64',\n },\n ],\n },\n {\n name: 'executeTransaction',\n accounts: [\n {\n name: 'multisig',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'multisigSigner',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'transaction',\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: 'Multisig',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'owners',\n type: {\n vec: 'publicKey',\n },\n },\n {\n name: 'threshold',\n type: 'u64',\n },\n {\n name: 'nonce',\n type: 'u8',\n },\n {\n name: 'ownerSetSeqno',\n type: 'u32',\n },\n ],\n },\n },\n {\n name: 'Transaction',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'multisig',\n type: 'publicKey',\n },\n {\n name: 'programId',\n type: 'publicKey',\n },\n {\n name: 'accounts',\n type: {\n vec: {\n defined: 'TransactionAccount',\n },\n },\n },\n {\n name: 'data',\n type: 'bytes',\n },\n {\n name: 'signers',\n type: {\n vec: 'bool',\n },\n },\n {\n name: 'didExecute',\n type: 'bool',\n },\n {\n name: 'ownerSetSeqno',\n type: 'u32',\n },\n ],\n },\n },\n ],\n types: [\n {\n name: 'TransactionAccount',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'pubkey',\n type: 'publicKey',\n },\n {\n name: 'isSigner',\n type: 'bool',\n },\n {\n name: 'isWritable',\n type: 'bool',\n },\n ],\n },\n },\n ],\n errors: [\n {\n code: 100,\n name: 'InvalidOwner',\n msg: 'The given owner is not part of this multisig.',\n },\n {\n code: 101,\n name: 'NotEnoughSigners',\n msg: 'Not enough owners signed this transaction.',\n },\n {\n code: 102,\n name: 'TransactionAlreadySigned',\n msg: 'Cannot delete a transaction that has been signed by an owner.',\n },\n {\n code: 103,\n name: 'Overflow',\n msg: 'Overflow when adding.',\n },\n {\n code: 104,\n name: 'UnableToDelete',\n msg: 'Cannot delete a transaction the owner did not create.',\n },\n {\n code: 105,\n name: 'AlreadyExecuted',\n msg: 'The given transaction has already been executed.',\n },\n {\n code: 106,\n name: 'InvalidThreshold',\n msg: 'Threshold must be less than or equal to the number of owners.',\n },\n ],\n};\n\nexport default idl;\n","import React, {\n PropsWithChildren,\n ReactElement,\n ReactNode,\n useMemo,\n useContext,\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport { Connection, ConfirmOptions } from '@solana/web3.js';\n// @ts-ignore\nimport Wallet from '@project-serum/sol-wallet-adapter';\nimport { Provider } from '@project-serum/common';\nimport { Program } from '@project-serum/anchor';\nimport { State as StoreState } from '../../store/reducer';\nimport LockupIdl from '../../idl/lockup';\nimport RegistryIdl from '../../idl/registry';\nimport MultisigIdl from '../../idl/multisig';\n\nexport function useWallet(): WalletContextValues {\n const w = useContext(WalletContext);\n if (!w) {\n throw new Error('Missing wallet context');\n }\n return w;\n}\n\nconst WalletContext = React.createContext(null);\n\ntype WalletContextValues = {\n wallet: Wallet;\n lockupClient: Program;\n registryClient: Program;\n multisigClient: Program;\n};\n\nexport default function WalletProvider(\n props: PropsWithChildren,\n): ReactElement {\n const { walletProvider, network } = useSelector((state: StoreState) => {\n return {\n walletProvider: state.common.walletProvider,\n network: state.common.network,\n };\n });\n\n const {\n wallet,\n lockupClient,\n registryClient,\n multisigClient,\n } = useMemo(() => {\n const opts: ConfirmOptions = {\n preflightCommitment: 'recent',\n commitment: 'recent',\n };\n const connection = new Connection(network.url, opts.preflightCommitment);\n const wallet = new Wallet(walletProvider, network.url);\n const provider = new Provider(connection, wallet, opts);\n\n const lockupClient = new Program(\n LockupIdl,\n network.lockupProgramId,\n provider,\n );\n const registryClient = new Program(\n RegistryIdl,\n network.registryProgramId,\n provider,\n );\n\n const multisigClient = new Program(\n MultisigIdl,\n network.multisigProgramId,\n provider,\n );\n\n return {\n wallet,\n lockupClient,\n registryClient,\n multisigClient,\n };\n }, [walletProvider, network]);\n\n return (\n \n {props.children}\n \n );\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DexInstructions = exports.decodeInstruction = exports.encodeInstruction = exports.INSTRUCTION_LAYOUT = exports.NEW_ORDER_V3_OWNER_INDEX = exports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = exports.NEW_ORDER_OWNER_INDEX = exports.NEW_ORDER_OPEN_ORDERS_INDEX = exports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = exports.SETTLE_FUNDS_BASE_WALLET_INDEX = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst token_instructions_1 = require(\"./token-instructions\");\n// NOTE: Update these if the position of arguments for the settleFunds instruction changes\nexports.SETTLE_FUNDS_BASE_WALLET_INDEX = 5;\nexports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = 6;\n// NOTE: Update these if the position of arguments for the newOrder instruction changes\nexports.NEW_ORDER_OPEN_ORDERS_INDEX = 1;\nexports.NEW_ORDER_OWNER_INDEX = 4;\n// NOTE: Update these if the position of arguments for the newOrder instruction changes\nexports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = 1;\nexports.NEW_ORDER_V3_OWNER_INDEX = 7;\nexports.INSTRUCTION_LAYOUT = new layout_1.VersionedLayout(0, buffer_layout_1.union(buffer_layout_1.u32('instruction')));\nexports.INSTRUCTION_LAYOUT.inner.addVariant(0, buffer_layout_1.struct([\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n buffer_layout_1.u16('feeRateBps'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.u64('quoteDustThreshold'),\n]), 'initializeMarket');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(1, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u64('limitPrice'),\n layout_1.u64('maxQuantity'),\n layout_1.orderTypeLayout('orderType'),\n layout_1.u64('clientId'),\n]), 'newOrder');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(2, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'matchOrders');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(3, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'consumeEvents');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(4, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n buffer_layout_1.u8('openOrdersSlot'),\n]), 'cancelOrder');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(5, buffer_layout_1.struct([]), 'settleFunds');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(6, buffer_layout_1.struct([layout_1.u64('clientId')]), 'cancelOrderByClientId');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(10, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u64('limitPrice'),\n layout_1.u64('maxBaseQuantity'),\n layout_1.u64('maxQuoteQuantity'),\n layout_1.selfTradeBehaviorLayout('selfTradeBehavior'),\n layout_1.orderTypeLayout('orderType'),\n layout_1.u64('clientId'),\n buffer_layout_1.u16('limit'),\n]), 'newOrderV3');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(11, buffer_layout_1.struct([layout_1.sideLayout('side'), layout_1.u128('orderId')]), 'cancelOrderV2');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(12, buffer_layout_1.struct([layout_1.u64('clientId')]), 'cancelOrderByClientIdV2');\nfunction encodeInstruction(instruction) {\n const b = Buffer.alloc(100);\n return b.slice(0, exports.INSTRUCTION_LAYOUT.encode(instruction, b));\n}\nexports.encodeInstruction = encodeInstruction;\nfunction decodeInstruction(message) {\n return exports.INSTRUCTION_LAYOUT.decode(message);\n}\nexports.decodeInstruction = decodeInstruction;\nclass DexInstructions {\n static initializeMarket({ market, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, baseMint, quoteMint, baseLotSize, quoteLotSize, feeRateBps, vaultSignerNonce, quoteDustThreshold, programId, }) {\n let rentSysvar = new web3_js_1.PublicKey('SysvarRent111111111111111111111111111111111');\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: baseMint, isSigner: false, isWritable: false },\n { pubkey: quoteMint, isSigner: false, isWritable: false },\n { pubkey: rentSysvar, isSigner: false, isWritable: false },\n ],\n programId,\n data: encodeInstruction({\n initializeMarket: {\n baseLotSize,\n quoteLotSize,\n feeRateBps,\n vaultSignerNonce,\n quoteDustThreshold,\n },\n }),\n });\n }\n static newOrder({ market, openOrders, payer, owner, requestQueue, baseVault, quoteVault, side, limitPrice, maxQuantity, orderType, clientId, programId, feeDiscountPubkey = null, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n if (feeDiscountPubkey) {\n keys.push({\n pubkey: feeDiscountPubkey,\n isSigner: false,\n isWritable: false,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n newOrder: clientId\n ? { side, limitPrice, maxQuantity, orderType, clientId }\n : { side, limitPrice, maxQuantity, orderType },\n }),\n });\n }\n static newOrderV3({ market, openOrders, payer, owner, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, orderType, clientId, programId, selfTradeBehavior, feeDiscountPubkey = null, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n if (feeDiscountPubkey) {\n keys.push({\n pubkey: feeDiscountPubkey,\n isSigner: false,\n isWritable: false,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n newOrderV3: {\n side,\n limitPrice,\n maxBaseQuantity,\n maxQuoteQuantity,\n selfTradeBehavior,\n orderType,\n clientId,\n limit: 65535,\n },\n }),\n });\n }\n static matchOrders({ market, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, limit, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({ matchOrders: { limit } }),\n });\n }\n static consumeEvents({ market, eventQueue, openOrdersAccounts, limit, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n ...openOrdersAccounts.map((account) => ({\n pubkey: account,\n isSigner: false,\n isWritable: true,\n })),\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({ consumeEvents: { limit } }),\n });\n }\n static cancelOrder({ market, openOrders, owner, requestQueue, side, orderId, openOrdersSlot, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ],\n programId,\n data: encodeInstruction({\n cancelOrder: { side, orderId, openOrders, openOrdersSlot },\n }),\n });\n }\n static cancelOrderV2({ market, bids, asks, eventQueue, openOrders, owner, side, orderId, openOrdersSlot, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderV2: { side, orderId },\n }),\n });\n }\n static cancelOrderByClientId({ market, openOrders, owner, requestQueue, clientId, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderByClientId: { clientId },\n }),\n });\n }\n static cancelOrderByClientIdV2({ market, openOrders, owner, bids, asks, eventQueue, clientId, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderByClientIdV2: { clientId },\n }),\n });\n }\n static settleFunds({ market, openOrders, owner, baseVault, quoteVault, baseWallet, quoteWallet, vaultSigner, programId, referrerQuoteWallet = null, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: baseWallet, isSigner: false, isWritable: true },\n { pubkey: quoteWallet, isSigner: false, isWritable: true },\n { pubkey: vaultSigner, isSigner: false, isWritable: false },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ];\n if (referrerQuoteWallet) {\n keys.push({\n pubkey: referrerQuoteWallet,\n isSigner: false,\n isWritable: true,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n settleFunds: {},\n }),\n });\n }\n}\nexports.DexInstructions = DexInstructions;\n//# sourceMappingURL=instructions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_QUEUE_LAYOUT = exports.REQUEST_QUEUE_LAYOUT = exports.decodeEventQueue = exports.decodeRequestQueue = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst REQUEST_QUEUE_HEADER = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n buffer_layout_1.u32('head'),\n layout_1.zeros(4),\n buffer_layout_1.u32('count'),\n layout_1.zeros(4),\n buffer_layout_1.u32('nextSeqNum'),\n layout_1.zeros(4),\n]);\nconst REQUEST_FLAGS = buffer_layout_1.bits(buffer_layout_1.u8(), false, 'requestFlags');\nREQUEST_FLAGS.addBoolean('newOrder');\nREQUEST_FLAGS.addBoolean('cancelOrder');\nREQUEST_FLAGS.addBoolean('bid');\nREQUEST_FLAGS.addBoolean('postOnly');\nREQUEST_FLAGS.addBoolean('ioc');\nconst REQUEST = buffer_layout_1.struct([\n REQUEST_FLAGS,\n buffer_layout_1.u8('openOrdersSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(5),\n layout_1.u64('maxBaseSizeOrCancelId'),\n layout_1.u64('nativeQuoteQuantityLocked'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n layout_1.u64('clientOrderId'),\n]);\nconst EVENT_QUEUE_HEADER = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n buffer_layout_1.u32('head'),\n layout_1.zeros(4),\n buffer_layout_1.u32('count'),\n layout_1.zeros(4),\n buffer_layout_1.u32('seqNum'),\n layout_1.zeros(4),\n]);\nconst EVENT_FLAGS = buffer_layout_1.bits(buffer_layout_1.u8(), false, 'eventFlags');\nEVENT_FLAGS.addBoolean('fill');\nEVENT_FLAGS.addBoolean('out');\nEVENT_FLAGS.addBoolean('bid');\nEVENT_FLAGS.addBoolean('maker');\nconst EVENT = buffer_layout_1.struct([\n EVENT_FLAGS,\n buffer_layout_1.u8('openOrdersSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(5),\n layout_1.u64('nativeQuantityReleased'),\n layout_1.u64('nativeQuantityPaid'),\n layout_1.u64('nativeFeeOrRebate'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n layout_1.u64('clientOrderId'),\n]);\nfunction decodeQueue(headerLayout, nodeLayout, buffer, history) {\n const header = headerLayout.decode(buffer);\n const allocLen = Math.floor((buffer.length - headerLayout.span) / nodeLayout.span);\n const nodes = [];\n if (history) {\n for (let i = 0; i < Math.min(history, allocLen); ++i) {\n const nodeIndex = (header.head + header.count + allocLen - 1 - i) % allocLen;\n nodes.push(nodeLayout.decode(buffer, headerLayout.span + nodeIndex * nodeLayout.span));\n }\n }\n else {\n for (let i = 0; i < header.count; ++i) {\n const nodeIndex = (header.head + i) % allocLen;\n nodes.push(nodeLayout.decode(buffer, headerLayout.span + nodeIndex * nodeLayout.span));\n }\n }\n return { header, nodes };\n}\nfunction decodeRequestQueue(buffer, history) {\n const { header, nodes } = decodeQueue(REQUEST_QUEUE_HEADER, REQUEST, buffer, history);\n if (!header.accountFlags.initialized || !header.accountFlags.requestQueue) {\n throw new Error('Invalid requests queue');\n }\n return nodes;\n}\nexports.decodeRequestQueue = decodeRequestQueue;\nfunction decodeEventQueue(buffer, history) {\n const { header, nodes } = decodeQueue(EVENT_QUEUE_HEADER, EVENT, buffer, history);\n if (!header.accountFlags.initialized || !header.accountFlags.eventQueue) {\n throw new Error('Invalid events queue');\n }\n return nodes;\n}\nexports.decodeEventQueue = decodeEventQueue;\nexports.REQUEST_QUEUE_LAYOUT = {\n HEADER: REQUEST_QUEUE_HEADER,\n NODE: REQUEST,\n};\nexports.EVENT_QUEUE_LAYOUT = {\n HEADER: EVENT_QUEUE_HEADER,\n NODE: EVENT,\n};\n//# sourceMappingURL=queue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeeTier = exports.getFeeRates = exports.supportsSrmFeeDiscounts = void 0;\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nfunction supportsSrmFeeDiscounts(programId) {\n return tokens_and_markets_1.getLayoutVersion(programId) > 1;\n}\nexports.supportsSrmFeeDiscounts = supportsSrmFeeDiscounts;\nfunction getFeeRates(feeTier) {\n if (feeTier === 1) {\n // SRM2\n return { taker: 0.002, maker: -0.0003 };\n }\n else if (feeTier === 2) {\n // SRM3\n return { taker: 0.0018, maker: -0.0003 };\n }\n else if (feeTier === 3) {\n // SRM4\n return { taker: 0.0016, maker: -0.0003 };\n }\n else if (feeTier === 4) {\n // SRM5\n return { taker: 0.0014, maker: -0.0003 };\n }\n else if (feeTier === 5) {\n // SRM6\n return { taker: 0.0012, maker: -0.0003 };\n }\n else if (feeTier === 6) {\n // MSRM\n return { taker: 0.001, maker: -0.0005 };\n }\n // Base\n return { taker: 0.0022, maker: -0.0003 };\n}\nexports.getFeeRates = getFeeRates;\nfunction getFeeTier(msrmBalance, srmBalance) {\n if (msrmBalance >= 1) {\n return 6;\n }\n else if (srmBalance >= 1000000) {\n return 5;\n }\n else if (srmBalance >= 100000) {\n return 4;\n }\n else if (srmBalance >= 10000) {\n return 3;\n }\n else if (srmBalance >= 1000) {\n return 2;\n }\n else if (srmBalance >= 100) {\n return 1;\n }\n else {\n return 0;\n }\n}\nexports.getFeeTier = getFeeTier;\n//# sourceMappingURL=fees.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.simulateTransaction = void 0;\n/** Copy of Connection.simulateTransaction that takes a commitment parameter. */\nasync function simulateTransaction(connection, transaction, commitment) {\n // @ts-ignore\n transaction.recentBlockhash = await connection._recentBlockhash(\n // @ts-ignore\n connection._disableBlockhashCaching);\n const signData = transaction.serializeMessage();\n // @ts-ignore\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config = { encoding: 'base64', commitment };\n const args = [encodedTransaction, config];\n // @ts-ignore\n const res = await connection._rpcRequest('simulateTransaction', args);\n if (res.error) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n}\nexports.simulateTransaction = simulateTransaction;\n//# sourceMappingURL=simulate-transaction.js.map","import React, { useState, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport BN from 'bn.js';\nimport { useSnackbar } from 'notistack';\nimport {\n Account,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_CLOCK_PUBKEY,\n} from '@solana/web3.js';\nimport Table from '@material-ui/core/Table';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport IconButton from '@material-ui/core/IconButton';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport FormControl from '@material-ui/core/FormControl';\nimport Typography from '@material-ui/core/Typography';\nimport { u64 } from '@solana/spl-token';\nimport { TokenInstructions } from '@project-serum/serum';\nimport { useWallet } from '../components/common/WalletProvider';\nimport { ViewTransactionOnExplorerButton } from '../components/common/Notification';\nimport { State as StoreState, ProgramAccount } from '../store/reducer';\nimport { ActionType } from '../store/actions';\nimport * as skin from '../skin';\nimport { toDisplay, toDisplayLabel } from '../utils/tokens';\nimport { memberSigner, registrarSigner } from '../utils/registry';\n\nexport default function Stake() {\n const { registryClient } = useWallet();\n const dispatch = useDispatch();\n const { member, memberAccount, registrarAccount, registrar } = useSelector(\n (state: StoreState) => {\n const registrarAccount =\n state.accounts[state.registry.registrar.toString()];\n return {\n member: state.registry.member,\n memberAccount: state.registry.member\n ? state.accounts[state.registry.member.toString()]\n : undefined,\n registrarAccount: registrarAccount,\n registrar: state.registry.registrar,\n };\n },\n );\n\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n\n const createPoolTokens = async (amount: number, isLocked: boolean) => {\n enqueueSnackbar(\n `Staking ${toDisplayLabel(registrarAccount.poolMint)} Pool tokens`,\n {\n variant: 'info',\n },\n );\n\n const tx = await registryClient.rpc.stake(new u64(amount), isLocked, {\n accounts: {\n registrar,\n rewardEventQ: registrarAccount.rewardEventQ,\n poolMint: registrarAccount.poolMint,\n member,\n beneficiary: registryClient.provider.wallet.publicKey,\n balances: memberAccount.balances,\n balancesLocked: memberAccount.balancesLocked,\n memberSigner: (\n await memberSigner(registryClient.programId, registrar, member!)\n ).publicKey,\n registrarSigner: (\n await registrarSigner(registryClient.programId, registrar)\n ).publicKey,\n clock: SYSVAR_CLOCK_PUBKEY,\n tokenProgram: TokenInstructions.TOKEN_PROGRAM_ID,\n },\n });\n closeSnackbar();\n enqueueSnackbar(`Staking complete`, {\n variant: 'success',\n action: ,\n });\n };\n\n const redeemPoolTokens = async (amount: number, isLocked: boolean) => {\n enqueueSnackbar(\n `Unstaking ${amount} ${toDisplayLabel(\n registrarAccount.poolMint,\n )} Pool tokens`,\n {\n variant: 'info',\n },\n );\n\n const pendingWithdrawal = new Account();\n const tx = await registryClient.rpc.startUnstake(\n new u64(amount),\n isLocked,\n {\n accounts: {\n registrar,\n rewardEventQ: registrarAccount.rewardEventQ,\n poolMint: registrarAccount.poolMint,\n\n pendingWithdrawal: pendingWithdrawal.publicKey,\n member,\n beneficiary: registryClient.provider.wallet.publicKey,\n balances: memberAccount.balances,\n balancesLocked: memberAccount.balancesLocked,\n\n memberSigner: (\n await memberSigner(registryClient.programId, registrar, member!)\n ).publicKey,\n\n tokenProgram: TokenInstructions.TOKEN_PROGRAM_ID,\n clock: SYSVAR_CLOCK_PUBKEY,\n rent: SYSVAR_RENT_PUBKEY,\n },\n signers: [pendingWithdrawal],\n instructions: [\n await registryClient.account.pendingWithdrawal.createInstruction(\n pendingWithdrawal,\n ),\n ],\n },\n );\n const pwAccount = await registryClient.account.pendingWithdrawal(\n pendingWithdrawal.publicKey,\n );\n dispatch({\n type: ActionType.RegistryCreatePendingWithdrawal,\n item: {\n pendingWithdrawal: {\n publicKey: pendingWithdrawal.publicKey,\n account: pwAccount,\n },\n },\n });\n closeSnackbar();\n enqueueSnackbar(`Stake transfer initiated`, {\n variant: 'success',\n action: ,\n });\n };\n\n const createPool = async (shares: number, isLocked: boolean) => {\n if (shares > 0) {\n createPoolTokens(shares, isLocked).catch(err => {\n console.error(err);\n enqueueSnackbar(`Error staking: ${err.toString()}`, {\n variant: 'error',\n });\n });\n }\n };\n const redeemPool = async (shares: number, isLocked: boolean) => {\n if (shares > 0) {\n redeemPoolTokens(shares, isLocked).catch(err => {\n console.error(err);\n enqueueSnackbar(`Error unstaking: ${err.toString()}`, {\n variant: 'error',\n });\n });\n }\n };\n\n return (\n
\n
\n
\n \n
\n \n
\n \n
\n );\n}\n\ntype PoolCardProps = {\n title: string;\n create: (shares: number, isLocked: boolean) => void;\n redeem: (shares: number, isLocked: boolean) => void;\n};\n\nfunction PoolCard(props: PoolCardProps) {\n const { title, create, redeem } = props;\n const [poolAmount, setPoolAmount] = useState(null);\n const [isLocked, setIsLocked] = useState(false);\n const { poolTokenMint, member, registrarAccount, mint } = useSelector(\n (state: StoreState) => {\n const registrarAccount =\n state.accounts[state.registry.registrar.toString()];\n const poolTokenMint = {\n publicKey: registrarAccount.poolMint,\n account: state.accounts[registrarAccount.poolMint.toString()],\n };\n return {\n poolTokenMint,\n member: state.registry.member,\n registrarAccount,\n mint: {\n publicKey: registrarAccount.mint,\n account: state.accounts[registrarAccount.mint.toString()],\n },\n };\n },\n );\n\n const pricePerShare = toDisplay(\n registrarAccount.stakeRate,\n mint.account.decimals,\n );\n\n const cost = poolAmount\n ? toDisplay(\n registrarAccount.stakeRate.mul(new BN(poolAmount)),\n mint.account.decimals,\n )\n : 0;\n return (\n \n
\n \n \n \n
\n \n \n \n \n Please enter the amount of pool tokens you would like to purchase in\n the form below. Upon pressing stake you will create new pool\n tokens at a fixed price, adding to the amount of pool tokens\n outstanding.\n \n
\n \n Unstaking works similarly, except one must incur an unbonding period\n where funds will not be able to be retrieved until the unbonding\n period ends. At the end of the unbonding period, click the blue\n checkbox next to your pending transfer. If the checkbox is grey,\n your unbonding period has not yet completed.\n \n
\n \n Total pool tokens outstanding\n \n {poolTokenMint.account.supply.toString()}\n \n Price per pool token\n \n {pricePerShare.toString()}\n \n Your total cost\n \n \n {cost} {toDisplayLabel(mint.publicKey)}\n \n \n Unbonding period (days)\n \n \n {(\n registrarAccount.withdrawalTimelock /\n (60 * 60 * 24.0)\n ).toString()}\n \n \n
\n
\n \n setPoolAmount(parseInt(e.target.value))}\n />\n \n
\n
\n
\n create(poolAmount as number, isLocked)}\n >\n Stake\n \n redeem(poolAmount as number, isLocked)}\n >\n Unstake\n \n
\n
\n setIsLocked(!isLocked)}\n />\n }\n labelPlacement={'start'}\n label=\"Locked balances\"\n />\n
\n
\n
\n
\n \n );\n}\n\ntype RedemptionListProps = {\n style: any;\n};\n\nfunction RedemptionList(props: RedemptionListProps) {\n const { registryClient } = useWallet();\n const dispatch = useDispatch();\n const { member, registrar, mint, pendingWithdrawals } = useSelector(\n (state: StoreState) => {\n const member = state.registry.member\n ? {\n publicKey: state.registry.member,\n account: state.accounts[state.registry.member.toString()],\n }\n : undefined;\n const registrar = {\n publicKey: state.registry.registrar!,\n account: state.accounts[state.registry.registrar.toString()],\n };\n const mint = {\n publicKey: registrar.account.mint,\n account: state.accounts[registrar.account.mint.toString()],\n };\n const pendingWithdrawals =\n state.registry.pendingWithdrawals === null\n ? null\n : state.registry.pendingWithdrawals.map(pw => {\n return {\n publicKey: pw,\n account: state.accounts[pw.toString()],\n };\n });\n return {\n member,\n registrar,\n mint,\n pendingWithdrawals,\n };\n },\n );\n\n useEffect(() => {\n if (!member) {\n return;\n }\n if (pendingWithdrawals !== null) {\n return;\n }\n\n // Only grab pending withdrawals for the current member account.\n const filter = Buffer.concat([\n registrar.publicKey.toBuffer(),\n member.publicKey.toBuffer(),\n ]);\n registryClient.account.pendingWithdrawal\n .all(filter)\n .then(pendingWithdrawals => {\n dispatch({\n type: ActionType.RegistrySetPendingWithdrawals,\n item: {\n pendingWithdrawals,\n },\n });\n });\n }, [\n dispatch,\n registrar,\n member,\n pendingWithdrawals,\n registryClient.account.pendingWithdrawal,\n ]);\n\n return (\n
\n \n \n \n Your Pending Transfers\n \n Click the checkmark to complete a transfer on or after the \"end\"\n date.\n \n
\n
\n {member && pendingWithdrawals === null ? (\n
\n \n
\n ) : pendingWithdrawals !== null && pendingWithdrawals.length > 0 ? (\n pendingWithdrawals.map((pw, idx) => {\n return (\n \n );\n })\n ) : (\n \n \n None found\n \n
\n )}\n \n \n \n \n );\n}\n\ntype PendingStakeListItemProps = {\n isLast?: boolean;\n registrar: ProgramAccount;\n pw: ProgramAccount;\n member: ProgramAccount;\n mint: ProgramAccount;\n};\n\nfunction PendingStakeListItem(props: PendingStakeListItemProps) {\n const { isLast, pw, member, registrar, mint } = props;\n const sptLabel = (() => {\n const isLocked = pw.account.locked;\n const l = isLocked ? '(locked)' : '';\n return `${toDisplay(\n pw.account.amount,\n mint.account.decimals,\n )} ${toDisplayLabel(mint.publicKey)} ${l}`;\n })();\n return (\n \n \n
\n \n {`${sptLabel}`}\n \n
\n
\n \n
\n \n \n {`Start: ${new Date(\n pw.account.startTs.toNumber() * 1000,\n ).toLocaleString()}`}\n \n \n {`End: ${new Date(\n pw.account.endTs.toNumber() * 1000,\n ).toLocaleString()}`}\n \n \n {pw.account.pool.toString()}\n \n \n );\n}\n\ntype PendingWithdrawalButtonProps = {\n registrar: ProgramAccount;\n pendingWithdrawal: ProgramAccount;\n member: ProgramAccount;\n};\n\nfunction PendingWithdrawalButton(props: PendingWithdrawalButtonProps) {\n const { pendingWithdrawal, member, registrar } = props;\n const { registryClient } = useWallet();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const dispatch = useDispatch();\n\n const endPendingWithdrawal = async () => {\n enqueueSnackbar(`Completing redemption`, {\n variant: 'info',\n });\n const balances = pendingWithdrawal.account.locked\n ? member.account.balancesLocked\n : member.account.balances;\n const tx = await registryClient.rpc.endUnstake({\n accounts: {\n registrar: registrar.publicKey,\n member: member.publicKey,\n beneficiary: registryClient.provider.wallet.publicKey,\n pendingWithdrawal: pendingWithdrawal.publicKey,\n vault: balances.vault,\n vaultPw: balances.vaultPw,\n memberSigner: (\n await memberSigner(\n registryClient.programId,\n registrar.publicKey,\n member.publicKey,\n )\n ).publicKey,\n clock: SYSVAR_CLOCK_PUBKEY,\n tokenProgram: TokenInstructions.TOKEN_PROGRAM_ID,\n },\n });\n\n const updatedPendingWithdrawal = {\n publicKey: pendingWithdrawal.publicKey,\n account: {\n ...pendingWithdrawal.account,\n burned: true,\n },\n };\n\n dispatch({\n type: ActionType.RegistryUpdatePendingWithdrawal,\n item: {\n pendingWithdrawal: updatedPendingWithdrawal,\n },\n });\n\n closeSnackbar();\n enqueueSnackbar(`Stake transfer completed`, {\n variant: 'success',\n action: ,\n });\n };\n\n let disabled = false;\n let color = skin.instance().ready;\n let onClick = async () =>\n endPendingWithdrawal().catch(err => {\n console.error(`Error completing transfer: ${err.toString()}`);\n enqueueSnackbar(\n `Error completing transfer. Wait for the transfer's timelock to end and try again.`,\n {\n variant: 'error',\n },\n );\n });\n if (pendingWithdrawal.account.burned) {\n disabled = true;\n color = skin.instance().active;\n onClick = async () => {};\n }\n\n if (pendingWithdrawal.account.endTs.toNumber() > Date.now() / 1000) {\n disabled = true;\n color = skin.instance().notReady;\n onClick = async () => {};\n }\n\n return (\n \n \n \n \n \n );\n}\n\nfunction AllPendingTransfers() {\n const { registryClient } = useWallet();\n const { registrar, registrarAccount, mintAccount } = useSelector(\n (state: StoreState) => {\n const registrarAccount =\n state.accounts[state.registry.registrar.toString()];\n return {\n registrar: state.registry.registrar,\n registrarAccount,\n mintAccount: state.accounts[registrarAccount.mint.toString()],\n };\n },\n );\n const [pendingTransfers, setPendingTransfers] = useState(null);\n useEffect(() => {\n const fetchAll = async () => {\n let transfers = await registryClient.account.pendingWithdrawal.all(\n registrar.toBuffer(),\n );\n transfers = transfers\n .filter((pw: any) => pw.account.burned === false)\n .sort((a, b) => {\n if (a.account.startTs < b.account.startTs) {\n return 1;\n } else if (a.account.startTs > b.account.startTs) {\n return -1;\n } else {\n return 0;\n }\n });\n setPendingTransfers(transfers);\n };\n fetchAll();\n }, [registryClient, registrar]);\n\n return (\n \n \n All pending transfers\n \n {pendingTransfers !== null ? (\n \n \n \n Member Account\n Amount\n Pool\n Locked\n Start\n End\n \n \n \n {pendingTransfers.map((pw: any) => (\n \n {pw.account.member.toString()}\n \n {toDisplay(\n pw.account.amount.toString(),\n mintAccount.decimals,\n )}\n \n \n {pw.account.amount.div(registrarAccount.stakeRate).toString()}\n \n {pw.account.locked.toString()}\n \n {new Date(pw.account.startTs.toNumber() * 1000).toString()}\n \n \n {new Date(pw.account.endTs.toNumber() * 1000).toString()}\n \n \n ))}\n \n
\n ) : (\n
\n \n
\n )}\n
\n );\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.array = exports.rustEnum = exports.str = exports.vecU8 = exports.tagged = exports.vec = exports.bool = exports.option = exports.publicKey = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.struct = exports.u32 = exports.u8 = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nvar buffer_layout_2 = require(\"buffer-layout\");\nObject.defineProperty(exports, \"u8\", { enumerable: true, get: function () { return buffer_layout_2.u8; } });\nObject.defineProperty(exports, \"u32\", { enumerable: true, get: function () { return buffer_layout_2.u32; } });\nObject.defineProperty(exports, \"struct\", { enumerable: true, get: function () { return buffer_layout_2.struct; } });\nclass BNLayout extends buffer_layout_1.Layout {\n constructor(span, signed, property) {\n super(span, property);\n this.blob = buffer_layout_1.blob(span);\n this.signed = signed;\n }\n decode(b, offset = 0) {\n const num = new bn_js_1.default(this.blob.decode(b, offset), 10, 'le');\n if (this.signed) {\n return num.fromTwos(this.span * 8).clone();\n }\n return num;\n }\n encode(src, b, offset = 0) {\n if (this.signed) {\n src = src.toTwos(this.span * 8);\n }\n return this.blob.encode(src.toArrayLike(Buffer, 'le', this.span), b, offset);\n }\n}\nfunction u64(property) {\n return new BNLayout(8, false, property);\n}\nexports.u64 = u64;\nfunction i64(property) {\n return new BNLayout(8, true, property);\n}\nexports.i64 = i64;\nfunction u128(property) {\n return new BNLayout(16, false, property);\n}\nexports.u128 = u128;\nfunction i128(property) {\n return new BNLayout(16, true, property);\n}\nexports.i128 = i128;\nclass WrappedLayout extends buffer_layout_1.Layout {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\nfunction publicKey(property) {\n return new WrappedLayout(buffer_layout_1.blob(32), (b) => new web3_js_1.PublicKey(b), (key) => key.toBuffer(), property);\n}\nexports.publicKey = publicKey;\nclass OptionLayout extends buffer_layout_1.Layout {\n constructor(layout, property) {\n super(-1, property);\n this.layout = layout;\n this.discriminator = buffer_layout_1.u8();\n }\n encode(src, b, offset = 0) {\n if (src === null || src === undefined) {\n return this.discriminator.encode(0, b, offset);\n }\n this.discriminator.encode(1, b, offset);\n return this.layout.encode(src, b, offset + 1) + 1;\n }\n decode(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return null;\n }\n else if (discriminator === 1) {\n return this.layout.decode(b, offset + 1);\n }\n throw new Error('Invalid option ' + this.property);\n }\n getSpan(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return 1;\n }\n else if (discriminator === 1) {\n return this.layout.getSpan(b, offset + 1) + 1;\n }\n throw new Error('Invalid option ' + this.property);\n }\n}\nfunction option(layout, property) {\n return new OptionLayout(layout, property);\n}\nexports.option = option;\nfunction bool(property) {\n return new WrappedLayout(buffer_layout_1.u8(), decodeBool, encodeBool, property);\n}\nexports.bool = bool;\nfunction decodeBool(value) {\n if (value === 0) {\n return false;\n }\n else if (value === 1) {\n return true;\n }\n throw new Error('Invalid bool: ' + value);\n}\nfunction encodeBool(value) {\n return value ? 1 : 0;\n}\nfunction vec(elementLayout, property) {\n const length = buffer_layout_1.u32('length');\n const layout = buffer_layout_1.struct([\n length,\n buffer_layout_1.seq(elementLayout, buffer_layout_1.offset(length, -length.span), 'values'),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, values => ({ values }), property);\n}\nexports.vec = vec;\nfunction tagged(tag, layout, property) {\n const wrappedLayout = buffer_layout_1.struct([\n u64('tag'),\n layout.replicate('data'),\n ]);\n function decodeTag({ tag: receivedTag, data }) {\n if (!receivedTag.eq(tag)) {\n throw new Error('Invalid tag, expected: ' +\n tag.toString('hex') +\n ', got: ' +\n receivedTag.toString('hex'));\n }\n return data;\n }\n return new WrappedLayout(wrappedLayout, decodeTag, data => ({ tag, data }), property);\n}\nexports.tagged = tagged;\nfunction vecU8(property) {\n const length = buffer_layout_1.u32('length');\n const layout = buffer_layout_1.struct([\n length,\n buffer_layout_1.blob(buffer_layout_1.offset(length, -length.span), 'data'),\n ]);\n return new WrappedLayout(layout, ({ data }) => data, data => ({ data }), property);\n}\nexports.vecU8 = vecU8;\nfunction str(property) {\n return new WrappedLayout(vecU8(), data => data.toString('utf-8'), s => Buffer.from(s, 'utf-8'), property);\n}\nexports.str = str;\nfunction rustEnum(variants, property) {\n const unionLayout = buffer_layout_1.union(buffer_layout_1.u8(), property);\n variants.forEach((variant, index) => unionLayout.addVariant(index, variant, variant.property));\n return unionLayout;\n}\nexports.rustEnum = rustEnum;\nfunction array(elementLayout, length, property) {\n const layout = buffer_layout_1.struct([\n buffer_layout_1.seq(elementLayout, length, 'values'),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, values => ({ values }), property);\n}\nexports.array = array;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenInstructions = exports.EVENT_QUEUE_LAYOUT = exports.REQUEST_QUEUE_LAYOUT = exports.decodeRequestQueue = exports.decodeEventQueue = exports.getLayoutVersion = exports.MARKETS = exports.TOKEN_MINTS = exports.supportsSrmFeeDiscounts = exports.getFeeRates = exports.getFeeTier = exports.NEW_ORDER_V3_OWNER_INDEX = exports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = exports.NEW_ORDER_OWNER_INDEX = exports.NEW_ORDER_OPEN_ORDERS_INDEX = exports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = exports.SETTLE_FUNDS_BASE_WALLET_INDEX = exports.decodeInstruction = exports.DexInstructions = exports.OpenOrders = exports.Orderbook = exports.Market = void 0;\nvar market_1 = require(\"./market\");\nObject.defineProperty(exports, \"Market\", { enumerable: true, get: function () { return market_1.Market; } });\nObject.defineProperty(exports, \"Orderbook\", { enumerable: true, get: function () { return market_1.Orderbook; } });\nObject.defineProperty(exports, \"OpenOrders\", { enumerable: true, get: function () { return market_1.OpenOrders; } });\nvar instructions_1 = require(\"./instructions\");\nObject.defineProperty(exports, \"DexInstructions\", { enumerable: true, get: function () { return instructions_1.DexInstructions; } });\nObject.defineProperty(exports, \"decodeInstruction\", { enumerable: true, get: function () { return instructions_1.decodeInstruction; } });\nObject.defineProperty(exports, \"SETTLE_FUNDS_BASE_WALLET_INDEX\", { enumerable: true, get: function () { return instructions_1.SETTLE_FUNDS_BASE_WALLET_INDEX; } });\nObject.defineProperty(exports, \"SETTLE_FUNDS_QUOTE_WALLET_INDEX\", { enumerable: true, get: function () { return instructions_1.SETTLE_FUNDS_QUOTE_WALLET_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_OPEN_ORDERS_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_OPEN_ORDERS_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_OWNER_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_OWNER_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_V3_OPEN_ORDERS_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_V3_OPEN_ORDERS_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_V3_OWNER_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_V3_OWNER_INDEX; } });\nvar fees_1 = require(\"./fees\");\nObject.defineProperty(exports, \"getFeeTier\", { enumerable: true, get: function () { return fees_1.getFeeTier; } });\nObject.defineProperty(exports, \"getFeeRates\", { enumerable: true, get: function () { return fees_1.getFeeRates; } });\nObject.defineProperty(exports, \"supportsSrmFeeDiscounts\", { enumerable: true, get: function () { return fees_1.supportsSrmFeeDiscounts; } });\nvar tokens_and_markets_1 = require(\"./tokens_and_markets\");\nObject.defineProperty(exports, \"TOKEN_MINTS\", { enumerable: true, get: function () { return tokens_and_markets_1.TOKEN_MINTS; } });\nObject.defineProperty(exports, \"MARKETS\", { enumerable: true, get: function () { return tokens_and_markets_1.MARKETS; } });\nObject.defineProperty(exports, \"getLayoutVersion\", { enumerable: true, get: function () { return tokens_and_markets_1.getLayoutVersion; } });\nvar queue_1 = require(\"./queue\");\nObject.defineProperty(exports, \"decodeEventQueue\", { enumerable: true, get: function () { return queue_1.decodeEventQueue; } });\nObject.defineProperty(exports, \"decodeRequestQueue\", { enumerable: true, get: function () { return queue_1.decodeRequestQueue; } });\nObject.defineProperty(exports, \"REQUEST_QUEUE_LAYOUT\", { enumerable: true, get: function () { return queue_1.REQUEST_QUEUE_LAYOUT; } });\nObject.defineProperty(exports, \"EVENT_QUEUE_LAYOUT\", { enumerable: true, get: function () { return queue_1.EVENT_QUEUE_LAYOUT; } });\nexports.TokenInstructions = __importStar(require(\"./token-instructions\"));\n__exportStar(require(\"./error\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMintDecimals = exports.Orderbook = exports.ORDERBOOK_LAYOUT = exports.OpenOrders = exports._OPEN_ORDERS_LAYOUT_V2 = exports._OPEN_ORDERS_LAYOUT_V1 = exports.Market = exports._MARKET_STATE_LAYOUT_V2 = exports._MARKET_STAT_LAYOUT_V1 = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst slab_1 = require(\"./slab\");\nconst instructions_1 = require(\"./instructions\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst queue_1 = require(\"./queue\");\nconst buffer_1 = require(\"buffer\");\nconst fees_1 = require(\"./fees\");\nconst token_instructions_1 = require(\"./token-instructions\");\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nexports._MARKET_STAT_LAYOUT_V1 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('ownAddress'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.publicKeyLayout('baseMint'),\n layout_1.publicKeyLayout('quoteMint'),\n layout_1.publicKeyLayout('baseVault'),\n layout_1.u64('baseDepositsTotal'),\n layout_1.u64('baseFeesAccrued'),\n layout_1.publicKeyLayout('quoteVault'),\n layout_1.u64('quoteDepositsTotal'),\n layout_1.u64('quoteFeesAccrued'),\n layout_1.u64('quoteDustThreshold'),\n layout_1.publicKeyLayout('requestQueue'),\n layout_1.publicKeyLayout('eventQueue'),\n layout_1.publicKeyLayout('bids'),\n layout_1.publicKeyLayout('asks'),\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n layout_1.u64('feeRateBps'),\n buffer_layout_1.blob(7),\n]);\nexports._MARKET_STATE_LAYOUT_V2 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('ownAddress'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.publicKeyLayout('baseMint'),\n layout_1.publicKeyLayout('quoteMint'),\n layout_1.publicKeyLayout('baseVault'),\n layout_1.u64('baseDepositsTotal'),\n layout_1.u64('baseFeesAccrued'),\n layout_1.publicKeyLayout('quoteVault'),\n layout_1.u64('quoteDepositsTotal'),\n layout_1.u64('quoteFeesAccrued'),\n layout_1.u64('quoteDustThreshold'),\n layout_1.publicKeyLayout('requestQueue'),\n layout_1.publicKeyLayout('eventQueue'),\n layout_1.publicKeyLayout('bids'),\n layout_1.publicKeyLayout('asks'),\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n layout_1.u64('feeRateBps'),\n layout_1.u64('referrerRebatesAccrued'),\n buffer_layout_1.blob(7),\n]);\nclass Market {\n constructor(decoded, baseMintDecimals, quoteMintDecimals, options = {}, programId) {\n const { skipPreflight = false, commitment = 'recent' } = options;\n if (!decoded.accountFlags.initialized || !decoded.accountFlags.market) {\n throw new Error('Invalid market state');\n }\n this._decoded = decoded;\n this._baseSplTokenDecimals = baseMintDecimals;\n this._quoteSplTokenDecimals = quoteMintDecimals;\n this._skipPreflight = skipPreflight;\n this._commitment = commitment;\n this._programId = programId;\n this._openOrdersAccountsCache = {};\n this._feeDiscountKeysCache = {};\n }\n static getLayout(programId) {\n if (tokens_and_markets_1.getLayoutVersion(programId) === 1) {\n return exports._MARKET_STAT_LAYOUT_V1;\n }\n return exports._MARKET_STATE_LAYOUT_V2;\n }\n static async findAccountsByMints(connection, baseMintAddress, quoteMintAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('baseMint'),\n bytes: baseMintAddress.toBase58(),\n },\n },\n {\n memcmp: {\n offset: Market.getLayout(programId).offsetOf('quoteMint'),\n bytes: quoteMintAddress.toBase58(),\n },\n },\n ];\n return getFilteredProgramAccounts(connection, programId, filters);\n }\n static async load(connection, address, options = {}, programId) {\n console.log('loading armani.');\n const { owner, data } = throwIfNull(await connection.getAccountInfo(address), 'Market not found');\n if (!owner.equals(programId)) {\n throw new Error('Address not owned by program: ' + owner.toBase58());\n }\n console.log('wtf');\n const decoded = this.getLayout(programId).decode(data);\n if (!decoded.accountFlags.initialized ||\n !decoded.accountFlags.market ||\n !decoded.ownAddress.equals(address)) {\n throw new Error('Invalid market');\n }\n const [baseMintDecimals, quoteMintDecimals] = await Promise.all([\n getMintDecimals(connection, decoded.baseMint),\n getMintDecimals(connection, decoded.quoteMint),\n ]);\n return new Market(decoded, baseMintDecimals, quoteMintDecimals, options, programId);\n }\n get programId() {\n return this._programId;\n }\n get address() {\n return this._decoded.ownAddress;\n }\n get publicKey() {\n return this.address;\n }\n get baseMintAddress() {\n return this._decoded.baseMint;\n }\n get quoteMintAddress() {\n return this._decoded.quoteMint;\n }\n get bidsAddress() {\n return this._decoded.bids;\n }\n get asksAddress() {\n return this._decoded.asks;\n }\n async loadBids(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.bids));\n return Orderbook.decode(this, data);\n }\n async loadAsks(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.asks));\n return Orderbook.decode(this, data);\n }\n async loadOrdersForOwner(connection, ownerAddress, cacheDurationMs = 0) {\n const [bids, asks, openOrdersAccounts] = await Promise.all([\n this.loadBids(connection),\n this.loadAsks(connection),\n this.findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs),\n ]);\n return this.filterForOpenOrders(bids, asks, openOrdersAccounts);\n }\n filterForOpenOrders(bids, asks, openOrdersAccounts) {\n return [...bids, ...asks].filter((order) => openOrdersAccounts.some((openOrders) => order.openOrdersAddress.equals(openOrders.address)));\n }\n async findBaseTokenAccountsForOwner(connection, ownerAddress, includeUnwrappedSol = false) {\n if (this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) && includeUnwrappedSol) {\n const [wrapped, unwrapped] = await Promise.all([\n this.findBaseTokenAccountsForOwner(connection, ownerAddress, false),\n connection.getAccountInfo(ownerAddress),\n ]);\n if (unwrapped !== null) {\n return [{ pubkey: ownerAddress, account: unwrapped }, ...wrapped];\n }\n return wrapped;\n }\n return await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, this.baseMintAddress);\n }\n async getTokenAccountsByOwnerForMint(connection, ownerAddress, mintAddress) {\n return (await connection.getTokenAccountsByOwner(ownerAddress, {\n mint: mintAddress,\n })).value;\n }\n async findQuoteTokenAccountsForOwner(connection, ownerAddress, includeUnwrappedSol = false) {\n if (this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) && includeUnwrappedSol) {\n const [wrapped, unwrapped] = await Promise.all([\n this.findQuoteTokenAccountsForOwner(connection, ownerAddress, false),\n connection.getAccountInfo(ownerAddress),\n ]);\n if (unwrapped !== null) {\n return [{ pubkey: ownerAddress, account: unwrapped }, ...wrapped];\n }\n return wrapped;\n }\n return await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, this.quoteMintAddress);\n }\n async findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs = 0) {\n const strOwner = ownerAddress.toBase58();\n const now = new Date().getTime();\n if (strOwner in this._openOrdersAccountsCache &&\n now - this._openOrdersAccountsCache[strOwner].ts < cacheDurationMs) {\n return this._openOrdersAccountsCache[strOwner].accounts;\n }\n const openOrdersAccountsForOwner = await OpenOrders.findForMarketAndOwner(connection, this.address, ownerAddress, this._programId);\n this._openOrdersAccountsCache[strOwner] = {\n accounts: openOrdersAccountsForOwner,\n ts: now,\n };\n return openOrdersAccountsForOwner;\n }\n async placeOrder(connection, { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey, }) {\n const { transaction, signers, } = await this.makePlaceOrderTransaction(connection, {\n owner,\n payer,\n side,\n price,\n size,\n orderType,\n clientId,\n openOrdersAddressKey,\n openOrdersAccount,\n feeDiscountPubkey,\n });\n return await this._sendTransaction(connection, transaction, [\n owner,\n ...signers,\n ]);\n }\n getSplTokenBalanceFromAccountInfo(accountInfo, decimals) {\n return divideBnToNumber(new bn_js_1.default(accountInfo.data.slice(64, 72), 10, 'le'), new bn_js_1.default(10).pow(new bn_js_1.default(decimals)));\n }\n get supportsSrmFeeDiscounts() {\n return fees_1.supportsSrmFeeDiscounts(this._programId);\n }\n get supportsReferralFees() {\n return tokens_and_markets_1.getLayoutVersion(this._programId) > 1;\n }\n get usesRequestQueue() {\n return tokens_and_markets_1.getLayoutVersion(this._programId) <= 2;\n }\n async findFeeDiscountKeys(connection, ownerAddress, cacheDurationMs = 0) {\n let sortedAccounts = [];\n const now = new Date().getTime();\n const strOwner = ownerAddress.toBase58();\n if (strOwner in this._feeDiscountKeysCache &&\n now - this._feeDiscountKeysCache[strOwner].ts < cacheDurationMs) {\n return this._feeDiscountKeysCache[strOwner].accounts;\n }\n if (this.supportsSrmFeeDiscounts) {\n // Fee discounts based on (M)SRM holdings supported in newer versions\n const msrmAccounts = (await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, token_instructions_1.MSRM_MINT)).map(({ pubkey, account }) => {\n const balance = this.getSplTokenBalanceFromAccountInfo(account, token_instructions_1.MSRM_DECIMALS);\n return {\n pubkey,\n mint: token_instructions_1.MSRM_MINT,\n balance,\n feeTier: fees_1.getFeeTier(balance, 0),\n };\n });\n const srmAccounts = (await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, token_instructions_1.SRM_MINT)).map(({ pubkey, account }) => {\n const balance = this.getSplTokenBalanceFromAccountInfo(account, token_instructions_1.SRM_DECIMALS);\n return {\n pubkey,\n mint: token_instructions_1.SRM_MINT,\n balance,\n feeTier: fees_1.getFeeTier(0, balance),\n };\n });\n sortedAccounts = msrmAccounts.concat(srmAccounts).sort((a, b) => {\n if (a.feeTier > b.feeTier) {\n return -1;\n }\n else if (a.feeTier < b.feeTier) {\n return 1;\n }\n else {\n if (a.balance > b.balance) {\n return -1;\n }\n else if (a.balance < b.balance) {\n return 1;\n }\n else {\n return 0;\n }\n }\n });\n }\n this._feeDiscountKeysCache[strOwner] = {\n accounts: sortedAccounts,\n ts: now,\n };\n return sortedAccounts;\n }\n async findBestFeeDiscountKey(connection, ownerAddress, cacheDurationMs = 30000) {\n const accounts = await this.findFeeDiscountKeys(connection, ownerAddress, cacheDurationMs);\n if (accounts.length > 0) {\n return {\n pubkey: accounts[0].pubkey,\n feeTier: accounts[0].feeTier,\n };\n }\n return {\n pubkey: null,\n feeTier: 0,\n };\n }\n async makePlaceOrderTransaction(connection, { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey = undefined, selfTradeBehavior = 'decrementTake', }, cacheDurationMs = 0, feeDiscountPubkeyCacheDurationMs = 0) {\n var _a, _b;\n // @ts-ignore\n const ownerAddress = (_a = owner.publicKey) !== null && _a !== void 0 ? _a : owner;\n const openOrdersAccounts = await this.findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs);\n const transaction = new web3_js_1.Transaction();\n const signers = [];\n // Fetch an SRM fee discount key if the market supports discounts and it is not supplied\n let useFeeDiscountPubkey;\n if (feeDiscountPubkey) {\n useFeeDiscountPubkey = feeDiscountPubkey;\n }\n else if (feeDiscountPubkey === undefined &&\n this.supportsSrmFeeDiscounts) {\n useFeeDiscountPubkey = (await this.findBestFeeDiscountKey(connection, ownerAddress, feeDiscountPubkeyCacheDurationMs)).pubkey;\n }\n else {\n useFeeDiscountPubkey = null;\n }\n let openOrdersAddress;\n if (openOrdersAccounts.length === 0) {\n let account;\n if (openOrdersAccount) {\n account = openOrdersAccount;\n }\n else {\n account = new web3_js_1.Account();\n }\n transaction.add(await OpenOrders.makeCreateAccountTransaction(connection, this.address, ownerAddress, account.publicKey, this._programId));\n openOrdersAddress = account.publicKey;\n signers.push(account);\n // refresh the cache of open order accounts on next fetch\n this._openOrdersAccountsCache[ownerAddress.toBase58()].ts = 0;\n }\n else if (openOrdersAccount) {\n openOrdersAddress = openOrdersAccount.publicKey;\n }\n else if (openOrdersAddressKey) {\n openOrdersAddress = openOrdersAddressKey;\n }\n else {\n openOrdersAddress = openOrdersAccounts[0].address;\n }\n let wrappedSolAccount = null;\n if (payer.equals(ownerAddress)) {\n if ((side === 'buy' && this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT)) ||\n (side === 'sell' && this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT))) {\n wrappedSolAccount = new web3_js_1.Account();\n let lamports;\n if (side === 'buy') {\n lamports = Math.round(price * size * 1.01 * web3_js_1.LAMPORTS_PER_SOL);\n if (openOrdersAccounts.length > 0) {\n lamports -= openOrdersAccounts[0].quoteTokenFree.toNumber();\n }\n }\n else {\n lamports = Math.round(size * web3_js_1.LAMPORTS_PER_SOL);\n if (openOrdersAccounts.length > 0) {\n lamports -= openOrdersAccounts[0].baseTokenFree.toNumber();\n }\n }\n lamports = Math.max(lamports, 0) + 1e7;\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: ownerAddress,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports,\n space: 165,\n programId: token_instructions_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add(token_instructions_1.initializeAccount({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: ownerAddress,\n }));\n signers.push(wrappedSolAccount);\n }\n else {\n throw new Error('Invalid payer account');\n }\n }\n const placeOrderInstruction = this.makePlaceOrderInstruction(connection, {\n owner,\n payer: (_b = wrappedSolAccount === null || wrappedSolAccount === void 0 ? void 0 : wrappedSolAccount.publicKey) !== null && _b !== void 0 ? _b : payer,\n side,\n price,\n size,\n orderType,\n clientId,\n openOrdersAddressKey: openOrdersAddress,\n feeDiscountPubkey: useFeeDiscountPubkey,\n selfTradeBehavior,\n });\n transaction.add(placeOrderInstruction);\n if (wrappedSolAccount) {\n transaction.add(token_instructions_1.closeAccount({\n source: wrappedSolAccount.publicKey,\n destination: ownerAddress,\n owner: ownerAddress,\n }));\n }\n return { transaction, signers, payer: owner };\n }\n makePlaceOrderInstruction(connection, { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey = null, selfTradeBehavior = 'decrementTake', }) {\n var _a;\n // @ts-ignore\n const ownerAddress = (_a = owner.publicKey) !== null && _a !== void 0 ? _a : owner;\n if (this.baseSizeNumberToLots(size).lte(new bn_js_1.default(0))) {\n throw new Error('size too small');\n }\n if (this.priceNumberToLots(price).lte(new bn_js_1.default(0))) {\n throw new Error('invalid price');\n }\n if (!this.supportsSrmFeeDiscounts) {\n feeDiscountPubkey = null;\n }\n if (this.usesRequestQueue) {\n return instructions_1.DexInstructions.newOrder({\n market: this.address,\n requestQueue: this._decoded.requestQueue,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n openOrders: openOrdersAccount\n ? openOrdersAccount.publicKey\n : openOrdersAddressKey,\n owner: ownerAddress,\n payer,\n side,\n limitPrice: this.priceNumberToLots(price),\n maxQuantity: this.baseSizeNumberToLots(size),\n orderType,\n clientId,\n programId: this._programId,\n feeDiscountPubkey,\n });\n }\n else {\n return instructions_1.DexInstructions.newOrderV3({\n market: this.address,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n requestQueue: this._decoded.requestQueue,\n eventQueue: this._decoded.eventQueue,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n openOrders: openOrdersAccount\n ? openOrdersAccount.publicKey\n : openOrdersAddressKey,\n owner: ownerAddress,\n payer,\n side,\n limitPrice: this.priceNumberToLots(price),\n maxBaseQuantity: this.baseSizeNumberToLots(size),\n maxQuoteQuantity: new bn_js_1.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(size).mul(this.priceNumberToLots(price))),\n orderType,\n clientId,\n programId: this._programId,\n selfTradeBehavior,\n feeDiscountPubkey,\n });\n }\n }\n async _sendTransaction(connection, transaction, signers) {\n const signature = await connection.sendTransaction(transaction, signers, {\n skipPreflight: this._skipPreflight,\n });\n const { value } = await connection.confirmTransaction(signature, this._commitment);\n if (value === null || value === void 0 ? void 0 : value.err) {\n throw new Error(JSON.stringify(value.err));\n }\n return signature;\n }\n async cancelOrderByClientId(connection, owner, openOrders, clientId) {\n const transaction = await this.makeCancelOrderByClientIdTransaction(connection, owner.publicKey, openOrders, clientId);\n return await this._sendTransaction(connection, transaction, [owner]);\n }\n async makeCancelOrderByClientIdTransaction(connection, owner, openOrders, clientId) {\n const transaction = new web3_js_1.Transaction();\n if (this.usesRequestQueue) {\n transaction.add(instructions_1.DexInstructions.cancelOrderByClientId({\n market: this.address,\n owner,\n openOrders,\n requestQueue: this._decoded.requestQueue,\n clientId,\n programId: this._programId,\n }));\n }\n else {\n transaction.add(instructions_1.DexInstructions.cancelOrderByClientIdV2({\n market: this.address,\n openOrders,\n owner,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n eventQueue: this._decoded.eventQueue,\n clientId,\n programId: this._programId,\n }));\n }\n return transaction;\n }\n async cancelOrder(connection, owner, order) {\n const transaction = await this.makeCancelOrderTransaction(connection, owner.publicKey, order);\n return await this._sendTransaction(connection, transaction, [owner]);\n }\n async makeCancelOrderTransaction(connection, owner, order) {\n const transaction = new web3_js_1.Transaction();\n transaction.add(this.makeCancelOrderInstruction(connection, owner, order));\n return transaction;\n }\n makeCancelOrderInstruction(connection, owner, order) {\n if (this.usesRequestQueue) {\n return instructions_1.DexInstructions.cancelOrder({\n market: this.address,\n owner,\n openOrders: order.openOrdersAddress,\n requestQueue: this._decoded.requestQueue,\n side: order.side,\n orderId: order.orderId,\n openOrdersSlot: order.openOrdersSlot,\n programId: this._programId,\n });\n }\n else {\n return instructions_1.DexInstructions.cancelOrderV2({\n market: this.address,\n owner,\n openOrders: order.openOrdersAddress,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n eventQueue: this._decoded.eventQueue,\n side: order.side,\n orderId: order.orderId,\n openOrdersSlot: order.openOrdersSlot,\n programId: this._programId,\n });\n }\n }\n async settleFunds(connection, owner, openOrders, baseWallet, quoteWallet, referrerQuoteWallet = null) {\n if (!openOrders.owner.equals(owner.publicKey)) {\n throw new Error('Invalid open orders account');\n }\n if (referrerQuoteWallet && !this.supportsReferralFees) {\n throw new Error('This program ID does not support referrerQuoteWallet');\n }\n const { transaction, signers } = await this.makeSettleFundsTransaction(connection, openOrders, baseWallet, quoteWallet, referrerQuoteWallet);\n return await this._sendTransaction(connection, transaction, [\n owner,\n ...signers,\n ]);\n }\n async makeSettleFundsTransaction(connection, openOrders, baseWallet, quoteWallet, referrerQuoteWallet = null) {\n // @ts-ignore\n const vaultSigner = await web3_js_1.PublicKey.createProgramAddress([\n this.address.toBuffer(),\n this._decoded.vaultSignerNonce.toArrayLike(buffer_1.Buffer, 'le', 8),\n ], this._programId);\n const transaction = new web3_js_1.Transaction();\n const signers = [];\n let wrappedSolAccount = null;\n if ((this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n baseWallet.equals(openOrders.owner)) ||\n (this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n quoteWallet.equals(openOrders.owner))) {\n wrappedSolAccount = new web3_js_1.Account();\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: openOrders.owner,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(165),\n space: 165,\n programId: token_instructions_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add(token_instructions_1.initializeAccount({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: openOrders.owner,\n }));\n signers.push(wrappedSolAccount);\n }\n transaction.add(instructions_1.DexInstructions.settleFunds({\n market: this.address,\n openOrders: openOrders.address,\n owner: openOrders.owner,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n baseWallet: baseWallet.equals(openOrders.owner) && wrappedSolAccount\n ? wrappedSolAccount.publicKey\n : baseWallet,\n quoteWallet: quoteWallet.equals(openOrders.owner) && wrappedSolAccount\n ? wrappedSolAccount.publicKey\n : quoteWallet,\n vaultSigner,\n programId: this._programId,\n referrerQuoteWallet,\n }));\n if (wrappedSolAccount) {\n transaction.add(token_instructions_1.closeAccount({\n source: wrappedSolAccount.publicKey,\n destination: openOrders.owner,\n owner: openOrders.owner,\n }));\n }\n return { transaction, signers, payer: openOrders.owner };\n }\n async matchOrders(connection, feePayer, limit) {\n const tx = this.makeMatchOrdersTransaction(limit);\n return await this._sendTransaction(connection, tx, [feePayer]);\n }\n makeMatchOrdersTransaction(limit) {\n const tx = new web3_js_1.Transaction();\n tx.add(instructions_1.DexInstructions.matchOrders({\n market: this.address,\n requestQueue: this._decoded.requestQueue,\n eventQueue: this._decoded.eventQueue,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n limit,\n programId: this._programId,\n }));\n return tx;\n }\n async loadRequestQueue(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.requestQueue));\n return queue_1.decodeRequestQueue(data);\n }\n async loadEventQueue(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.eventQueue));\n return queue_1.decodeEventQueue(data);\n }\n async loadFills(connection, limit = 100) {\n // TODO: once there's a separate source of fills use that instead\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.eventQueue));\n const events = queue_1.decodeEventQueue(data, limit);\n return events\n .filter((event) => event.eventFlags.fill && event.nativeQuantityPaid.gtn(0))\n .map(this.parseFillEvent.bind(this));\n }\n parseFillEvent(event) {\n let size, price, side, priceBeforeFees;\n if (event.eventFlags.bid) {\n side = 'buy';\n priceBeforeFees = event.eventFlags.maker\n ? event.nativeQuantityPaid.add(event.nativeFeeOrRebate)\n : event.nativeQuantityPaid.sub(event.nativeFeeOrRebate);\n price = divideBnToNumber(priceBeforeFees.mul(this._baseSplTokenMultiplier), this._quoteSplTokenMultiplier.mul(event.nativeQuantityReleased));\n size = divideBnToNumber(event.nativeQuantityReleased, this._baseSplTokenMultiplier);\n }\n else {\n side = 'sell';\n priceBeforeFees = event.eventFlags.maker\n ? event.nativeQuantityReleased.sub(event.nativeFeeOrRebate)\n : event.nativeQuantityReleased.add(event.nativeFeeOrRebate);\n price = divideBnToNumber(priceBeforeFees.mul(this._baseSplTokenMultiplier), this._quoteSplTokenMultiplier.mul(event.nativeQuantityPaid));\n size = divideBnToNumber(event.nativeQuantityPaid, this._baseSplTokenMultiplier);\n }\n return {\n ...event,\n side,\n price,\n feeCost: this.quoteSplSizeToNumber(event.nativeFeeOrRebate) *\n (event.eventFlags.maker ? -1 : 1),\n size,\n };\n }\n get _baseSplTokenMultiplier() {\n return new bn_js_1.default(10).pow(new bn_js_1.default(this._baseSplTokenDecimals));\n }\n get _quoteSplTokenMultiplier() {\n return new bn_js_1.default(10).pow(new bn_js_1.default(this._quoteSplTokenDecimals));\n }\n priceLotsToNumber(price) {\n return divideBnToNumber(price.mul(this._decoded.quoteLotSize).mul(this._baseSplTokenMultiplier), this._decoded.baseLotSize.mul(this._quoteSplTokenMultiplier));\n }\n priceNumberToLots(price) {\n return new bn_js_1.default(Math.round((price *\n Math.pow(10, this._quoteSplTokenDecimals) *\n this._decoded.baseLotSize.toNumber()) /\n (Math.pow(10, this._baseSplTokenDecimals) *\n this._decoded.quoteLotSize.toNumber())));\n }\n baseSplSizeToNumber(size) {\n return divideBnToNumber(size, this._baseSplTokenMultiplier);\n }\n quoteSplSizeToNumber(size) {\n return divideBnToNumber(size, this._quoteSplTokenMultiplier);\n }\n baseSizeLotsToNumber(size) {\n return divideBnToNumber(size.mul(this._decoded.baseLotSize), this._baseSplTokenMultiplier);\n }\n baseSizeNumberToLots(size) {\n const native = new bn_js_1.default(Math.round(size * Math.pow(10, this._baseSplTokenDecimals)));\n // rounds down to the nearest lot size\n return native.div(this._decoded.baseLotSize);\n }\n quoteSizeLotsToNumber(size) {\n return divideBnToNumber(size.mul(this._decoded.quoteLotSize), this._quoteSplTokenMultiplier);\n }\n quoteSizeNumberToLots(size) {\n const native = new bn_js_1.default(Math.round(size * Math.pow(10, this._quoteSplTokenDecimals)));\n // rounds down to the nearest lot size\n return native.div(this._decoded.quoteLotSize);\n }\n get minOrderSize() {\n return this.baseSizeLotsToNumber(new bn_js_1.default(1));\n }\n get tickSize() {\n return this.priceLotsToNumber(new bn_js_1.default(1));\n }\n}\nexports.Market = Market;\nexports._OPEN_ORDERS_LAYOUT_V1 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('market'),\n layout_1.publicKeyLayout('owner'),\n // These are in spl-token (i.e. not lot) units\n layout_1.u64('baseTokenFree'),\n layout_1.u64('baseTokenTotal'),\n layout_1.u64('quoteTokenFree'),\n layout_1.u64('quoteTokenTotal'),\n layout_1.u128('freeSlotBits'),\n layout_1.u128('isBidBits'),\n buffer_layout_1.seq(layout_1.u128(), 128, 'orders'),\n buffer_layout_1.seq(layout_1.u64(), 128, 'clientIds'),\n buffer_layout_1.blob(7),\n]);\nexports._OPEN_ORDERS_LAYOUT_V2 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('market'),\n layout_1.publicKeyLayout('owner'),\n // These are in spl-token (i.e. not lot) units\n layout_1.u64('baseTokenFree'),\n layout_1.u64('baseTokenTotal'),\n layout_1.u64('quoteTokenFree'),\n layout_1.u64('quoteTokenTotal'),\n layout_1.u128('freeSlotBits'),\n layout_1.u128('isBidBits'),\n buffer_layout_1.seq(layout_1.u128(), 128, 'orders'),\n buffer_layout_1.seq(layout_1.u64(), 128, 'clientIds'),\n layout_1.u64('referrerRebatesAccrued'),\n buffer_layout_1.blob(7),\n]);\nclass OpenOrders {\n constructor(address, decoded, programId) {\n this.address = address;\n this._programId = programId;\n Object.assign(this, decoded);\n }\n static getLayout(programId) {\n if (tokens_and_markets_1.getLayoutVersion(programId) === 1) {\n return exports._OPEN_ORDERS_LAYOUT_V1;\n }\n return exports._OPEN_ORDERS_LAYOUT_V2;\n }\n static async findForOwner(connection, ownerAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('owner'),\n bytes: ownerAddress.toBase58(),\n },\n },\n {\n dataSize: this.getLayout(programId).span,\n },\n ];\n const accounts = await getFilteredProgramAccounts(connection, programId, filters);\n return accounts.map(({ publicKey, accountInfo }) => OpenOrders.fromAccountInfo(publicKey, accountInfo, programId));\n }\n static async findForMarketAndOwner(connection, marketAddress, ownerAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('market'),\n bytes: marketAddress.toBase58(),\n },\n },\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('owner'),\n bytes: ownerAddress.toBase58(),\n },\n },\n {\n dataSize: this.getLayout(programId).span,\n },\n ];\n const accounts = await getFilteredProgramAccounts(connection, programId, filters);\n return accounts.map(({ publicKey, accountInfo }) => OpenOrders.fromAccountInfo(publicKey, accountInfo, programId));\n }\n static async load(connection, address, programId) {\n const accountInfo = await connection.getAccountInfo(address);\n if (accountInfo === null) {\n throw new Error('Open orders account not found');\n }\n return OpenOrders.fromAccountInfo(address, accountInfo, programId);\n }\n static fromAccountInfo(address, accountInfo, programId) {\n const { owner, data } = accountInfo;\n if (!owner.equals(programId)) {\n throw new Error('Address not owned by program');\n }\n const decoded = this.getLayout(programId).decode(data);\n if (!decoded.accountFlags.initialized || !decoded.accountFlags.openOrders) {\n throw new Error('Invalid open orders account');\n }\n return new OpenOrders(address, decoded, programId);\n }\n static async makeCreateAccountTransaction(connection, marketAddress, ownerAddress, newAccountAddress, programId) {\n return web3_js_1.SystemProgram.createAccount({\n fromPubkey: ownerAddress,\n newAccountPubkey: newAccountAddress,\n lamports: await connection.getMinimumBalanceForRentExemption(this.getLayout(programId).span),\n space: this.getLayout(programId).span,\n programId,\n });\n }\n get publicKey() {\n return this.address;\n }\n}\nexports.OpenOrders = OpenOrders;\nexports.ORDERBOOK_LAYOUT = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n slab_1.SLAB_LAYOUT.replicate('slab'),\n buffer_layout_1.blob(7),\n]);\nclass Orderbook {\n constructor(market, accountFlags, slab) {\n if (!accountFlags.initialized || !(accountFlags.bids ^ accountFlags.asks)) {\n throw new Error('Invalid orderbook');\n }\n this.market = market;\n this.isBids = accountFlags.bids;\n this.slab = slab;\n }\n static get LAYOUT() {\n return exports.ORDERBOOK_LAYOUT;\n }\n static decode(market, buffer) {\n const { accountFlags, slab } = exports.ORDERBOOK_LAYOUT.decode(buffer);\n return new Orderbook(market, accountFlags, slab);\n }\n getL2(depth) {\n const descending = this.isBids;\n const levels = []; // (price, size)\n for (const { key, quantity } of this.slab.items(descending)) {\n const price = getPriceFromKey(key);\n if (levels.length > 0 && levels[levels.length - 1][0].eq(price)) {\n levels[levels.length - 1][1].iadd(quantity);\n }\n else if (levels.length === depth) {\n break;\n }\n else {\n levels.push([price, quantity]);\n }\n }\n return levels.map(([priceLots, sizeLots]) => [\n this.market.priceLotsToNumber(priceLots),\n this.market.baseSizeLotsToNumber(sizeLots),\n priceLots,\n sizeLots,\n ]);\n }\n [Symbol.iterator]() {\n return this.items(false);\n }\n *items(descending = false) {\n for (const { key, ownerSlot, owner, quantity, feeTier, clientOrderId, } of this.slab.items(descending)) {\n const price = getPriceFromKey(key);\n yield {\n orderId: key,\n clientId: clientOrderId,\n openOrdersAddress: owner,\n openOrdersSlot: ownerSlot,\n feeTier,\n price: this.market.priceLotsToNumber(price),\n priceLots: price,\n size: this.market.baseSizeLotsToNumber(quantity),\n sizeLots: quantity,\n side: (this.isBids ? 'buy' : 'sell'),\n };\n }\n }\n}\nexports.Orderbook = Orderbook;\nfunction getPriceFromKey(key) {\n return key.ushrn(64);\n}\nfunction divideBnToNumber(numerator, denominator) {\n const quotient = numerator.div(denominator).toNumber();\n const rem = numerator.umod(denominator);\n const gcd = rem.gcd(denominator);\n return quotient + rem.div(gcd).toNumber() / denominator.div(gcd).toNumber();\n}\nconst MINT_LAYOUT = buffer_layout_1.struct([buffer_layout_1.blob(44), buffer_layout_1.u8('decimals'), buffer_layout_1.blob(37)]);\nasync function getMintDecimals(connection, mint) {\n if (mint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n return 9;\n }\n const { data } = throwIfNull(await connection.getAccountInfo(mint), 'mint not found');\n const { decimals } = MINT_LAYOUT.decode(data);\n return decimals;\n}\nexports.getMintDecimals = getMintDecimals;\nasync function getFilteredProgramAccounts(connection, programId, filters) {\n // @ts-ignore\n const resp = await connection._rpcRequest('getProgramAccounts', [\n programId.toBase58(),\n {\n commitment: connection.commitment,\n filters,\n encoding: 'base64',\n },\n ]);\n if (resp.error) {\n throw new Error(resp.error.message);\n }\n return resp.result.map(({ pubkey, account: { data, executable, owner, lamports } }) => ({\n publicKey: new web3_js_1.PublicKey(pubkey),\n accountInfo: {\n data: buffer_1.Buffer.from(data[0], 'base64'),\n executable,\n owner: new web3_js_1.PublicKey(owner),\n lamports,\n },\n }));\n}\nfunction throwIfNull(value, message = 'account not found') {\n if (value === null) {\n throw new Error(message);\n }\n return value;\n}\n//# sourceMappingURL=market.js.map","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '@material-ui/core/Button';\nimport { TransactionSignature } from '@solana/web3.js';\nimport { State as StoreState } from '../../store/reducer';\n\ntype Props = {\n signature: string;\n};\n\nexport async function withTx(\n snack: any,\n beforeLabel: string,\n afterLabel: string,\n execTx: () => Promise,\n) {\n snack.enqueueSnackbar(beforeLabel, {\n variant: 'info',\n });\n try {\n let tx = await execTx();\n snack.closeSnackbar();\n snack.enqueueSnackbar(afterLabel, {\n variant: 'success',\n action: ,\n });\n } catch (err) {\n snack.enqueueSnackbar(`Error: ${err.toString()}`, {\n variant: 'error',\n });\n }\n}\n\nexport function ViewTransactionOnExplorerButton(props: Props) {\n const { signature } = props;\n const { explorerClusterSuffix } = useSelector((state: StoreState) => {\n return {\n explorerClusterSuffix: state.common.network.explorerClusterSuffix,\n };\n });\n const urlSuffix = `?cluster=${explorerClusterSuffix}`;\n return (\n \n View on Solana Explorer\n \n );\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Slab = exports.SLAB_LAYOUT = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst SLAB_HEADER_LAYOUT = buffer_layout_1.struct([\n // Number of modified slab nodes\n buffer_layout_1.u32('bumpIndex'),\n layout_1.zeros(4),\n // Linked list of unused nodes\n buffer_layout_1.u32('freeListLen'),\n layout_1.zeros(4),\n buffer_layout_1.u32('freeListHead'),\n buffer_layout_1.u32('root'),\n buffer_layout_1.u32('leafCount'),\n layout_1.zeros(4),\n], 'header');\nconst SLAB_NODE_LAYOUT = buffer_layout_1.union(buffer_layout_1.u32('tag'), buffer_layout_1.blob(68), 'node');\nSLAB_NODE_LAYOUT.addVariant(0, buffer_layout_1.struct([]), 'uninitialized');\nSLAB_NODE_LAYOUT.addVariant(1, buffer_layout_1.struct([\n // Only the first prefixLen high-order bits of key are meaningful\n buffer_layout_1.u32('prefixLen'),\n layout_1.u128('key'),\n buffer_layout_1.seq(buffer_layout_1.u32(), 2, 'children'),\n]), 'innerNode');\nSLAB_NODE_LAYOUT.addVariant(2, buffer_layout_1.struct([\n buffer_layout_1.u8('ownerSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(2),\n layout_1.u128('key'),\n layout_1.publicKeyLayout('owner'),\n layout_1.u64('quantity'),\n layout_1.u64('clientOrderId'),\n]), 'leafNode');\nSLAB_NODE_LAYOUT.addVariant(3, buffer_layout_1.struct([buffer_layout_1.u32('next')]), 'freeNode');\nSLAB_NODE_LAYOUT.addVariant(4, buffer_layout_1.struct([]), 'lastFreeNode');\nexports.SLAB_LAYOUT = buffer_layout_1.struct([\n SLAB_HEADER_LAYOUT,\n buffer_layout_1.seq(SLAB_NODE_LAYOUT, buffer_layout_1.offset(SLAB_HEADER_LAYOUT.layoutFor('bumpIndex'), SLAB_HEADER_LAYOUT.offsetOf('bumpIndex') - SLAB_HEADER_LAYOUT.span), 'nodes'),\n]);\nclass Slab {\n constructor(header, nodes) {\n this.header = header;\n this.nodes = nodes;\n }\n static decode(buffer) {\n return exports.SLAB_LAYOUT.decode(buffer);\n }\n get(searchKey) {\n if (this.header.leafCount === 0) {\n return null;\n }\n if (!(searchKey instanceof bn_js_1.default)) {\n searchKey = new bn_js_1.default(searchKey);\n }\n let index = this.header.root;\n while (true) {\n const { leafNode, innerNode } = this.nodes[index];\n if (leafNode) {\n if (leafNode.key.eq(searchKey)) {\n return leafNode;\n }\n return null;\n }\n else if (innerNode) {\n if (!innerNode.key\n .xor(searchKey)\n .iushrn(128 - innerNode.prefixLen)\n .isZero()) {\n return null;\n }\n index =\n innerNode.children[searchKey.testn(128 - innerNode.prefixLen - 1) ? 1 : 0];\n }\n else {\n throw new Error('Invalid slab');\n }\n }\n }\n [Symbol.iterator]() {\n return this.items(false);\n }\n *items(descending = false) {\n if (this.header.leafCount === 0) {\n return;\n }\n const stack = [this.header.root];\n while (stack.length > 0) {\n const index = stack.pop();\n const { leafNode, innerNode } = this.nodes[index];\n if (leafNode) {\n yield leafNode;\n }\n else if (innerNode) {\n if (descending) {\n stack.push(innerNode.children[0], innerNode.children[1]);\n }\n else {\n stack.push(innerNode.children[1], innerNode.children[0]);\n }\n }\n }\n }\n}\nexports.Slab = Slab;\nlayout_1.setLayoutDecoder(exports.SLAB_LAYOUT, ({ header, nodes }) => new Slab(header, nodes));\n//# sourceMappingURL=slab.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseInstructionErrorResponse = exports.KNOWN_PROGRAMS = exports.DexError = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nconst token_instructions_1 = require(\"./token-instructions\");\nvar DexError;\n(function (DexError) {\n DexError[DexError[\"InvalidMarketFlags\"] = 0] = \"InvalidMarketFlags\";\n DexError[DexError[\"InvalidAskFlags\"] = 1] = \"InvalidAskFlags\";\n DexError[DexError[\"InvalidBidFlags\"] = 2] = \"InvalidBidFlags\";\n DexError[DexError[\"InvalidQueueLength\"] = 3] = \"InvalidQueueLength\";\n DexError[DexError[\"OwnerAccountNotProvided\"] = 4] = \"OwnerAccountNotProvided\";\n DexError[DexError[\"ConsumeEventsQueueFailure\"] = 5] = \"ConsumeEventsQueueFailure\";\n DexError[DexError[\"WrongCoinVault\"] = 6] = \"WrongCoinVault\";\n DexError[DexError[\"WrongPcVault\"] = 7] = \"WrongPcVault\";\n DexError[DexError[\"WrongCoinMint\"] = 8] = \"WrongCoinMint\";\n DexError[DexError[\"WrongPcMint\"] = 9] = \"WrongPcMint\";\n DexError[DexError[\"CoinVaultProgramId\"] = 10] = \"CoinVaultProgramId\";\n DexError[DexError[\"PcVaultProgramId\"] = 11] = \"PcVaultProgramId\";\n DexError[DexError[\"CoinMintProgramId\"] = 12] = \"CoinMintProgramId\";\n DexError[DexError[\"PcMintProgramId\"] = 13] = \"PcMintProgramId\";\n DexError[DexError[\"WrongCoinMintSize\"] = 14] = \"WrongCoinMintSize\";\n DexError[DexError[\"WrongPcMintSize\"] = 15] = \"WrongPcMintSize\";\n DexError[DexError[\"WrongCoinVaultSize\"] = 16] = \"WrongCoinVaultSize\";\n DexError[DexError[\"WrongPcVaultSize\"] = 17] = \"WrongPcVaultSize\";\n DexError[DexError[\"UninitializedVault\"] = 18] = \"UninitializedVault\";\n DexError[DexError[\"UninitializedMint\"] = 19] = \"UninitializedMint\";\n DexError[DexError[\"CoinMintUninitialized\"] = 20] = \"CoinMintUninitialized\";\n DexError[DexError[\"PcMintUninitialized\"] = 21] = \"PcMintUninitialized\";\n DexError[DexError[\"WrongMint\"] = 22] = \"WrongMint\";\n DexError[DexError[\"WrongVaultOwner\"] = 23] = \"WrongVaultOwner\";\n DexError[DexError[\"VaultHasDelegate\"] = 24] = \"VaultHasDelegate\";\n DexError[DexError[\"AlreadyInitialized\"] = 25] = \"AlreadyInitialized\";\n DexError[DexError[\"WrongAccountDataAlignment\"] = 26] = \"WrongAccountDataAlignment\";\n DexError[DexError[\"WrongAccountDataPaddingLength\"] = 27] = \"WrongAccountDataPaddingLength\";\n DexError[DexError[\"WrongAccountHeadPadding\"] = 28] = \"WrongAccountHeadPadding\";\n DexError[DexError[\"WrongAccountTailPadding\"] = 29] = \"WrongAccountTailPadding\";\n DexError[DexError[\"RequestQueueEmpty\"] = 30] = \"RequestQueueEmpty\";\n DexError[DexError[\"EventQueueTooSmall\"] = 31] = \"EventQueueTooSmall\";\n DexError[DexError[\"SlabTooSmall\"] = 32] = \"SlabTooSmall\";\n DexError[DexError[\"BadVaultSignerNonce\"] = 33] = \"BadVaultSignerNonce\";\n DexError[DexError[\"InsufficientFunds\"] = 34] = \"InsufficientFunds\";\n DexError[DexError[\"SplAccountProgramId\"] = 35] = \"SplAccountProgramId\";\n DexError[DexError[\"SplAccountLen\"] = 36] = \"SplAccountLen\";\n DexError[DexError[\"WrongFeeDiscountAccountOwner\"] = 37] = \"WrongFeeDiscountAccountOwner\";\n DexError[DexError[\"WrongFeeDiscountMint\"] = 38] = \"WrongFeeDiscountMint\";\n DexError[DexError[\"CoinPayerProgramId\"] = 39] = \"CoinPayerProgramId\";\n DexError[DexError[\"PcPayerProgramId\"] = 40] = \"PcPayerProgramId\";\n DexError[DexError[\"ClientIdNotFound\"] = 41] = \"ClientIdNotFound\";\n DexError[DexError[\"TooManyOpenOrders\"] = 42] = \"TooManyOpenOrders\";\n DexError[DexError[\"FakeErrorSoWeDontChangeNumbers\"] = 43] = \"FakeErrorSoWeDontChangeNumbers\";\n DexError[DexError[\"BorrowError\"] = 44] = \"BorrowError\";\n DexError[DexError[\"WrongOrdersAccount\"] = 45] = \"WrongOrdersAccount\";\n DexError[DexError[\"WrongBidsAccount\"] = 46] = \"WrongBidsAccount\";\n DexError[DexError[\"WrongAsksAccount\"] = 47] = \"WrongAsksAccount\";\n DexError[DexError[\"WrongRequestQueueAccount\"] = 48] = \"WrongRequestQueueAccount\";\n DexError[DexError[\"WrongEventQueueAccount\"] = 49] = \"WrongEventQueueAccount\";\n DexError[DexError[\"RequestQueueFull\"] = 50] = \"RequestQueueFull\";\n DexError[DexError[\"EventQueueFull\"] = 51] = \"EventQueueFull\";\n DexError[DexError[\"MarketIsDisabled\"] = 52] = \"MarketIsDisabled\";\n DexError[DexError[\"WrongSigner\"] = 53] = \"WrongSigner\";\n DexError[DexError[\"TransferFailed\"] = 54] = \"TransferFailed\";\n DexError[DexError[\"ClientOrderIdIsZero\"] = 55] = \"ClientOrderIdIsZero\";\n DexError[DexError[\"WrongRentSysvarAccount\"] = 56] = \"WrongRentSysvarAccount\";\n DexError[DexError[\"RentNotProvided\"] = 57] = \"RentNotProvided\";\n DexError[DexError[\"OrdersNotRentExempt\"] = 58] = \"OrdersNotRentExempt\";\n DexError[DexError[\"OrderNotFound\"] = 59] = \"OrderNotFound\";\n DexError[DexError[\"OrderNotYours\"] = 60] = \"OrderNotYours\";\n DexError[DexError[\"WouldSelfTrade\"] = 61] = \"WouldSelfTrade\";\n DexError[DexError[\"Unknown\"] = 1000] = \"Unknown\";\n})(DexError = exports.DexError || (exports.DexError = {}));\nexports.KNOWN_PROGRAMS = {\n [token_instructions_1.TOKEN_PROGRAM_ID.toString()]: 'Token program',\n [web3_js_1.SystemProgram.programId.toString()]: 'System program'\n};\nfunction parseInstructionErrorResponse(transaction, errorResponse) {\n const [failedInstructionIndex, customError] = errorResponse;\n const failedInstruction = transaction.instructions[failedInstructionIndex];\n let parsedError;\n if (failedInstruction.programId.toString() in tokens_and_markets_1.PROGRAM_LAYOUT_VERSIONS) {\n parsedError = DexError[customError['Custom']];\n }\n else if (failedInstruction.programId.toString() in exports.KNOWN_PROGRAMS) {\n const program = exports.KNOWN_PROGRAMS[failedInstruction.programId.toString()];\n parsedError = `${program} error ${customError['Custom']}`;\n }\n else {\n parsedError = `Unknown program ${failedInstruction.programId.toString()} custom error: ${customError['Custom']}`;\n }\n return {\n failedInstructionIndex,\n error: parsedError,\n failedProgram: failedInstruction.programId.toString()\n };\n}\nexports.parseInstructionErrorResponse = parseInstructionErrorResponse;\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeWallet = exports.Provider = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst simulate_transaction_1 = require(\"./simulate-transaction\");\nclass Provider {\n constructor(connection, wallet, opts) {\n this.connection = connection;\n this.wallet = wallet;\n this.opts = opts;\n }\n static defaultOptions() {\n return {\n preflightCommitment: 'recent',\n commitment: 'recent',\n };\n }\n static local(url, opts) {\n opts = opts || Provider.defaultOptions();\n const connection = new web3_js_1.Connection(url || 'http://localhost:8899', opts.preflightCommitment);\n const wallet = NodeWallet.local();\n return new Provider(connection, wallet, opts);\n }\n async send(tx, signers, opts) {\n var _a;\n if (signers === undefined) {\n signers = [];\n }\n if (opts === undefined) {\n opts = this.opts;\n }\n const signerKps = signers.filter(s => s !== undefined);\n const signerPubkeys = [this.wallet.publicKey].concat(signerKps.map(s => s.publicKey));\n tx.setSigners(...signerPubkeys);\n tx.recentBlockhash = (await this.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;\n await this.wallet.signTransaction(tx);\n signerKps.forEach(kp => {\n tx.partialSign(kp);\n });\n const rawTx = tx.serialize();\n try {\n const txId = await web3_js_1.sendAndConfirmRawTransaction(this.connection, rawTx, opts);\n return txId;\n }\n catch (err) {\n console.error('Transaction failed. Simulating for logs...');\n const r = await simulate_transaction_1.simulateTransaction(this.connection, tx, (_a = opts.commitment) !== null && _a !== void 0 ? _a : 'recent');\n console.error(r);\n throw err;\n }\n }\n async sendAll(reqs, opts) {\n var _a;\n if (opts === undefined) {\n opts = this.opts;\n }\n const blockhash = await this.connection.getRecentBlockhash(opts.preflightCommitment);\n let txs = reqs.map(r => {\n let tx = r.tx;\n let signers = r.signers;\n if (signers === undefined) {\n signers = [];\n }\n const signerKps = signers.filter(s => s !== undefined);\n const signerPubkeys = [this.wallet.publicKey].concat(signerKps.map(s => s.publicKey));\n tx.setSigners(...signerPubkeys);\n tx.recentBlockhash = blockhash.blockhash;\n signerKps.forEach(kp => {\n tx.partialSign(kp);\n });\n return tx;\n });\n const signedTxs = await this.wallet.signAllTransactions(txs);\n const sigs = [];\n for (let k = 0; k < txs.length; k += 1) {\n const tx = signedTxs[k];\n const rawTx = tx.serialize();\n try {\n sigs.push(await web3_js_1.sendAndConfirmRawTransaction(this.connection, rawTx, opts));\n }\n catch (err) {\n console.error('Transaction failed. Simulating for logs...');\n const r = await simulate_transaction_1.simulateTransaction(this.connection, tx, (_a = opts.commitment) !== null && _a !== void 0 ? _a : 'recent');\n console.error(r);\n throw err;\n }\n }\n return sigs;\n }\n}\nexports.Provider = Provider;\nclass NodeWallet {\n constructor(payer) {\n this.payer = payer;\n }\n static local() {\n const payer = new web3_js_1.Account(Buffer.from(JSON.parse(require('fs').readFileSync(require('os').homedir() + '/.config/solana/id.json', {\n encoding: 'utf-8',\n }))));\n return new NodeWallet(payer);\n }\n async signTransaction(tx) {\n tx.partialSign(this.payer);\n return tx;\n }\n async signAllTransactions(txs) {\n return txs.map(t => {\n t.partialSign(this.payer);\n return t;\n });\n }\n get publicKey() {\n return this.payer.publicKey;\n }\n}\nexports.NodeWallet = NodeWallet;\n//# sourceMappingURL=provider.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOwnedAccountsFilters = exports.parseMintData = exports.parseTokenAccountData = exports.MINT_LAYOUT = exports.ACCOUNT_LAYOUT = exports.getOwnedTokenAccounts = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst serum_1 = require(\"@project-serum/serum\");\nconst bs58 = __importStar(require(\"bs58\"));\nconst BufferLayout = __importStar(require(\"buffer-layout\"));\nasync function getOwnedTokenAccounts(connection, publicKey) {\n let filters = getOwnedAccountsFilters(publicKey);\n // @ts-ignore\n let resp = await connection._rpcRequest('getProgramAccounts', [\n serum_1.TokenInstructions.TOKEN_PROGRAM_ID.toBase58(),\n {\n commitment: connection.commitment,\n filters,\n },\n ]);\n if (resp.error) {\n throw new Error('failed to get token accounts owned by ' +\n publicKey.toBase58() +\n ': ' +\n resp.error.message);\n }\n return (resp.result\n // @ts-ignore\n .map(({ pubkey, account: { data } }) => {\n data = bs58.decode(data);\n return {\n publicKey: new web3_js_1.PublicKey(pubkey),\n account: parseTokenAccountData(data),\n };\n }));\n}\nexports.getOwnedTokenAccounts = getOwnedTokenAccounts;\n// todo: remove\nexports.ACCOUNT_LAYOUT = BufferLayout.struct([\n BufferLayout.blob(32, 'mint'),\n BufferLayout.blob(32, 'owner'),\n BufferLayout.nu64('amount'),\n BufferLayout.blob(93),\n]);\nexports.MINT_LAYOUT = BufferLayout.struct([\n BufferLayout.blob(44),\n BufferLayout.u8('decimals'),\n BufferLayout.blob(37),\n]);\nfunction parseTokenAccountData(data) {\n // @ts-ignore\n let { mint, owner, amount } = exports.ACCOUNT_LAYOUT.decode(data);\n return {\n mint: new web3_js_1.PublicKey(mint),\n owner: new web3_js_1.PublicKey(owner),\n amount,\n };\n}\nexports.parseTokenAccountData = parseTokenAccountData;\n// @ts-ignore\nfunction parseMintData(data) {\n // @ts-ignore\n let { decimals } = exports.MINT_LAYOUT.decode(data);\n return { decimals };\n}\nexports.parseMintData = parseMintData;\n// @ts-ignore\nfunction getOwnedAccountsFilters(publicKey) {\n return [\n {\n memcmp: {\n // @ts-ignore\n offset: exports.ACCOUNT_LAYOUT.offsetOf('owner'),\n bytes: publicKey.toBase58(),\n },\n },\n {\n dataSize: exports.ACCOUNT_LAYOUT.span,\n },\n ];\n}\nexports.getOwnedAccountsFilters = getOwnedAccountsFilters;\n//# sourceMappingURL=token.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetMultipleAccountsAndContextRpcResult = exports.getMultipleSolanaAccounts = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst superstruct_1 = require(\"superstruct\");\nconst assert_1 = __importDefault(require(\"assert\"));\nasync function getMultipleSolanaAccounts(connection, publicKeys) {\n const args = [publicKeys.map(k => k.toBase58()), { commitment: 'recent' }];\n // @ts-ignore\n const unsafeRes = await connection._rpcRequest('getMultipleAccounts', args);\n const res = exports.GetMultipleAccountsAndContextRpcResult(unsafeRes);\n if (res.error) {\n throw new Error('failed to get info about accounts ' +\n publicKeys.map(k => k.toBase58()).join(', ') +\n ': ' +\n res.error.message);\n }\n assert_1.default(typeof res.result !== 'undefined');\n const accounts = [];\n for (const account of res.result.value) {\n let value = null;\n if (res.result.value) {\n const { executable, owner, lamports, data } = account;\n assert_1.default(data[1] === 'base64');\n value = {\n executable,\n owner: new web3_js_1.PublicKey(owner),\n lamports,\n data: Buffer.from(data[0], 'base64'),\n };\n }\n if (value === null) {\n throw new Error('Invalid response');\n }\n accounts.push(value);\n }\n return accounts.map((account, idx) => {\n return {\n publicKey: publicKeys[idx],\n account,\n };\n });\n}\nexports.getMultipleSolanaAccounts = getMultipleSolanaAccounts;\nfunction jsonRpcResult(resultDescription) {\n const jsonRpcVersion = superstruct_1.struct.literal('2.0');\n return superstruct_1.struct.union([\n superstruct_1.struct({\n jsonrpc: jsonRpcVersion,\n id: 'string',\n error: 'any',\n }),\n superstruct_1.struct({\n jsonrpc: jsonRpcVersion,\n id: 'string',\n error: 'null?',\n result: resultDescription,\n }),\n ]);\n}\nfunction jsonRpcResultAndContext(resultDescription) {\n return jsonRpcResult({\n context: superstruct_1.struct({\n slot: 'number',\n }),\n value: resultDescription,\n });\n}\nconst AccountInfoResult = superstruct_1.struct({\n executable: 'boolean',\n owner: 'string',\n lamports: 'number',\n data: 'any',\n rentEpoch: 'number?',\n});\nexports.GetMultipleAccountsAndContextRpcResult = jsonRpcResultAndContext(superstruct_1.struct.array([superstruct_1.struct.union(['null', AccountInfoResult])]));\n//# sourceMappingURL=connection.js.map","import { PublicKey } from '@solana/web3.js';\nimport { AccountInfo as TokenAccount } from '@solana/spl-token';\nimport { ProgramAccount as CommonProgramAccount } from '@project-serum/common';\nimport { Action, ActionType } from './actions';\nimport { networks, Network } from './config';\n\nexport enum BootstrapState {\n NeedsBootstrap,\n IsBootstrapping,\n Bootstrapped,\n}\n\nexport default function reducer(\n state: State = initialState,\n action: Action,\n): State {\n let newState = {\n common: { ...state.common },\n lockup: { ...state.lockup },\n registry: { ...state.registry },\n accounts: { ...state.accounts },\n };\n switch (action.type) {\n // Common.\n case ActionType.CommonAppWillBootstrap:\n newState.common.bootstrapState = BootstrapState.IsBootstrapping;\n newState.common.bootstrapTrigger = false;\n return newState;\n case ActionType.CommonAppDidBootstrap:\n newState.common.bootstrapState = BootstrapState.Bootstrapped;\n return newState;\n case ActionType.CommonWalletSetProvider:\n newState.common.walletProvider = action.item.walletProvider;\n return newState;\n case ActionType.CommonWalletDidConnect:\n newState.common.isWalletConnected = true;\n return newState;\n case ActionType.CommonWalletDidDisconnect:\n newState.common.isWalletConnected = false;\n return newState;\n case ActionType.CommonSetNetwork:\n if (newState.common.network.label !== action.item.network.label) {\n newState.common.network = action.item.network;\n newState.common.bootstrapState = BootstrapState.NeedsBootstrap;\n newState.common.shutdownTrigger = true;\n const network = networks[action.item.networkKey];\n newState.registry.registrar = Object.values(network.registrars)[0];\n }\n return newState;\n case ActionType.CommonTriggerBootstrap:\n newState.common.bootstrapState = BootstrapState.NeedsBootstrap;\n newState.common.bootstrapTrigger = true;\n return newState;\n case ActionType.CommonTriggerShutdown:\n newState.common.bootstrapState = BootstrapState.NeedsBootstrap;\n newState.common.shutdownTrigger = true;\n return newState;\n case ActionType.CommonDidShutdown:\n // Reset everything except network and registrar.\n let s = {\n ...initialState,\n };\n s.common.network = newState.common.network;\n s.registry.registrar = newState.registry.registrar;\n return s;\n case ActionType.CommonOwnedTokenAccountsSet:\n newState.common.ownedTokenAccounts = action.item.ownedTokenAccounts;\n return newState;\n\n case ActionType.CommonOwnedTokenAccountsUpdate:\n newState.common.ownedTokenAccounts = newState.common.ownedTokenAccounts.map(\n programAccount => {\n if (programAccount.publicKey.equals(action.item.account.publicKey)) {\n return action.item.account;\n } else {\n return programAccount;\n }\n },\n );\n return newState;\n\n // Lockup.\n case ActionType.LockupSetVestings:\n newState.lockup.vestings = action.item.vestingAccounts;\n return newState;\n case ActionType.LockupUpdateVesting:\n newState.accounts[action.item.vesting.publicKey.toString()] =\n action.item.vesting.account;\n return newState;\n case ActionType.LockupCreateVesting:\n newState.lockup.vestings.unshift(action.item.vesting.publicKey);\n newState.accounts[action.item.vesting.publicKey.toString()] =\n action.item.vesting.account;\n return newState;\n\n // Registry.\n case ActionType.RegistrySetMember:\n // This should only be called on member creation. All other member\n // member switches should route through `RegistrySetMember`.\n newState.registry.member = action.item.member;\n return newState;\n case ActionType.RegistrySetRegistrar:\n newState.registry.registrar = action.item.registrar;\n newState.registry.member = action.item.member;\n newState.registry.pendingWithdrawals = null;\n return newState;\n case ActionType.RegistrySetPendingWithdrawals:\n action.item.pendingWithdrawals.forEach((pw: any) => {\n newState.accounts[pw.publicKey.toString()] = pw.account;\n });\n newState.registry.pendingWithdrawals = action.item.pendingWithdrawals.map(\n (pw: any) => pw.publicKey,\n );\n return newState;\n case ActionType.RegistryCreatePendingWithdrawal:\n newState.accounts[action.item.pendingWithdrawal.publicKey.toString()] =\n action.item.pendingWithdrawal.account;\n if (newState.registry.pendingWithdrawals === null) {\n newState.registry.pendingWithdrawals = [];\n }\n newState.registry.pendingWithdrawals.unshift(\n action.item.pendingWithdrawal.publicKey,\n );\n return newState;\n case ActionType.RegistryUpdatePendingWithdrawal:\n newState.accounts[action.item.pendingWithdrawal.publicKey.toString()] =\n action.item.pendingWithdrawal.account;\n return newState;\n case ActionType.AccountAdd:\n newState.accounts[action.item.account.publicKey.toString()] =\n action.item.account.account;\n return newState;\n case ActionType.AccountUpdate:\n newState.accounts[action.item.account.publicKey.toString()] =\n action.item.account.account;\n return newState;\n default:\n return newState;\n }\n}\n\nexport type State = {\n common: CommonState;\n lockup: LockupState;\n registry: RegistryState;\n accounts: { [pubkey: string]: any };\n};\n\nexport type CommonState = {\n walletProvider?: string;\n isWalletConnected: boolean;\n bootstrapTrigger: boolean;\n bootstrapState: BootstrapState;\n shutdownTrigger: boolean;\n network: Network;\n ownedTokenAccounts: ProgramAccount[];\n};\n\nexport type LockupState = {\n vestings: PublicKey[];\n};\n\n// All state associated with a single instance of a staking registrar.\nexport type RegistryState = {\n registrar: PublicKey;\n member?: PublicKey;\n pendingWithdrawals: PublicKey[] | null;\n};\n\nexport const initialState: State = {\n common: {\n bootstrapTrigger: false,\n shutdownTrigger: false,\n isWalletConnected: false,\n walletProvider: 'https://www.sollet.io',\n bootstrapState: BootstrapState.NeedsBootstrap,\n network: networks.mainnet,\n ownedTokenAccounts: [],\n },\n lockup: {\n vestings: [],\n },\n registry: {\n pendingWithdrawals: null,\n registrar: networks.mainnet.registrars.srm,\n },\n accounts: {},\n};\n\nexport type AsyncData = {\n isReady: boolean;\n data?: T;\n};\n\n// Re-export.\nexport type ProgramAccount = CommonProgramAccount;\n","import { createStore } from 'redux';\nimport reducer from './reducer';\n\nexport const store = createStore(reducer);\n","import React, {\n PropsWithChildren,\n ReactNode,\n useEffect,\n useCallback,\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useSnackbar } from 'notistack';\nimport { PublicKey } from '@solana/web3.js';\nimport {\n token,\n parseMintAccount,\n parseTokenAccount,\n} from '@project-serum/common';\nimport * as anchor from '@project-serum/anchor';\nimport { State as StoreState, ProgramAccount } from '../../store/reducer';\nimport { ActionType } from '../../store/actions';\nimport { useWallet } from './WalletProvider';\nimport { memberSeed } from '../../utils/registry';\n\n// BootstrapProvider performs data fetching on application startup.\nexport default function BootstrapProvider(props: PropsWithChildren) {\n const { bootstrapTrigger, shutdownTrigger, network, registrar } = useSelector(\n (state: StoreState) => {\n return {\n bootstrapTrigger: state.common.bootstrapTrigger,\n shutdownTrigger: state.common.shutdownTrigger,\n network: state.common.network,\n registrar: state.registry.registrar,\n };\n },\n );\n const dispatch = useDispatch();\n const { wallet, lockupClient, registryClient } = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n\n // Entry point for bootstrapping all the data for the app.\n const bootstrap = useCallback(async () => {\n enqueueSnackbar(`Connecting to ${network.label}`, {\n variant: 'info',\n autoHideDuration: 2500,\n });\n\n dispatch({\n type: ActionType.CommonAppWillBootstrap,\n item: {},\n });\n\n let { registrars, members } = await refreshAccounts({\n dispatch,\n lockupClient,\n registryClient,\n network,\n wallet,\n });\n\n // Temporary account store for the initial registrar switch.\n const accountStore = Object.fromEntries(\n new Map(registrars.map(r => [r.publicKey.toString(), r.account])),\n );\n members.forEach(m => {\n accountStore[m.publicKey.toString()] = m.account;\n });\n\n await registrarSwitch(\n registryClient,\n accountStore,\n dispatch,\n registrar,\n undefined,\n );\n\n dispatch({\n type: ActionType.CommonAppDidBootstrap,\n item: {},\n });\n\n enqueueSnackbar(`Connection established`, {\n variant: 'success',\n autoHideDuration: 2500,\n });\n }, [\n dispatch,\n enqueueSnackbar,\n registryClient,\n registrar,\n lockupClient,\n network,\n wallet,\n ]);\n\n const shutdown = useCallback(async () => {\n wallet.disconnect();\n dispatch({\n type: ActionType.CommonDidShutdown,\n item: {},\n });\n }, [dispatch, wallet]);\n\n useEffect(() => {\n if (bootstrapTrigger) {\n bootstrap().catch(err => {\n console.error(err);\n enqueueSnackbar(`Error bootstrapping application: ${err.toString()}`, {\n variant: 'error',\n });\n });\n }\n if (shutdownTrigger) {\n shutdown().catch(err => {\n console.error(err);\n enqueueSnackbar(`Error shutting down application: ${err.toString()}`, {\n variant: 'error',\n });\n });\n }\n }, [bootstrapTrigger, bootstrap, shutdownTrigger, shutdown, enqueueSnackbar]);\n\n return <>{props.children};\n}\n\n// Fetches and populates the redux store with all accounts needed for the app to start.\nexport async function refreshAccounts({\n dispatch,\n lockupClient,\n registryClient,\n network,\n wallet,\n}: any) {\n // Fetch all staking instances.\n const fetchRegistrars = async (): Promise => {\n const registrarAddresses: PublicKey[] = Object.values(network.registrars);\n\n // All registrars.\n const registrars: ProgramAccount[] = (\n await anchor.utils.getMultipleAccounts(\n registryClient.provider.connection,\n registrarAddresses,\n )\n ).map(raw => {\n const account = registryClient.coder.accounts.decode(\n 'Registrar',\n raw!.account.data,\n );\n return {\n publicKey: raw!.publicKey,\n account,\n };\n });\n\n // Mint for each registrar.\n const mints: ProgramAccount[] = (\n await anchor.utils.getMultipleAccounts(\n registryClient.provider.connection,\n registrars.map(r => r.account.mint),\n )\n ).map(raw => {\n const account = parseMintAccount(raw!.account.data);\n return {\n publicKey: raw!.publicKey,\n account,\n };\n });\n\n // Reward queues for each registrar.\n const rewardQs = (\n await anchor.utils.getMultipleAccounts(\n registryClient.provider.connection,\n registrars.map(r => r.account.rewardEventQ),\n )\n ).map(raw => {\n const account = registryClient.coder.accounts.decode(\n 'RewardQueue',\n raw!.account.data,\n );\n return {\n publicKey: raw!.publicKey,\n account,\n };\n });\n\n // Add all the accounts to the store.\n registrars\n .concat(mints)\n .concat(rewardQs)\n .forEach(r => {\n dispatch({\n type: ActionType.AccountAdd,\n item: {\n account: r,\n },\n });\n });\n return registrars;\n };\n\n // Fetch the stake accounts for each staking instance (for the connected wallet).\n const fetchMembers = async (\n registrars: ProgramAccount[],\n ): Promise => {\n const members = await Promise.all(\n registrars\n .map((r: ProgramAccount) => r.publicKey)\n .map((r: PublicKey) =>\n memberSeed(r)\n .then(seed =>\n PublicKey.createWithSeed(\n wallet.publicKey,\n seed,\n registryClient.programId,\n ),\n )\n .then(member => {\n return {\n memberPublicKey: member,\n registrar: r,\n };\n }),\n ),\n );\n const memberAddresses: PublicKey[] = members.map(m => m.memberPublicKey);\n const memberAccounts: ProgramAccount[] = (\n await anchor.utils.getMultipleAccounts(\n registryClient.provider.connection,\n memberAddresses,\n )\n )\n .filter(raw => raw !== null)\n .map((raw: any) => {\n const account = registryClient.coder.accounts.decode(\n 'Member',\n raw!.account.data,\n );\n return {\n publicKey: raw!.publicKey,\n account,\n };\n });\n\n // Get all accounts for all of our member accounts.\n //\n // Note: As the number of registrars grows, we'll probably want to move\n // this fetch to be an on demand query, rather than on application\n // bootstrap.\n await Promise.all(\n memberAccounts.map(memberAccount => {\n return fetchAndDispatchMemberAccounts(\n memberAccount,\n dispatch,\n registryClient.provider.connection,\n );\n }),\n );\n\n // Add all the member accounts to the store. Must be done *after* the\n // active member's vaults.\n memberAccounts.forEach(m => {\n dispatch({\n type: ActionType.AccountAdd,\n item: {\n account: m,\n },\n });\n });\n\n return memberAccounts;\n };\n\n // All mints for each staking instance (pool token and the token being staked).\n const fetchMints = async (registrars: ProgramAccount[]) => {\n const mintAddresses = registrars\n .map(r => r.account.mint)\n .concat(registrars.map(r => r.account.poolMint));\n const mints = (\n await anchor.utils.getMultipleAccounts(\n registryClient.provider.connection,\n mintAddresses,\n )\n ).map(raw => {\n const account = parseMintAccount(raw!.account.data);\n return {\n publicKey: raw!.publicKey,\n account,\n };\n });\n mints.forEach(m => {\n dispatch({\n type: ActionType.AccountAdd,\n item: {\n account: m,\n },\n });\n });\n };\n\n // All token accounts owned by the current user.\n const fetchOwnedTokenAccounts = async () => {\n const ownedTokenAccounts = await token.getOwnedTokenAccounts(\n lockupClient.provider.connection,\n wallet.publicKey,\n );\n dispatch({\n type: ActionType.CommonOwnedTokenAccountsSet,\n item: {\n ownedTokenAccounts,\n },\n });\n };\n\n // All vesting accounts owned by the current user.\n const fetchVestingAccounts = async () => {\n const vestingAccounts = await lockupClient.account.vesting.all(\n wallet.publicKey.toBuffer(),\n );\n vestingAccounts.forEach((account: any) => {\n dispatch({\n type: ActionType.AccountAdd,\n item: {\n account,\n },\n });\n });\n dispatch({\n type: ActionType.LockupSetVestings,\n item: {\n vestingAccounts: vestingAccounts.map(\n (v: ProgramAccount) => v.publicKey,\n ),\n },\n });\n };\n\n const registrars = await fetchRegistrars();\n const members = await fetchMembers(registrars);\n await fetchMints(registrars);\n await fetchOwnedTokenAccounts();\n await fetchVestingAccounts();\n\n return { registrars, members };\n}\n\nexport async function registrarSwitch(\n registryClient: any,\n accounts: any,\n dispatch: any,\n newRegistrar: PublicKey,\n oldRegistrar?: PublicKey,\n) {\n const oldMember = await (async (): Promise => {\n if (oldRegistrar === undefined) {\n return undefined;\n }\n const oldMember = await PublicKey.createWithSeed(\n registryClient.provider.wallet.publicKey,\n await memberSeed(oldRegistrar),\n registryClient.programId,\n );\n const oldMemberAccount = accounts[oldMember.toString()];\n return oldMemberAccount !== undefined\n ? {\n publicKey: oldMember,\n account: oldMemberAccount,\n }\n : undefined;\n })();\n\n const newMember = await (async (): Promise => {\n const newMember = await PublicKey.createWithSeed(\n registryClient.provider.wallet.publicKey,\n await memberSeed(newRegistrar),\n registryClient.programId,\n );\n const newMemberAccount = accounts[newMember.toString()];\n return newMemberAccount\n ? {\n publicKey: newMember,\n account: newMemberAccount,\n }\n : undefined;\n })();\n\n await subscribeRegistrar(\n registryClient,\n accounts,\n dispatch,\n newRegistrar,\n oldRegistrar,\n );\n if (newMember) {\n unsubscribeMember(registryClient, oldMember);\n subscribeMember(newMember, registryClient, dispatch);\n }\n\n // Perform the UI update.\n dispatch({\n type: ActionType.RegistrySetRegistrar,\n item: {\n registrar: newRegistrar,\n member: newMember ? newMember.publicKey : undefined,\n },\n });\n}\n\nexport async function subscribeRegistrar(\n registryClient: any,\n accounts: any,\n dispatch: any,\n newRegistrar: PublicKey,\n oldRegistrar?: PublicKey,\n) {\n if (oldRegistrar) {\n const oldRegistrarAccount = accounts[oldRegistrar.toString()];\n registryClient.account.rewardQueue.unsubscribe(\n oldRegistrarAccount.rewardEventQ,\n );\n // TODO: unsubscribe from the staking pool subscription.\n }\n\n const newRegistrarAccount = accounts[newRegistrar.toString()];\n\n // Reward event queue sub.\n const conn = registryClient.account.rewardQueue.subscribe(\n newRegistrarAccount.rewardEventQ,\n );\n conn.on('change', (account: any) => {\n dispatch({\n type: ActionType.AccountUpdate,\n item: {\n account: {\n publicKey: newRegistrarAccount.rewardEventQ,\n account,\n },\n },\n });\n });\n\n // Staking pool token sub.\n // TODO: track these connections somewhere more organized.\n registryClient.provider.connection.onAccountChange(\n newRegistrarAccount.poolMint,\n (acc: any) => {\n const poolMint = parseMintAccount(acc.data);\n dispatch({\n type: ActionType.AccountUpdate,\n item: {\n account: {\n publicKey: newRegistrarAccount.poolMint,\n account: poolMint,\n },\n },\n });\n },\n 'recent',\n );\n}\n\nexport function subscribeMember(\n newMember: ProgramAccount,\n registryClient: any,\n dispatch: any,\n) {\n // Subscribe to all member account updates.\n registryClient.account.member\n .subscribe(newMember.publicKey)\n .on('change', (account: any) => {\n dispatch({\n type: ActionType.AccountUpdate,\n item: {\n account: {\n publicKey: newMember.publicKey,\n account,\n },\n },\n });\n });\n\n // Subscription function, updating the redux store on every change\n // to a token account.\n //\n // TODO: should track these subscriptions for unsubscribing on demand.\n const createVaultSubscription = (address: PublicKey) => {\n registryClient.provider.connection.onAccountChange(\n address,\n (acc: any) => {\n const tokenAccount = parseTokenAccount(acc.data);\n dispatch({\n type: ActionType.AccountUpdate,\n item: {\n account: {\n publicKey: address,\n account: tokenAccount,\n },\n },\n });\n },\n 'recent',\n );\n };\n\n // Subscribe to all the member's token vaults.\n createVaultSubscription(newMember.account.balances.vault);\n createVaultSubscription(newMember.account.balances.vaultStake);\n createVaultSubscription(newMember.account.balances.vaultPw);\n createVaultSubscription(newMember.account.balances.spt);\n createVaultSubscription(newMember.account.balancesLocked.vault);\n createVaultSubscription(newMember.account.balancesLocked.vaultStake);\n createVaultSubscription(newMember.account.balancesLocked.vaultPw);\n createVaultSubscription(newMember.account.balancesLocked.spt);\n}\n\nfunction unsubscribeMember(registryClient: any, newMember?: ProgramAccount) {\n // todo\n}\n\n// Fetches all accounts for a member account and populates the store with them.\nexport async function fetchAndDispatchMemberAccounts(\n memberAccount: ProgramAccount,\n dispatch: any,\n connection: any,\n) {\n let accounts = (\n await anchor.utils.getMultipleAccounts(connection, [\n memberAccount.account.balances.vault,\n memberAccount.account.balances.vaultStake,\n memberAccount.account.balances.vaultPw,\n memberAccount.account.balances.spt,\n memberAccount.account.balancesLocked.vault,\n memberAccount.account.balancesLocked.vaultStake,\n memberAccount.account.balancesLocked.vaultPw,\n memberAccount.account.balancesLocked.spt,\n ])\n )\n .filter(raw => raw !== null)\n .map((raw: any) => {\n return {\n publicKey: raw.publicKey,\n account: parseTokenAccount(raw.account.data),\n };\n });\n accounts.forEach(account => {\n dispatch({\n type: ActionType.AccountAdd,\n item: {\n account,\n },\n });\n });\n}\n","import React, { useState, useEffect, ReactElement } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Select from '@material-ui/core/Select';\nimport Menu from '@material-ui/core/Menu';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport IconButton from '@material-ui/core/IconButton';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport Button from '@material-ui/core/Button';\nimport PersonIcon from '@material-ui/icons/Person';\nimport BubbleChartIcon from '@material-ui/icons/BubbleChart';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { refreshAccounts } from './BootstrapProvider';\nimport { networks } from '../../store/config';\nimport {\n State as StoreState,\n ProgramAccount,\n BootstrapState,\n} from '../../store/reducer';\nimport { ActionType } from '../../store/actions';\nimport { useWallet } from './WalletProvider';\n\ntype HeaderProps = {\n isAppReady: boolean;\n member?: ProgramAccount;\n};\n\nexport default function Header(props: HeaderProps) {\n const { isAppReady } = props;\n const { network } = useSelector((state: StoreState) => {\n return {\n network: state.common.network,\n isAppReady:\n state.common.isWalletConnected &&\n state.common.bootstrapState === BootstrapState.Bootstrapped,\n };\n });\n const dispatch = useDispatch();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { wallet, registryClient, lockupClient } = useWallet();\n const [isRefreshing, setIsRefreshing] = useState(false);\n return (\n \n \n \n
\n \n \n \n \n \n {network.srmFaucet && (\n \n )}\n
\n \n {\n setIsRefreshing(true);\n enqueueSnackbar(`Refreshing`, {\n variant: 'info',\n });\n refreshAccounts({\n dispatch,\n lockupClient,\n registryClient,\n network,\n wallet,\n })\n .then(() => {\n setIsRefreshing(false);\n closeSnackbar();\n })\n .catch(err => {\n setIsRefreshing(false);\n closeSnackbar();\n enqueueSnackbar(`There was a problem refreshing: ${err}`, {\n variant: 'error',\n autoHideDuration: 2500,\n });\n });\n }}\n style={{\n display: isAppReady ? 'block' : 'none',\n justifyContent: 'center',\n flexDirection: 'column',\n marginRight: '10px',\n }}\n >\n {isRefreshing ? (\n \n \n \n ) : (\n
\n \n \n \n
\n )}\n \n \n \n {isAppReady && }\n \n \n
\n \n );\n}\n\nfunction SerumLogoButton() {\n const history = useHistory();\n return (\n
history.push('/')}>\n
\n \n \n );\n}\n\ntype BarButtonProps = {\n label: string;\n hrefClient?: string;\n href?: string;\n};\n\nfunction BarButton(props: BarButtonProps) {\n const history = useHistory();\n const { label, href, hrefClient } = props;\n return (\n hrefClient && history.push(hrefClient)}\n >\n \n \n \n \n );\n}\n\nfunction NetworkSelector() {\n const network = useSelector((state: StoreState) => {\n return state.common.network;\n });\n const dispatch = useDispatch();\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n setAnchorEl(\n // @ts-ignore\n e.currentTarget,\n )\n }\n >\n \n \n {network.label}\n \n \n \n {Object.keys(networks).map((n: string) => (\n {\n handleClose();\n dispatch({\n type: ActionType.CommonSetNetwork,\n item: {\n network: networks[n],\n networkKey: n,\n },\n });\n }}\n >\n {networks[n].label}\n \n ))}\n \n \n );\n}\n\nfunction UserSelector() {\n const { wallet } = useWallet();\n\n return (\n {\n return (\n \n {wallet.publicKey.toString()}\n \n );\n }}\n style={{\n marginLeft: '12px',\n width: '150px',\n }}\n onChange={e => {\n if (e.target.value === 'disconnect') {\n wallet.disconnect();\n }\n }}\n >\n \n \n \n Disconnect\n \n \n \n );\n}\n\ntype WalletConnectButtonProps = {\n style?: any;\n};\n\nexport function WalletConnectButton(\n props: WalletConnectButtonProps,\n): ReactElement {\n const { showDisconnect } = useSelector((state: StoreState) => {\n return {\n showDisconnect: state.common.isWalletConnected,\n };\n });\n const dispatch = useDispatch();\n const { wallet, lockupClient } = useWallet();\n const { enqueueSnackbar } = useSnackbar();\n\n // Wallet connection event listeners.\n useEffect(() => {\n wallet.on('disconnect', () => {\n enqueueSnackbar('Disconnected from wallet', {\n variant: 'info',\n autoHideDuration: 2500,\n });\n dispatch({\n type: ActionType.CommonWalletDidDisconnect,\n item: {},\n });\n dispatch({\n type: ActionType.CommonTriggerShutdown,\n item: {},\n });\n });\n wallet.on('connect', async () => {\n dispatch({\n type: ActionType.CommonWalletDidConnect,\n item: {},\n });\n dispatch({\n type: ActionType.CommonTriggerBootstrap,\n item: {},\n });\n });\n }, [wallet, dispatch, enqueueSnackbar, lockupClient.provider.connection]);\n\n return showDisconnect ? (\n wallet.disconnect()}\n >\n \n \n Disconnect\n \n \n ) : (\n wallet.connect()}\n >\n \n \n Connect wallet\n \n \n );\n}\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\n\nexport default function Footer() {\n return (\n \n
\n \n \n \n \n \n \n
\n \n );\n}\n\ntype FooterButtonProps = {\n label: string;\n href: string;\n isEnd?: boolean;\n};\n\nfunction FooterButton(props: FooterButtonProps) {\n const { label, href, isEnd } = props;\n return (\n \n \n {label}\n \n \n );\n}\n","import React, { useState, PropsWithChildren } from 'react';\nimport { useSelector } from 'react-redux';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport Button from '@material-ui/core/Button';\nimport { State as StoreState, BootstrapState } from '../../store/reducer';\nimport Header from './Header';\nimport Footer from './Footer';\n\ntype Props = {};\n\nexport default function Layout(props: PropsWithChildren) {\n const { isAppReady } = useSelector((state: StoreState) => {\n return {\n isAppReady:\n state.common.isWalletConnected &&\n state.common.bootstrapState === BootstrapState.Bootstrapped,\n };\n });\n const [refresh, setRefresh] = useState(false);\n return (\n \n \n \n
\n \n \n {window.localStorage.getItem('consent') ? (\n !isAppReady ? (\n \n ) : (\n
{props.children}
\n )\n ) : (\n {\n window.localStorage.setItem('consent', 'true');\n setRefresh(!refresh);\n }}\n />\n )}\n \n