@cetusprotocol/deepbook-utils 0.0.0-experimental-20251225165838

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";var He=Object.create;var Z=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var We=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var Ye=(a,e,t)=>e in a?Z(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Xe=(a,e)=>{for(var t in e)Z(a,t,{get:e[t],enumerable:!0})},Ae=(a,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ze(e))!Je.call(a,n)&&n!==t&&Z(a,n,{get:()=>e[n],enumerable:!(r=Ze(e,n))||r.enumerable});return a};var Te=(a,e,t)=>(t=a!=null?He(We(a)):{},Ae(e||!a||!a.__esModule?Z(t,"default",{value:a,enumerable:!0}):t,a)),et=a=>Ae(Z({},"__esModule",{value:!0}),a);var Oe=(a,e,t)=>(Ye(a,typeof e!="symbol"?e+"":e,t),t);var en={};Xe(en,{CLOCK_ADDRESS:()=>Ft,CachedContent:()=>L,CetusClmmSDK:()=>ee,ClmmExpectSwapModule:()=>Kt,ClmmFetcherModule:()=>Gt,ClmmIntegratePoolModule:()=>$t,ClmmIntegratePoolV2Module:()=>Nt,ClmmIntegrateRouterModule:()=>Vt,ClmmIntegrateRouterWithPartnerModule:()=>Lt,ClmmIntegrateUtilsModule:()=>Qt,CoinAssist:()=>j,CoinInfoAddress:()=>Ht,CoinStoreAddress:()=>Zt,DEFAULT_GAS_BUDGET_FOR_MERGE:()=>ct,DEFAULT_GAS_BUDGET_FOR_SPLIT:()=>at,DEFAULT_GAS_BUDGET_FOR_STAKE:()=>dt,DEFAULT_GAS_BUDGET_FOR_TRANSFER:()=>ut,DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI:()=>lt,DEFAULT_NFT_TRANSFER_GAS_FEE:()=>gt,DeepbookClobV2Moudle:()=>Wt,DeepbookCustodianV2Moudle:()=>zt,DeepbookEndpointsV2Moudle:()=>Jt,DeepbookUtilsModule:()=>J,GAS_SYMBOL:()=>pt,GAS_TYPE_ARG:()=>oe,GAS_TYPE_ARG_LONG:()=>be,MarginUtilsModule:()=>Y,NORMALIZED_SUI_COIN_TYPE:()=>jt,OrderType:()=>Qe,RpcModule:()=>X,SUI_SYSTEM_STATE_OBJECT_ID:()=>mt,TransactionUtil:()=>x,addHexPrefix:()=>he,asIntN:()=>nt,asUintN:()=>tt,bufferToHex:()=>yt,cacheTime24h:()=>U,cacheTime5min:()=>pe,calculateRiskRatio:()=>Ut,checkAddress:()=>_t,composeType:()=>_e,d:()=>u,decimalsMultiplier:()=>re,default:()=>Xt,extractAddressFromType:()=>Tt,extractStructTagFromType:()=>R,fixCoinType:()=>Ot,fixDown:()=>F,fixSuiObjectId:()=>Ie,fromDecimalsAmount:()=>$,getDefaultSuiInputType:()=>Yt,getFutureTime:()=>G,getMoveObject:()=>ue,getMoveObjectType:()=>Fe,getMovePackageContent:()=>Pt,getObjectDeletedResponse:()=>xe,getObjectDisplay:()=>It,getObjectFields:()=>Ce,getObjectId:()=>fe,getObjectNotExistsResponse:()=>qe,getObjectOwner:()=>Dt,getObjectPreviousTransactionDigest:()=>Et,getObjectReference:()=>ye,getObjectType:()=>vt,getObjectVersion:()=>Bt,getSuiObjectData:()=>K,hasPublicTransfer:()=>Rt,hexToNumber:()=>ft,hexToString:()=>Ct,isSortedSymbols:()=>At,isSuiObjectResponse:()=>Ue,maxDecimal:()=>se,normalizeCoinType:()=>ie,patchFixSuiObjectId:()=>ce,printTransaction:()=>xt,removeHexPrefix:()=>ae,secretKeyToEd25519Keypair:()=>rt,secretKeyToSecp256k1Keypair:()=>st,shortAddress:()=>ht,shortString:()=>Me,toBuffer:()=>Pe,toDecimalsAmount:()=>W,utf8to16:()=>ve});module.exports=et(en);var Ke=require("@mysten/sui/graphql");var Ne=require("@mysten/deepbook-v3"),y=require("@mysten/sui/bcs"),A=require("@mysten/sui/transactions"),Ve=require("js-base64"),T=require("@mysten/sui/utils");var pe=3e5,U=864e5;function G(a){return Date.parse(new Date().toString())+a}var L=class{overdueTime;value;constructor(e,t=0){this.overdueTime=t,this.value=e}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};var Q=require("@mysten/bcs"),ge=require("@mysten/sui/keypairs/ed25519"),me=require("@mysten/sui/keypairs/secp256k1");var z=Te(require("decimal.js"));function u(a){return z.default.isDecimal(a)?a:new z.default(a===void 0?0:a)}function re(a){return u(10).pow(u(a).abs())}var F=(a,e)=>{try{return u(a).toDP(e,z.default.ROUND_DOWN).toString()}catch{return a}},se=(a,e)=>z.default.max(u(a),u(e));function W(a,e){let t=re(u(e));return Number(u(a).mul(t))}function tt(a,e=32){return BigInt.asUintN(e,BigInt(a)).toString()}function nt(a,e=32){return Number(BigInt.asIntN(e,BigInt(a)))}function $(a,e){let t=re(u(e));return Number(u(a).div(t))}function rt(a,e="hex"){if(a instanceof Uint8Array){let r=Buffer.from(a);return ge.Ed25519Keypair.fromSecretKey(r)}let t=e==="hex"?(0,Q.fromHEX)(a):(0,Q.fromB64)(a);return ge.Ed25519Keypair.fromSecretKey(t)}function st(a,e="hex"){if(a instanceof Uint8Array){let r=Buffer.from(a);return me.Secp256k1Keypair.fromSecretKey(r)}let t=e==="hex"?(0,Q.fromHEX)(a):(0,Q.fromB64)(a);return me.Secp256k1Keypair.fromSecretKey(t)}var je={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Be={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6};var N=require("@mysten/sui/utils");var it="0x2::coin::Coin",ot=/^0x2::coin::Coin<(.+)>$/,at=1e3,ct=500,ut=100,lt=100,dt=1e3,oe="0x2::sui::SUI",be="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",pt="SUI",gt=450,mt="0x0000000000000000000000000000000000000005",j=class{static getCoinTypeArg(e){let t=e.type.match(ot);return t?t[1]:null}static isSUI(e){let t=j.getCoinTypeArg(e);return t?j.getCoinSymbol(t)==="SUI":!1}static getCoinSymbol(e){return e.substring(e.lastIndexOf(":")+1)}static getBalance(e){return BigInt(e.fields.balance)}static totalBalance(e,t){let r=BigInt(0);return e.forEach(n=>{t===n.coinAddress&&(r+=BigInt(n.balance))}),r}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${it}<${e}>`}static getCoinAssets(e,t){let r=[];return t.forEach(n=>{ie(n.coinAddress)===ie(e)&&r.push(n)}),r}static isSuiCoin(e){return R(e).full_address===oe}static selectCoinObjectIdGreaterThanOrEqual(e,t,r=[]){let n=j.selectCoinAssetGreaterThanOrEqual(e,t,r),s=n.selectedCoins.map(c=>c.coinObjectId),i=n.remainingCoins,o=n.selectedCoins.map(c=>c.balance.toString());return{objectArray:s,remainCoins:i,amountArray:o}}static selectCoinAssetGreaterThanOrEqual(e,t,r=[]){let n=j.sortByBalance(e.filter(l=>!r.includes(l.coinObjectId))),s=j.calculateTotalBalance(n);if(s<t)return{selectedCoins:[],remainingCoins:n};if(s===t)return{selectedCoins:n,remainingCoins:[]};let i=BigInt(0),o=[],c=[...n];for(;i<s;){let l=t-i,d=c.findIndex(g=>g.balance>=l);if(d!==-1){o.push(c[d]),c.splice(d,1);break}let p=c.pop();p.balance>0&&(o.push(p),i+=p.balance)}return{selectedCoins:j.sortByBalance(o),remainingCoins:j.sortByBalance(c)}}static sortByBalance(e){return e.sort((t,r)=>t.balance<r.balance?-1:t.balance>r.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,r)=>t.balance>r.balance?-1:t.balance<r.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,r)=>t+r.balance,BigInt(0))}};var bt=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function he(a){return a.startsWith("0x")?a:`0x${a}`}function ae(a){return a.startsWith("0x")?`${a.slice(2)}`:a}function Me(a,e=4,t=4){let r=Math.max(e,1),n=Math.max(t,1);return`${a.slice(0,r+2)} ... ${a.slice(-n)}`}function ht(a,e=4,t=4){return Me(he(a),e,t)}function _t(a,e={leadingZero:!0}){if(typeof a!="string")return!1;let t=a;if(e.leadingZero){if(!a.startsWith("0x"))return!1;t=t.substring(2)}return bt.test(t)}function Pe(a){if(!Buffer.isBuffer(a))if(Array.isArray(a))a=Buffer.from(a);else if(typeof a=="string")exports.isHexString(a)?a=Buffer.from(exports.padToEven(exports.stripHexPrefix(a)),"hex"):a=Buffer.from(a);else if(typeof a=="number")a=exports.intToBuffer(a);else if(a==null)a=Buffer.allocUnsafe(0);else if(a.toArray)a=Buffer.from(a.toArray());else throw new Error("invalid type");return a}function yt(a){return he(Pe(a).toString("hex"))}function ft(a){let e=new ArrayBuffer(4),t=new DataView(e);for(let n=0;n<a.length;n++)t.setUint8(n,a.charCodeAt(n));return t.getUint32(0,!0)}function ve(a){let e,t,r,n,s;e="";let i=a.length;for(t=0;t<i;)switch(r=a.charCodeAt(t++),r>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=a.charAt(t-1);break;case 12:case 13:n=a.charCodeAt(t++),e+=String.fromCharCode((r&31)<<6|n&63);break;case 14:n=a.charCodeAt(t++),s=a.charCodeAt(t++),e+=String.fromCharCode((r&15)<<12|(n&63)<<6|(s&63)<<0);break}return e}function Ct(a){let e="",t=ae(a),r=t.length/2;for(let n=0;n<r;n++)e+=String.fromCharCode(Number.parseInt(t.substr(n*2,2),16));return ve(e)}var kt=0,De=1,wt=2;function Ee(a,e){return a===e?kt:a<e?De:wt}function St(a,e){let t=0,r=a.length<=e.length?a.length:e.length,n=Ee(a.length,e.length);for(;t<r;){let s=Ee(a.charCodeAt(t),e.charCodeAt(t));if(t+=1,s!==0)return s}return n}function At(a,e){return St(a,e)===De}function _e(a,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],n=[a,...e].filter(Boolean).join("::");return t&&t.length&&(n+=`<${t.join(", ")}>`),n}function Tt(a){return a.split("::")[0]}function R(a){try{let e=a.replace(/\s/g,""),r=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(r){e=e.slice(0,e.indexOf("<"));let c={...R(e),type_arguments:r.map(l=>R(l).source_address)};return c.type_arguments=c.type_arguments.map(l=>j.isSuiCoin(l)?l:R(l).source_address),c.source_address=_e(c.full_address,c.type_arguments),c}let n=e.split("::"),i={full_address:e,address:e===oe||e===be?"0x2":(0,N.normalizeSuiObjectId)(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return i.full_address=`${i.address}::${i.module}::${i.name}`,i.source_address=_e(i.full_address,i.type_arguments),i}catch{return{full_address:a,address:"",module:"",name:"",type_arguments:[],source_address:a}}}function ie(a){return R(a).source_address}function Ie(a){return a.toLowerCase().startsWith("0x")?(0,N.normalizeSuiObjectId)(a):a}var Ot=(a,e=!0)=>{let t=a.split("::"),r=t.shift(),n=(0,N.normalizeSuiObjectId)(r);return e&&(n=ae(n)),`${n}::${t.join("::")}`};function ce(a){for(let e in a){let t=typeof a[e];if(t==="object")ce(a[e]);else if(t==="string"){let r=a[e];a[e]=Ie(r)}}}var jt=(0,N.normalizeStructTag)(N.SUI_TYPE_ARG);function Re(...a){let e="DeepbookV3_Utils_Sdk###"}function K(a){return a.data}function xe(a){if(a.error&&"object_id"in a.error&&"version"in a.error&&"digest"in a.error){let{error:e}=a;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function qe(a){if(a.error&&"object_id"in a.error&&!("version"in a.error)&&!("digest"in a.error))return a.error.object_id}function ye(a){if("reference"in a)return a.reference;let e=K(a);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:xe(a)}function fe(a){return"objectId"in a?a.objectId:ye(a)?.objectId??qe(a)}function Bt(a){return"version"in a?a.version:ye(a)?.version}function Ue(a){return a.data!==void 0}function Mt(a){return a.content!==void 0}function Pt(a){let e=K(a);if(e?.content?.dataType==="package")return e.content.disassembled}function ue(a){let e="data"in a?K(a):a;if(!(!e||!Mt(e)||e.content.dataType!=="moveObject"))return e.content}function Fe(a){return ue(a)?.type}function vt(a){let e=Ue(a)?a.data:a;return!e?.type&&"data"in a?e?.content?.dataType==="package"?"package":Fe(a):e?.type}function Et(a){return K(a)?.previousTransaction}function Dt(a){return K(a)?.owner}function It(a){let e=K(a)?.display;return e||{data:null,error:null}}function Ce(a){let e=ue(a)?.fields;if(e)return"fields"in e?e.fields:e}function Rt(a){return ue(a)?.hasPublicTransfer??!1}var $e=require("@mysten/sui/transactions");async function xt(a,e=!0){a.blockData.transactions.forEach((t,r)=>{})}var q=class{static async adjustTransactionForGas(e,t,r,n){n.setSender(e.senderAddress);let s=j.selectCoinAssetGreaterThanOrEqual(t,r).selectedCoins;if(s.length===0)throw new Error("Insufficient balance");let i=j.calculateTotalBalance(t);if(i-r>1e9)return{fixAmount:r};let o=await e.fullClient.calculationTxGas(n);if(j.selectCoinAssetGreaterThanOrEqual(t,BigInt(o),s.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(o)+BigInt(500);if(i-r<l){if(r-=l,r<0)throw new Error("gas Insufficient balance");let d=new $e.Transaction;return{fixAmount:r,newTx:d}}}return{fixAmount:r}}static buildCoinForAmount(e,t,r,n,s=!0,i=!1){let o=j.getCoinAssets(n,t);if(r===BigInt(0)&&o.length===0)return q.buildZeroValueCoin(t,e,n,s);let c=j.calculateTotalBalance(o);if(c<r)throw new Error(`The amount(${c}) is Insufficient balance for ${n} , expect ${r} `);return q.buildCoin(e,t,o,r,n,s,i)}static buildCoin(e,t,r,n,s,i=!0,o=!1){if(j.isSuiCoin(s)){if(i){let _=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[_]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&r.length>1){let _=j.selectCoinObjectIdGreaterThanOrEqual(r,n);return{targetCoin:e.object(_.objectArray[0]),remainCoins:_.remainCoins,tragetCoinAmount:_.amountArray[0],isMintZeroCoin:!1}}let f=j.selectCoinObjectIdGreaterThanOrEqual(r,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:f.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let c=j.selectCoinObjectIdGreaterThanOrEqual(r,n),l=c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),d=c.objectArray;if(i)return{targetCoin:e.makeMoveVec({elements:d.map(f=>e.object(f))}),remainCoins:c.remainCoins,tragetCoinAmount:c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),isMintZeroCoin:!1};let[p,...g]=d,b=e.object(p),m=b,h=c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),w;return g.length>0&&e.mergeCoins(b,g.map(f=>e.object(f))),o&&Number(l)>Number(n)&&(m=e.splitCoins(b,[e.pure.u64(n)]),h=n.toString(),w=b),{targetCoin:m,remainCoins:c.remainCoins,originalSplitedCoin:w,tragetCoinAmount:h,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,r,n=!0){let s=q.callMintZeroValueCoin(t,r),i;return n?i=t.makeMoveVec({elements:[s]}):i=s,{targetCoin:i,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,r,n,s=!0){let i=j.getCoinAssets(n,t);if(r.amountFirst===BigInt(0))return i.length>0?q.buildCoin(e,[...t],[...i],r.amountFirst,n,s):q.buildZeroValueCoin(t,e,n,s);let o=j.calculateTotalBalance(i);if(o>=r.amountFirst)return q.buildCoin(e,[...t],[...i],r.amountFirst,n,s);if(o<r.amountSecond)throw new Error(`The amount(${o}) is Insufficient balance for ${n} , expect ${r.amountSecond} `);return q.buildCoin(e,[...t],[...i],r.amountSecond,n,s)}static buildCoinTypePair(e,t){let r=[];if(e.length===2){let n=[];n.push(e[0],e[1]),r.push(n)}else{let n=[];n.push(e[0],e[e.length-1]),r.push(n);for(let s=1;s<e.length-1;s+=1){if(t[s-1]===0)continue;let i=[];i.push(e[0],e[s],e[e.length-1]),r.push(i)}}return r}},x=q;Oe(x,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));var J=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?Be:je}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new A.Transaction,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:r}){let n=new A.Transaction;n.setSenderIfNotSet(e);let s=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),i=(0,A.coinWithBalance)({type:t.coinType,balance:BigInt(r)});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[s,i],typeArguments:[t.coinType]}),n.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[n.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),n.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),n}depositIntoManager({account:e,balanceManager:t,coin:r,amountToDeposit:n,tx:s}){let i=s||new A.Transaction;if(t){i.setSenderIfNotSet(e);let o=(0,A.coinWithBalance)({type:r.coinType,balance:BigInt(n)});return i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[i.object(t),o],typeArguments:[r.coinType]}),i}return null}withdrawFromManager({account:e,balanceManager:t,coin:r,amountToWithdraw:n,returnAssets:s,txb:i}){let o=i||new A.Transaction,c=o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[o.object(t),o.pure.u64(n)],typeArguments:[r.coinType]});return s?c:(o.transferObjects([c],e),o)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:r=new A.Transaction}){for(let n in t)t[n].forEach(i=>{let o=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[r.object(n),r.pure.u64(i.amount)],typeArguments:[i.coinType]});r.transferObjects([o],e)});return r}async getBalanceManager(e,t=!0){let r=`getBalanceManager_${e}`,n=this.getCache(r,t);if(!t&&n!==void 0)return n;try{let s=new A.Transaction;s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s.pure.address(e)],typeArguments:[]});let c=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}))?.events?.filter(d=>d.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return c.forEach(d=>{l.push({balanceManager:d,cetusBalanceManager:""})}),this.updateCache(r,l,864e5),l||[]}catch(s){throw s instanceof Error?s:new Error(String(s))}}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let r=new A.Transaction,n=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[r.object(t)]});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[r.object(e.address),r.object(t),n],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),r}async getManagerBalance({account:e,balanceManager:t,coins:r}){try{let n=new A.Transaction;r.forEach(o=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(t)],typeArguments:[o.coinType]})});let s=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),i={};return s.results?.forEach((o,c)=>{let l=r[c],d=o.returnValues[0][0],p=y.bcs.U64.parse(new Uint8Array(d)),g=u(p),b=g.eq(0)?"0":g.div(Math.pow(10,l.decimals)).toString();i[l.coinType]={adjusted_balance:b,balance:g.toString()}}),i}catch(n){throw n instanceof Error?n:new Error(String(n))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let r=new A.Transaction,n=await this.getBalanceManager(e,!0);if(!Array.isArray(n)||n.length===0)return{};n.forEach(o=>{t.forEach(c=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[r.object(o.balanceManager)],typeArguments:[c.coinType]})})});let s=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:r}),i={};return n.forEach((o,c)=>{let l={},d=c*t.length;t.forEach((p,g)=>{let b=d+g,m=s.results?.[b];if(m){let h=m.returnValues[0][0],w=y.bcs.U64.parse(new Uint8Array(h)),f=u(w),C=f.eq(0)?"0":f.div(Math.pow(10,p.decimals)).toString();l[p.coinType]={adjusted_balance:C,balance:f.toString()}}}),i[o.balanceManager]=l}),i}catch(r){throw r instanceof Error?r:new Error(String(r))}}async getMarketPrice(e){try{let t=new A.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let n=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0],s=Number(y.bcs.U64.parse(new Uint8Array(n))),i=Math.pow(10,e.baseCoin.decimals).toString(),o=Math.pow(10,e.quoteCoin.decimals).toString();return u(s).mul(i).div(o).div(1e9).toString()}catch(t){return Re("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,r=[];return e?.data?.forEach(n=>{let s=n?.parsedJson,i=n.type.match(t);if(i){let c=i[1].split(", ");r.push({...s,baseCoinType:c[0],quoteCoinType:c[1]})}}),r}async getQuoteQuantityOut(e,t,r){let n=new A.Transaction;n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quote_quantity_out`,arguments:[n.object(e.address),n.pure.u64(t),n.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:r,transactionBlock:n}),i=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[0][0]))),o=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[1][0]))),c=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[2][0])));return{baseQuantityDisplay:u(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:u(i).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(c).div(1e6).toString(),baseQuantity:t,baseOut:i,quoteOut:o,deepRequired:c}}async getBaseQuantityOut(e,t,r){let n=new A.Transaction;n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_base_quantity_out`,arguments:[n.object(e.address),n.pure.u64(t),n.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:r,transactionBlock:n}),i=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[0][0]))),o=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[1][0]))),c=String(y.bcs.U64.parse(new Uint8Array(s.results[0].returnValues[2][0])));return{quoteQuantityDisplay:u(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:u(i).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(c).div(1e6).toString(),quoteQuantity:t,baseOut:i,quoteOut:o,deepRequired:c}}async getQuantityOut(e,t,r,n){let s=new A.Transaction;s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[s.object(e.address),s.pure.u64(t),s.pure.u64(r),s.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let i=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:s}),o=Number(y.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0]))),c=Number(y.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]))),l=Number(y.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[2][0])));return{baseQuantityDisplay:u(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:u(r).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:u(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(l).div(1e6).toString(),baseQuantity:t,quoteQuantity:r,baseOut:o,quoteOut:c,deepRequired:l}}async estimatedMaxFee(e,t,r,n,s,i,o){let c=this.deepCoin;try{let{taker_fee:l,maker_fee:d}=e,p=u(l).div(1e9).toString(),g=u(d).div(1e9).toString(),b=await this.getMarketPrice(e),m=i?r:b!=="0"?b:o;if(m==="0")throw new Error("Cannot get market price");let h=Math.pow(10,e.baseCoin.decimals).toString(),w=Math.pow(10,e.quoteCoin.decimals).toString(),f=u(m).div(h).mul(w).mul(1e9).toString();if(n){let S=await this.getMarketPrice(e),k=u(i?r:S!=="0"?S:o).div(h).mul(w).mul(1e9).toString(),O=await this.getOrderDeepPrice(e);if(!O)throw new Error("Cannot get deep price");let B=se(k,r),V=u(t).mul(u(p)).mul(u(O.deep_per_asset)).div(u(1e9)),I=u(t).mul(u(g)).mul(u(O.deep_per_asset)).div(u(1e9));O.asset_is_base||(V=V.mul(B).div(u(1e9)),I=I.mul(B).div(u(1e9)));let te=V.ceil().toString(),ne=I.ceil().toString();return{takerFee:te,makerFee:ne,takerFeeDisplay:$(te,c.decimals).toString(),makerFeeDisplay:$(ne,c.decimals).toString(),feeType:c.coinType}}if(s){let S=se(f,r),P=u(t).mul(S).mul(p).div(u(1e9)).ceil().toFixed(0),k=u(t).mul(S).mul(g).div(u(1e9)).ceil().toFixed(0);return{takerFee:P,makerFee:k,takerFeeDisplay:$(P,e.quoteCoin.decimals).toString(),makerFeeDisplay:$(k,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let C=u(t).mul(u(p).mul(1.25)).ceil().toFixed(0),_=u(t).mul(u(g).mul(1.25)).ceil().toFixed(0);return{takerFee:C,makerFee:_,takerFeeDisplay:$(C,e.baseCoin.decimals).toString(),makerFeeDisplay:$(_,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e){try{let t=new A.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order_deep_price`,arguments:[t.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let n=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0];return this.parseOrderDeepPrice(new Uint8Array(n))}catch{return null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),r=t.getUint8(0)!==0,n=Number(t.getBigUint64(1,!0));return{asset_is_base:r,deep_per_asset:n}}getCoinAssets(e,t,r,n){return x.buildCoinForAmount(n,r,BigInt(u(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,r,n,s,i,o){let c=this.deepCoin;if(!o)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(c);let d=await this.getManagerBalance({account:s,balanceManager:o,coins:l}),p=d?.[t]?.balance||"0",g=d?.[r]?.balance||"0",b=i&&d?.[c.coinType]?.balance||"0";return{baseManagerBlance:p,quoteManagerBlance:g,feeManaerBalance:b}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,r,n,s,i,o,c,l,d){let p=u(e).gt(0)&&l,g="0";if(!p)return{feeAsset:this.getEmptyCoin(d,t),haveDepositFee:"0"};if(i||o){let b=u(s).sub(i?n:r);g=b.lte(0)?e:b.sub(e).lt(0)?b.sub(e).toString():"0"}else g=u(s).sub(e).lt("0")?u(s).sub(e).abs().toString():"0";return{feeAsset:u(g).gt("0")?this.getCoinAssets(t,g,c,d):this.getEmptyCoin(d,t),haveDepositFee:g}}async getTransactionRelatedAssets(e,t,r,n,s,i,o,c,l){try{let d=this.deepCoin,p=(0,T.normalizeStructTag)(e.baseCoin.coinType),g=(0,T.normalizeStructTag)(e.quoteCoin.coinType),b=p===d.coinType,m=g===d.coinType,h=!b&&!m,{baseManagerBlance:w,quoteManagerBlance:f,feeManaerBalance:C}=await this.getTransactionRelatedBalance(e,p,g,h,i,o,c),_,S,P=!1,k=await this._sdk.getOwnerCoinAssets(i);if(s){o||(r=u(r).add(u(n)).toString());let B=u(f).sub(r).toString();u(B).lt(0)?(P=!0,S=this.getCoinAssets(g,B,k,l)):S=this.getEmptyCoin(l,g),_=this.getEmptyCoin(l,p)}else{o||(t=u(t).add(u(n)).toString());let B=u(w).sub(t).toString();u(B).lt(0)?(P=!0,_=this.getCoinAssets(p,B,k,l)):_=this.getEmptyCoin(l,p),S=this.getEmptyCoin(l,g)}let O=this.getFeeAsset(n,d.coinType,t,r,C,m,b,k,o,l);return{baseAsset:_,quoteAsset:S,feeAsset:O,haveDeposit:P}}catch(d){throw d instanceof Error?d:new Error(String(d))}}async getMarketTransactionRelatedAssets(e,t,r,n,s,i,o,c,l){try{let d=this.deepCoin,p=(0,T.normalizeStructTag)(e.baseCoin.coinType),g=(0,T.normalizeStructTag)(e.quoteCoin.coinType),b=p===d.coinType,m=g===d.coinType,h=!b&&!m,{baseManagerBlance:w,quoteManagerBlance:f}=await this.getTransactionRelatedBalance(e,p,g,h,i,o,c),C,_,S=await this._sdk.getOwnerCoinAssets(i);if(s){o||(r=u(r).add(u(n)).toString());let k=u(f).sub(r).toString();if(u(k).lt(0)){let O;u(f).gt(0)&&(O=this.withdrawFromManager({account:i,balanceManager:c,coin:e.quoteCoin,amountToWithdraw:f,returnAssets:!0,txb:l}));let B=this.getCoinAssets(g,k,S,l);O&&l.mergeCoins(B,[O]),_=B}else _=this.withdrawFromManager({account:i,balanceManager:c,coin:e.quoteCoin,amountToWithdraw:r,returnAssets:!0,txb:l});C=this.getEmptyCoin(l,p)}else{o||(t=u(t).add(u(n)).toString());let k=u(w).sub(t).toString();if(u(k).lt(0)){let O;u(w).gt(0)&&(O=this.withdrawFromManager({account:i,balanceManager:c,coin:e.baseCoin,amountToWithdraw:w,returnAssets:!0,txb:l}));let B=this.getCoinAssets(p,k,S,l);O&&l.mergeCoins(B,[O]),C=B}else C=this.withdrawFromManager({account:i,balanceManager:c,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});_=this.getEmptyCoin(l,g)}let P=this.getEmptyCoin(l,d.coinType);return{baseAsset:C,quoteAsset:_,feeAsset:P}}catch(d){throw d instanceof Error?d:new Error(String(d))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:r,orderType:n,isBid:s,maxFee:i,account:o,payWithDeep:c,expirationTimestamp:l=Date.now()+31536e8}){try{let d=this.deepCoin,p=e.address,g=e.baseCoin.decimals,b=e.quoteCoin.decimals,m=e.baseCoin.coinType,h=e.quoteCoin.coinType,w=u(t).mul(10**(b-g+9)).toString(),f=(0,T.normalizeStructTag)(m),C=(0,T.normalizeStructTag)(h),_=new A.Transaction,S,P,k=await this._sdk.getOwnerCoinAssets(o);if(s){let I=u(t).mul(u(r).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();c||(I=u(I).add(u(i)).toString()),P=x.buildCoinForAmount(_,k,BigInt(I),C,!1,!0)?.targetCoin}else{let I=r;c||(I=u(r).abs().add(u(i)).toString()),S=x.buildCoinForAmount(_,k,BigInt(u(I).abs().toString()),f,!1,!0)?.targetCoin}let O=c?u(i).gt(0)?x.buildCoinForAmount(_,k,BigInt(u(i).abs().ceil().toString()),d.coinType,!1,!0).targetCoin:this.getEmptyCoin(_,d.coinType):this.getEmptyCoin(_,d.coinType),B=_.moveCall({typeArguments:[s?m:h],target:"0x2::coin::zero",arguments:[]}),V=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(p),s?B:S,s?P:B,O,_.pure.u8(n),_.pure.u8(0),_.pure.u64(w),_.pure.u64(r),_.pure.bool(s),_.pure.bool(!1),_.pure.u64(l),_.object(T.SUI_CLOCK_OBJECT_ID)];return _.moveCall({typeArguments:[f,C],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:V}),_}catch(d){throw d instanceof Error?d:new Error(String(d))}}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:r,maxFee:n,account:s,payWithDeep:i,slippage:o=.01}){try{let c=e.address,l=e.baseCoin.coinType,d=e.quoteCoin.coinType,p=(0,T.normalizeStructTag)(l),g=(0,T.normalizeStructTag)(d),b=new A.Transaction,m,h,w=t,f,C=await this.getOrderBook(e,"all",6);if(r){let k=C?.ask?.[0]?.price||"0",O=u(k).mul(u(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();f=u(O).plus(u(O).mul(o)).ceil().toString()}else{let k=await C?.bid?.[0]?.price||"0",O=u(k).mul(u(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();f=u(O).minus(u(O).mul(o)).floor().toString()}let _=await this._sdk.getOwnerCoinAssets(s);r?(i||(f=u(f).add(u(n)).toString()),h=this.getCoinAssets(g,f,_,b),m=this.getEmptyCoin(b,p)):(i||(w=u(w).add(u(n)).toString()),h=this.getEmptyCoin(b,g),m=this.getCoinAssets(p,w,_,b));let S=i?u(n).gt(0)?x.buildCoinForAmount(b,_,BigInt(u(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,this.deepCoin.coinType):this.getEmptyCoin(b,this.deepCoin.coinType),P=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(c),m,h,S,b.pure.u8(0),b.pure.u64(t),b.pure.bool(r),b.pure.bool(i),b.pure.u64(f),b.object(T.SUI_CLOCK_OBJECT_ID)];return b.moveCall({typeArguments:[p,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:P}),b}catch(c){throw c instanceof Error?c:new Error(String(c))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:r,quantity:n,isBid:s,orderType:i,maxFee:o,account:c,payWithDeep:l,expirationTimestamp:d=Date.now()+31536e8}){try{let p=this.deepCoin,g=u(r).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),b=t.baseCoin.coinType,m=t.quoteCoin.coinType,h=new A.Transaction,w=s?u(r).mul(u(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",f=s?"0":n,{baseAsset:C,quoteAsset:_,feeAsset:S,haveDeposit:P}=await this.getTransactionRelatedAssets(t,f,w,o,s,c,l,e,h);if(P){let B=[h.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),h.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),h.object(t.address),h.object(e),C,_,S.feeAsset,h.pure.u8(i),h.pure.u8(0),h.pure.u64(g),h.pure.u64(n),h.pure.bool(s),h.pure.bool(l),h.pure.u64(d),h.object(T.SUI_CLOCK_OBJECT_ID)];return h.moveCall({typeArguments:[b,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:B}),h}let k=new A.Transaction;u(S.haveDepositFee).gt(0)&&this.depositIntoManager({account:c,balanceManager:e,coin:p,amountToDeposit:S.haveDepositFee,tx:k});let O=[k.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),k.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),k.object(t.address),k.object(e),k.pure.u8(i),k.pure.u8(0),k.pure.u64(g),k.pure.u64(n),k.pure.bool(s),k.pure.bool(l),k.pure.u64(d),k.object(T.SUI_CLOCK_OBJECT_ID)];return k.moveCall({typeArguments:[b,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:O}),k}catch(p){throw p instanceof Error?p:new Error(String(p))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:r,newOrderQuantity:n}){let s=new A.Transaction;return s.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(e),s.object(t.address),s.pure.u128(r),s.pure.u64(n),s.object(T.SUI_CLOCK_OBJECT_ID)]}),s}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:r}=e,n=new A.Transaction,s=await this.getMarketPrice(e),i=u(s).gt(0)?s:Math.pow(10,-1),o=Math.pow(10,6),c=u(i).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=u(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[n.object(e.address),n.pure.u64(c),n.pure.u64(l),n.pure.bool(!1),n.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,r.coinType]});let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:n}),g=[],b=p.results[0].returnValues[0][0],m=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(b)),h=p.results[0].returnValues[1][0],w=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(h));return m.forEach((f,C)=>{let _=u(f).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),S=u(w[C]).div(Math.pow(10,t.decimals)).toString();g.push({price:_,quantity:S})}),g?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:r}=e,n=new A.Transaction,s=await this.getMarketPrice(e),i=u(s).gt(0)?u(s).div(3).toNumber():Math.pow(10,-6),o=u(s).gt(0)?s:Math.pow(10,6),c=u(i).mul(Math.pow(10,9+r.decimals-t.decimals)).toString(),l=u(o).mul(Math.pow(10,9+r.decimals-t.decimals)).toString();n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[n.object(e.address),n.pure.u64(F(c,0)),n.pure.u64(F(l,0)),n.pure.bool(!0),n.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,r.coinType]});let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:n}),g=[],b=p.results[0].returnValues[0][0],m=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(b)),h=p.results[0].returnValues[1][0],w=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(h));return m.forEach((f,C)=>{let _=u(f).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),S=u(w[C]).div(Math.pow(10,t.decimals)).toString();g.push({price:_,quantity:S})}),g?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:r,quoteCoin:n}=e,s=new A.Transaction,i=await this.getMarketPrice(e),o,c;t?(o=u(i).gt(0)?u(i).div(3).toNumber():Math.pow(10,-6),c=u(i).gt(0)?i:Math.pow(10,6)):(o=u(i).gt(0)?i:Math.pow(10,-1),c=u(i).gt(0)?u(i).mul(3).toNumber():Math.pow(10,6));let l=u(o).mul(Math.pow(10,9+n.decimals-r.decimals)).toString(),d=u(c).mul(Math.pow(10,9+n.decimals-r.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(F(l,0)),s.pure.u64(F(d,0)),s.pure.bool(t),s.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,n.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:s}),b=[],m=g.results[0].returnValues[0][0],h=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(m)),w=g.results[0].returnValues[1][0],f=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(w));return h.forEach((C,_)=>{let S=u(C).div(Math.pow(10,9+n.decimals-r.decimals)).toString(),P=u(f[_]).div(Math.pow(10,r.decimals)).toString();b.push({price:S,quantity:P})}),b?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:r,quoteQuantity:n,isBid:s,maxFee:i,account:o,payWithDeep:c,slippage:l=.01}){try{let d=(0,T.normalizeStructTag)(t.baseCoin.coinType),p=(0,T.normalizeStructTag)(t.quoteCoin.coinType),g=new A.Transaction,{baseAsset:b,quoteAsset:m,feeAsset:h}=await this.getMarketTransactionRelatedAssets(t,r,n,i,s,o,c,e,g),w=await this.getOrderBook(t,"all",6);if(s){let _=w?.ask?.[0]?.price||"0",S=u(_).mul(u(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=u(S).plus(u(S).mul(l)).ceil().toString()}else{let _=await w?.bid?.[0]?.price||"0",S=u(_).mul(u(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=u(S).minus(u(S).mul(l)).floor().toString()}let f=n,C=[g.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),g.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),g.object(t.address),g.object(e),b,m,h,g.pure.u8(0),g.pure.u64(r),g.pure.bool(s),g.pure.bool(c),g.pure.u64(f),g.object(T.SUI_CLOCK_OBJECT_ID)];return g.setSenderIfNotSet(o),g.moveCall({typeArguments:[d,p],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:C}),g}catch(d){throw d instanceof Error?d:new Error(String(d))}}async getOrderInfoList(e,t,r){try{let n=new A.Transaction;t.forEach(d=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(d)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:r,transactionBlock:n}),i=y.bcs.struct("ID",{bytes:y.bcs.Address}),o=y.bcs.struct("OrderDeepPrice",{asset_is_base:y.bcs.bool(),deep_per_asset:y.bcs.u64()}),c=y.bcs.struct("Order",{balance_manager_id:i,order_id:y.bcs.u128(),client_order_id:y.bcs.u64(),quantity:y.bcs.u64(),filled_quantity:y.bcs.u64(),fee_is_deep:y.bcs.bool(),order_deep_price:o,epoch:y.bcs.u64(),status:y.bcs.u8(),expire_timestamp:y.bcs.u64()}),l=[];return s?.results?.forEach(d=>{let p=d.returnValues[0][0],g=c.parse(new Uint8Array(p));l.push(g)}),l}catch{return[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),r=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),n=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:r,orderId:n}}async getOpenOrder(e,t,r,n){let s;if(n)s=n;else{let c=new A.Transaction;c.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[c.object(e.address),c.object(r)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let d=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:c})).results[0].returnValues[0][0];s=y.bcs.struct("VecSet",{constants:y.bcs.vector(y.bcs.U128)}).parse(new Uint8Array(d)).constants}let i=await this.getOrderInfoList(e,s,t)||[],o=[];return i.forEach(c=>{let l=this.decodeOrderId(BigInt(c.order_id));o.push({...c,price:l.price,isBid:l.isBid})}),o}cancelOrders(e,t){let r=new A.Transaction;return e.forEach(n=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),r.object(t),r.object(n.poolInfo.address),r.pure.u128(n.orderId),r.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[n.poolInfo.baseCoin.coinType,n.poolInfo.quoteCoin.coinType]})}),r}async getDeepbookOrderBook(e,t,r,n,s,i){let o=this._sdk.fullClient,l=await new Ne.DeepBookClient({client:o,address:s,env:"testnet",balanceManagers:{test1:{address:i,tradeCap:""}}}).getLevel2Range(e,t,r,n)}processOrderBookData(e,t,r,n){let s=e.returnValues[0][0],i=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(s)),o=e.returnValues[1][0],c=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(o)),l={};return i.forEach((p,g)=>{let b=u(p).div(Math.pow(10,9+r.decimals-t.decimals)).toString(),m=u(c[g]).div(Math.pow(10,t.decimals)).toString();l[b]?l[b]={price:b,quantity:u(l[b].quantity).add(m).toString()}:l[b]={price:b,quantity:m}}),Object.values(l)}getLevel2RangeTx(e,t,r,n,s=new A.Transaction){let{baseCoin:i,quoteCoin:o}=e,c=F(u(r).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),0),l=F(u(n).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),0);return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(c),s.pure.u64(l),s.pure.bool(t),s.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[i.coinType,o.coinType]}),s}async fetchOrderBook(e,t,r,n,s,i){let o=new A.Transaction,{baseCoin:c,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let m=n,h=r==="0"?s:r;o=this.getLevel2RangeTx(e,!0,m,h,o)}if(t==="ask"||t==="all"){let m=r==="0"?n:r,h=s;o=this.getLevel2RangeTx(e,!1,m,h,o)}let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:o}),g=[];(t==="bid"||t==="all")&&(g=p.results?.[0]?this.processOrderBookData(p.results[0],c,l,i):[]);let b=[];if(t==="ask"||t==="all"){let m=t==="ask"?0:1;b=p.results?.[m]?this.processOrderBookData(p.results[m],c,l,i):[]}return{bid:g.sort((m,h)=>h.price-m.price),ask:b.sort((m,h)=>m.price-h.price)}}catch{let p=this._sdk.sdkOptions.simulationAccount.address,g=[],b=[];try{let m=this.getLevel2RangeTx(e,!0,n,r),h=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:m});g=h.results?.[0]?this.processOrderBookData(h.results[0],c,l,i):[]}catch{g=[]}try{let m=this.getLevel2RangeTx(e,!1,n,r),h=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:m});b=h.results?.[0]?this.processOrderBookData(h.results[0],c,l,i):[]}catch{b=[]}return{bid:g,ask:b}}}async getOrderBook(e,t,r){let n={bid:[],ask:[]};try{let s=await this.getMarketPrice(e),i=t,o=Math.pow(10,-r),c=Math.pow(10,r),l=await this.fetchOrderBook(e,i,s,o,c,r);return{bid:l?.bid,ask:l?.ask}}catch{return n}}async getOrderBookOrigin(e,t){try{let r=new A.Transaction,n=await this.getMarketPrice(e),{baseCoin:s,quoteCoin:i}=e;if(t==="bid"||t==="all"){let p=Math.pow(10,-6),g=n,b=u(p).mul(Math.pow(10,9+i.decimals-s.decimals)).toString(),m=u(g).mul(Math.pow(10,9+i.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(b),r.pure.u64(m),r.pure.bool(!0),r.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[s.coinType,i.coinType]})}if(t==="ask"||t==="all"){let p=n,g=Math.pow(10,6),b=u(p).mul(Math.pow(10,9+i.decimals-s.decimals)).toString(),m=u(g).mul(Math.pow(10,9+i.decimals-s.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(b),r.pure.u64(m),r.pure.bool(!1),r.object(T.SUI_CLOCK_OBJECT_ID)],typeArguments:[s.coinType,i.coinType]})}let o=this._sdk.sdkOptions.simulationAccount.address,c=await this._sdk.fullClient.devInspectTransactionBlock({sender:o,transactionBlock:r}),l=[];if(t==="bid"||t==="all"){let p=c.results[0]?.returnValues[0]?.[0],g=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(p)),b=c.results[0]?.returnValues[1]?.[0],m=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(b));g.forEach((h,w)=>{let f=u(h).div(Math.pow(10,9+i.decimals-s.decimals)).toString(),C=u(m[w]).div(Math.pow(10,s.decimals)).toString();l.push({price:f,quantity:C})})}let d=[];if(t==="ask"||t==="all"){let p=t==="ask"?0:1,g=c.results[p]?.returnValues[0]?.[0],b=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(g)),m=c.results[p]?.returnValues[1]?.[0],h=y.bcs.vector(y.bcs.u64()).parse(new Uint8Array(m));b.forEach((w,f)=>{let C=u(w).div(Math.pow(10,9+i.decimals-s.decimals)).toString(),_=u(h[f]).div(Math.pow(10,s.decimals)).toString();d.push({price:C,quantity:_})})}return{bid:l,ask:d}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,s)=>[(0,T.normalizeStructTag)(n.coinType),n]))}async getAccount(e,t){let r=new A.Transaction;for(let o=0;o<t.length;o++){let c=t[o];r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[r.object(c.address),r.object(e)],typeArguments:[c.baseCoin.coinType,c.quoteCoin.coinType]})}let n=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:r}),s;if(n?.events.length===0)return null;let i=[];return n?.events?.forEach((o,c)=>{s=o?.parsedJson;let l=s.account.open_orders.contents,d=s.account.owed_balances,p=s.account.settled_balances,g=s.account.unclaimed_rebates,b=s.account.taker_volume;i.push({balance_manager_id:e,open_orders:l,owed_balances:d,settled_balances:p,unclaimed_rebates:g,taker_volume:b,poolInfo:t[c]})}),i}async getSuiTransactionResponse(e,t=!1){let r=`${e}_getSuiTransactionResponse`,n=this.getCache(r,t);if(n!==void 0)return n;let s;try{s=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{s=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(r,s,864e5),s}transformExtensions(e,t,r=!0){let n=[];for(let s of t){let{key:i}=s.fields,{value:o}=s.fields;if(i==="labels")try{o=JSON.parse(decodeURIComponent(Ve.Base64.decode(o)))}catch{}r&&(e[i]=o),n.push({key:i,value:o})}delete e.extension_fields,r||(e.extensions=n)}async getCoinConfigs(e=!1,t=!0){let r=this.sdk.sdkOptions.coinlist.handle,n=`${r}_getCoinConfigs`,s=this.getCache(n,e);if(s)return s;let o=(await this._sdk.fullClient.getDynamicFieldsByPage(r)).data.map(d=>d.objectId),c=await this._sdk.fullClient.batchGetObjects(o,{showContent:!0}),l=[];return c.forEach(d=>{let p=this.buildCoinConfig(d,t);this.updateCache(`${r}_${p.address}_getCoinConfig`,p,864e5),l.push({...p})}),this.updateCache(n,l,864e5),l}buildCoinConfig(e,t=!0){let r=Ce(e);r=r.value.fields;let n={...r};return n.id=fe(e),n.address=R(r.coin_type.fields.name).full_address,r.pyth_id&&(n.pyth_id=(0,T.normalizeSuiObjectId)(r.pyth_id)),this.transformExtensions(n,r.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,r=3e5){let n=this._cache[e];n?(n.overdueTime=G(r),n.value=t):n=new L(t,G(r)),this._cache[e]=n}getCache(e,t=!1){let r=this._cache[e],n=r?.isValid();if(!t&&n)return r.value;n||delete this._cache[e]}};var Le=require("@cetusprotocol/common-sdk"),M=require("@mysten/sui/bcs"),v=require("@mysten/sui/transactions"),E=require("@mysten/sui/utils");var de=require("@pythnetwork/pyth-sui-js");var we=10n;function qt(a,e){if(!we)throw new Error("oraclePriceMultiplierDecimal is required");if(a===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**(we- -e);return a*t}return a/10n**(e+we)}var H=class{_sdk;connection;suiPythClient;hasChangeConnection=!1;_cache={};constructor(e){this._sdk=e,this.connection=new de.SuiPriceServiceConnection("https://hermes-beta.pyth.network"),this.suiPythClient=new de.SuiPythClient(this._sdk.fullClient,this._sdk.sdkOptions.margin_utils.pyth_state_id,this._sdk.sdkOptions.margin_utils.wormhole_state_id)}get sdk(){return this._sdk}async updatePythPriceIDs(e,t){let r=null,n=null;try{r=await this.connection.getPriceFeedsUpdateData(e)}catch(o){n=o}if(r==null)throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${n?.message}`);let s=[];try{s=await this.suiPythClient.updatePriceFeeds(t,r,e)}catch(o){throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${o}`)}let i=new Map;for(let o=0;o<e.length;o++)i.set(e[o],s[o]);return i}priceCheck(e,t=60){let r=Math.floor(Date.now()/1e3);if(!(Math.abs(r-e.last_update_time)>t))return e}async getLatestPrice(e,t=!1){let r={},n=[];if(t?e.forEach(o=>{let c=this._sdk.getCache(`getLatestPrice_${o.coinType}`);c&&this.priceCheck(c,60)?r[o.coinType]=c:n.push(o.coinType)}):n=e.map(o=>o.coinType),n.length===0)return r;let s=e.map(o=>o.feed);return(await this.connection.getLatestPriceUpdates(s))?.parsed?.forEach((o,c)=>{let l=o.price;if(l){let{price:d,expo:p}=l,g=u(d).mul(u(10).pow(u(p))).toString(),m={coin_type:e[c].coinType,price:g,oracle_price:0n,last_update_time:l.publish_time};m.oracle_price=qt(BigInt(d),BigInt(p)),r[n[c]]=m,this._sdk.updateCache(`getLatestPrice_${m.coin_type}`,m)}}),r}};var Y=class{_sdk;pythPrice;_cache={};constructor(e){this._sdk=e,this.pythPrice=new H(e)}get sdk(){return this._sdk}createAndShareMarginManager(e,t=new v.Transaction){let{id:r,baseCoin:n,quoteCoin:s}=e,[i,o]=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::create_margin_manager`,arguments:[t.object(r),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),t.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[n.coinType,s.coinType]});return t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::share_margin_manager`,arguments:[i,o],typeArguments:[n.coinType,s.coinType]}),t}async getBalanceManagerByMarginManager(e){let t=`
2
+ query Events($filter: EventFilter) {
3
+ events(filter: $filter) {
4
+ nodes {
5
+ transactionModule { name }
6
+ sender { address }
7
+ contents {
8
+ type { repr }
9
+ bcs
10
+ json
11
+ }
12
+ }
13
+ }
14
+ }
15
+ `,r={filter:{sender:e,type:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::BalanceManagerEvent`}};return(await this.sdk.graphqlClient.query({query:t,variables:r}))?.data?.events?.nodes?.map(i=>i?.contents?.json)}async getMarginManagerByAccount(e){return(((await this.sdk.fullClient.queryEventsByPage({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::CreateMarginManagerEvent`}))?.data||[])?.filter(s=>s.parsedJson.owner===e)).map(s=>s?.parsedJson)}async getBaseBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:n}){let s=new v.Transaction;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_base_balance`,arguments:[s.object(t)],typeArguments:[r,n]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s});return M.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])).toString()}async getQuoteBalance({account:e,marginManager:t,baseCoinType:r,quoteCoinType:n}){let s=new v.Transaction;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_quote_balance`,arguments:[s.object(t)],typeArguments:[r,n]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s});return M.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])).toString()}async getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:n}){let s=new v.Transaction;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_borrowed_shares`,arguments:[s.object(t)],typeArguments:[r,n]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o=M.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])),c=M.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]));return{baseBorrowedShare:o,quoteBorrowedShare:c}}managerState=({account:e,marginManager:t,baseCoin:r,quoteCoin:n,pool:s,baseMarginPool:i,quoteMarginPool:o,decimals:c=6,basePriceFeedObjectId:l,quotePriceFeedObjectId:d})=>p=>{p.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::manager_state`,arguments:[p.object(t),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(l),p.object(d),p.object(s),p.object(i),p.object(o),p.object.clock()],typeArguments:[r.coinType,n.coinType]})};async getManagerState(e,t=new v.Transaction){let{account:r,marginManager:n,baseCoin:s,quoteCoin:i,pool:o,baseMarginPool:c,quoteMarginPool:l,decimals:d=6}=e;if(!s.feed||!i.feed)throw new Error("Feed not found");let p=await this.pythPrice.updatePythPriceIDs([s.feed,i.feed],t),g=p.get(s.feed),b=p.get(i.feed);if(!s.priceInfoObjectId||!i.priceInfoObjectId)throw new Error("Price info object id not found");t.add(this.managerState({...e,basePriceFeedObjectId:g,quotePriceFeedObjectId:b}));let m=await this.sdk.fullClient.devInspectTransactionBlock({sender:r,transactionBlock:t});if(!m.results||!m.results[0]||!m.results[0].returnValues)throw new Error(`Failed to get margin manager state: ${m.effects?.status?.error||"Unknown error"}`);let h=(0,E.normalizeSuiAddress)(M.bcs.Address.parse(new Uint8Array(m.results[0].returnValues[0][0]))),w=(0,E.normalizeSuiAddress)(M.bcs.Address.parse(new Uint8Array(m.results[0].returnValues[1][0]))),f=Number(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[2][0])))/1e9,C=this.#e(BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[3][0]))),s.scalar,d),_=this.#e(BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[4][0]))),i.scalar,d),S=this.#e(BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[5][0]))),s.scalar,d),P=this.#e(BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[6][0]))),i.scalar,d),k=M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[7][0])),O=Number(M.bcs.u8().parse(new Uint8Array(m.results[0].returnValues[8][0]))),B=M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[9][0])),V=Number(M.bcs.u8().parse(new Uint8Array(m.results[0].returnValues[10][0]))),I=BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[11][0]))),te=BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[12][0]))),ne=BigInt(M.bcs.U64.parse(new Uint8Array(m.results[0].returnValues[13][0])));return{managerId:h,deepbookPoolId:w,riskRatio:f,baseAsset:C,quoteAsset:_,baseDebt:S,quoteDebt:P,basePythPrice:k.toString(),basePythDecimals:O,quotePythPrice:B.toString(),quotePythDecimals:V,currentPrice:I,lowestTriggerAbovePrice:te,highestTriggerBelowPrice:ne}}async calculateAssets({account:e,marginManager:t,pool:r,baseCoin:n,quoteCoin:s,decimals:i=6}){let o=new v.Transaction;o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::calculate_assets`,arguments:[o.object(t),o.object(r)],typeArguments:[n.coinType,s.coinType]});let c=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:o}),l=c.results[0].returnValues[0][0],d=c.results[0].returnValues[1][0];if(!n.scalar||!s.scalar)throw new Error("Scalar not found");let p=M.bcs.U64.parse(new Uint8Array(l)),g=M.bcs.U64.parse(new Uint8Array(d));return{baseAsset:p.toString(),quoteAsset:g.toString()}}async getBorrowedAmount({account:e,marginManager:t,baseCoinType:r,quoteCoinType:n,baseMarginPool:s,quoteMarginPool:i}){let{baseBorrowedShare:o,quoteBorrowedShare:c}=await this.getBorrowedShares({account:e,marginManager:t,baseCoinType:r,quoteCoinType:n}),l=!!u(o).gt(u(c)),d=l?s:i,p=l?o:c,g=new v.Transaction;g.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_pool::borrow_shares_to_amount`,arguments:[g.object(d),g.pure.u64(BigInt(p)),g.object.clock()],typeArguments:[l?r:n]});let b=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:g}),m=M.bcs.U64.parse(new Uint8Array(b.results[0].returnValues[0][0]));return l?{baseBorrowedAmount:m.toString(),quoteBorrowedAmount:"0"}:{baseBorrowedAmount:"0",quoteBorrowedAmount:m.toString()}}async deposit({marginManager:e,baseCoin:t,quoteCoin:r,isBase:n,amount:s},i=new v.Transaction){if(!t.feed||!r.feed)throw new Error("Feed not found");let o=n?t.coinType:r.coinType,c=Le.CoinAssist.buildCoinWithBalance(BigInt(s),o,i),l=await this.pythPrice.updatePythPriceIDs([t.feed,r.feed],i),d=l.get(t.feed),p=l.get(r.feed);if(!d||!p)throw new Error("Price feed object id not found");return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::deposit`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(d),i.object(p),c,i.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,r.coinType,o]}),i}async withdraw({account:e,marginManager:t,baseMarginPool:r,quoteMarginPool:n,baseCoin:s,quoteCoin:i,pool:o,isBase:c,amount:l},d=new v.Transaction){if(!s.feed||!i.feed)throw new Error("Feed not found");let p=c?s.coinType:i.coinType,g=await this.pythPrice.updatePythPriceIDs([s.feed,i.feed],d),b=g.get(s.feed),m=g.get(i.feed);if(!b||!m)throw new Error("Price feed object id not found");let h=d.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw`,arguments:[d.object(t),d.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),d.object(r),d.object(n),d.object(b),d.object(m),d.object(o),d.pure.u64(BigInt(l)),d.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[s.coinType,i.coinType,p]});return d.transferObjects([h],e),d}async borrowBase({marginManager:e,baseMarginPool:t,baseCoin:r,quoteCoin:n,pool:s,amount:i},o=new v.Transaction){if(!r.feed||!n.feed)throw new Error("Feed not found");let c=await this.pythPrice.updatePythPriceIDs([r.feed,n.feed],o),l=c.get(r.feed),d=c.get(n.feed);if(!l||!d)throw new Error("Price feed object id not found");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_base`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(d),o.object(s),o.pure.u64(BigInt(i)),o.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,n.coinType]}),o}async borrowQuote({marginManager:e,quoteMarginPool:t,baseCoin:r,quoteCoin:n,pool:s,amount:i},o=new v.Transaction){if(!r.feed||!n.feed)throw new Error("Feed not found");let c=await this.pythPrice.updatePythPriceIDs([r.feed,n.feed],o),l=c.get(r.feed),d=c.get(n.feed);if(!l||!d)throw new Error("Price feed object id not found");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_quote`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(d),o.object(s),o.pure.u64(BigInt(i)),o.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,n.coinType]}),o}async repayBase({marginManager:e,baseMarginPool:t,baseCoinType:r,quoteCoinType:n,amount:s},i=new v.Transaction){return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_base`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t),i.object.option({type:"u64",value:s?i.pure.u64(s):null}),i.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[r,n]}),i}async repayQuote({marginManager:e,quoteMarginPool:t,baseCoinType:r,quoteCoinType:n,amount:s},i=new v.Transaction){return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_quote`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t),i.object.option({type:"u64",value:s?i.pure.u64(s):null}),i.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[r,n]}),i}async placeMarginMarketOrder({marginManager:e,poolInfo:t,selfMatchingOption:r,quantity:n,isBid:s,payWithDeep:i},o=new v.Transaction){let{id:c,baseCoin:l,quoteCoin:d}=t;if(l.decimals===void 0||d.decimals===void 0)throw new Error("Decimals not found");let p=BigInt(W(n,l.decimals));return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_market_order`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(c),o.pure.u8(r),o.pure.u64(p),o.pure.bool(s),o.pure.bool(i),o.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[l.coinType,d.coinType]}),o}async placeMarginLimitOrder({marginManager:e,poolInfo:t,orderType:r,selfMatchingOption:n,priceInput:s,quantity:i,isBid:o,payWithDeep:c,expirationTimestamp:l=Date.now()+31536e8},d=new v.Transaction){let{id:p,baseCoin:g,quoteCoin:b}=t;if(g.decimals===void 0||b.decimals===void 0)throw new Error("Decimals not found");let m=BigInt(u(s).mul(10**(b.decimals-g.decimals+9)).toString()),h=BigInt(W(i,g.decimals));return console.log("tx params: ",{marginManager:e,marginRegistryId:this._sdk.sdkOptions.margin_utils.margin_registry_id,pool:p,orderType:r,selfMatchingOption:n,priceBigInt:m,quantityBigInt:h,isBid:o,payWithDeep:c,expirationTimestamp:l}),d.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_limit_order`,arguments:[d.object(e),d.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),d.object(p),d.pure.u8(r),d.pure.u8(n),d.pure.u64(m),d.pure.u64(h),d.pure.bool(o),d.pure.bool(c),d.pure.u64(l),d.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[g.coinType,b.coinType]}),d}modifyMarginOrder({marginManager:e,poolInfo:t,orderId:r,newQuantity:n},s=new v.Transaction){if(t.baseCoin.decimals===void 0)throw new Error("Base coin decimals not found");let i=BigInt(W(n,t.baseCoin.decimals));return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::modify_margin_order`,arguments:[s.object(e),s.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),s.object(t.id),s.pure.u128(r),s.pure.u64(i),s.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s}cancelMarginOrder({marginManager:e,poolInfo:t,orderId:r},n=new v.Transaction){return n.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_margin_order`,arguments:[n.object(e),n.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),n.object(t.id),n.pure.u128(r),n.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),n}cancelAllMarginOrders({marginManager:e,poolInfo:t},r=new v.Transaction){return r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_all_margin_orders`,arguments:[r.object(e),r.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t.id),r.object(E.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),r}#e(e,t,r){let n=BigInt(t),s=e/n,i=e%n;if(i===0n)return s.toString();let o=t.toString().length-1,d=i.toString().padStart(o,"0").slice(0,r).replace(/0+$/,"");return d?`${s}.${d}`:s.toString()}};var Ge=require("@mysten/sui/client"),X=class extends Ge.SuiClient{async queryEventsByPage(e,t="all"){let r=[],n=!0,s=t==="all",i=s?null:t.cursor;do{let o=await this.queryEvents({query:e,cursor:i,limit:s?null:t.limit});o.data?(r=[...r,...o.data],n=o.hasNextPage,i=o.nextCursor):n=!1}while(s&&n);return{data:r,nextCursor:i,hasNextPage:n}}async getOwnedObjectsByPage(e,t,r="all"){let n=[],s=!0,i=r==="all",o=i?null:r.cursor;do{let c=await this.getOwnedObjects({owner:e,...t,cursor:o,limit:i?null:r.limit});c.data?(n=[...n,...c.data],s=c.hasNextPage,o=c.nextCursor):s=!1}while(i&&s);return{data:n,nextCursor:o,hasNextPage:s}}async getDynamicFieldsByPage(e,t="all"){let r=[],n=!0,s=t==="all",i=s?null:t.cursor;do{let o=await this.getDynamicFields({parentId:e,cursor:i,limit:s?null:t.limit});o.data?(r=[...r,...o.data],n=o.hasNextPage,i=o.nextCursor):n=!1}while(s&&n);return{data:r,nextCursor:i,hasNextPage:n}}async batchGetObjects(e,t,r=50){let n=[];try{for(let s=0;s<Math.ceil(e.length/r);s++){let i=await this.multiGetObjects({ids:e.slice(s*r,r*(s+1)),options:t});n=[...n,...i]}}catch{}return n}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let r=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:n}=r.effects;return Number(n.computationCost)+Number(n.storageCost)-Number(n.storageRebate)}async sendTransaction(e,t){try{return await this.signAndExecuteTransaction({transaction:t,signer:e,options:{showEffects:!0,showEvents:!0}})}catch{}}};var Se=Te(require("decimal.js"));Se.default.config({precision:64,rounding:Se.default.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Ut=({totalAssetsValue:a,totalDebtValue:e})=>u(e).eq(0)||u(a).eq(0)?"0":u(a).div(u(e)).toString();var ee=class{_cache={};_rpcModule;_deepbookUtils;_marginUtils;_pythPrice;_graphqlClient;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new X({url:e.fullRpcUrl}),this._deepbookUtils=new J(this),this._marginUtils=new Y(this),this._pythPrice=new H(this),this._graphqlClient=new Ke.SuiGraphQLClient({url:e.graphqlUrl}),ce(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get MarginUtils(){return this._marginUtils}get PythPrice(){return this._pythPrice}get fullClient(){return this._rpcModule}get graphqlClient(){return this._graphqlClient}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,r=!0){let n=[],s=null,i=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,o=this.getCache(i,r);if(o)return o;for(;;){let c=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:s}):this.fullClient.getAllCoins({owner:e,cursor:s}));if(c.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:R(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),s=c.nextCursor,!c.hasNextPage)break}return this.updateCache(i,n,30*1e3),n}async getOwnerCoinBalances(e,t){let r=[];return t?r=[await this.fullClient.getBalance({owner:e,coinType:t})]:r=[...await this.fullClient.getAllBalances({owner:e})],r}updateCache(e,t,r=864e5){let n=this._cache[e];n?(n.overdueTime=G(r),n.value=t):n=new L(t,G(r)),this._cache[e]=n}getCache(e,t=!1){let r=this._cache[e],n=r?.isValid();if(!t&&n)return r.value;n||delete this._cache[e]}};var Ft="0x0000000000000000000000000000000000000000000000000000000000000006",$t="pool_script",Nt="pool_script_v2",Vt="router",Lt="router_with_partner",Gt="fetcher_script",Kt="expect_swap",Qt="utils",Ht="0x1::coin::CoinInfo",Zt="0x1::coin::CoinStore",zt="custodian_v2",Wt="clob_v2",Jt="endpoints_v2",Yt=a=>{if(typeof a=="string"&&a.startsWith("0x"))return"object";if(typeof a=="number"||typeof a=="bigint")return"u64";if(typeof a=="boolean")return"bool";throw new Error(`Unknown type for value: ${a}`)};var Qe=(n=>(n[n.NO_RESTRICTION=0]="NO_RESTRICTION",n[n.IMMEDIATE_OR_CANCEL=1]="IMMEDIATE_OR_CANCEL",n[n.FILL_OR_KILL=2]="FILL_OR_KILL",n[n.POST_ONLY=3]="POST_ONLY",n))(Qe||{});var Xt=ee;0&&(module.exports={CLOCK_ADDRESS,CachedContent,CetusClmmSDK,ClmmExpectSwapModule,ClmmFetcherModule,ClmmIntegratePoolModule,ClmmIntegratePoolV2Module,ClmmIntegrateRouterModule,ClmmIntegrateRouterWithPartnerModule,ClmmIntegrateUtilsModule,CoinAssist,CoinInfoAddress,CoinStoreAddress,DEFAULT_GAS_BUDGET_FOR_MERGE,DEFAULT_GAS_BUDGET_FOR_SPLIT,DEFAULT_GAS_BUDGET_FOR_STAKE,DEFAULT_GAS_BUDGET_FOR_TRANSFER,DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,DEFAULT_NFT_TRANSFER_GAS_FEE,DeepbookClobV2Moudle,DeepbookCustodianV2Moudle,DeepbookEndpointsV2Moudle,DeepbookUtilsModule,GAS_SYMBOL,GAS_TYPE_ARG,GAS_TYPE_ARG_LONG,MarginUtilsModule,NORMALIZED_SUI_COIN_TYPE,OrderType,RpcModule,SUI_SYSTEM_STATE_OBJECT_ID,TransactionUtil,addHexPrefix,asIntN,asUintN,bufferToHex,cacheTime24h,cacheTime5min,calculateRiskRatio,checkAddress,composeType,d,decimalsMultiplier,extractAddressFromType,extractStructTagFromType,fixCoinType,fixDown,fixSuiObjectId,fromDecimalsAmount,getDefaultSuiInputType,getFutureTime,getMoveObject,getMoveObjectType,getMovePackageContent,getObjectDeletedResponse,getObjectDisplay,getObjectFields,getObjectId,getObjectNotExistsResponse,getObjectOwner,getObjectPreviousTransactionDigest,getObjectReference,getObjectType,getObjectVersion,getSuiObjectData,hasPublicTransfer,hexToNumber,hexToString,isSortedSymbols,isSuiObjectResponse,maxDecimal,normalizeCoinType,patchFixSuiObjectId,printTransaction,removeHexPrefix,secretKeyToEd25519Keypair,secretKeyToSecp256k1Keypair,shortAddress,shortString,toBuffer,toDecimalsAmount,utf8to16});
package/dist/index.mjs ADDED
@@ -0,0 +1,15 @@
1
+ var Ee=Object.defineProperty;var De=(a,e,t)=>e in a?Ee(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var pe=(a,e,t)=>(De(a,typeof e!="symbol"?e+"":e,t),t);import{SuiGraphQLClient as ot}from"@mysten/sui/graphql";import{DeepBookClient as Ye}from"@mysten/deepbook-v3";import{bcs as y}from"@mysten/sui/bcs";import{Transaction as A,coinWithBalance as Me}from"@mysten/sui/transactions";import{Base64 as Xe}from"js-base64";import{SUI_CLOCK_OBJECT_ID as v,normalizeStructTag as R,normalizeSuiObjectId as et}from"@mysten/sui/utils";var ge=3e5,$=864e5;function G(a){return Date.parse(new Date().toString())+a}var L=class{overdueTime;value;constructor(e,t=0){this.overdueTime=t,this.value=e}isValid(){return this.value===null?!1:this.overdueTime===0?!0:!(Date.parse(new Date().toString())>this.overdueTime)}};import{fromB64 as he,fromHEX as _e}from"@mysten/bcs";import{Ed25519Keypair as me}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as be}from"@mysten/sui/keypairs/secp256k1";import z from"decimal.js";function u(a){return z.isDecimal(a)?a:new z(a===void 0?0:a)}function ne(a){return u(10).pow(u(a).abs())}var N=(a,e)=>{try{return u(a).toDP(e,z.ROUND_DOWN).toString()}catch{return a}},re=(a,e)=>z.max(u(a),u(e));function W(a,e){let t=ne(u(e));return Number(u(a).mul(t))}function ht(a,e=32){return BigInt.asUintN(e,BigInt(a)).toString()}function _t(a,e=32){return Number(BigInt.asIntN(e,BigInt(a)))}function V(a,e){let t=ne(u(e));return Number(u(a).div(t))}function yt(a,e="hex"){if(a instanceof Uint8Array){let n=Buffer.from(a);return me.fromSecretKey(n)}let t=e==="hex"?_e(a):he(a);return me.fromSecretKey(t)}function ft(a,e="hex"){if(a instanceof Uint8Array){let n=Buffer.from(a);return be.fromSecretKey(n)}let t=e==="hex"?_e(a):he(a);return be.fromSecretKey(t)}var ye={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},fe={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6};import{SUI_TYPE_ARG as $e,normalizeStructTag as Ne,normalizeSuiObjectId as ae}from"@mysten/sui/utils";var Ie="0x2::coin::Coin",Re=/^0x2::coin::Coin<(.+)>$/,St=1e3,At=500,Tt=100,Ot=100,jt=1e3,ie="0x2::sui::SUI",Ce="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Bt="SUI",Mt=450,Pt="0x0000000000000000000000000000000000000005",O=class{static getCoinTypeArg(e){let t=e.type.match(Re);return t?t[1]:null}static isSUI(e){let t=O.getCoinTypeArg(e);return t?O.getCoinSymbol(t)==="SUI":!1}static getCoinSymbol(e){return e.substring(e.lastIndexOf(":")+1)}static getBalance(e){return BigInt(e.fields.balance)}static totalBalance(e,t){let n=BigInt(0);return e.forEach(r=>{t===r.coinAddress&&(n+=BigInt(r.balance))}),n}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${Ie}<${e}>`}static getCoinAssets(e,t){let n=[];return t.forEach(r=>{se(r.coinAddress)===se(e)&&n.push(r)}),n}static isSuiCoin(e){return x(e).full_address===ie}static selectCoinObjectIdGreaterThanOrEqual(e,t,n=[]){let r=O.selectCoinAssetGreaterThanOrEqual(e,t,n),s=r.selectedCoins.map(c=>c.coinObjectId),i=r.remainingCoins,o=r.selectedCoins.map(c=>c.balance.toString());return{objectArray:s,remainCoins:i,amountArray:o}}static selectCoinAssetGreaterThanOrEqual(e,t,n=[]){let r=O.sortByBalance(e.filter(l=>!n.includes(l.coinObjectId))),s=O.calculateTotalBalance(r);if(s<t)return{selectedCoins:[],remainingCoins:r};if(s===t)return{selectedCoins:r,remainingCoins:[]};let i=BigInt(0),o=[],c=[...r];for(;i<s;){let l=t-i,d=c.findIndex(g=>g.balance>=l);if(d!==-1){o.push(c[d]),c.splice(d,1);break}let p=c.pop();p.balance>0&&(o.push(p),i+=p.balance)}return{selectedCoins:O.sortByBalance(o),remainingCoins:O.sortByBalance(c)}}static sortByBalance(e){return e.sort((t,n)=>t.balance<n.balance?-1:t.balance>n.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,n)=>t.balance>n.balance?-1:t.balance<n.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,n)=>t+n.balance,BigInt(0))}};var xe=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function ke(a){return a.startsWith("0x")?a:`0x${a}`}function oe(a){return a.startsWith("0x")?`${a.slice(2)}`:a}function qe(a,e=4,t=4){let n=Math.max(e,1),r=Math.max(t,1);return`${a.slice(0,n+2)} ... ${a.slice(-r)}`}function Et(a,e=4,t=4){return qe(ke(a),e,t)}function Dt(a,e={leadingZero:!0}){if(typeof a!="string")return!1;let t=a;if(e.leadingZero){if(!a.startsWith("0x"))return!1;t=t.substring(2)}return xe.test(t)}function Ue(a){if(!Buffer.isBuffer(a))if(Array.isArray(a))a=Buffer.from(a);else if(typeof a=="string")exports.isHexString(a)?a=Buffer.from(exports.padToEven(exports.stripHexPrefix(a)),"hex"):a=Buffer.from(a);else if(typeof a=="number")a=exports.intToBuffer(a);else if(a==null)a=Buffer.allocUnsafe(0);else if(a.toArray)a=Buffer.from(a.toArray());else throw new Error("invalid type");return a}function It(a){return ke(Ue(a).toString("hex"))}function Rt(a){let e=new ArrayBuffer(4),t=new DataView(e);for(let r=0;r<a.length;r++)t.setUint8(r,a.charCodeAt(r));return t.getUint32(0,!0)}function Fe(a){let e,t,n,r,s;e="";let i=a.length;for(t=0;t<i;)switch(n=a.charCodeAt(t++),n>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=a.charAt(t-1);break;case 12:case 13:r=a.charCodeAt(t++),e+=String.fromCharCode((n&31)<<6|r&63);break;case 14:r=a.charCodeAt(t++),s=a.charCodeAt(t++),e+=String.fromCharCode((n&15)<<12|(r&63)<<6|(s&63)<<0);break}return e}function xt(a){let e="",t=oe(a),n=t.length/2;for(let r=0;r<n;r++)e+=String.fromCharCode(Number.parseInt(t.substr(r*2,2),16));return Fe(e)}var Ve=0,Ae=1,Le=2;function we(a,e){return a===e?Ve:a<e?Ae:Le}function Ge(a,e){let t=0,n=a.length<=e.length?a.length:e.length,r=we(a.length,e.length);for(;t<n;){let s=we(a.charCodeAt(t),e.charCodeAt(t));if(t+=1,s!==0)return s}return r}function Nt(a,e){return Ge(a,e)===Ae}function Se(a,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],r=[a,...e].filter(Boolean).join("::");return t&&t.length&&(r+=`<${t.join(", ")}>`),r}function Vt(a){return a.split("::")[0]}function x(a){try{let e=a.replace(/\s/g,""),n=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(n){e=e.slice(0,e.indexOf("<"));let c={...x(e),type_arguments:n.map(l=>x(l).source_address)};return c.type_arguments=c.type_arguments.map(l=>O.isSuiCoin(l)?l:x(l).source_address),c.source_address=Se(c.full_address,c.type_arguments),c}let r=e.split("::"),i={full_address:e,address:e===ie||e===Ce?"0x2":ae(r[0]),module:r[1],name:r[2],type_arguments:[],source_address:""};return i.full_address=`${i.address}::${i.module}::${i.name}`,i.source_address=Se(i.full_address,i.type_arguments),i}catch{return{full_address:a,address:"",module:"",name:"",type_arguments:[],source_address:a}}}function se(a){return x(a).source_address}function Ke(a){return a.toLowerCase().startsWith("0x")?ae(a):a}var Lt=(a,e=!0)=>{let t=a.split("::"),n=t.shift(),r=ae(n);return e&&(r=oe(r)),`${r}::${t.join("::")}`};function ce(a){for(let e in a){let t=typeof a[e];if(t==="object")ce(a[e]);else if(t==="string"){let n=a[e];a[e]=Ke(n)}}}var Gt=Ne($e);function Te(...a){let e="DeepbookV3_Utils_Sdk###"}function K(a){return a.data}function Qe(a){if(a.error&&"object_id"in a.error&&"version"in a.error&&"digest"in a.error){let{error:e}=a;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function He(a){if(a.error&&"object_id"in a.error&&!("version"in a.error)&&!("digest"in a.error))return a.error.object_id}function Oe(a){if("reference"in a)return a.reference;let e=K(a);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Qe(a)}function je(a){return"objectId"in a?a.objectId:Oe(a)?.objectId??He(a)}function Ht(a){return"version"in a?a.version:Oe(a)?.version}function Ze(a){return a.data!==void 0}function ze(a){return a.content!==void 0}function Zt(a){let e=K(a);if(e?.content?.dataType==="package")return e.content.disassembled}function ue(a){let e="data"in a?K(a):a;if(!(!e||!ze(e)||e.content.dataType!=="moveObject"))return e.content}function We(a){return ue(a)?.type}function zt(a){let e=Ze(a)?a.data:a;return!e?.type&&"data"in a?e?.content?.dataType==="package"?"package":We(a):e?.type}function Wt(a){return K(a)?.previousTransaction}function Jt(a){return K(a)?.owner}function Yt(a){let e=K(a)?.display;return e||{data:null,error:null}}function Be(a){let e=ue(a)?.fields;if(e)return"fields"in e?e.fields:e}function Xt(a){return ue(a)?.hasPublicTransfer??!1}import{Transaction as Je}from"@mysten/sui/transactions";async function rn(a,e=!0){a.blockData.transactions.forEach((t,n)=>{})}var q=class{static async adjustTransactionForGas(e,t,n,r){r.setSender(e.senderAddress);let s=O.selectCoinAssetGreaterThanOrEqual(t,n).selectedCoins;if(s.length===0)throw new Error("Insufficient balance");let i=O.calculateTotalBalance(t);if(i-n>1e9)return{fixAmount:n};let o=await e.fullClient.calculationTxGas(r);if(O.selectCoinAssetGreaterThanOrEqual(t,BigInt(o),s.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(o)+BigInt(500);if(i-n<l){if(n-=l,n<0)throw new Error("gas Insufficient balance");let d=new Je;return{fixAmount:n,newTx:d}}}return{fixAmount:n}}static buildCoinForAmount(e,t,n,r,s=!0,i=!1){let o=O.getCoinAssets(r,t);if(n===BigInt(0)&&o.length===0)return q.buildZeroValueCoin(t,e,r,s);let c=O.calculateTotalBalance(o);if(c<n)throw new Error(`The amount(${c}) is Insufficient balance for ${r} , expect ${n} `);return q.buildCoin(e,t,o,n,r,s,i)}static buildCoin(e,t,n,r,s,i=!0,o=!1){if(O.isSuiCoin(s)){if(i){let _=e.splitCoins(e.gas,[e.pure.u64(r)]);return{targetCoin:e.makeMoveVec({elements:[_]}),remainCoins:t,tragetCoinAmount:r.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(r===0n&&n.length>1){let _=O.selectCoinObjectIdGreaterThanOrEqual(n,r);return{targetCoin:e.object(_.objectArray[0]),remainCoins:_.remainCoins,tragetCoinAmount:_.amountArray[0],isMintZeroCoin:!1}}let f=O.selectCoinObjectIdGreaterThanOrEqual(n,r);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(r)]),remainCoins:f.remainCoins,tragetCoinAmount:r.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let c=O.selectCoinObjectIdGreaterThanOrEqual(n,r),l=c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),d=c.objectArray;if(i)return{targetCoin:e.makeMoveVec({elements:d.map(f=>e.object(f))}),remainCoins:c.remainCoins,tragetCoinAmount:c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),isMintZeroCoin:!1};let[p,...g]=d,b=e.object(p),m=b,h=c.amountArray.reduce((f,C)=>Number(f)+Number(C),0).toString(),w;return g.length>0&&e.mergeCoins(b,g.map(f=>e.object(f))),o&&Number(l)>Number(r)&&(m=e.splitCoins(b,[e.pure.u64(r)]),h=r.toString(),w=b),{targetCoin:m,remainCoins:c.remainCoins,originalSplitedCoin:w,tragetCoinAmount:h,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,n,r=!0){let s=q.callMintZeroValueCoin(t,n),i;return r?i=t.makeMoveVec({elements:[s]}):i=s,{targetCoin:i,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,n,r,s=!0){let i=O.getCoinAssets(r,t);if(n.amountFirst===BigInt(0))return i.length>0?q.buildCoin(e,[...t],[...i],n.amountFirst,r,s):q.buildZeroValueCoin(t,e,r,s);let o=O.calculateTotalBalance(i);if(o>=n.amountFirst)return q.buildCoin(e,[...t],[...i],n.amountFirst,r,s);if(o<n.amountSecond)throw new Error(`The amount(${o}) is Insufficient balance for ${r} , expect ${n.amountSecond} `);return q.buildCoin(e,[...t],[...i],n.amountSecond,r,s)}static buildCoinTypePair(e,t){let n=[];if(e.length===2){let r=[];r.push(e[0],e[1]),n.push(r)}else{let r=[];r.push(e[0],e[e.length-1]),n.push(r);for(let s=1;s<e.length-1;s+=1){if(t[s-1]===0)continue;let i=[];i.push(e[0],e[s],e[e.length-1]),n.push(i)}}return n}},U=q;pe(U,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));var Y=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?fe:ye}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new A,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:n}){let r=new A;r.setSenderIfNotSet(e);let s=r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),i=Me({type:t.coinType,balance:BigInt(n)});return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[s,i],typeArguments:[t.coinType]}),r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s],typeArguments:[]}),r.moveCall({target:"0x2::transfer::public_share_object",arguments:[s],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),r}depositIntoManager({account:e,balanceManager:t,coin:n,amountToDeposit:r,tx:s}){let i=s||new A;if(t){i.setSenderIfNotSet(e);let o=Me({type:n.coinType,balance:BigInt(r)});return i.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[i.object(t),o],typeArguments:[n.coinType]}),i}return null}withdrawFromManager({account:e,balanceManager:t,coin:n,amountToWithdraw:r,returnAssets:s,txb:i}){let o=i||new A,c=o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[o.object(t),o.pure.u64(r)],typeArguments:[n.coinType]});return s?c:(o.transferObjects([c],e),o)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:n=new A}){for(let r in t)t[r].forEach(i=>{let o=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[n.object(r),n.pure.u64(i.amount)],typeArguments:[i.coinType]});n.transferObjects([o],e)});return n}async getBalanceManager(e,t=!0){let n=`getBalanceManager_${e}`,r=this.getCache(n,t);if(!t&&r!==void 0)return r;try{let s=new A;s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),s.pure.address(e)],typeArguments:[]});let c=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}))?.events?.filter(d=>d.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return c.forEach(d=>{l.push({balanceManager:d,cetusBalanceManager:""})}),this.updateCache(n,l,864e5),l||[]}catch(s){throw s instanceof Error?s:new Error(String(s))}}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let n=new A,r=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[n.object(t)]});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[n.object(e.address),n.object(t),r],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),n}async getManagerBalance({account:e,balanceManager:t,coins:n}){try{let r=new A;n.forEach(o=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[r.object(t)],typeArguments:[o.coinType]})});let s=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:r}),i={};return s.results?.forEach((o,c)=>{let l=n[c],d=o.returnValues[0][0],p=y.U64.parse(new Uint8Array(d)),g=u(p),b=g.eq(0)?"0":g.div(Math.pow(10,l.decimals)).toString();i[l.coinType]={adjusted_balance:b,balance:g.toString()}}),i}catch(r){throw r instanceof Error?r:new Error(String(r))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let n=new A,r=await this.getBalanceManager(e,!0);if(!Array.isArray(r)||r.length===0)return{};r.forEach(o=>{t.forEach(c=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(o.balanceManager)],typeArguments:[c.coinType]})})});let s=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),i={};return r.forEach((o,c)=>{let l={},d=c*t.length;t.forEach((p,g)=>{let b=d+g,m=s.results?.[b];if(m){let h=m.returnValues[0][0],w=y.U64.parse(new Uint8Array(h)),f=u(w),C=f.eq(0)?"0":f.div(Math.pow(10,p.decimals)).toString();l[p.coinType]={adjusted_balance:C,balance:f.toString()}}}),i[o.balanceManager]=l}),i}catch(n){throw n instanceof Error?n:new Error(String(n))}}async getMarketPrice(e){try{let t=new A;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(v)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0],s=Number(y.U64.parse(new Uint8Array(r))),i=Math.pow(10,e.baseCoin.decimals).toString(),o=Math.pow(10,e.quoteCoin.decimals).toString();return u(s).mul(i).div(o).div(1e9).toString()}catch(t){return Te("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,n=[];return e?.data?.forEach(r=>{let s=r?.parsedJson,i=r.type.match(t);if(i){let c=i[1].split(", ");n.push({...s,baseCoinType:c[0],quoteCoinType:c[1]})}}),n}async getQuoteQuantityOut(e,t,n){let r=new A;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quote_quantity_out`,arguments:[r.object(e.address),r.pure.u64(t),r.object(v)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),i=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[0][0]))),o=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[1][0]))),c=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[2][0])));return{baseQuantityDisplay:u(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:u(i).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(c).div(1e6).toString(),baseQuantity:t,baseOut:i,quoteOut:o,deepRequired:c}}async getBaseQuantityOut(e,t,n){let r=new A;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_base_quantity_out`,arguments:[r.object(e.address),r.pure.u64(t),r.object(v)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),i=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[0][0]))),o=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[1][0]))),c=String(y.U64.parse(new Uint8Array(s.results[0].returnValues[2][0])));return{quoteQuantityDisplay:u(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:u(i).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(o).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(c).div(1e6).toString(),quoteQuantity:t,baseOut:i,quoteOut:o,deepRequired:c}}async getQuantityOut(e,t,n,r){let s=new A;s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[s.object(e.address),s.pure.u64(t),s.pure.u64(n),s.object(v)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let i=await this._sdk.fullClient.devInspectTransactionBlock({sender:r,transactionBlock:s}),o=Number(y.U64.parse(new Uint8Array(i.results[0].returnValues[0][0]))),c=Number(y.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]))),l=Number(y.U64.parse(new Uint8Array(i.results[0].returnValues[2][0])));return{baseQuantityDisplay:u(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:u(n).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:u(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:u(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:u(l).div(1e6).toString(),baseQuantity:t,quoteQuantity:n,baseOut:o,quoteOut:c,deepRequired:l}}async estimatedMaxFee(e,t,n,r,s,i,o){let c=this.deepCoin;try{let{taker_fee:l,maker_fee:d}=e,p=u(l).div(1e9).toString(),g=u(d).div(1e9).toString(),b=await this.getMarketPrice(e),m=i?n:b!=="0"?b:o;if(m==="0")throw new Error("Cannot get market price");let h=Math.pow(10,e.baseCoin.decimals).toString(),w=Math.pow(10,e.quoteCoin.decimals).toString(),f=u(m).div(h).mul(w).mul(1e9).toString();if(r){let S=await this.getMarketPrice(e),k=u(i?n:S!=="0"?S:o).div(h).mul(w).mul(1e9).toString(),T=await this.getOrderDeepPrice(e);if(!T)throw new Error("Cannot get deep price");let j=re(k,n),F=u(t).mul(u(p)).mul(u(T.deep_per_asset)).div(u(1e9)),D=u(t).mul(u(g)).mul(u(T.deep_per_asset)).div(u(1e9));T.asset_is_base||(F=F.mul(j).div(u(1e9)),D=D.mul(j).div(u(1e9)));let H=F.ceil().toString(),Z=D.ceil().toString();return{takerFee:H,makerFee:Z,takerFeeDisplay:V(H,c.decimals).toString(),makerFeeDisplay:V(Z,c.decimals).toString(),feeType:c.coinType}}if(s){let S=re(f,n),M=u(t).mul(S).mul(p).div(u(1e9)).ceil().toFixed(0),k=u(t).mul(S).mul(g).div(u(1e9)).ceil().toFixed(0);return{takerFee:M,makerFee:k,takerFeeDisplay:V(M,e.quoteCoin.decimals).toString(),makerFeeDisplay:V(k,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let C=u(t).mul(u(p).mul(1.25)).ceil().toFixed(0),_=u(t).mul(u(g).mul(1.25)).ceil().toFixed(0);return{takerFee:C,makerFee:_,takerFeeDisplay:V(C,e.baseCoin.decimals).toString(),makerFeeDisplay:V(_,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e){try{let t=new A;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order_deep_price`,arguments:[t.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0];return this.parseOrderDeepPrice(new Uint8Array(r))}catch{return null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),n=t.getUint8(0)!==0,r=Number(t.getBigUint64(1,!0));return{asset_is_base:n,deep_per_asset:r}}getCoinAssets(e,t,n,r){return U.buildCoinForAmount(r,n,BigInt(u(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,n,r,s,i,o){let c=this.deepCoin;if(!o)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];r&&l.push(c);let d=await this.getManagerBalance({account:s,balanceManager:o,coins:l}),p=d?.[t]?.balance||"0",g=d?.[n]?.balance||"0",b=i&&d?.[c.coinType]?.balance||"0";return{baseManagerBlance:p,quoteManagerBlance:g,feeManaerBalance:b}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,n,r,s,i,o,c,l,d){let p=u(e).gt(0)&&l,g="0";if(!p)return{feeAsset:this.getEmptyCoin(d,t),haveDepositFee:"0"};if(i||o){let b=u(s).sub(i?r:n);g=b.lte(0)?e:b.sub(e).lt(0)?b.sub(e).toString():"0"}else g=u(s).sub(e).lt("0")?u(s).sub(e).abs().toString():"0";return{feeAsset:u(g).gt("0")?this.getCoinAssets(t,g,c,d):this.getEmptyCoin(d,t),haveDepositFee:g}}async getTransactionRelatedAssets(e,t,n,r,s,i,o,c,l){try{let d=this.deepCoin,p=R(e.baseCoin.coinType),g=R(e.quoteCoin.coinType),b=p===d.coinType,m=g===d.coinType,h=!b&&!m,{baseManagerBlance:w,quoteManagerBlance:f,feeManaerBalance:C}=await this.getTransactionRelatedBalance(e,p,g,h,i,o,c),_,S,M=!1,k=await this._sdk.getOwnerCoinAssets(i);if(s){o||(n=u(n).add(u(r)).toString());let j=u(f).sub(n).toString();u(j).lt(0)?(M=!0,S=this.getCoinAssets(g,j,k,l)):S=this.getEmptyCoin(l,g),_=this.getEmptyCoin(l,p)}else{o||(t=u(t).add(u(r)).toString());let j=u(w).sub(t).toString();u(j).lt(0)?(M=!0,_=this.getCoinAssets(p,j,k,l)):_=this.getEmptyCoin(l,p),S=this.getEmptyCoin(l,g)}let T=this.getFeeAsset(r,d.coinType,t,n,C,m,b,k,o,l);return{baseAsset:_,quoteAsset:S,feeAsset:T,haveDeposit:M}}catch(d){throw d instanceof Error?d:new Error(String(d))}}async getMarketTransactionRelatedAssets(e,t,n,r,s,i,o,c,l){try{let d=this.deepCoin,p=R(e.baseCoin.coinType),g=R(e.quoteCoin.coinType),b=p===d.coinType,m=g===d.coinType,h=!b&&!m,{baseManagerBlance:w,quoteManagerBlance:f}=await this.getTransactionRelatedBalance(e,p,g,h,i,o,c),C,_,S=await this._sdk.getOwnerCoinAssets(i);if(s){o||(n=u(n).add(u(r)).toString());let k=u(f).sub(n).toString();if(u(k).lt(0)){let T;u(f).gt(0)&&(T=this.withdrawFromManager({account:i,balanceManager:c,coin:e.quoteCoin,amountToWithdraw:f,returnAssets:!0,txb:l}));let j=this.getCoinAssets(g,k,S,l);T&&l.mergeCoins(j,[T]),_=j}else _=this.withdrawFromManager({account:i,balanceManager:c,coin:e.quoteCoin,amountToWithdraw:n,returnAssets:!0,txb:l});C=this.getEmptyCoin(l,p)}else{o||(t=u(t).add(u(r)).toString());let k=u(w).sub(t).toString();if(u(k).lt(0)){let T;u(w).gt(0)&&(T=this.withdrawFromManager({account:i,balanceManager:c,coin:e.baseCoin,amountToWithdraw:w,returnAssets:!0,txb:l}));let j=this.getCoinAssets(p,k,S,l);T&&l.mergeCoins(j,[T]),C=j}else C=this.withdrawFromManager({account:i,balanceManager:c,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});_=this.getEmptyCoin(l,g)}let M=this.getEmptyCoin(l,d.coinType);return{baseAsset:C,quoteAsset:_,feeAsset:M}}catch(d){throw d instanceof Error?d:new Error(String(d))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:n,orderType:r,isBid:s,maxFee:i,account:o,payWithDeep:c,expirationTimestamp:l=Date.now()+31536e8}){try{let d=this.deepCoin,p=e.address,g=e.baseCoin.decimals,b=e.quoteCoin.decimals,m=e.baseCoin.coinType,h=e.quoteCoin.coinType,w=u(t).mul(10**(b-g+9)).toString(),f=R(m),C=R(h),_=new A,S,M,k=await this._sdk.getOwnerCoinAssets(o);if(s){let D=u(t).mul(u(n).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();c||(D=u(D).add(u(i)).toString()),M=U.buildCoinForAmount(_,k,BigInt(D),C,!1,!0)?.targetCoin}else{let D=n;c||(D=u(n).abs().add(u(i)).toString()),S=U.buildCoinForAmount(_,k,BigInt(u(D).abs().toString()),f,!1,!0)?.targetCoin}let T=c?u(i).gt(0)?U.buildCoinForAmount(_,k,BigInt(u(i).abs().ceil().toString()),d.coinType,!1,!0).targetCoin:this.getEmptyCoin(_,d.coinType):this.getEmptyCoin(_,d.coinType),j=_.moveCall({typeArguments:[s?m:h],target:"0x2::coin::zero",arguments:[]}),F=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(p),s?j:S,s?M:j,T,_.pure.u8(r),_.pure.u8(0),_.pure.u64(w),_.pure.u64(n),_.pure.bool(s),_.pure.bool(!1),_.pure.u64(l),_.object(v)];return _.moveCall({typeArguments:[f,C],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:F}),_}catch(d){throw d instanceof Error?d:new Error(String(d))}}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:n,maxFee:r,account:s,payWithDeep:i,slippage:o=.01}){try{let c=e.address,l=e.baseCoin.coinType,d=e.quoteCoin.coinType,p=R(l),g=R(d),b=new A,m,h,w=t,f,C=await this.getOrderBook(e,"all",6);if(n){let k=C?.ask?.[0]?.price||"0",T=u(k).mul(u(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();f=u(T).plus(u(T).mul(o)).ceil().toString()}else{let k=await C?.bid?.[0]?.price||"0",T=u(k).mul(u(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();f=u(T).minus(u(T).mul(o)).floor().toString()}let _=await this._sdk.getOwnerCoinAssets(s);n?(i||(f=u(f).add(u(r)).toString()),h=this.getCoinAssets(g,f,_,b),m=this.getEmptyCoin(b,p)):(i||(w=u(w).add(u(r)).toString()),h=this.getEmptyCoin(b,g),m=this.getCoinAssets(p,w,_,b));let S=i?u(r).gt(0)?U.buildCoinForAmount(b,_,BigInt(u(r).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,this.deepCoin.coinType):this.getEmptyCoin(b,this.deepCoin.coinType),M=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(c),m,h,S,b.pure.u8(0),b.pure.u64(t),b.pure.bool(n),b.pure.bool(i),b.pure.u64(f),b.object(v)];return b.moveCall({typeArguments:[p,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:M}),b}catch(c){throw c instanceof Error?c:new Error(String(c))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:n,quantity:r,isBid:s,orderType:i,maxFee:o,account:c,payWithDeep:l,expirationTimestamp:d=Date.now()+31536e8}){try{let p=this.deepCoin,g=u(n).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),b=t.baseCoin.coinType,m=t.quoteCoin.coinType,h=new A,w=s?u(n).mul(u(r).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",f=s?"0":r,{baseAsset:C,quoteAsset:_,feeAsset:S,haveDeposit:M}=await this.getTransactionRelatedAssets(t,f,w,o,s,c,l,e,h);if(M){let j=[h.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),h.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),h.object(t.address),h.object(e),C,_,S.feeAsset,h.pure.u8(i),h.pure.u8(0),h.pure.u64(g),h.pure.u64(r),h.pure.bool(s),h.pure.bool(l),h.pure.u64(d),h.object(v)];return h.moveCall({typeArguments:[b,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:j}),h}let k=new A;u(S.haveDepositFee).gt(0)&&this.depositIntoManager({account:c,balanceManager:e,coin:p,amountToDeposit:S.haveDepositFee,tx:k});let T=[k.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),k.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),k.object(t.address),k.object(e),k.pure.u8(i),k.pure.u8(0),k.pure.u64(g),k.pure.u64(r),k.pure.bool(s),k.pure.bool(l),k.pure.u64(d),k.object(v)];return k.moveCall({typeArguments:[b,m],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:T}),k}catch(p){throw p instanceof Error?p:new Error(String(p))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:n,newOrderQuantity:r}){let s=new A;return s.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(e),s.object(t.address),s.pure.u128(n),s.pure.u64(r),s.object(v)]}),s}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:n}=e,r=new A,s=await this.getMarketPrice(e),i=u(s).gt(0)?s:Math.pow(10,-1),o=Math.pow(10,6),c=u(i).mul(Math.pow(10,9+n.decimals-t.decimals)).toString(),l=u(o).mul(Math.pow(10,9+n.decimals-t.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(c),r.pure.u64(l),r.pure.bool(!1),r.object(v)],typeArguments:[t.coinType,n.coinType]});let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:r}),g=[],b=p.results[0].returnValues[0][0],m=y.vector(y.u64()).parse(new Uint8Array(b)),h=p.results[0].returnValues[1][0],w=y.vector(y.u64()).parse(new Uint8Array(h));return m.forEach((f,C)=>{let _=u(f).div(Math.pow(10,9+n.decimals-t.decimals)).toString(),S=u(w[C]).div(Math.pow(10,t.decimals)).toString();g.push({price:_,quantity:S})}),g?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:n}=e,r=new A,s=await this.getMarketPrice(e),i=u(s).gt(0)?u(s).div(3).toNumber():Math.pow(10,-6),o=u(s).gt(0)?s:Math.pow(10,6),c=u(i).mul(Math.pow(10,9+n.decimals-t.decimals)).toString(),l=u(o).mul(Math.pow(10,9+n.decimals-t.decimals)).toString();r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(N(c,0)),r.pure.u64(N(l,0)),r.pure.bool(!0),r.object(v)],typeArguments:[t.coinType,n.coinType]});let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:r}),g=[],b=p.results[0].returnValues[0][0],m=y.vector(y.u64()).parse(new Uint8Array(b)),h=p.results[0].returnValues[1][0],w=y.vector(y.u64()).parse(new Uint8Array(h));return m.forEach((f,C)=>{let _=u(f).div(Math.pow(10,9+n.decimals-t.decimals)).toString(),S=u(w[C]).div(Math.pow(10,t.decimals)).toString();g.push({price:_,quantity:S})}),g?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:n,quoteCoin:r}=e,s=new A,i=await this.getMarketPrice(e),o,c;t?(o=u(i).gt(0)?u(i).div(3).toNumber():Math.pow(10,-6),c=u(i).gt(0)?i:Math.pow(10,6)):(o=u(i).gt(0)?i:Math.pow(10,-1),c=u(i).gt(0)?u(i).mul(3).toNumber():Math.pow(10,6));let l=u(o).mul(Math.pow(10,9+r.decimals-n.decimals)).toString(),d=u(c).mul(Math.pow(10,9+r.decimals-n.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(N(l,0)),s.pure.u64(N(d,0)),s.pure.bool(t),s.object(v)],typeArguments:[n.coinType,r.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:s}),b=[],m=g.results[0].returnValues[0][0],h=y.vector(y.u64()).parse(new Uint8Array(m)),w=g.results[0].returnValues[1][0],f=y.vector(y.u64()).parse(new Uint8Array(w));return h.forEach((C,_)=>{let S=u(C).div(Math.pow(10,9+r.decimals-n.decimals)).toString(),M=u(f[_]).div(Math.pow(10,n.decimals)).toString();b.push({price:S,quantity:M})}),b?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:n,quoteQuantity:r,isBid:s,maxFee:i,account:o,payWithDeep:c,slippage:l=.01}){try{let d=R(t.baseCoin.coinType),p=R(t.quoteCoin.coinType),g=new A,{baseAsset:b,quoteAsset:m,feeAsset:h}=await this.getMarketTransactionRelatedAssets(t,n,r,i,s,o,c,e,g),w=await this.getOrderBook(t,"all",6);if(s){let _=w?.ask?.[0]?.price||"0",S=u(_).mul(u(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();r=u(S).plus(u(S).mul(l)).ceil().toString()}else{let _=await w?.bid?.[0]?.price||"0",S=u(_).mul(u(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();r=u(S).minus(u(S).mul(l)).floor().toString()}let f=r,C=[g.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),g.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),g.object(t.address),g.object(e),b,m,h,g.pure.u8(0),g.pure.u64(n),g.pure.bool(s),g.pure.bool(c),g.pure.u64(f),g.object(v)];return g.setSenderIfNotSet(o),g.moveCall({typeArguments:[d,p],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:C}),g}catch(d){throw d instanceof Error?d:new Error(String(d))}}async getOrderInfoList(e,t,n){try{let r=new A;t.forEach(d=>{r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[r.object(e.address),r.pure.u128(d)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let s=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),i=y.struct("ID",{bytes:y.Address}),o=y.struct("OrderDeepPrice",{asset_is_base:y.bool(),deep_per_asset:y.u64()}),c=y.struct("Order",{balance_manager_id:i,order_id:y.u128(),client_order_id:y.u64(),quantity:y.u64(),filled_quantity:y.u64(),fee_is_deep:y.bool(),order_deep_price:o,epoch:y.u64(),status:y.u8(),expire_timestamp:y.u64()}),l=[];return s?.results?.forEach(d=>{let p=d.returnValues[0][0],g=c.parse(new Uint8Array(p));l.push(g)}),l}catch{return[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),n=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),r=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:n,orderId:r}}async getOpenOrder(e,t,n,r){let s;if(r)s=r;else{let c=new A;c.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[c.object(e.address),c.object(n)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let d=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:c})).results[0].returnValues[0][0];s=y.struct("VecSet",{constants:y.vector(y.U128)}).parse(new Uint8Array(d)).constants}let i=await this.getOrderInfoList(e,s,t)||[],o=[];return i.forEach(c=>{let l=this.decodeOrderId(BigInt(c.order_id));o.push({...c,price:l.price,isBid:l.isBid})}),o}cancelOrders(e,t){let n=new A;return e.forEach(r=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[n.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),n.object(t),n.object(r.poolInfo.address),n.pure.u128(r.orderId),n.object(v)],typeArguments:[r.poolInfo.baseCoin.coinType,r.poolInfo.quoteCoin.coinType]})}),n}async getDeepbookOrderBook(e,t,n,r,s,i){let o=this._sdk.fullClient,l=await new Ye({client:o,address:s,env:"testnet",balanceManagers:{test1:{address:i,tradeCap:""}}}).getLevel2Range(e,t,n,r)}processOrderBookData(e,t,n,r){let s=e.returnValues[0][0],i=y.vector(y.u64()).parse(new Uint8Array(s)),o=e.returnValues[1][0],c=y.vector(y.u64()).parse(new Uint8Array(o)),l={};return i.forEach((p,g)=>{let b=u(p).div(Math.pow(10,9+n.decimals-t.decimals)).toString(),m=u(c[g]).div(Math.pow(10,t.decimals)).toString();l[b]?l[b]={price:b,quantity:u(l[b].quantity).add(m).toString()}:l[b]={price:b,quantity:m}}),Object.values(l)}getLevel2RangeTx(e,t,n,r,s=new A){let{baseCoin:i,quoteCoin:o}=e,c=N(u(n).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),0),l=N(u(r).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),0);return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(c),s.pure.u64(l),s.pure.bool(t),s.object(v)],typeArguments:[i.coinType,o.coinType]}),s}async fetchOrderBook(e,t,n,r,s,i){let o=new A,{baseCoin:c,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let m=r,h=n==="0"?s:n;o=this.getLevel2RangeTx(e,!0,m,h,o)}if(t==="ask"||t==="all"){let m=n==="0"?r:n,h=s;o=this.getLevel2RangeTx(e,!1,m,h,o)}let d=this._sdk.sdkOptions.simulationAccount.address,p=await this._sdk.fullClient.devInspectTransactionBlock({sender:d,transactionBlock:o}),g=[];(t==="bid"||t==="all")&&(g=p.results?.[0]?this.processOrderBookData(p.results[0],c,l,i):[]);let b=[];if(t==="ask"||t==="all"){let m=t==="ask"?0:1;b=p.results?.[m]?this.processOrderBookData(p.results[m],c,l,i):[]}return{bid:g.sort((m,h)=>h.price-m.price),ask:b.sort((m,h)=>m.price-h.price)}}catch{let p=this._sdk.sdkOptions.simulationAccount.address,g=[],b=[];try{let m=this.getLevel2RangeTx(e,!0,r,n),h=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:m});g=h.results?.[0]?this.processOrderBookData(h.results[0],c,l,i):[]}catch{g=[]}try{let m=this.getLevel2RangeTx(e,!1,r,n),h=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:m});b=h.results?.[0]?this.processOrderBookData(h.results[0],c,l,i):[]}catch{b=[]}return{bid:g,ask:b}}}async getOrderBook(e,t,n){let r={bid:[],ask:[]};try{let s=await this.getMarketPrice(e),i=t,o=Math.pow(10,-n),c=Math.pow(10,n),l=await this.fetchOrderBook(e,i,s,o,c,n);return{bid:l?.bid,ask:l?.ask}}catch{return r}}async getOrderBookOrigin(e,t){try{let n=new A,r=await this.getMarketPrice(e),{baseCoin:s,quoteCoin:i}=e;if(t==="bid"||t==="all"){let p=Math.pow(10,-6),g=r,b=u(p).mul(Math.pow(10,9+i.decimals-s.decimals)).toString(),m=u(g).mul(Math.pow(10,9+i.decimals-s.decimals)).toString();n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[n.object(e.address),n.pure.u64(b),n.pure.u64(m),n.pure.bool(!0),n.object(v)],typeArguments:[s.coinType,i.coinType]})}if(t==="ask"||t==="all"){let p=r,g=Math.pow(10,6),b=u(p).mul(Math.pow(10,9+i.decimals-s.decimals)).toString(),m=u(g).mul(Math.pow(10,9+i.decimals-s.decimals)).toString();n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[n.object(e.address),n.pure.u64(b),n.pure.u64(m),n.pure.bool(!1),n.object(v)],typeArguments:[s.coinType,i.coinType]})}let o=this._sdk.sdkOptions.simulationAccount.address,c=await this._sdk.fullClient.devInspectTransactionBlock({sender:o,transactionBlock:n}),l=[];if(t==="bid"||t==="all"){let p=c.results[0]?.returnValues[0]?.[0],g=y.vector(y.u64()).parse(new Uint8Array(p)),b=c.results[0]?.returnValues[1]?.[0],m=y.vector(y.u64()).parse(new Uint8Array(b));g.forEach((h,w)=>{let f=u(h).div(Math.pow(10,9+i.decimals-s.decimals)).toString(),C=u(m[w]).div(Math.pow(10,s.decimals)).toString();l.push({price:f,quantity:C})})}let d=[];if(t==="ask"||t==="all"){let p=t==="ask"?0:1,g=c.results[p]?.returnValues[0]?.[0],b=y.vector(y.u64()).parse(new Uint8Array(g)),m=c.results[p]?.returnValues[1]?.[0],h=y.vector(y.u64()).parse(new Uint8Array(m));b.forEach((w,f)=>{let C=u(w).div(Math.pow(10,9+i.decimals-s.decimals)).toString(),_=u(h[f]).div(Math.pow(10,s.decimals)).toString();d.push({price:C,quantity:_})})}return{bid:l,ask:d}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((r,s)=>[R(r.coinType),r]))}async getAccount(e,t){let n=new A;for(let o=0;o<t.length;o++){let c=t[o];n.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::order_trader::get_account_id`,arguments:[n.object(c.address),n.object(e)],typeArguments:[c.baseCoin.coinType,c.quoteCoin.coinType]})}let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:n}),s;if(r?.events.length===0)return null;let i=[];return r?.events?.forEach((o,c)=>{s=o?.parsedJson;let l=s.account.open_orders.contents,d=s.account.owed_balances,p=s.account.settled_balances,g=s.account.unclaimed_rebates,b=s.account.taker_volume;i.push({balance_manager_id:e,open_orders:l,owed_balances:d,settled_balances:p,unclaimed_rebates:g,taker_volume:b,poolInfo:t[c]})}),i}async getSuiTransactionResponse(e,t=!1){let n=`${e}_getSuiTransactionResponse`,r=this.getCache(n,t);if(r!==void 0)return r;let s;try{s=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{s=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(n,s,864e5),s}transformExtensions(e,t,n=!0){let r=[];for(let s of t){let{key:i}=s.fields,{value:o}=s.fields;if(i==="labels")try{o=JSON.parse(decodeURIComponent(Xe.decode(o)))}catch{}n&&(e[i]=o),r.push({key:i,value:o})}delete e.extension_fields,n||(e.extensions=r)}async getCoinConfigs(e=!1,t=!0){let n=this.sdk.sdkOptions.coinlist.handle,r=`${n}_getCoinConfigs`,s=this.getCache(r,e);if(s)return s;let o=(await this._sdk.fullClient.getDynamicFieldsByPage(n)).data.map(d=>d.objectId),c=await this._sdk.fullClient.batchGetObjects(o,{showContent:!0}),l=[];return c.forEach(d=>{let p=this.buildCoinConfig(d,t);this.updateCache(`${n}_${p.address}_getCoinConfig`,p,864e5),l.push({...p})}),this.updateCache(r,l,864e5),l}buildCoinConfig(e,t=!0){let n=Be(e);n=n.value.fields;let r={...n};return r.id=je(e),r.address=x(n.coin_type.fields.name).full_address,n.pyth_id&&(r.pyth_id=et(n.pyth_id)),this.transformExtensions(r,n.extension_fields.fields.contents,t),delete r.coin_type,r}updateCache(e,t,n=3e5){let r=this._cache[e];r?(r.overdueTime=G(n),r.value=t):r=new L(t,G(n)),this._cache[e]=r}getCache(e,t=!1){let n=this._cache[e],r=n?.isValid();if(!t&&r)return n.value;r||delete this._cache[e]}};import{CoinAssist as st}from"@cetusprotocol/common-sdk";import{bcs as B}from"@mysten/sui/bcs";import{Transaction as P}from"@mysten/sui/transactions";import{SUI_CLOCK_OBJECT_ID as I,normalizeSuiAddress as Pe}from"@mysten/sui/utils";import{SuiPriceServiceConnection as tt,SuiPythClient as nt}from"@pythnetwork/pyth-sui-js";var de=10n;function rt(a,e){if(!de)throw new Error("oraclePriceMultiplierDecimal is required");if(a===0n)throw new Error("Invalid oracle price");if(e<0n){let t=10n**(de- -e);return a*t}return a/10n**(e+de)}var Q=class{_sdk;connection;suiPythClient;hasChangeConnection=!1;_cache={};constructor(e){this._sdk=e,this.connection=new tt("https://hermes-beta.pyth.network"),this.suiPythClient=new nt(this._sdk.fullClient,this._sdk.sdkOptions.margin_utils.pyth_state_id,this._sdk.sdkOptions.margin_utils.wormhole_state_id)}get sdk(){return this._sdk}async updatePythPriceIDs(e,t){let n=null,r=null;try{n=await this.connection.getPriceFeedsUpdateData(e)}catch(o){r=o}if(n==null)throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${r?.message}`);let s=[];try{s=await this.suiPythClient.updatePriceFeeds(t,n,e)}catch(o){throw new Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${o}`)}let i=new Map;for(let o=0;o<e.length;o++)i.set(e[o],s[o]);return i}priceCheck(e,t=60){let n=Math.floor(Date.now()/1e3);if(!(Math.abs(n-e.last_update_time)>t))return e}async getLatestPrice(e,t=!1){let n={},r=[];if(t?e.forEach(o=>{let c=this._sdk.getCache(`getLatestPrice_${o.coinType}`);c&&this.priceCheck(c,60)?n[o.coinType]=c:r.push(o.coinType)}):r=e.map(o=>o.coinType),r.length===0)return n;let s=e.map(o=>o.feed);return(await this.connection.getLatestPriceUpdates(s))?.parsed?.forEach((o,c)=>{let l=o.price;if(l){let{price:d,expo:p}=l,g=u(d).mul(u(10).pow(u(p))).toString(),m={coin_type:e[c].coinType,price:g,oracle_price:0n,last_update_time:l.publish_time};m.oracle_price=rt(BigInt(d),BigInt(p)),n[r[c]]=m,this._sdk.updateCache(`getLatestPrice_${m.coin_type}`,m)}}),n}};var X=class{_sdk;pythPrice;_cache={};constructor(e){this._sdk=e,this.pythPrice=new Q(e)}get sdk(){return this._sdk}createAndShareMarginManager(e,t=new P){let{id:n,baseCoin:r,quoteCoin:s}=e,[i,o]=t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::create_margin_manager`,arguments:[t.object(n),t.object(this._sdk.sdkOptions.margin_utils.registry_id),t.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),t.object(I)],typeArguments:[r.coinType,s.coinType]});return t.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::share_margin_manager`,arguments:[i,o],typeArguments:[r.coinType,s.coinType]}),t}async getBalanceManagerByMarginManager(e){let t=`
2
+ query Events($filter: EventFilter) {
3
+ events(filter: $filter) {
4
+ nodes {
5
+ transactionModule { name }
6
+ sender { address }
7
+ contents {
8
+ type { repr }
9
+ bcs
10
+ json
11
+ }
12
+ }
13
+ }
14
+ }
15
+ `,n={filter:{sender:e,type:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::BalanceManagerEvent`}};return(await this.sdk.graphqlClient.query({query:t,variables:n}))?.data?.events?.nodes?.map(i=>i?.contents?.json)}async getMarginManagerByAccount(e){return(((await this.sdk.fullClient.queryEventsByPage({MoveEventType:`${this._sdk.sdkOptions.margin_utils.package_id}::margin_utils::CreateMarginManagerEvent`}))?.data||[])?.filter(s=>s.parsedJson.owner===e)).map(s=>s?.parsedJson)}async getBaseBalance({account:e,marginManager:t,baseCoinType:n,quoteCoinType:r}){let s=new P;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_base_balance`,arguments:[s.object(t)],typeArguments:[n,r]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s});return B.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])).toString()}async getQuoteBalance({account:e,marginManager:t,baseCoinType:n,quoteCoinType:r}){let s=new P;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_quote_balance`,arguments:[s.object(t)],typeArguments:[n,r]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s});return B.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])).toString()}async getBorrowedShares({account:e,marginManager:t,baseCoinType:n,quoteCoinType:r}){let s=new P;s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::get_borrowed_shares`,arguments:[s.object(t)],typeArguments:[n,r]});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o=B.U64.parse(new Uint8Array(i.results[0].returnValues[0][0])),c=B.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]));return{baseBorrowedShare:o,quoteBorrowedShare:c}}managerState=({account:e,marginManager:t,baseCoin:n,quoteCoin:r,pool:s,baseMarginPool:i,quoteMarginPool:o,decimals:c=6,basePriceFeedObjectId:l,quotePriceFeedObjectId:d})=>p=>{p.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::manager_state`,arguments:[p.object(t),p.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),p.object(l),p.object(d),p.object(s),p.object(i),p.object(o),p.object.clock()],typeArguments:[n.coinType,r.coinType]})};async getManagerState(e,t=new P){let{account:n,marginManager:r,baseCoin:s,quoteCoin:i,pool:o,baseMarginPool:c,quoteMarginPool:l,decimals:d=6}=e;if(!s.feed||!i.feed)throw new Error("Feed not found");let p=await this.pythPrice.updatePythPriceIDs([s.feed,i.feed],t),g=p.get(s.feed),b=p.get(i.feed);if(!s.priceInfoObjectId||!i.priceInfoObjectId)throw new Error("Price info object id not found");t.add(this.managerState({...e,basePriceFeedObjectId:g,quotePriceFeedObjectId:b}));let m=await this.sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:t});if(!m.results||!m.results[0]||!m.results[0].returnValues)throw new Error(`Failed to get margin manager state: ${m.effects?.status?.error||"Unknown error"}`);let h=Pe(B.Address.parse(new Uint8Array(m.results[0].returnValues[0][0]))),w=Pe(B.Address.parse(new Uint8Array(m.results[0].returnValues[1][0]))),f=Number(B.U64.parse(new Uint8Array(m.results[0].returnValues[2][0])))/1e9,C=this.#e(BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[3][0]))),s.scalar,d),_=this.#e(BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[4][0]))),i.scalar,d),S=this.#e(BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[5][0]))),s.scalar,d),M=this.#e(BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[6][0]))),i.scalar,d),k=B.U64.parse(new Uint8Array(m.results[0].returnValues[7][0])),T=Number(B.u8().parse(new Uint8Array(m.results[0].returnValues[8][0]))),j=B.U64.parse(new Uint8Array(m.results[0].returnValues[9][0])),F=Number(B.u8().parse(new Uint8Array(m.results[0].returnValues[10][0]))),D=BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[11][0]))),H=BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[12][0]))),Z=BigInt(B.U64.parse(new Uint8Array(m.results[0].returnValues[13][0])));return{managerId:h,deepbookPoolId:w,riskRatio:f,baseAsset:C,quoteAsset:_,baseDebt:S,quoteDebt:M,basePythPrice:k.toString(),basePythDecimals:T,quotePythPrice:j.toString(),quotePythDecimals:F,currentPrice:D,lowestTriggerAbovePrice:H,highestTriggerBelowPrice:Z}}async calculateAssets({account:e,marginManager:t,pool:n,baseCoin:r,quoteCoin:s,decimals:i=6}){let o=new P;o.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_manager::calculate_assets`,arguments:[o.object(t),o.object(n)],typeArguments:[r.coinType,s.coinType]});let c=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:o}),l=c.results[0].returnValues[0][0],d=c.results[0].returnValues[1][0];if(!r.scalar||!s.scalar)throw new Error("Scalar not found");let p=B.U64.parse(new Uint8Array(l)),g=B.U64.parse(new Uint8Array(d));return{baseAsset:p.toString(),quoteAsset:g.toString()}}async getBorrowedAmount({account:e,marginManager:t,baseCoinType:n,quoteCoinType:r,baseMarginPool:s,quoteMarginPool:i}){let{baseBorrowedShare:o,quoteBorrowedShare:c}=await this.getBorrowedShares({account:e,marginManager:t,baseCoinType:n,quoteCoinType:r}),l=!!u(o).gt(u(c)),d=l?s:i,p=l?o:c,g=new P;g.moveCall({target:`${this._sdk.sdkOptions.deepbook.margin_package_id}::margin_pool::borrow_shares_to_amount`,arguments:[g.object(d),g.pure.u64(BigInt(p)),g.object.clock()],typeArguments:[l?n:r]});let b=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:g}),m=B.U64.parse(new Uint8Array(b.results[0].returnValues[0][0]));return l?{baseBorrowedAmount:m.toString(),quoteBorrowedAmount:"0"}:{baseBorrowedAmount:"0",quoteBorrowedAmount:m.toString()}}async deposit({marginManager:e,baseCoin:t,quoteCoin:n,isBase:r,amount:s},i=new P){if(!t.feed||!n.feed)throw new Error("Feed not found");let o=r?t.coinType:n.coinType,c=st.buildCoinWithBalance(BigInt(s),o,i),l=await this.pythPrice.updatePythPriceIDs([t.feed,n.feed],i),d=l.get(t.feed),p=l.get(n.feed);if(!d||!p)throw new Error("Price feed object id not found");return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::deposit`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(d),i.object(p),c,i.object(I)],typeArguments:[t.coinType,n.coinType,o]}),i}async withdraw({account:e,marginManager:t,baseMarginPool:n,quoteMarginPool:r,baseCoin:s,quoteCoin:i,pool:o,isBase:c,amount:l},d=new P){if(!s.feed||!i.feed)throw new Error("Feed not found");let p=c?s.coinType:i.coinType,g=await this.pythPrice.updatePythPriceIDs([s.feed,i.feed],d),b=g.get(s.feed),m=g.get(i.feed);if(!b||!m)throw new Error("Price feed object id not found");let h=d.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::withdraw`,arguments:[d.object(t),d.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),d.object(n),d.object(r),d.object(b),d.object(m),d.object(o),d.pure.u64(BigInt(l)),d.object(I)],typeArguments:[s.coinType,i.coinType,p]});return d.transferObjects([h],e),d}async borrowBase({marginManager:e,baseMarginPool:t,baseCoin:n,quoteCoin:r,pool:s,amount:i},o=new P){if(!n.feed||!r.feed)throw new Error("Feed not found");let c=await this.pythPrice.updatePythPriceIDs([n.feed,r.feed],o),l=c.get(n.feed),d=c.get(r.feed);if(!l||!d)throw new Error("Price feed object id not found");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_base`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(d),o.object(s),o.pure.u64(BigInt(i)),o.object(I)],typeArguments:[n.coinType,r.coinType]}),o}async borrowQuote({marginManager:e,quoteMarginPool:t,baseCoin:n,quoteCoin:r,pool:s,amount:i},o=new P){if(!n.feed||!r.feed)throw new Error("Feed not found");let c=await this.pythPrice.updatePythPriceIDs([n.feed,r.feed],o),l=c.get(n.feed),d=c.get(r.feed);if(!l||!d)throw new Error("Price feed object id not found");return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::borrow_quote`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(t),o.object(l),o.object(d),o.object(s),o.pure.u64(BigInt(i)),o.object(I)],typeArguments:[n.coinType,r.coinType]}),o}async repayBase({marginManager:e,baseMarginPool:t,baseCoinType:n,quoteCoinType:r,amount:s},i=new P){return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_base`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t),i.object.option({type:"u64",value:s?i.pure.u64(s):null}),i.object(I)],typeArguments:[n,r]}),i}async repayQuote({marginManager:e,quoteMarginPool:t,baseCoinType:n,quoteCoinType:r,amount:s},i=new P){return i.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::repay_quote`,arguments:[i.object(e),i.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),i.object(t),i.object.option({type:"u64",value:s?i.pure.u64(s):null}),i.object(I)],typeArguments:[n,r]}),i}async placeMarginMarketOrder({marginManager:e,poolInfo:t,selfMatchingOption:n,quantity:r,isBid:s,payWithDeep:i},o=new P){let{id:c,baseCoin:l,quoteCoin:d}=t;if(l.decimals===void 0||d.decimals===void 0)throw new Error("Decimals not found");let p=BigInt(W(r,l.decimals));return o.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_market_order`,arguments:[o.object(e),o.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),o.object(c),o.pure.u8(n),o.pure.u64(p),o.pure.bool(s),o.pure.bool(i),o.object(I)],typeArguments:[l.coinType,d.coinType]}),o}async placeMarginLimitOrder({marginManager:e,poolInfo:t,orderType:n,selfMatchingOption:r,priceInput:s,quantity:i,isBid:o,payWithDeep:c,expirationTimestamp:l=Date.now()+31536e8},d=new P){let{id:p,baseCoin:g,quoteCoin:b}=t;if(g.decimals===void 0||b.decimals===void 0)throw new Error("Decimals not found");let m=BigInt(u(s).mul(10**(b.decimals-g.decimals+9)).toString()),h=BigInt(W(i,g.decimals));return console.log("tx params: ",{marginManager:e,marginRegistryId:this._sdk.sdkOptions.margin_utils.margin_registry_id,pool:p,orderType:n,selfMatchingOption:r,priceBigInt:m,quantityBigInt:h,isBid:o,payWithDeep:c,expirationTimestamp:l}),d.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::place_margin_limit_order`,arguments:[d.object(e),d.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),d.object(p),d.pure.u8(n),d.pure.u8(r),d.pure.u64(m),d.pure.u64(h),d.pure.bool(o),d.pure.bool(c),d.pure.u64(l),d.object(I)],typeArguments:[g.coinType,b.coinType]}),d}modifyMarginOrder({marginManager:e,poolInfo:t,orderId:n,newQuantity:r},s=new P){if(t.baseCoin.decimals===void 0)throw new Error("Base coin decimals not found");let i=BigInt(W(r,t.baseCoin.decimals));return s.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::modify_margin_order`,arguments:[s.object(e),s.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),s.object(t.id),s.pure.u128(n),s.pure.u64(i),s.object(I)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),s}cancelMarginOrder({marginManager:e,poolInfo:t,orderId:n},r=new P){return r.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_margin_order`,arguments:[r.object(e),r.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),r.object(t.id),r.pure.u128(n),r.object(I)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),r}cancelAllMarginOrders({marginManager:e,poolInfo:t},n=new P){return n.moveCall({target:`${this._sdk.sdkOptions.margin_utils.published_at}::margin_utils::cancel_all_margin_orders`,arguments:[n.object(e),n.object(this._sdk.sdkOptions.margin_utils.margin_registry_id),n.object(t.id),n.object(I)],typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType]}),n}#e(e,t,n){let r=BigInt(t),s=e/r,i=e%r;if(i===0n)return s.toString();let o=t.toString().length-1,d=i.toString().padStart(o,"0").slice(0,n).replace(/0+$/,"");return d?`${s}.${d}`:s.toString()}};import{SuiClient as it}from"@mysten/sui/client";var ee=class extends it{async queryEventsByPage(e,t="all"){let n=[],r=!0,s=t==="all",i=s?null:t.cursor;do{let o=await this.queryEvents({query:e,cursor:i,limit:s?null:t.limit});o.data?(n=[...n,...o.data],r=o.hasNextPage,i=o.nextCursor):r=!1}while(s&&r);return{data:n,nextCursor:i,hasNextPage:r}}async getOwnedObjectsByPage(e,t,n="all"){let r=[],s=!0,i=n==="all",o=i?null:n.cursor;do{let c=await this.getOwnedObjects({owner:e,...t,cursor:o,limit:i?null:n.limit});c.data?(r=[...r,...c.data],s=c.hasNextPage,o=c.nextCursor):s=!1}while(i&&s);return{data:r,nextCursor:o,hasNextPage:s}}async getDynamicFieldsByPage(e,t="all"){let n=[],r=!0,s=t==="all",i=s?null:t.cursor;do{let o=await this.getDynamicFields({parentId:e,cursor:i,limit:s?null:t.limit});o.data?(n=[...n,...o.data],r=o.hasNextPage,i=o.nextCursor):r=!1}while(s&&r);return{data:n,nextCursor:i,hasNextPage:r}}async batchGetObjects(e,t,n=50){let r=[];try{for(let s=0;s<Math.ceil(e.length/n);s++){let i=await this.multiGetObjects({ids:e.slice(s*n,n*(s+1)),options:t});r=[...r,...i]}}catch{}return r}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let n=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:r}=n.effects;return Number(r.computationCost)+Number(r.storageCost)-Number(r.storageRebate)}async sendTransaction(e,t){try{return await this.signAndExecuteTransaction({transaction:t,signer:e,options:{showEffects:!0,showEvents:!0}})}catch{}}};import ve from"decimal.js";ve.config({precision:64,rounding:ve.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var Un=({totalAssetsValue:a,totalDebtValue:e})=>u(e).eq(0)||u(a).eq(0)?"0":u(a).div(u(e)).toString();var te=class{_cache={};_rpcModule;_deepbookUtils;_marginUtils;_pythPrice;_graphqlClient;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new ee({url:e.fullRpcUrl}),this._deepbookUtils=new Y(this),this._marginUtils=new X(this),this._pythPrice=new Q(this),this._graphqlClient=new ot({url:e.graphqlUrl}),ce(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get MarginUtils(){return this._marginUtils}get PythPrice(){return this._pythPrice}get fullClient(){return this._rpcModule}get graphqlClient(){return this._graphqlClient}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,n=!0){let r=[],s=null,i=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,o=this.getCache(i,n);if(o)return o;for(;;){let c=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:s}):this.fullClient.getAllCoins({owner:e,cursor:s}));if(c.data.forEach(l=>{BigInt(l.balance)>0&&r.push({coinAddress:x(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),s=c.nextCursor,!c.hasNextPage)break}return this.updateCache(i,r,30*1e3),r}async getOwnerCoinBalances(e,t){let n=[];return t?n=[await this.fullClient.getBalance({owner:e,coinType:t})]:n=[...await this.fullClient.getAllBalances({owner:e})],n}updateCache(e,t,n=864e5){let r=this._cache[e];r?(r.overdueTime=G(n),r.value=t):r=new L(t,G(n)),this._cache[e]=r}getCache(e,t=!1){let n=this._cache[e],r=n?.isValid();if(!t&&r)return n.value;r||delete this._cache[e]}};var ir="0x0000000000000000000000000000000000000000000000000000000000000006",or="pool_script",ar="pool_script_v2",cr="router",ur="router_with_partner",lr="fetcher_script",dr="expect_swap",pr="utils",gr="0x1::coin::CoinInfo",mr="0x1::coin::CoinStore",br="custodian_v2",hr="clob_v2",_r="endpoints_v2",yr=a=>{if(typeof a=="string"&&a.startsWith("0x"))return"object";if(typeof a=="number"||typeof a=="bigint")return"u64";if(typeof a=="boolean")return"bool";throw new Error(`Unknown type for value: ${a}`)};var at=(r=>(r[r.NO_RESTRICTION=0]="NO_RESTRICTION",r[r.IMMEDIATE_OR_CANCEL=1]="IMMEDIATE_OR_CANCEL",r[r.FILL_OR_KILL=2]="FILL_OR_KILL",r[r.POST_ONLY=3]="POST_ONLY",r))(at||{});var Er=te;export{ir as CLOCK_ADDRESS,L as CachedContent,te as CetusClmmSDK,dr as ClmmExpectSwapModule,lr as ClmmFetcherModule,or as ClmmIntegratePoolModule,ar as ClmmIntegratePoolV2Module,cr as ClmmIntegrateRouterModule,ur as ClmmIntegrateRouterWithPartnerModule,pr as ClmmIntegrateUtilsModule,O as CoinAssist,gr as CoinInfoAddress,mr as CoinStoreAddress,At as DEFAULT_GAS_BUDGET_FOR_MERGE,St as DEFAULT_GAS_BUDGET_FOR_SPLIT,jt as DEFAULT_GAS_BUDGET_FOR_STAKE,Tt as DEFAULT_GAS_BUDGET_FOR_TRANSFER,Ot as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,Mt as DEFAULT_NFT_TRANSFER_GAS_FEE,hr as DeepbookClobV2Moudle,br as DeepbookCustodianV2Moudle,_r as DeepbookEndpointsV2Moudle,Y as DeepbookUtilsModule,Bt as GAS_SYMBOL,ie as GAS_TYPE_ARG,Ce as GAS_TYPE_ARG_LONG,X as MarginUtilsModule,Gt as NORMALIZED_SUI_COIN_TYPE,at as OrderType,ee as RpcModule,Pt as SUI_SYSTEM_STATE_OBJECT_ID,U as TransactionUtil,ke as addHexPrefix,_t as asIntN,ht as asUintN,It as bufferToHex,$ as cacheTime24h,ge as cacheTime5min,Un as calculateRiskRatio,Dt as checkAddress,Se as composeType,u as d,ne as decimalsMultiplier,Er as default,Vt as extractAddressFromType,x as extractStructTagFromType,Lt as fixCoinType,N as fixDown,Ke as fixSuiObjectId,V as fromDecimalsAmount,yr as getDefaultSuiInputType,G as getFutureTime,ue as getMoveObject,We as getMoveObjectType,Zt as getMovePackageContent,Qe as getObjectDeletedResponse,Yt as getObjectDisplay,Be as getObjectFields,je as getObjectId,He as getObjectNotExistsResponse,Jt as getObjectOwner,Wt as getObjectPreviousTransactionDigest,Oe as getObjectReference,zt as getObjectType,Ht as getObjectVersion,K as getSuiObjectData,Xt as hasPublicTransfer,Rt as hexToNumber,xt as hexToString,Nt as isSortedSymbols,Ze as isSuiObjectResponse,re as maxDecimal,se as normalizeCoinType,ce as patchFixSuiObjectId,rn as printTransaction,oe as removeHexPrefix,yt as secretKeyToEd25519Keypair,ft as secretKeyToSecp256k1Keypair,Et as shortAddress,qe as shortString,Ue as toBuffer,W as toDecimalsAmount,Fe as utf8to16};
package/jest.config.js ADDED
@@ -0,0 +1,15 @@
1
+ /** @type import('eslint').Linter.Config */
2
+ module.exports = {
3
+ "roots": [
4
+ "<rootDir>/src",
5
+ "<rootDir>/tests"
6
+ ],
7
+ testMatch: [
8
+ "**/__tests__/**/*.+(ts|tsx|js)",
9
+ "**/?(*.)+(spec|test).+(ts|tsx|js)"
10
+ ],
11
+ transform: {
12
+ "^.+\\.(ts|tsx)$": "ts-jest"
13
+ },
14
+ testTimeout: 9000 * 1000
15
+ }
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "@cetusprotocol/deepbook-utils",
3
+ "version": "0.0.0-experimental-20251225165838",
4
+ "description": "cetus deepbook utils sdk",
5
+ "typings": "dist/index.d.ts",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.mjs",
8
+ "scripts": {
9
+ "test": "jest",
10
+ "lint": "biome check .",
11
+ "lint:fix": "biome check --write .",
12
+ "format": "biome format --write .",
13
+ "build": "tsup --format cjs,esm --dts",
14
+ "testbuild": "tsc",
15
+ "prepare": "husky install",
16
+ "build:tsup": "npm run build:clean && npm run _build:node",
17
+ "build:clean": "rm -rf dist",
18
+ "_build:browser": "tsup --platform browser --format iife --global-name cetusAptosSDK --minify",
19
+ "_build:node": "tsup --format cjs,esm --dts",
20
+ "build:doc": "npx typedoc",
21
+ "publish:test": "node version.mjs && npm publish --tag experimental"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": ""
26
+ },
27
+ "keywords": [],
28
+ "author": "test",
29
+ "license": "Apache-2.0",
30
+ "devDependencies": {
31
+ "@commitlint/cli": "^17.1.2",
32
+ "@commitlint/config-conventional": "^17.1.0",
33
+ "@types/cors": "^2.8.13",
34
+ "@types/jest": "^29.0.0",
35
+ "@types/lossless-json": "^1.0.1",
36
+ "@types/uuid": "^9.0.2",
37
+ "@biomejs/biome": "^1.9.4",
38
+ "bip39-light": "^1.0.7",
39
+ "husky": "^8.0.1",
40
+ "jest": "^29.0.0",
41
+ "lint-staged": "^13.0.3",
42
+ "standard-version": "^9.5.0",
43
+ "ts-jest": "^29.0.0",
44
+ "tsup": "^6.6.2",
45
+ "typedoc": "^0.26.5",
46
+ "typescript": "^5.5.3"
47
+ },
48
+ "dependencies": {
49
+ "@cetusprotocol/common-sdk": "^1.3.1",
50
+ "@mysten/bcs": "1.0.4",
51
+ "@mysten/deepbook-v3": "^0.24.0",
52
+ "@mysten/sui": "^1.45.2",
53
+ "@pythnetwork/pyth-sui-js": "^2.4.0",
54
+ "@suchipi/femver": "^1.0.0",
55
+ "@syntsugar/cc-graph": "^0.1.1",
56
+ "@types/bn.js": "^5.1.1",
57
+ "axios": "^1.4.0",
58
+ "bn.js": "^5.2.1",
59
+ "cors": "^2.8.5",
60
+ "decimal.js": "^10.4.1",
61
+ "dotenv": "^16.4.5",
62
+ "isomorphic-fetch": "^3.0.0",
63
+ "js-base64": "^3.7.4",
64
+ "js-sha3": "^0.8.0",
65
+ "superstruct": "^1.0.3",
66
+ "tiny-invariant": "^1.1.0",
67
+ "tweetnacl": "^1.0.3",
68
+ "uuid": "^9.0.0"
69
+ },
70
+ "lint-staged": {
71
+ "*.{ts,js,tsx,jsx,json}": [
72
+ "biome check --write"
73
+ ]
74
+ },
75
+ "commitlint": {
76
+ "extends": [
77
+ "@commitlint/config-conventional"
78
+ ]
79
+ },
80
+ "overrides": {
81
+ "chalk": "5.3.0",
82
+ "strip-ansi": "6.0.1",
83
+ "color-convert": "2.0.1",
84
+ "color-name": "1.1.4",
85
+ "is-core-module": "2.13.1",
86
+ "error-ex": "1.3.2"
87
+ }
88
+ }
@@ -0,0 +1,2 @@
1
+ {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/@mysten/sui.js/dist/serialization/base64.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/publickey.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/keypair.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/ed25519-publickey.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/ed25519-keypair.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/secp256k1-keypair.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/secp256k1-publickey.d.ts","./node_modules/@mysten/sui.js/dist/cryptography/mnemonics.d.ts","./node_modules/superstruct/dist/error.d.ts","./node_modules/superstruct/dist/utils.d.ts","./node_modules/superstruct/dist/struct.d.ts","./node_modules/superstruct/dist/structs/coercions.d.ts","./node_modules/superstruct/dist/structs/refinements.d.ts","./node_modules/superstruct/dist/structs/types.d.ts","./node_modules/superstruct/dist/structs/utilities.d.ts","./node_modules/superstruct/dist/index.d.ts","./node_modules/@mysten/sui.js/dist/rpc/client.d.ts","./node_modules/@mysten/bcs/dist/b64.d.ts","./node_modules/@mysten/bcs/dist/hex.d.ts","./node_modules/@mysten/bcs/dist/index.d.ts","./node_modules/@mysten/sui.js/dist/types/objects.d.ts","./node_modules/@mysten/sui.js/dist/types/version.d.ts","./node_modules/@mysten/sui.js/dist/types/sui-bcs.d.ts","./node_modules/@mysten/sui.js/dist/types/common.d.ts","./node_modules/@mysten/sui.js/dist/types/events.d.ts","./node_modules/@mysten/sui.js/dist/types/transactions.d.ts","./node_modules/@mysten/sui.js/dist/types/option.d.ts","./node_modules/@mysten/sui.js/dist/framework/framework.d.ts","./node_modules/@mysten/sui.js/dist/types/faucet.d.ts","./node_modules/@mysten/sui.js/dist/types/normalized.d.ts","./node_modules/@mysten/sui.js/dist/types/validator.d.ts","./node_modules/@mysten/sui.js/dist/types/coin.d.ts","./node_modules/@mysten/sui.js/dist/types/checkpoints.d.ts","./node_modules/@mysten/sui.js/dist/types/index.d.ts","./node_modules/@mysten/sui.js/dist/signers/txn-data-serializers/txn-data-serializer.d.ts","./node_modules/@mysten/sui.js/dist/types/dynamic_fields.d.ts","./node_modules/@mysten/sui.js/dist/providers/provider.d.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/@types/node/ts4.8/assert.d.ts","./node_modules/@types/node/ts4.8/assert/strict.d.ts","./node_modules/@types/node/ts4.8/globals.d.ts","./node_modules/@types/node/ts4.8/async_hooks.d.ts","./node_modules/@types/node/ts4.8/buffer.d.ts","./node_modules/@types/node/ts4.8/child_process.d.ts","./node_modules/@types/node/ts4.8/cluster.d.ts","./node_modules/@types/node/ts4.8/console.d.ts","./node_modules/@types/node/ts4.8/constants.d.ts","./node_modules/@types/node/ts4.8/crypto.d.ts","./node_modules/@types/node/ts4.8/dgram.d.ts","./node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","./node_modules/@types/node/ts4.8/dns.d.ts","./node_modules/@types/node/ts4.8/dns/promises.d.ts","./node_modules/@types/node/ts4.8/domain.d.ts","./node_modules/@types/node/ts4.8/dom-events.d.ts","./node_modules/@types/node/ts4.8/events.d.ts","./node_modules/@types/node/ts4.8/fs.d.ts","./node_modules/@types/node/ts4.8/fs/promises.d.ts","./node_modules/@types/node/ts4.8/http.d.ts","./node_modules/@types/node/ts4.8/http2.d.ts","./node_modules/@types/node/ts4.8/https.d.ts","./node_modules/@types/node/ts4.8/inspector.d.ts","./node_modules/@types/node/ts4.8/module.d.ts","./node_modules/@types/node/ts4.8/net.d.ts","./node_modules/@types/node/ts4.8/os.d.ts","./node_modules/@types/node/ts4.8/path.d.ts","./node_modules/@types/node/ts4.8/perf_hooks.d.ts","./node_modules/@types/node/ts4.8/process.d.ts","./node_modules/@types/node/ts4.8/punycode.d.ts","./node_modules/@types/node/ts4.8/querystring.d.ts","./node_modules/@types/node/ts4.8/readline.d.ts","./node_modules/@types/node/ts4.8/readline/promises.d.ts","./node_modules/@types/node/ts4.8/repl.d.ts","./node_modules/@types/node/ts4.8/stream.d.ts","./node_modules/@types/node/ts4.8/stream/promises.d.ts","./node_modules/@types/node/ts4.8/stream/consumers.d.ts","./node_modules/@types/node/ts4.8/stream/web.d.ts","./node_modules/@types/node/ts4.8/string_decoder.d.ts","./node_modules/@types/node/ts4.8/test.d.ts","./node_modules/@types/node/ts4.8/timers.d.ts","./node_modules/@types/node/ts4.8/timers/promises.d.ts","./node_modules/@types/node/ts4.8/tls.d.ts","./node_modules/@types/node/ts4.8/trace_events.d.ts","./node_modules/@types/node/ts4.8/tty.d.ts","./node_modules/@types/node/ts4.8/url.d.ts","./node_modules/@types/node/ts4.8/util.d.ts","./node_modules/@types/node/ts4.8/v8.d.ts","./node_modules/@types/node/ts4.8/vm.d.ts","./node_modules/@types/node/ts4.8/wasi.d.ts","./node_modules/@types/node/ts4.8/worker_threads.d.ts","./node_modules/@types/node/ts4.8/zlib.d.ts","./node_modules/@types/node/ts4.8/globals.global.d.ts","./node_modules/@types/node/ts4.8/index.d.ts","./node_modules/@types/ws/index.d.ts","./node_modules/rpc-websockets/dist/lib/client/client.types.d.ts","./node_modules/rpc-websockets/dist/lib/client.d.ts","./node_modules/rpc-websockets/dist/lib/server.d.ts","./node_modules/rpc-websockets/dist/index.d.ts","./node_modules/@mysten/sui.js/dist/rpc/websocket-client.d.ts","./node_modules/@mysten/sui.js/dist/utils/api-endpoints.d.ts","./node_modules/@mysten/sui.js/dist/providers/json-rpc-provider.d.ts","./node_modules/@mysten/sui.js/dist/providers/json-rpc-provider-with-cache.d.ts","./node_modules/@mysten/sui.js/dist/serialization/hex.d.ts","./node_modules/@mysten/sui.js/dist/signers/txn-data-serializers/rpc-txn-data-serializer.d.ts","./node_modules/@mysten/sui.js/dist/signers/txn-data-serializers/local-txn-data-serializer.d.ts","./node_modules/@mysten/sui.js/dist/signers/txn-data-serializers/type-tag-serializer.d.ts","./node_modules/@mysten/sui.js/dist/signers/signer.d.ts","./node_modules/@mysten/sui.js/dist/signers/signer-with-provider.d.ts","./node_modules/@mysten/sui.js/dist/signers/raw-signer.d.ts","./node_modules/@mysten/sui.js/dist/framework/sui-system-state.d.ts","./node_modules/@mysten/sui.js/dist/framework/index.d.ts","./node_modules/@mysten/sui.js/dist/index.d.ts","./node_modules/@types/bn.js/index.d.ts","./node_modules/decimal.js/decimal.d.ts","./src/types/sui.ts","./src/utils/cachedcontent.ts","./src/interfaces/imodule.ts","./src/utils/bscutlis.ts","./src/utils/hex.ts","./src/utils/contracts.ts","./src/math/coinassist.ts","./src/modules/resourcesmodule.ts","./src/utils/decimal.ts","./src/errors/errors.ts","./src/math/utils.ts","./src/types/clmmpool.ts","./src/utils/common.ts","./src/modules/poolmodule.ts","./src/modules/positionmodule.ts","./src/types/constants.ts","./src/utils/tick.ts","./src/modules/rewardermodule.ts","./node_modules/tiny-invariant/dist/tiny-invariant.d.ts","./node_modules/ss-graph/dist/vertex.d.ts","./node_modules/ss-graph/dist/edge.d.ts","./node_modules/ss-graph/dist/graph.d.ts","./node_modules/ss-graph/dist/index.d.ts","./src/math/tick.ts","./src/modules/tokenmodule.ts","./src/modules/routermodule.ts","./src/math/swap.ts","./src/types/liquidity.ts","./src/math/clmm.ts","./src/modules/swapmodule.ts","./src/sdk.ts","./src/utils/numbers.ts","./src/utils/index.ts","./src/math/apr.ts","./src/math/collect-fees.ts","./src/math/percentage.ts","./src/math/position.ts","./src/math/index.ts","./src/index.ts","./src/main.ts","./src/types/index.ts","./node_modules/@types/jest/node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/chalk/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","./node_modules/@types/jest/node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/@types/jest/node_modules/expect/build/index.d.ts","./node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"2af4e60944bfa8a3c6a1f955ab20418e71d6f8df2cefd435a4d80aeff1b0cd83","1985793e1e401f44090ece257d7a5dfce3969f3a43cf4294b0b0fdb757c5c49f","12d7c3d58cb7f5c11fa3cd44cd1ce5bce8775dfe3c78df997cc8a02b0fa0c240","fad37a6e99bee99f74e05132fb75a01467644c20f25641e58f962bd49228cb8d","ccdbb14acee5ca10cb23905f1e47656205ad1250f3464ef1b53690e3288527ff","60032d4c81702b03285ac247f5d0463adbd92bda9b8ecf3b7f0a09f5257b4f5f","197540f29a574c9ca076891f536687e96b30b1269ee10ce5578465fb635fb77f","4bbbdd39bfe7a008a69b683786bb403d289ec9be0cf8cfc56bebc49c35ebcf9c","e475453e7140e95542332943d3052fe4c7430ad1efce42b3e9157f1fee8cbc5f","ebfdf904255ce746c9d30117c2edef355fb19bf7650478d2405f39f0e4f302e6","f3f63b48addb8e2ea9d20bb671c3c306413b3daa39996d0ae52f63d8e32158e1","a50599c08934a62f11657bdbe0dc929ab66da1b1f09974408fd9a33ec1bb8060","5a20e7d6c630b91be15e9b837853173829d00273197481dc8d3e94df61105a71","8d478048d71cc16f806d4b71b252ecb67c7444ccf4f4b09b29a312712184f859","b4000a0a525fa921e896cbdb32ae802c9684f0fd371b5fc69e7310f7918cc2c3","9df4662ca3dbc2522bc115833ee04faa1afbb4e249a85ef4a0a09c621346bd08","8be8d35075fc856441a62737601c3e3ce23193204c3327357aff4be47cc081df","5354a072b3ac903eb7fd90335dc277df9c1f41c650ddb495e7d3837870ce8f37","da0d6e82a836d320b4aedffcdbeda8444263533483ec4fc36a188da9995beee8","8c76431f29b643152410c64df6d4110af250697b5a8db2b7852887b1276a7004","22836a753a13ff7d64124be9b133bdf7ae9c7cb2656688d8cb49663ec9a8a29f","0c10767dd0a3cef75ae01b0918e4a26e4417cdc3addfbeaf376b34df065725bd","9274731e8819cbcfc8ffb10218f8a92669fc90426b282d1494576bab3ea2cfb7","c723618d55f50de3c61f8b1ccfca25168abfecefc114d2be1f406519810b16d7","68cda7ff8effc28ae52ced67139c6eed811b712855af4d386a8ed30d2476272d","14b66810de4054f5ad6635402e45384c5da93e4ef8c83988ca883ff778dd0088","d793401cb103180e52a1f221880011925341bbcb24922a9f232bbbca693c6ade","df2a389ed630d4092ebd4d1a1dd4e66c47d5b67cd089e8173d1e383df62478bb","08b326390bb5ed89df0a4c74c5196275a4a7567bcf91d371f4f258b1278c85bf","0f371b9a56d9a0b9e095c523918b6c8ee34ae8570aa2cb5cfe7b7378f98bec3a","2bfe5a3a88edd47175629edf345737abce61289fb00f1d41aa3dd814a376712a","eea4841c525588619c345784fb85da7d4dff78094fd214daa95a347f46beac26","22d738d931a16ca8a2cb11946109214fcda13f87af0c9b4f6cbbcbbbd77d6979","1bbaf7d18d820ca6d4b5edeaf5e1fd03e4ffcb058c6f40fe5054e4e5d1122829","a8d0efe40efc6a619906b4db38431da54c9fe013fa11d59f75b8bbb04cae2194","b40822a558078173949db4cdc309631c669d1b7e39a73963e87aa88e47931e99","01da063817f747576b5f5b604a7194601c7f7f735e933fe5bd5ad9a14365266d","b80c780c52524beb13488942543972c8b0e54400e8b59cee0169f38d0fabb968","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"02873d070f9cb79f50833fbf4a9a27ac578a2edf8ddb8421eba1b37faba83bfb","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"e9d541cf4452ff2a5543c2d8a220f645b094b5e2b6cf7c5dd2a8cb54e8731f31","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","93a195fae9f7275e1a0631acffdfae49bb285d96fc8f7f606cb6eb7516dd03f5","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"9b4e8e95e480a6ef470e0b0e1eaea9d986011d4dc05267dcc9edfaa6d22e7cd1","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","fa68e523cb5d3c2f1f02a94ea8ba2a61a9d1c88dc3c163e411311a826be1f9f3","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","dbe5aa5a5dd8bd1c6a8d11b1310c3f0cdabaacc78a37b394a8c7b14faeb5fb84","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"d4ac44f01d42f541631c5fc88d0ed8efac29a3a3ad9a745d9fd58f8b61ed132e","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","3163f47436da41706c6e2b3c1511f3b7cce9f9f3905b2f3e01246c48b4ba7d14","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","24ad30a03d6c9266b63540956868dd70fa2dc523d60d780d6586eb0c281946bc",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"f7db71191aa7aac5d6bc927ed6e7075c2763d22c7238227ec0c63c8cf5cb6a8b","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"652ee9c5103e89102d87bc20d167a02a0e3e5e53665674466c8cfea8a9e418c7","bc81aff061c53a7140270555f4b22da4ecfe8601e8027cf5aa175fbdc7927c31","df3b06e7d4d5e20fe32ef5954f0b7a676370039c1d1a43953ffb2c52a52a74b2","4305c427fdfc6159c17684339b08a91c90b18e5441e83ed80838d385bd1eebf7","cae3fa562dd33113e83ffde204f4bc0bd4c549ffb912d9aaa405b77ead4b9c7c","45b7c884b58ed21b127103a61ebe54963f300bbbb56803908bbf4faf4248041d","b57e6463966821926efa7ec93c762457833363505ceb6c1ee044d8919e6a6196","10afc331e348c533bad1f5c52b543bea3c1c106f24be74bcb9c6ac9a505cb605","765c8bea4751f7bb764e9dbcaf7b6efd90208e7a5fc6ba536a2916c89f0289e3","d9383981f3968d7d67a22e7e59a0c322bf99cb20e7ac83d13acaa2743c6fb5ec","70e92161b86beca381761036ad91a9c70175e3ca3cb012e2fe3c0a69014c5224","3ebd277a65ec2b24767d34a7c87b18041e57b6d15bf39433ee78d4492856868e","b807aa09aac76ff5f0d6bf0b21f2f0b504f5e190e8f085ac9e1ea6973584fbef","1ea46a6f75fe13a5aeb211b78d70b12ceb5d6746af011f93d7c2b5fa27811944","8624971842a87046b847fe0a1af8f8d9cdc1f55ea536f3a69115000e648ceac2","215ee733202f621898f65c84eee0f5c8071501f73e747ae2b921f9ce1ceb8a54","c7b556a9b471f8f73d611e5fc3b2a5ebe9dfced1a7b749c8e2b22c89ce8a6e57","b2a93cc778e68aab6d0c12584ad48d1bc02ad87df633b1de0ef4d9bab43b0709","5cda125cdcbd80d3a3869ae91d7b07dcc6c7f922bf98c05ee7e19472229535da","5184380f7c893dbc42f80d0bca215c8329d228651c913bd24e10a049a91e3154","01f7828047b5c6703d3c601473618b448f5506a88fcac852638b0715c3abf4eb","3a5ee4f59335625ce2f8c5f37a4fdfe189c9bdba8efc61abb05b96c34cca519f",{"version":"b7d68ed1b155d30a585f24d5ddc17d0e29e66ef29cbfb1ac5f2062c5dbe62606","signature":"a1b981e209e66b1dd886b36132c8336d07f6560836dcf482646d2f7aad21828a"},{"version":"862946df6734b9b7cb03d7de19bd555dab53622680fe533889a4c57fa26de9a2","signature":"5ba693e69a536b53756d23efae393e8f46803a146831540fbf286a8756d246f0"},{"version":"4c3043ad568ebdab20b01216fc3c117953d09f74e9f6e8056d861d906927ae60","signature":"a1c2f4bb31bcb0bc389e99cfb6ceccadce59b2af8108111fe0cff93f1c8aca9a"},{"version":"00d300225d352dd0c9712ede2db8db993608e61c6895b59abbd9ef946abbdfbe","signature":"e358aa83e57dd90da2605e1c346be4be3525de214b7cf0e5d4b85f4ad660d92a"},{"version":"7d7ebfd90d455a6d9b26a36e87b17babb4fe4ce1235552a9cca998011ce03882","signature":"32443d66c9cee35b020340239a197b22bc19e531a9163f4cf9b5c94a62c8cc15"},{"version":"a4f28baf944accbcb25fe82866991b324a86c1d5827475666bc708cfc917ba0c","signature":"3db16627e8eb668ca87e340d396a56cfcd0f0b67443a7b2d865a66fe5aa5ed60"},{"version":"0af583c365b78dc0c7d0c502899ba5d6409c73704ee7ca74b5ae734112d93dca","signature":"4419fe1d9df4417e52165231fde73cc1a10a36ca575b57a9dc6c503d720d8b74"},{"version":"3e932c35360fa83fc7526fcb209f0dc986b6df819dbcce874e8edc293486cc40","signature":"bea35f5a6629a3bbde0db20073a27cf96deed17f1d108ab25e2a753d0a672270"},{"version":"902a01c74c33b2a9ba07a0e99a69458c6fe8ded7cd5ed276cc6a6bbff1ee4f44","signature":"3850046a126637bb9b54130d121c4772ae4b8d68003fdbf6fe2131e63fc32a8e"},{"version":"6d7171bb2c0fdac373aa47fd0ac4736f8df89c4a7989803a8f0e565656e3e955","signature":"334e1b1575f15be2b0867bb12c9d3905d488212f4cd997af7a4f0a4d3e61673b"},{"version":"4eeb74083b73a331d3d8d20f13f7f2d213b6b07a70133c531aff57e8b2e9082c","signature":"4bc6caca23821b830c82be00a466adda337b8a05697f1286ec8c2e027eee4607"},{"version":"ed7c3f20905659ce96c46fc812bef399b9f0eeb1783837a912a8b8ae6f371550","signature":"c41d81f1cd91048a261c9facd0fbedf0eadaf436fa3672c78d19af06683c0a6b"},{"version":"d33769c8257c8b9df3d0a99d589a23d4d041bb827e9438c6ef8ac44610828822","signature":"96695ceaa42529fa69ca62c5ba06836b4f412d390a135709c0f87e4416d81967"},{"version":"d763fde44b6aa20a4d543cc38975b6fb7f42a9441a9c3a560d993519cb8de0c3","signature":"cf75e67360463bee9702c205444810aefaadb7cd24425f68bc625c7428b3f844"},{"version":"5c8ffeab50041dd097c606bb678d345f052f7494c1de7a26f7dd22aa6258f729","signature":"157fb4eaca145a4aa917bff502a3544ad4577b810b8f2d24a9b53a8c509813c9"},{"version":"f62611f92603de8251bda4a55887d4c6994c07bf5645eea3a673cec0e07c4aeb","signature":"3d2cf58c149df1692b8bf6e5db66c2b811d12620bddcc6220a19de321426122c"},{"version":"34ac0ccc434036221ff2d7f9936872564615d4e1d6106fae49b20796943eb66a","signature":"68eb0c88197c62c6bd33fcb92f05aac50f3a1d352790760d0a0acb4789a1867c"},{"version":"2976e66da2fae0fd324ac8864fff21afeebd7aeef23b1a87093e2dc1437c7d83","signature":"ccd4dc8c462c9fdf0159324fe16ed35cfea495592ca853bbe3e5753bcb003a93"},"274739c6c5cc94391cdf4acbbf72c7c6cd13429b48c6582ff9e111749fefa9fc","ea1c1e53bb8a8c0ad152780a0d2ce0e948715d6807b4caa9dc393695ea2bc7b8","242fce87d06a9fe2ee0e712035362658fd1681e861196afaeda34579bdd5bcfd","2ab38e74319400decb524357fcb38847c01ffbdbd29853bab903bd08cc6d2ae7","a1cbc1fb734a4679b65972c9f38a0e2532f1039aa1d02378fc8ab5c61715a4a8",{"version":"f68fdee54b0cb32cc50de09c5c32f92f6ebb0ee991d411a28c7a021da0332fa6","signature":"0e58d653fe27262b06629353b22d5867bbc53db01a8e4de338b83797796cf77a"},{"version":"dddded226a0676b2c9e9857f844cd5b1c62d33afad99b69deaf1ceb45688c32a","signature":"0d34a0e7b699ff57309494459235e098f62faa633a6c424959e919ab727a46dc"},{"version":"dd5756f9b2eb17e92f1350b53b0fbbdde0878aac2a9e53f87ba3f56291333104","signature":"aa80e4c39d9649d6f04e26f4031e842c052135fe272503dadb0a9d20e44dc0a2"},{"version":"50f986024309ed3a4c9f8218d0364fd4c2ee25f7dfe1b26c39043a458c3f00b8","signature":"1fbbe0e4659f01a01b1d227955cc5cf176f29f57524a38148b3c618374bf68db"},{"version":"6387a4dec9f450da80a228a020bef906aca213bc17340c7a3d6c6c59635eb0de","signature":"558a058dd5ce1340bfea31d371d9b9df3157d78f389f4b37e7f24c2f17824121"},{"version":"cf06ff99de1c7b91b5d9c59a7f3fab8f9c59e95cf11fc010652f919f52764233","signature":"e7a0078c3d44faba67a446701538fcbb84a0d39afb45423dda0b45077a3746a7"},{"version":"b01832d5b4392db2f0ac1624b8192ba2e51e3bfca9ab4c3f347669308419112d","signature":"ff04d14e3d526dae44295f169c49085c7a524fddb81ca253c34f07cc0241448c"},{"version":"47b2f0a3fb96c751664df4f6e80437fe5d0e7631222e6aead9656117b58f79a8","signature":"2f360dc5f3875dd5ffc2b92c162f1e31e08d791ad63a74423f50628501e58f22"},{"version":"205028a6c8733b41398b96353a9d90b8ac062a08fa24ef4e119f0e405f464ccb","signature":"d8cd2912ca6ef7ec2f9ab1f9fcb4da0522081a691a7e5cff80cf14ba5bdbd4a7"},{"version":"0a5be634384d3cb495f3ada692244b6949fa25de8b5a0ab7f0c02939586adf9d","signature":"f9fb103991eb1ad62b26e8dcef0832d33d2ea69370438d5810a1205f0869c7bd"},{"version":"36e56aeb28b820297dc348be11883b12110bf5967f9e3c19d824303b09950357","signature":"bf6f075bc6521668d16ab75ff8cfb5ef2b56c26bc8ac1ef33ba99a16fa94fc04"},{"version":"9beacbd68a1021a5431e779d1fa65518023cd631d1a427d33f4138cf00dbc35c","signature":"34bad7f1525f680d502ff61f5bb80be0d6ea1f7f3c96124ec79c89309c49b743"},{"version":"ffdbc46965198e097632b44c3d9859ea24b48d7526899a7764c990bc203062fb","signature":"46de7bd1dbb25b8ff015c03471e8055f8ae6b8de8404a206662c000011fd31da"},{"version":"8aa52e197b990c4c1e3be27649e147ae3ffbff6b8a14f309161955ec82725def","signature":"0c958bda4e775b596fe020a4b700b2d797e39b981cc48875be485dab4f17898c"},{"version":"2f003a75a0f407fed282b15159f11fe355d537e3495d71a06b4e8efd3b8122f2","signature":"47ed8368066a86ec37c8a2af91cd89c59785538a0603fd5f5290e1107a47e01f"},{"version":"3ad10efb690e9781cbfef2156c582b4034e8e172b9a43988318af3dd4a9bf61f","signature":"ebbcd777ce59f7f43df89436ec3ccf2605cb30da0ea18668f8d3b694db6aa5d4"},{"version":"13e6b13a3a476cb42ec45e7ed23aa017556085380bd03435a6f36684801c0754","signature":"c35bcbd6053fd654682de96695fc872413f9a888e8ed03117261cb22931a2c87"},{"version":"544706b97c8e071f13d29a09f4a96d936d3e9c3ea36c3b648815da136458db58","signature":"8261864d6bb066b61bf89e51bcfe24a1e372fb0d40f8a8cab9851ea7a30375f0"},"a7321c0e96eecb19dcbf178493836474cef21ee3f9345384ce9d74e4be31228d","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","776bb20d045af25df4f1b85a5e0c8bcc19d5ec1d653594b297e52e89ee7924e4","427ce5854885cfc34387e09de05c1d5c1acf94c2143e1693f1d9ff54880573e7","bed2c4f96fab3348be4a34d88dcb12578c1b2475b07c6acd369e99e227718d81","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","ac127e4c6f2b5220b293cc9d2e64ba49781225b792a51cda50f3db8eafba550c",{"version":"a2b95a93a5926d6d54fbf6b29533f0e3e9f75ca6d6b6a1a94eec7b34ac7890bf","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./dist","module":99,"noUnusedLocals":false,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[126,198],[126],[59,60,126],[42,43,44,45,126],[43,126],[42,43,126],[42,43,44,126],[57,62,64,65,68,76,126],[69,126,150],[75,76,126],[42,43,44,45,46,47,48,49,57,75,76,78,126,140,141,142,143,144,145,146,147,148,149,151],[42,43,75,126,141],[42,43,58,75,76,77,78,126,139,140],[42,43,58,75,76,77,126],[57,126],[75,126,138],[42,44,75,76,78,126,147,148],[42,58,75,76,78,126,147],[42,75,76,78,126],[42,76,126],[42,75,126],[75,126],[42,43,57,61,64,126],[57,65,126],[65,126],[62,63,64,65,66,67,69,70,71,72,73,74,126],[42,61,62,63,126],[57,62,65,66,126],[126,133],[126,200,203],[126,196,202],[126,200],[126,197,201],[126,199],[80,126],[83,126],[84,89,117,126],[85,96,97,104,114,125,126],[85,86,96,104,126],[87,126],[88,89,97,105,126],[89,114,122,126],[90,92,96,104,126],[91,126],[92,93,126],[96,126],[94,96,126],[96,97,98,114,125,126],[96,97,98,111,114,117,126],[126,130],[99,104,114,125,126],[96,97,99,100,104,114,122,125,126],[99,101,114,122,125,126],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],[96,102,126],[103,125,126],[92,96,104,114,126],[105,126],[106,126],[83,107,126],[108,124,126,130],[109,126],[110,126],[96,111,112,126],[111,113,126,128],[84,96,114,115,116,117,126],[84,114,116,126],[114,115,126],[117,126],[118,126],[96,120,121,126],[120,121,126],[89,104,114,122,126],[123,126],[104,124,126],[84,99,110,125,126],[89,126],[114,126,127],[126,128],[126,129],[84,89,96,98,107,114,125,126,128,130],[114,126,131],[96,99,101,104,114,122,125,126,131,133],[126,135,136,137],[79,126,135],[126,134],[79,126,134],[126,174],[126,174,175],[126,174,175,176],[126,175],[50,52,53,54,55,56,126],[50,51,126],[52,126],[51,52,126],[50,52,126],[126,185,187,192],[126,185],[126,153,154,165,166,178,183],[126,153,163,164,165,166,170,178,181,182],[126,152,155,160,162,185],[126,153,162,165,166,186],[126,161,165,178,181,183,188,189,190,191],[126,153,154],[126,153,165,182,183,190],[126,153,165,170],[126,153,163,165,166,170],[126,153,163,164],[77,126,152,155,157,160,162,166,167,185],[61,126,152,155,157,162,185],[126,152,153,155,156,157,158,159,160,161,167,185],[126,152,153,155,157,162,165,166,171,185],[126,153,154,157,173,177,178,179,185],[126,152,153,155,156,157,162,166,178,181,183,185],[126,152,155,162,168,169,172,180,184],[126,153,165],[126,153],[126,154],[126,152,154,162],[61,126,162],[126,155],[126,152,153,160,162,166],[126,152,155,159,167],[126,156,158,159,163,167,171,186],[126,153,162,165,166,170],[185,187,192],[185],[153,154,166],[153,166,182],[152,155,162,185],[153,162,166],[161,165,178,181,183,188,189,190,191],[153,154],[153,182,183,190],[153],[153,163],[152,155,157,162,166,185],[152,155,157,162,185],[152,155,157,185],[152,153,155,157,162,185],[154,157,177,179,185],[152,153,155,157,162,166,185],[152,155,162,168,169,172,180,184],[154],[152,154,162],[162],[155],[152,162,166],[156,158,159,163,167,171,186]],"referencedMap":[[199,1],[59,2],[60,2],[61,3],[46,4],[45,5],[44,6],[49,2],[43,2],[47,7],[48,5],[69,8],[151,9],[150,10],[152,11],[142,12],[141,13],[78,14],[58,15],[139,16],[42,2],[143,2],[149,17],[148,18],[147,6],[145,19],[144,20],[76,21],[146,22],[74,15],[73,15],[65,23],[77,15],[66,24],[70,25],[75,26],[71,15],[62,24],[68,2],[64,27],[67,28],[72,15],[63,2],[140,2],[198,2],[153,29],[204,30],[196,2],[203,31],[201,32],[202,33],[200,34],[80,35],[81,35],[83,36],[84,37],[85,38],[86,39],[87,40],[88,41],[89,42],[90,43],[91,44],[92,45],[93,45],[95,46],[94,47],[96,46],[97,48],[98,49],[82,50],[132,2],[99,51],[100,52],[101,53],[133,54],[102,55],[103,56],[104,57],[105,58],[106,59],[107,60],[108,61],[109,62],[110,63],[111,64],[112,64],[113,65],[114,66],[116,67],[115,68],[117,69],[118,70],[119,2],[120,71],[121,72],[122,73],[123,74],[124,75],[125,76],[126,77],[127,78],[128,79],[129,80],[130,81],[131,82],[134,83],[197,2],[154,2],[79,2],[138,84],[136,85],[135,86],[137,87],[175,88],[176,89],[177,90],[174,91],[50,2],[57,92],[52,93],[53,94],[54,94],[55,95],[56,95],[51,96],[173,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[34,2],[39,2],[40,2],[35,2],[36,2],[37,2],[38,2],[1,2],[41,2],[164,2],[193,97],[157,98],[194,98],[188,99],[183,100],[161,101],[189,102],[192,103],[190,104],[191,105],[181,106],[178,107],[165,108],[168,109],[169,110],[162,111],[172,112],[180,113],[184,114],[179,2],[185,115],[166,116],[170,117],[195,118],[182,117],[155,119],[158,120],[156,121],[167,122],[160,123],[163,118],[159,2],[187,124],[186,118],[171,125]],"exportedModulesMap":[[199,1],[59,2],[60,2],[61,3],[46,4],[45,5],[44,6],[49,2],[43,2],[47,7],[48,5],[69,8],[151,9],[150,10],[152,11],[142,12],[141,13],[78,14],[58,15],[139,16],[42,2],[143,2],[149,17],[148,18],[147,6],[145,19],[144,20],[76,21],[146,22],[74,15],[73,15],[65,23],[77,15],[66,24],[70,25],[75,26],[71,15],[62,24],[68,2],[64,27],[67,28],[72,15],[63,2],[140,2],[198,2],[153,29],[204,30],[196,2],[203,31],[201,32],[202,33],[200,34],[80,35],[81,35],[83,36],[84,37],[85,38],[86,39],[87,40],[88,41],[89,42],[90,43],[91,44],[92,45],[93,45],[95,46],[94,47],[96,46],[97,48],[98,49],[82,50],[132,2],[99,51],[100,52],[101,53],[133,54],[102,55],[103,56],[104,57],[105,58],[106,59],[107,60],[108,61],[109,62],[110,63],[111,64],[112,64],[113,65],[114,66],[116,67],[115,68],[117,69],[118,70],[119,2],[120,71],[121,72],[122,73],[123,74],[124,75],[125,76],[126,77],[127,78],[128,79],[129,80],[130,81],[131,82],[134,83],[197,2],[154,2],[79,2],[138,84],[136,85],[135,86],[137,87],[175,88],[176,89],[177,90],[174,91],[50,2],[57,92],[52,93],[53,94],[54,94],[55,95],[56,95],[51,96],[173,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[34,2],[39,2],[40,2],[35,2],[36,2],[37,2],[38,2],[1,2],[41,2],[193,126],[157,127],[194,127],[188,128],[183,129],[161,130],[189,131],[192,132],[190,133],[191,134],[181,135],[178,136],[165,136],[168,137],[169,138],[162,139],[172,140],[180,141],[184,142],[185,143],[166,135],[170,135],[195,144],[182,135],[155,145],[158,146],[156,147],[167,148],[160,147],[163,144],[187,149],[186,144],[171,131]],"semanticDiagnosticsPerFile":[199,59,60,61,46,45,44,49,43,47,48,69,151,150,152,142,141,78,58,139,42,143,149,148,147,145,144,76,146,74,73,65,77,66,70,75,71,62,68,64,67,72,63,140,198,153,204,196,203,201,202,200,80,81,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,82,132,99,100,101,133,102,103,104,105,106,107,108,109,110,111,112,113,114,116,115,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,134,197,154,79,138,136,135,137,175,176,177,174,50,57,52,53,54,55,56,51,173,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,164,193,157,194,188,183,161,189,192,190,191,181,178,165,168,169,162,172,180,184,179,185,166,170,195,182,155,158,156,167,160,163,159,187,186,171],"latestChangedDtsFile":"./dist/types/index.d.ts"},"version":"4.8.4"}
2
+
package/tsup.config.js ADDED
@@ -0,0 +1,22 @@
1
+ import { defineConfig } from 'tsup'
2
+
3
+ export default defineConfig({
4
+ entry: ['src/index.ts'],
5
+ splitting: false,
6
+ sourcemap: false,
7
+ target: 'esnext',
8
+ minify: true,
9
+ esbuildPlugins: [
10
+ {
11
+ name: 'remove-console',
12
+ setup(build) {
13
+ build.onLoad({ filter: /\.(js|ts)$/ }, async (args) => {
14
+ const fs = require('fs');
15
+ const source = await fs.promises.readFile(args.path, 'utf8');
16
+ const transformed = source.replace(/console\.log\(.+?\);?/g, '');
17
+ return { contents: transformed, loader: 'ts' };
18
+ });
19
+ },
20
+ },
21
+ ],
22
+ })