@cetusprotocol/deepbook-utils 1.0.1 → 1.0.3

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.d.ts CHANGED
@@ -473,6 +473,12 @@ declare class DeepbookUtilsModule implements IModule {
473
473
  payWithDeep: boolean;
474
474
  expirationTimestamp?: number;
475
475
  }): Promise<Transaction>;
476
+ modifyOrder({ balanceManager, poolInfo, orderId, newOrderQuantity, }: {
477
+ balanceManager: string;
478
+ poolInfo: PoolInfo;
479
+ orderId: string;
480
+ newOrderQuantity: string;
481
+ }): Transaction;
476
482
  getBestAskprice(poolInfo: any): Promise<any>;
477
483
  getBestBidprice(poolInfo: any): Promise<any>;
478
484
  getBestAskOrBidPrice(poolInfo: any, isBid: boolean): Promise<any>;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var Ee=Object.create;var G=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var Ie=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var Ue=(r,e,t)=>e in r?G(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var Fe=(r,e)=>{for(var t in e)G(r,t,{get:e[t],enumerable:!0})},be=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Re(e))!qe.call(r,n)&&n!==t&&G(r,n,{get:()=>e[n],enumerable:!(s=Pe(e,n))||s.enumerable});return r};var _e=(r,e,t)=>(t=r!=null?Ee(Ie(r)):{},be(e||!r||!r.__esModule?G(t,"default",{value:r,enumerable:!0}):t,r)),Ne=r=>be(G({},"__esModule",{value:!0}),r);var he=(r,e,t)=>(Ue(r,typeof e!="symbol"?e+"":e,t),t);var $t={};Fe($t,{CLOCK_ADDRESS:()=>Tt,CachedContent:()=>N,CetusClmmSDK:()=>Q,ClmmExpectSwapModule:()=>Mt,ClmmFetcherModule:()=>Dt,ClmmIntegratePoolModule:()=>xt,ClmmIntegratePoolV2Module:()=>jt,ClmmIntegrateRouterModule:()=>Bt,ClmmIntegrateRouterWithPartnerModule:()=>vt,ClmmIntegrateUtilsModule:()=>Et,CoinAssist:()=>T,CoinInfoAddress:()=>Pt,CoinStoreAddress:()=>Rt,DEEP_SCALAR:()=>se,DEFAULT_GAS_BUDGET_FOR_MERGE:()=>Ge,DEFAULT_GAS_BUDGET_FOR_SPLIT:()=>Ve,DEFAULT_GAS_BUDGET_FOR_STAKE:()=>Ze,DEFAULT_GAS_BUDGET_FOR_TRANSFER:()=>Ke,DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI:()=>He,DEFAULT_NFT_TRANSFER_GAS_FEE:()=>ze,DeepbookClobV2Moudle:()=>qt,DeepbookCustodianV2Moudle:()=>It,DeepbookEndpointsV2Moudle:()=>Ut,DeepbookUtilsModule:()=>Z,FLOAT_SCALAR:()=>D,GAS_SYMBOL:()=>Qe,GAS_TYPE_ARG:()=>W,GAS_TYPE_ARG_LONG:()=>ie,NORMALIZED_SUI_COIN_TYPE:()=>ut,OrderType:()=>Me,RpcModule:()=>H,SUI_SYSTEM_STATE_OBJECT_ID:()=>Je,TransactionUtil:()=>E,addHexPrefix:()=>oe,asIntN:()=>kt,asUintN:()=>yt,bufferToHex:()=>et,cacheTime24h:()=>q,cacheTime5min:()=>re,checkAddress:()=>Xe,composeType:()=>ae,d:()=>a,decimalsMultiplier:()=>ee,default:()=>Nt,extractAddressFromType:()=>at,extractStructTagFromType:()=>M,fixCoinType:()=>ct,fixDown:()=>R,fixSuiObjectId:()=>Ae,fromDecimalsAmount:()=>F,getDefaultSuiInputType:()=>Ft,getFutureTime:()=>$,getMoveObject:()=>ne,getMoveObjectType:()=>je,getMovePackageContent:()=>gt,getObjectDeletedResponse:()=>we,getObjectDisplay:()=>ht,getObjectFields:()=>de,getObjectId:()=>le,getObjectNotExistsResponse:()=>Te,getObjectOwner:()=>_t,getObjectPreviousTransactionDigest:()=>bt,getObjectReference:()=>ue,getObjectType:()=>mt,getObjectVersion:()=>dt,getSuiObjectData:()=>L,hasPublicTransfer:()=>ft,hexToNumber:()=>tt,hexToString:()=>nt,isSortedSymbols:()=>ot,isSuiObjectResponse:()=>xe,maxDecimal:()=>te,normalizeCoinType:()=>J,patchFixSuiObjectId:()=>X,printTransaction:()=>lt,removeHexPrefix:()=>Y,secretKeyToEd25519Keypair:()=>St,secretKeyToSecp256k1Keypair:()=>At,shortAddress:()=>Ye,shortString:()=>fe,toBuffer:()=>Ce,toDecimalsAmount:()=>Ct,utf8to16:()=>ye});module.exports=Ne($t);var re=5*60*1e3,q=24*60*60*1e3;function $(r){return Date.parse(new Date().toString())+r}var N=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 U=require("@mysten/sui/utils");var $e="0x2::coin::Coin",Le=/^0x2::coin::Coin<(.+)>$/,Ve=1e3,Ge=500,Ke=100,He=100,Ze=1e3,W="0x2::sui::SUI",ie="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Qe="SUI",ze=450,Je="0x0000000000000000000000000000000000000005",T=class{static getCoinTypeArg(e){let t=e.type.match(Le);return t?t[1]:null}static isSUI(e){let t=T.getCoinTypeArg(e);return t?T.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 s=BigInt(0);return e.forEach(n=>{t===n.coinAddress&&(s+=BigInt(n.balance))}),s}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${$e}<${e}>`}static getCoinAssets(e,t){let s=[];return t.forEach(n=>{J(n.coinAddress)===J(e)&&s.push(n)}),s}static isSuiCoin(e){return M(e).full_address===W}static selectCoinObjectIdGreaterThanOrEqual(e,t,s=[]){let n=T.selectCoinAssetGreaterThanOrEqual(e,t,s),i=n.selectedCoins.map(u=>u.coinObjectId),o=n.remainingCoins,c=n.selectedCoins.map(u=>u.balance.toString());return{objectArray:i,remainCoins:o,amountArray:c}}static selectCoinAssetGreaterThanOrEqual(e,t,s=[]){let n=T.sortByBalance(e.filter(l=>!s.includes(l.coinObjectId))),i=T.calculateTotalBalance(n);if(i<t)return{selectedCoins:[],remainingCoins:n};if(i===t)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),c=[],u=[...n];for(;o<i;){let l=t-o,m=u.findIndex(d=>d.balance>=l);if(m!==-1){c.push(u[m]),u.splice(m,1);break}let g=u.pop();g.balance>0&&(c.push(g),o+=g.balance)}return{selectedCoins:T.sortByBalance(c),remainingCoins:T.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,s)=>t.balance<s.balance?-1:t.balance>s.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,s)=>t.balance>s.balance?-1:t.balance<s.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,s)=>t+s.balance,BigInt(0))}};var We=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function oe(r){return r.startsWith("0x")?r:`0x${r}`}function Y(r){return r.startsWith("0x")?`${r.slice(2)}`:r}function fe(r,e=4,t=4){let s=Math.max(e,1),n=Math.max(t,1);return`${r.slice(0,s+2)} ... ${r.slice(-n)}`}function Ye(r,e=4,t=4){return fe(oe(r),e,t)}function Xe(r,e={leadingZero:!0}){if(typeof r!="string")return!1;let t=r;if(e.leadingZero){if(!r.startsWith("0x"))return!1;t=t.substring(2)}return We.test(t)}function Ce(r){if(!Buffer.isBuffer(r))if(Array.isArray(r))r=Buffer.from(r);else if(typeof r=="string")exports.isHexString(r)?r=Buffer.from(exports.padToEven(exports.stripHexPrefix(r)),"hex"):r=Buffer.from(r);else if(typeof r=="number")r=exports.intToBuffer(r);else if(r==null)r=Buffer.allocUnsafe(0);else if(r.toArray)r=Buffer.from(r.toArray());else throw new Error("invalid type");return r}function et(r){return oe(Ce(r).toString("hex"))}function tt(r){let e=new ArrayBuffer(4),t=new DataView(e);for(let n=0;n<r.length;n++)t.setUint8(n,r.charCodeAt(n));return t.getUint32(0,!0)}function ye(r){let e,t,s,n,i;e="";let o=r.length;for(t=0;t<o;)switch(s=r.charCodeAt(t++),s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=r.charAt(t-1);break;case 12:case 13:n=r.charCodeAt(t++),e+=String.fromCharCode((s&31)<<6|n&63);break;case 14:n=r.charCodeAt(t++),i=r.charCodeAt(t++),e+=String.fromCharCode((s&15)<<12|(n&63)<<6|(i&63)<<0);break}return e}function nt(r){let e="",t=Y(r),s=t.length/2;for(let n=0;n<s;n++)e+=String.fromCharCode(parseInt(t.substr(n*2,2),16));return ye(e)}var st=0,Se=1,rt=2;function ke(r,e){return r===e?st:r<e?Se:rt}function it(r,e){let t=0,s=r.length<=e.length?r.length:e.length,n=ke(r.length,e.length);for(;t<s;){let i=ke(r.charCodeAt(t),e.charCodeAt(t));if(t+=1,i!==0)return i}return n}function ot(r,e){return it(r,e)===Se}function ae(r,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],n=[r,...e].filter(Boolean).join("::");return t&&t.length&&(n+=`<${t.join(", ")}>`),n}function at(r){return r.split("::")[0]}function M(r){try{let e=r.replace(/\s/g,""),s=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(s){e=e.slice(0,e.indexOf("<"));let u={...M(e),type_arguments:s.map(l=>M(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>T.isSuiCoin(l)?l:M(l).source_address),u.source_address=ae(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===W||e===ie?"0x2":(0,U.normalizeSuiObjectId)(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return o.full_address=`${o.address}::${o.module}::${o.name}`,o.source_address=ae(o.full_address,o.type_arguments),o}catch{return{full_address:r,address:"",module:"",name:"",type_arguments:[],source_address:r}}}function J(r){return M(r).source_address}function Ae(r){return r.toLowerCase().startsWith("0x")?(0,U.normalizeSuiObjectId)(r):r}var ct=(r,e=!0)=>{let t=r.split("::"),s=t.shift(),n=(0,U.normalizeSuiObjectId)(s);return e&&(n=Y(n)),`${n}::${t.join("::")}`};function X(r){for(let e in r){let t=typeof r[e];if(t==="object")X(r[e]);else if(t==="string"){let s=r[e];r[e]=Ae(s)}}}var ut=(0,U.normalizeStructTag)(U.SUI_TYPE_ARG);var ce=_e(require("decimal.js"));ce.default.config({precision:64,rounding:ce.default.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var K=_e(require("decimal.js"));function a(r){return K.default.isDecimal(r)?r:new K.default(r===void 0?0:r)}function ee(r){return a(10).pow(a(r).abs())}var R=(r,e)=>{try{return a(r).toDP(e,K.default.ROUND_DOWN).toString()}catch{return r}},te=(r,e)=>K.default.max(a(r),a(e));var Oe=require("@mysten/sui/transactions");async function lt(r,e=!0){r.blockData.transactions.forEach((t,s)=>{})}var I=class{static async adjustTransactionForGas(e,t,s,n){n.setSender(e.senderAddress);let i=T.selectCoinAssetGreaterThanOrEqual(t,s).selectedCoins;if(i.length===0)throw new Error("Insufficient balance");let o=T.calculateTotalBalance(t);if(o-s>1e9)return{fixAmount:s};let c=await e.fullClient.calculationTxGas(n);if(T.selectCoinAssetGreaterThanOrEqual(t,BigInt(c),i.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(c)+BigInt(500);if(o-s<l){if(s-=l,s<0)throw new Error("gas Insufficient balance");let m=new Oe.Transaction;return{fixAmount:s,newTx:m}}}return{fixAmount:s}}static buildCoinForAmount(e,t,s,n,i=!0,o=!1){let c=T.getCoinAssets(n,t);if(s===BigInt(0)&&c.length===0)return I.buildZeroValueCoin(t,e,n,i);let u=T.calculateTotalBalance(c);if(u<s)throw new Error(`The amount(${u}) is Insufficient balance for ${n} , expect ${s} `);return I.buildCoin(e,t,c,s,n,i,o)}static buildCoin(e,t,s,n,i,o=!0,c=!1){if(T.isSuiCoin(i)){if(o){let b=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[b]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let b=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(b.objectArray[0]),remainCoins:b.remainCoins,tragetCoinAmount:b.amountArray[0],isMintZeroCoin:!1}}let C=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:C.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=T.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),m=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:m.map(C=>e.object(C))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),isMintZeroCoin:!1};let[g,...d]=m,p=e.object(g),h=p,_=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),S;return d.length>0&&e.mergeCoins(p,d.map(C=>e.object(C))),c&&Number(l)>Number(n)&&(h=e.splitCoins(p,[e.pure.u64(n)]),_=n.toString(),S=p),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:_,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,s,n=!0){let i=I.callMintZeroValueCoin(t,s),o;return n?o=t.makeMoveVec({elements:[i]}):o=i,{targetCoin:o,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,s,n,i=!0){let o=T.getCoinAssets(n,t);if(s.amountFirst===BigInt(0))return o.length>0?I.buildCoin(e,[...t],[...o],s.amountFirst,n,i):I.buildZeroValueCoin(t,e,n,i);let c=T.calculateTotalBalance(o);if(c>=s.amountFirst)return I.buildCoin(e,[...t],[...o],s.amountFirst,n,i);if(c<s.amountSecond)throw new Error(`The amount(${c}) is Insufficient balance for ${n} , expect ${s.amountSecond} `);return I.buildCoin(e,[...t],[...o],s.amountSecond,n,i)}static buildCoinTypePair(e,t){let s=[];if(e.length===2){let n=[];n.push(e[0],e[1]),s.push(n)}else{let n=[];n.push(e[0],e[e.length-1]),s.push(n);for(let i=1;i<e.length-1;i+=1){if(t[i-1]===0)continue;let o=[];o.push(e[0],e[i],e[e.length-1]),s.push(o)}}return s}},E=I;he(E,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function L(r){return r.data}function we(r){if(r.error&&"object_id"in r.error&&"version"in r.error&&"digest"in r.error){let{error:e}=r;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function Te(r){if(r.error&&"object_id"in r.error&&!("version"in r.error)&&!("digest"in r.error))return r.error.object_id}function ue(r){if("reference"in r)return r.reference;let e=L(r);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:we(r)}function le(r){return"objectId"in r?r.objectId:ue(r)?.objectId??Te(r)}function dt(r){return"version"in r?r.version:ue(r)?.version}function xe(r){return r.data!==void 0}function pt(r){return r.content!==void 0}function gt(r){let e=L(r);if(e?.content?.dataType==="package")return e.content.disassembled}function ne(r){let e="data"in r?L(r):r;if(!(!e||!pt(e)||e.content.dataType!=="moveObject"))return e.content}function je(r){return ne(r)?.type}function mt(r){let e=xe(r)?r.data:r;return!e?.type&&"data"in r?e?.content?.dataType==="package"?"package":je(r):e?.type}function bt(r){return L(r)?.previousTransaction}function _t(r){return L(r)?.owner}function ht(r){let e=L(r)?.display;return e||{data:null,error:null}}function de(r){let e=ne(r)?.fields;if(e)return"fields"in e?e.fields:e}function ft(r){return ne(r)?.hasPublicTransfer??!1}var V=require("@mysten/bcs"),pe=require("@mysten/sui/keypairs/ed25519"),ge=require("@mysten/sui/keypairs/secp256k1");function Ct(r,e){let t=ee(a(e));return Number(a(r).mul(t))}function yt(r,e=32){return BigInt.asUintN(e,BigInt(r)).toString()}function kt(r,e=32){return Number(BigInt.asIntN(e,BigInt(r)))}function F(r,e){let t=ee(a(e));return Number(a(r).div(t))}function St(r,e="hex"){if(r instanceof Uint8Array){let s=Buffer.from(r);return pe.Ed25519Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(r):(0,V.fromB64)(r);return pe.Ed25519Keypair.fromSecretKey(t)}function At(r,e="hex"){if(r instanceof Uint8Array){let s=Buffer.from(r);return ge.Secp256k1Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(r):(0,V.fromB64)(r);return ge.Secp256k1Keypair.fromSecretKey(t)}var Be=require("@mysten/sui/client"),H=class extends Be.SuiClient{async queryEventsByPage(e,t="all"){let s=[],n=!0,i=t==="all",o=i?null:t.cursor;do{let c=await this.queryEvents({query:e,cursor:o,limit:i?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(i&&n);return{data:s,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(e,t,s="all"){let n=[],i=!0,o=s==="all",c=o?null:s.cursor;do{let u=await this.getOwnedObjects({owner:e,...t,cursor:c,limit:o?null:s.limit});u.data?(n=[...n,...u.data],i=u.hasNextPage,c=u.nextCursor):i=!1}while(o&&i);return{data:n,nextCursor:c,hasNextPage:i}}async getDynamicFieldsByPage(e,t="all"){let s=[],n=!0,i=t==="all",o=i?null:t.cursor;do{let c=await this.getDynamicFields({parentId:e,cursor:o,limit:i?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(i&&n);return{data:s,nextCursor:o,hasNextPage:n}}async batchGetObjects(e,t,s=50){let n=[];try{for(let i=0;i<Math.ceil(e.length/s);i++){let o=await this.multiGetObjects({ids:e.slice(i*s,s*(i+1)),options:t});n=[...n,...o]}}catch{}return n}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let s=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:n}=s.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 me=require("@mysten/deepbook-v3"),f=require("@mysten/sui/bcs"),De=require("js-base64"),O=require("@mysten/sui/transactions"),w=require("@mysten/sui/utils");function v(...r){let e="DeepbookV3_Utils_Sdk###"}var se=1e6,D=1e9,Ot={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},wt={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},ve=1e3*60*60*24*365*100,Z=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?wt:Ot}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new O.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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;let i=new O.Transaction;i.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[i.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),i.pure.address(e)],typeArguments:[]});let u=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:i}))?.events?.filter(m=>m.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(m=>{l.push({balanceManager:m,cetusBalanceManager:""})}),this.updateCache(s,l,q),l||[]}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new O.Transaction;n.setSenderIfNotSet(e);let i=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),o=(0,O.coinWithBalance)({type:t.coinType,balance:BigInt(s)});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[i,o],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),i],typeArguments:[]}),n.moveCall({target:"0x2::transfer::public_share_object",arguments:[i],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),n}depositIntoManager({account:e,balanceManager:t,coin:s,amountToDeposit:n,tx:i}){let o=i||new O.Transaction;if(t){o.setSenderIfNotSet(e);let c=(0,O.coinWithBalance)({type:s.coinType,balance:BigInt(n)});return o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[o.object(t),c],typeArguments:[s.coinType]}),o}return null}withdrawFromManager({account:e,balanceManager:t,coin:s,amountToWithdraw:n,returnAssets:i,txb:o}){let c=o||new O.Transaction,u=c.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[c.object(t),c.pure.u64(n)],typeArguments:[s.coinType]});return i?u:(c.transferObjects([u],e),c)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:s=new O.Transaction}){for(let n in t)t[n].forEach(o=>{let c=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[s.object(n),s.pure.u64(o.amount)],typeArguments:[o.coinType]});s.transferObjects([c],e)});return s}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new O.Transaction,n=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[s.object(e.address),s.object(t),n],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),s}async getManagerBalance({account:e,balanceManager:t,coins:s}){let n=new O.Transaction;s.forEach(c=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(t)],typeArguments:[c.coinType]})});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),o={};return i.results?.forEach((c,u)=>{let l=s[u],m=c.returnValues[0][0],g=f.bcs.U64.parse(new Uint8Array(m)),d=a(g),p=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:p,balance:d.toString()}}),o}async getAccountAllManagerBalance({account:e,coins:t}){let s=new O.Transaction,n=await this.getBalanceManager(e,!0);n.forEach(c=>{t.forEach(u=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[s.object(c.balanceManager)],typeArguments:[u.coinType]})})});let i=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o={};return n.forEach((c,u)=>{let l={},m=u*t.length;t.forEach((g,d)=>{let p=m+d,h=i.results?.[p];if(h){let _=h.returnValues[0][0],S=f.bcs.U64.parse(new Uint8Array(_)),C=a(S),y=C.eq(0)?"0":C.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:y,balance:C.toString()}}}),o[c.balanceManager]=l}),o}async getMarketPrice(e){try{let t=new O.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(w.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],i=Number(f.bcs.U64.parse(new Uint8Array(n))),o=Math.pow(10,e.baseCoin.decimals).toString(),c=Math.pow(10,e.quoteCoin.decimals).toString();return a(i).mul(o).div(c).div(D).toString()}catch(t){return v("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,s=[];return e?.data?.forEach(n=>{let i=n?.parsedJson,o=n.type.match(t);if(o){let u=o[1].split(", ");s.push({...i,baseCoinType:u[0],quoteCoinType:u[1]})}}),s}async getQuoteQuantityOut(e,t,s){let n=new O.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(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let i=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0]))),c=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]))),u=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(se).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new O.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(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let i=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[0][0]))),c=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[1][0]))),u=String(f.bcs.U64.parse(new Uint8Array(i.results[0].returnValues[2][0])));return{quoteQuantityDisplay:a(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(se).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let i=new O.Transaction;i.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[i.object(e.address),i.pure.u64(t),i.pure.u64(s),i.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:i}),c=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[0][0]))),u=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[1][0]))),l=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:a(s).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(c).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(l).div(se).toString(),baseQuantity:t,quoteQuantity:s,baseOut:c,quoteOut:u,deepRequired:l}}async estimatedMaxFee(e,t,s,n,i,o,c){let u=this.deepCoin,{taker_fee:l,maker_fee:m}=e,g=a(l).div(D).toString(),d=a(m).div(D).toString(),p=await this.getMarketPrice(e),h=o?s:p!=="0"?p:c;if(h==="0")throw new Error("Cannot get market price");let _=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),C=a(h).div(_).mul(S).mul(D).toString();if(n){let y=await this.getMarketPrice(e),A=a(o?s:y!=="0"?y:c).div(_).mul(S).mul(D).toString(),B=await this.getOrderDeepPrice(e);if(!B)throw new Error("Cannot get deep price");let k=te(A,s),x=a(t).mul(a(g)).mul(a(B.deep_per_asset)).div(a(D)),j=a(t).mul(a(d)).mul(a(B.deep_per_asset)).div(a(D));B.asset_is_base||(x=x.mul(k).div(a(D)),j=j.mul(k).div(a(D)));let z=x.ceil().toString(),P=j.ceil().toString();return{takerFee:z,makerFee:P,takerFeeDisplay:F(z,u.decimals).toString(),makerFeeDisplay:F(P,u.decimals).toString(),feeType:u.coinType}}else if(i){let y=te(C,s),b=a(t).mul(y).mul(g).div(a(D)).ceil().toFixed(0),A=a(t).mul(y).mul(d).div(a(D)).ceil().toFixed(0);return{takerFee:b,makerFee:A,takerFeeDisplay:F(b,e.quoteCoin.decimals).toString(),makerFeeDisplay:F(A,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}else{let y=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),b=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:y,makerFee:b,takerFeeDisplay:F(y,e.baseCoin.decimals).toString(),makerFeeDisplay:F(b,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}}async getOrderDeepPrice(e){try{let t=new O.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(t){return v("getMarketPrice ~ error:",t),null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),s=t.getUint8(0)!==0,n=Number(t.getBigUint64(1,!0));return{asset_is_base:s,deep_per_asset:n}}getCoinAssets(e,t,s,n){return E.buildCoinForAmount(n,s,BigInt(a(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,s,n,i,o,c){let u=this.deepCoin;if(!c)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let m=await this.getManagerBalance({account:i,balanceManager:c,coins:l}),g=m?.[t]?.balance||"0",d=m?.[s]?.balance||"0",p=o&&m?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:p}}getFeeAsset(e,t,s,n,i,o,c,u,l,m){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(m,t),haveDepositFee:"0"};if(o||c){let p=a(i).sub(o?n:s);d=p.lte(0)?e:p.sub(e).lt(0)?p.sub(e).toString():"0"}else d=a(i).sub(e).lt("0")?a(i).sub(e).abs().toString():"0";return{feeAsset:a(d).gt("0")?this.getCoinAssets(t,d,u,m):this.getEmptyCoin(m,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,i,o,c,u,l){let m=this.deepCoin,g=(0,w.normalizeStructTag)(e.baseCoin.coinType),d=(0,w.normalizeStructTag)(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C,feeManaerBalance:y}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),b,A,B=!1,k=await this._sdk.getOwnerCoinAssets(o);if(i){c||(s=a(s).add(a(n)).toString());let j=a(C).sub(s).toString();a(j).lt(0)?(B=!0,A=this.getCoinAssets(d,j,k,l)):A=this.getEmptyCoin(l,d),b=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let j=a(S).sub(t).toString();a(j).lt(0)?(B=!0,b=this.getCoinAssets(g,j,k,l)):b=this.getEmptyCoin(l,g),A=this.getEmptyCoin(l,d)}let x=this.getFeeAsset(n,m.coinType,t,s,y,h,p,k,c,l);return{baseAsset:b,quoteAsset:A,feeAsset:x,haveDeposit:B}}async getMarketTransactionRelatedAssets(e,t,s,n,i,o,c,u,l){let m=this.deepCoin,g=(0,w.normalizeStructTag)(e.baseCoin.coinType),d=(0,w.normalizeStructTag)(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),y,b,A=await this._sdk.getOwnerCoinAssets(o);if(i){c||(s=a(s).add(a(n)).toString());let k=a(C).sub(s).toString();if(a(k).lt(0)){let x;a(C).gt(0)&&(x=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:C,returnAssets:!0,txb:l}));let j=this.getCoinAssets(d,k,A,l);x&&l.mergeCoins(j,[x]),b=j}else b=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});y=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let k=a(S).sub(t).toString();if(a(k).lt(0)){let x;a(S).gt(0)&&(x=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:S,returnAssets:!0,txb:l}));let j=this.getCoinAssets(g,k,A,l);x&&l.mergeCoins(j,[x]),y=j}else y=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});b=this.getEmptyCoin(l,d)}let B=this.getEmptyCoin(l,m.coinType);return{baseAsset:y,quoteAsset:b,feeAsset:B}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:i,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+ve}){let m=this.deepCoin,g=e.address,d=e.baseCoin.decimals,p=e.quoteCoin.decimals,h=e.baseCoin.coinType,_=e.quoteCoin.coinType,S=a(t).mul(10**(p-d+9)).toString(),C=(0,w.normalizeStructTag)(h),y=(0,w.normalizeStructTag)(_),b=new O.Transaction,A,B,k=await this._sdk.getOwnerCoinAssets(c);if(i){let P=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(P=a(P).add(a(o)).toString()),B=E.buildCoinForAmount(b,k,BigInt(P),y,!1,!0)?.targetCoin}else{let P=s;u||(P=a(s).abs().add(a(o)).toString()),A=E.buildCoinForAmount(b,k,BigInt(a(P).abs().toString()),C,!1,!0)?.targetCoin}let x=u?a(o).gt(0)?E.buildCoinForAmount(b,k,BigInt(a(o).abs().ceil().toString()),m.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,m.coinType):this.getEmptyCoin(b,m.coinType),j=b.moveCall({typeArguments:[i?h:_],target:"0x2::coin::zero",arguments:[]}),z=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(g),i?j:A,i?B:j,x,b.pure.u8(n),b.pure.u8(0),b.pure.u64(S),b.pure.u64(s),b.pure.bool(i),b.pure.bool(!1),b.pure.u64(l),b.object(w.SUI_CLOCK_OBJECT_ID)];return b.moveCall({typeArguments:[C,y],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:z}),b}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:s,maxFee:n,account:i,payWithDeep:o,slippage:c=.01}){let u=e.address,l=e.baseCoin.coinType,m=e.quoteCoin.coinType,g=(0,w.normalizeStructTag)(l),d=(0,w.normalizeStructTag)(m),p=new O.Transaction,h,_,S=t,C,y=await this.getOrderBook(e,"all",6);if(s){let k=y?.ask?.[0]?.price||"0",x=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(x).plus(a(x).mul(c)).ceil().toString()}else{let k=await y?.bid?.[0]?.price||"0",x=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(x).minus(a(x).mul(c)).floor().toString()}let b=await this._sdk.getOwnerCoinAssets(i);s?(o||(C=a(C).add(a(n)).toString()),_=this.getCoinAssets(d,C,b,p),h=this.getEmptyCoin(p,g)):(o||(S=a(S).add(a(n)).toString()),_=this.getEmptyCoin(p,d),h=this.getCoinAssets(g,S,b,p));let A=o?a(n).gt(0)?E.buildCoinForAmount(p,b,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(p,this.deepCoin.coinType):this.getEmptyCoin(p,this.deepCoin.coinType),B=[p.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),p.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),p.object(u),h,_,A,p.pure.u8(0),p.pure.u64(t),p.pure.bool(s),p.pure.bool(o),p.pure.u64(C),p.object(w.SUI_CLOCK_OBJECT_ID)];return p.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:B}),p}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:i,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:m=Date.now()+ve}){let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),p=t.baseCoin.coinType,h=t.quoteCoin.coinType,_=new O.Transaction,S=i?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",C=i?"0":n,{baseAsset:y,quoteAsset:b,feeAsset:A,haveDeposit:B}=await this.getTransactionRelatedAssets(t,C,S,c,i,u,l,e,_);if(B){v("placeLimitOrder~ deposit_then_place_limit_order_by_owner have deposit"),v("placeLimitOrder ~ deposit_then_place_limit_order_by_owner args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,baseAsset:y,quoteAsset:b,feeAsset:A.feeAsset,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:i,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:w.SUI_CLOCK_OBJECT_ID});let k=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(t.address),_.object(e),y,b,A.feeAsset,_.pure.u8(o),_.pure.u8(0),_.pure.u64(d),_.pure.u64(n),_.pure.bool(i),_.pure.bool(l),_.pure.u64(m),_.object(w.SUI_CLOCK_OBJECT_ID)];return _.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:k}),_}else{let k=new O.Transaction;a(A.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:A.haveDepositFee,tx:k}),v("placeLimitOrder~ not have deposit"),v("placeLimitOrder ~ args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:i,pay_with_deep:!0,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:w.SUI_CLOCK_OBJECT_ID});let x=[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(o),k.pure.u8(0),k.pure.u64(d),k.pure.u64(n),k.pure.bool(i),k.pure.bool(l),k.pure.u64(m),k.object(w.SUI_CLOCK_OBJECT_ID)];return k.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:x}),k}}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O.Transaction,i=await this.getMarketPrice(e),o=a(i).gt(0)?i:Math.pow(10,-1),c=Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(u),n.pure.u64(l),n.pure.bool(!1),n.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestAskprice ~ error:",t),0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O.Transaction,i=await this.getMarketPrice(e),o=a(i).gt(0)?a(i).div(3).toNumber():Math.pow(10,-6),c=a(i).gt(0)?i:Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(R(u,0)),n.pure.u64(R(l,0)),n.pure.bool(!0),n.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestBidprice ~ error:",t),0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,i=new O.Transaction,o=await this.getMarketPrice(e),c,u;t?(c=a(o).gt(0)?a(o).div(3).toNumber():Math.pow(10,-6),u=a(o).gt(0)?o:Math.pow(10,6)):(c=a(o).gt(0)?o:Math.pow(10,-1),u=a(o).gt(0)?a(o).mul(3).toNumber():Math.pow(10,6));let l=a(c).mul(Math.pow(10,9+n.decimals-s.decimals)).toString(),m=a(u).mul(Math.pow(10,9+n.decimals-s.decimals)).toString();i.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(R(l,0)),i.pure.u64(R(m,0)),i.pure.bool(t),i.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[s.coinType,n.coinType]});let g=this._sdk.sdkOptions.simulationAccount.address,d=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:i}),p=[],h=d.results[0].returnValues[0][0],_=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],C=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(S));return _.forEach((y,b)=>{let A=a(y).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),B=a(C[b]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:B})}),p?.[0]?.price||0}catch(s){return v("getBestBidprice ~ error:",s),0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:i,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){let m=(0,w.normalizeStructTag)(t.baseCoin.coinType),g=(0,w.normalizeStructTag)(t.quoteCoin.coinType),d=new O.Transaction,{baseAsset:p,quoteAsset:h,feeAsset:_}=await this.getMarketTransactionRelatedAssets(t,s,n,o,i,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(i){let b=S?.ask?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).plus(a(A).mul(l)).ceil().toString()}else{let b=await S?.bid?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).minus(a(A).mul(l)).floor().toString()}let C=n;console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:1450 ~ DeepbookUtilsModule ~ placeMarketOrder ~ amountLimit:",{amountLimit:C,quoteQuantity:n});let y=[d.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),d.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),d.object(t.address),d.object(e),p,h,_,d.pure.u8(0),d.pure.u64(s),d.pure.bool(i),d.pure.bool(u),d.pure.u64(C),d.object(w.SUI_CLOCK_OBJECT_ID)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[m,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:y}),d}async getOpenOrderFromDeepbook(e,t){let s=this._sdk.fullClient,n=new me.DeepBookClient({client:s,address:e,env:"testnet",balanceManagers:{test1:{address:t,tradeCap:""}}}),i=await n.accountOpenOrders("DEEP_SUI","test1"),o=await n.getOrder("DEEP_SUI","1844674407389401905673709551611")}async getOrderInfoList(e,t,s){try{let n=new O.Transaction;t.forEach(m=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(m)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let i=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=f.bcs.struct("ID",{bytes:f.bcs.Address}),c=f.bcs.struct("OrderDeepPrice",{asset_is_base:f.bcs.bool(),deep_per_asset:f.bcs.u64()}),u=f.bcs.struct("Order",{balance_manager_id:o,order_id:f.bcs.u128(),client_order_id:f.bcs.u64(),quantity:f.bcs.u64(),filled_quantity:f.bcs.u64(),fee_is_deep:f.bcs.bool(),order_deep_price:c,epoch:f.bcs.u64(),status:f.bcs.u8(),expire_timestamp:f.bcs.u64()}),l=[];return i?.results?.forEach(m=>{let g=m.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch(n){return v("getOrderInfoList ~ error:",n),[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),s=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),n=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:s,orderId:n}}async getOpenOrder(e,t,s,n){let i;if(n)i=n;else{let u=new O.Transaction;u.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[u.object(e.address),u.object(s)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let m=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:u})).results[0].returnValues[0][0];i=f.bcs.struct("VecSet",{constants:f.bcs.vector(f.bcs.U128)}).parse(new Uint8Array(m)).constants,v("getOpenOrder ~ orderIds:",i)}let o=await this.getOrderInfoList(e,i,t)||[];v("getOpenOrder ~ orderInfoList:",o);let c=[];return o.forEach(u=>{let l=this.decodeOrderId(BigInt(u.order_id));c.push({...u,price:l.price,isBid:l.isBid})}),c}cancelOrders(e,t){let s=new O.Transaction;return e.forEach(n=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(t),s.object(n.poolInfo.address),s.pure.u128(n.orderId),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[n.poolInfo.baseCoin.coinType,n.poolInfo.quoteCoin.coinType]})}),s}async getDeepbookOrderBook(e,t,s,n,i,o){let c=this._sdk.fullClient,l=await new me.DeepBookClient({client:c,address:i,env:"testnet",balanceManagers:{test1:{address:o,tradeCap:""}}}).getLevel2Range(e,t,s,n)}processOrderBookData(e,t,s,n){let i=e.returnValues[0][0],o=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(i)),c=e.returnValues[1][0],u=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(c)),l={};return o.forEach((g,d)=>{let p=R(a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),n),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[p]?l[p]={price:p,quantity:a(l[p].quantity).add(h).toString()}:l[p]={price:p,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,i=new O.Transaction){let{baseCoin:o,quoteCoin:c}=e,u=R(a(s).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0),l=R(a(n).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0);return i.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[i.object(e.address),i.pure.u64(u),i.pure.u64(l),i.pure.bool(t),i.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[o.coinType,c.coinType]}),i}async fetchOrderBook(e,t,s,n,i,o){let c=new O.Transaction,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,_=s==="0"?i:s;c=this.getLevel2RangeTx(e,!0,h,_,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,_=i;c=this.getLevel2RangeTx(e,!1,h,_,c)}let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let p=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;p=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,_)=>_.price-h.price),ask:p.sort((h,_)=>h.price-_.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],p=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});p=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{p=[]}return{bid:d,ask:p}}}async getOrderBook(e,t,s){let n={bid:[],ask:[]};try{let i=await this.getMarketPrice(e),o=t,c=Math.pow(10,-s),u=Math.pow(10,s),l=await this.fetchOrderBook(e,o,i,c,u,s);return{bid:l?.bid,ask:l?.ask}}catch{return n}}async getOrderBookOrigin(e,t){try{let s=new O.Transaction,n=await this.getMarketPrice(e),{baseCoin:i,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,p=a(g).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.decimals-i.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(p),s.pure.u64(h),s.pure.bool(!0),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[i.coinType,o.coinType]})}if(t==="ask"||t==="all"){let g=n,d=Math.pow(10,6),p=a(g).mul(Math.pow(10,9+o.decimals-i.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.decimals-i.decimals)).toString();s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[s.object(e.address),s.pure.u64(p),s.pure.u64(h),s.pure.bool(!1),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[i.coinType,o.coinType]})}let c=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.devInspectTransactionBlock({sender:c,transactionBlock:s}),l=[];if(t==="bid"||t==="all"){let g=u.results[0]?.returnValues[0]?.[0],d=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(g)),p=u.results[0]?.returnValues[1]?.[0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p));d.forEach((_,S)=>{let C=a(_).div(Math.pow(10,9+o.decimals-i.decimals)).toString(),y=a(h[S]).div(Math.pow(10,i.decimals)).toString();l.push({price:C,quantity:y})})}let m=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],p=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],_=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h));p.forEach((S,C)=>{let y=a(S).div(Math.pow(10,9+o.decimals-i.decimals)).toString(),b=a(_[C]).div(Math.pow(10,i.decimals)).toString();m.push({price:y,quantity:b})})}return{bid:l,ask:m}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,i)=>[(0,w.normalizeStructTag)(n.coinType),n]))}async getAccount(e,t){let s=new O.Transaction;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:"0xade998d24db74df75d96646e1ce7bb996587ce28747b4db600b5ccd82e00cb5a::order_trader::get_account_id",arguments:[s.object(u.address),s.object(e)],typeArguments:[u.baseCoin.coinType,u.quoteCoin.coinType]})}let n=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:s});console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1808 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ devInspectRes:",JSON.stringify(n,null,2));let i;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{i=c?.parsedJson,console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1816 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ eventData:",JSON.stringify(i,null,2));let l=i.account.open_orders.contents,m=i.account.owed_balances,g=i.account.settled_balances,d=i.account.unclaimed_rebates,p=i.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:m,settled_balances:g,unclaimed_rebates:d,taker_volume:p,poolInfo:t[u]})}),o}async getSuiTransactionResponse(e,t=!1){let s=`${e}_getSuiTransactionResponse`,n=this.getCache(s,t);if(n!==void 0)return n;let i;try{i=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{i=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(s,i,q),i}transformExtensions(e,t,s=!0){let n=[];for(let i of t){let{key:o}=i.fields,{value:c}=i.fields;if(o==="labels")try{c=JSON.parse(decodeURIComponent(De.Base64.decode(c)))}catch{}s&&(e[o]=c),n.push({key:o,value:c})}delete e.extension_fields,s||(e.extensions=n)}async getCoinConfigs(e=!1,t=!0){let s=this.sdk.sdkOptions.coinlist.handle,n=`${s}_getCoinConfigs`,i=this.getCache(n,e);if(i)return i;let c=(await this._sdk.fullClient.getDynamicFieldsByPage(s)).data.map(m=>m.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(m=>{let g=this.buildCoinConfig(m,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,q),l.push({...g})}),this.updateCache(n,l,q),l}buildCoinConfig(e,t=!0){let s=de(e);s=s.value.fields;let n={...s};return n.id=le(e),n.address=M(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=(0,w.normalizeSuiObjectId)(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=re){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Q=class{_cache={};_rpcModule;_deepbookUtils;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new H({url:e.fullRpcUrl}),this._deepbookUtils=new Z(this),X(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,s=!0){let n=[],i=null,o=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,c=this.getCache(o,s);if(c)return c;for(;;){let u=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:i}):this.fullClient.getAllCoins({owner:e,cursor:i}));if(u.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:M(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),i=u.nextCursor,!u.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(e,t){let s=[];return t?s=[await this.fullClient.getBalance({owner:e,coinType:t})]:s=[...await this.fullClient.getAllBalances({owner:e})],s}updateCache(e,t,s=q){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Tt="0x0000000000000000000000000000000000000000000000000000000000000006",xt="pool_script",jt="pool_script_v2",Bt="router",vt="router_with_partner",Dt="fetcher_script",Mt="expect_swap",Et="utils",Pt="0x1::coin::CoinInfo",Rt="0x1::coin::CoinStore",It="custodian_v2",qt="clob_v2",Ut="endpoints_v2",Ft=r=>{if(typeof r=="string"&&r.startsWith("0x"))return"object";if(typeof r=="number"||typeof r=="bigint")return"u64";if(typeof r=="boolean")return"bool";throw new Error(`Unknown type for value: ${r}`)};var Me=(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))(Me||{});var Nt=Q;0&&(module.exports={CLOCK_ADDRESS,CachedContent,CetusClmmSDK,ClmmExpectSwapModule,ClmmFetcherModule,ClmmIntegratePoolModule,ClmmIntegratePoolV2Module,ClmmIntegrateRouterModule,ClmmIntegrateRouterWithPartnerModule,ClmmIntegrateUtilsModule,CoinAssist,CoinInfoAddress,CoinStoreAddress,DEEP_SCALAR,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,FLOAT_SCALAR,GAS_SYMBOL,GAS_TYPE_ARG,GAS_TYPE_ARG_LONG,NORMALIZED_SUI_COIN_TYPE,OrderType,RpcModule,SUI_SYSTEM_STATE_OBJECT_ID,TransactionUtil,addHexPrefix,asIntN,asUintN,bufferToHex,cacheTime24h,cacheTime5min,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});
1
+ "use strict";var Ee=Object.create;var G=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var Ie=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var Ue=(i,e,t)=>e in i?G(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var Fe=(i,e)=>{for(var t in e)G(i,t,{get:e[t],enumerable:!0})},be=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Re(e))!qe.call(i,n)&&n!==t&&G(i,n,{get:()=>e[n],enumerable:!(s=Pe(e,n))||s.enumerable});return i};var _e=(i,e,t)=>(t=i!=null?Ee(Ie(i)):{},be(e||!i||!i.__esModule?G(t,"default",{value:i,enumerable:!0}):t,i)),Ne=i=>be(G({},"__esModule",{value:!0}),i);var he=(i,e,t)=>(Ue(i,typeof e!="symbol"?e+"":e,t),t);var $t={};Fe($t,{CLOCK_ADDRESS:()=>Tt,CachedContent:()=>N,CetusClmmSDK:()=>Z,ClmmExpectSwapModule:()=>Mt,ClmmFetcherModule:()=>Dt,ClmmIntegratePoolModule:()=>xt,ClmmIntegratePoolV2Module:()=>jt,ClmmIntegrateRouterModule:()=>Bt,ClmmIntegrateRouterWithPartnerModule:()=>vt,ClmmIntegrateUtilsModule:()=>Et,CoinAssist:()=>T,CoinInfoAddress:()=>Pt,CoinStoreAddress:()=>Rt,DEEP_SCALAR:()=>se,DEFAULT_GAS_BUDGET_FOR_MERGE:()=>Ge,DEFAULT_GAS_BUDGET_FOR_SPLIT:()=>Ve,DEFAULT_GAS_BUDGET_FOR_STAKE:()=>Qe,DEFAULT_GAS_BUDGET_FOR_TRANSFER:()=>Ke,DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI:()=>He,DEFAULT_NFT_TRANSFER_GAS_FEE:()=>ze,DeepbookClobV2Moudle:()=>qt,DeepbookCustodianV2Moudle:()=>It,DeepbookEndpointsV2Moudle:()=>Ut,DeepbookUtilsModule:()=>Q,FLOAT_SCALAR:()=>D,GAS_SYMBOL:()=>Ze,GAS_TYPE_ARG:()=>W,GAS_TYPE_ARG_LONG:()=>ie,NORMALIZED_SUI_COIN_TYPE:()=>ut,OrderType:()=>Me,RpcModule:()=>H,SUI_SYSTEM_STATE_OBJECT_ID:()=>Je,TransactionUtil:()=>E,addHexPrefix:()=>oe,asIntN:()=>kt,asUintN:()=>yt,bufferToHex:()=>et,cacheTime24h:()=>q,cacheTime5min:()=>re,checkAddress:()=>Xe,composeType:()=>ae,d:()=>a,decimalsMultiplier:()=>ee,default:()=>Nt,extractAddressFromType:()=>at,extractStructTagFromType:()=>M,fixCoinType:()=>ct,fixDown:()=>R,fixSuiObjectId:()=>Ae,fromDecimalsAmount:()=>F,getDefaultSuiInputType:()=>Ft,getFutureTime:()=>$,getMoveObject:()=>ne,getMoveObjectType:()=>je,getMovePackageContent:()=>gt,getObjectDeletedResponse:()=>we,getObjectDisplay:()=>ht,getObjectFields:()=>de,getObjectId:()=>le,getObjectNotExistsResponse:()=>Te,getObjectOwner:()=>_t,getObjectPreviousTransactionDigest:()=>bt,getObjectReference:()=>ue,getObjectType:()=>mt,getObjectVersion:()=>dt,getSuiObjectData:()=>L,hasPublicTransfer:()=>ft,hexToNumber:()=>tt,hexToString:()=>nt,isSortedSymbols:()=>ot,isSuiObjectResponse:()=>xe,maxDecimal:()=>te,normalizeCoinType:()=>J,patchFixSuiObjectId:()=>X,printTransaction:()=>lt,removeHexPrefix:()=>Y,secretKeyToEd25519Keypair:()=>St,secretKeyToSecp256k1Keypair:()=>At,shortAddress:()=>Ye,shortString:()=>fe,toBuffer:()=>Ce,toDecimalsAmount:()=>Ct,utf8to16:()=>ye});module.exports=Ne($t);var re=5*60*1e3,q=24*60*60*1e3;function $(i){return Date.parse(new Date().toString())+i}var N=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 U=require("@mysten/sui/utils");var $e="0x2::coin::Coin",Le=/^0x2::coin::Coin<(.+)>$/,Ve=1e3,Ge=500,Ke=100,He=100,Qe=1e3,W="0x2::sui::SUI",ie="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",Ze="SUI",ze=450,Je="0x0000000000000000000000000000000000000005",T=class{static getCoinTypeArg(e){let t=e.type.match(Le);return t?t[1]:null}static isSUI(e){let t=T.getCoinTypeArg(e);return t?T.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 s=BigInt(0);return e.forEach(n=>{t===n.coinAddress&&(s+=BigInt(n.balance))}),s}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${$e}<${e}>`}static getCoinAssets(e,t){let s=[];return t.forEach(n=>{J(n.coinAddress)===J(e)&&s.push(n)}),s}static isSuiCoin(e){return M(e).full_address===W}static selectCoinObjectIdGreaterThanOrEqual(e,t,s=[]){let n=T.selectCoinAssetGreaterThanOrEqual(e,t,s),r=n.selectedCoins.map(u=>u.coinObjectId),o=n.remainingCoins,c=n.selectedCoins.map(u=>u.balance.toString());return{objectArray:r,remainCoins:o,amountArray:c}}static selectCoinAssetGreaterThanOrEqual(e,t,s=[]){let n=T.sortByBalance(e.filter(l=>!s.includes(l.coinObjectId))),r=T.calculateTotalBalance(n);if(r<t)return{selectedCoins:[],remainingCoins:n};if(r===t)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),c=[],u=[...n];for(;o<r;){let l=t-o,m=u.findIndex(d=>d.balance>=l);if(m!==-1){c.push(u[m]),u.splice(m,1);break}let g=u.pop();g.balance>0&&(c.push(g),o+=g.balance)}return{selectedCoins:T.sortByBalance(c),remainingCoins:T.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,s)=>t.balance<s.balance?-1:t.balance>s.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,s)=>t.balance>s.balance?-1:t.balance<s.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,s)=>t+s.balance,BigInt(0))}};var We=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function oe(i){return i.startsWith("0x")?i:`0x${i}`}function Y(i){return i.startsWith("0x")?`${i.slice(2)}`:i}function fe(i,e=4,t=4){let s=Math.max(e,1),n=Math.max(t,1);return`${i.slice(0,s+2)} ... ${i.slice(-n)}`}function Ye(i,e=4,t=4){return fe(oe(i),e,t)}function Xe(i,e={leadingZero:!0}){if(typeof i!="string")return!1;let t=i;if(e.leadingZero){if(!i.startsWith("0x"))return!1;t=t.substring(2)}return We.test(t)}function Ce(i){if(!Buffer.isBuffer(i))if(Array.isArray(i))i=Buffer.from(i);else if(typeof i=="string")exports.isHexString(i)?i=Buffer.from(exports.padToEven(exports.stripHexPrefix(i)),"hex"):i=Buffer.from(i);else if(typeof i=="number")i=exports.intToBuffer(i);else if(i==null)i=Buffer.allocUnsafe(0);else if(i.toArray)i=Buffer.from(i.toArray());else throw new Error("invalid type");return i}function et(i){return oe(Ce(i).toString("hex"))}function tt(i){let e=new ArrayBuffer(4),t=new DataView(e);for(let n=0;n<i.length;n++)t.setUint8(n,i.charCodeAt(n));return t.getUint32(0,!0)}function ye(i){let e,t,s,n,r;e="";let o=i.length;for(t=0;t<o;)switch(s=i.charCodeAt(t++),s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=i.charAt(t-1);break;case 12:case 13:n=i.charCodeAt(t++),e+=String.fromCharCode((s&31)<<6|n&63);break;case 14:n=i.charCodeAt(t++),r=i.charCodeAt(t++),e+=String.fromCharCode((s&15)<<12|(n&63)<<6|(r&63)<<0);break}return e}function nt(i){let e="",t=Y(i),s=t.length/2;for(let n=0;n<s;n++)e+=String.fromCharCode(parseInt(t.substr(n*2,2),16));return ye(e)}var st=0,Se=1,rt=2;function ke(i,e){return i===e?st:i<e?Se:rt}function it(i,e){let t=0,s=i.length<=e.length?i.length:e.length,n=ke(i.length,e.length);for(;t<s;){let r=ke(i.charCodeAt(t),e.charCodeAt(t));if(t+=1,r!==0)return r}return n}function ot(i,e){return it(i,e)===Se}function ae(i,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],n=[i,...e].filter(Boolean).join("::");return t&&t.length&&(n+=`<${t.join(", ")}>`),n}function at(i){return i.split("::")[0]}function M(i){try{let e=i.replace(/\s/g,""),s=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(s){e=e.slice(0,e.indexOf("<"));let u={...M(e),type_arguments:s.map(l=>M(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>T.isSuiCoin(l)?l:M(l).source_address),u.source_address=ae(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===W||e===ie?"0x2":(0,U.normalizeSuiObjectId)(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return o.full_address=`${o.address}::${o.module}::${o.name}`,o.source_address=ae(o.full_address,o.type_arguments),o}catch{return{full_address:i,address:"",module:"",name:"",type_arguments:[],source_address:i}}}function J(i){return M(i).source_address}function Ae(i){return i.toLowerCase().startsWith("0x")?(0,U.normalizeSuiObjectId)(i):i}var ct=(i,e=!0)=>{let t=i.split("::"),s=t.shift(),n=(0,U.normalizeSuiObjectId)(s);return e&&(n=Y(n)),`${n}::${t.join("::")}`};function X(i){for(let e in i){let t=typeof i[e];if(t==="object")X(i[e]);else if(t==="string"){let s=i[e];i[e]=Ae(s)}}}var ut=(0,U.normalizeStructTag)(U.SUI_TYPE_ARG);var ce=_e(require("decimal.js"));ce.default.config({precision:64,rounding:ce.default.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var K=_e(require("decimal.js"));function a(i){return K.default.isDecimal(i)?i:new K.default(i===void 0?0:i)}function ee(i){return a(10).pow(a(i).abs())}var R=(i,e)=>{try{return a(i).toDP(e,K.default.ROUND_DOWN).toString()}catch{return i}},te=(i,e)=>K.default.max(a(i),a(e));var Oe=require("@mysten/sui/transactions");async function lt(i,e=!0){i.blockData.transactions.forEach((t,s)=>{})}var I=class{static async adjustTransactionForGas(e,t,s,n){n.setSender(e.senderAddress);let r=T.selectCoinAssetGreaterThanOrEqual(t,s).selectedCoins;if(r.length===0)throw new Error("Insufficient balance");let o=T.calculateTotalBalance(t);if(o-s>1e9)return{fixAmount:s};let c=await e.fullClient.calculationTxGas(n);if(T.selectCoinAssetGreaterThanOrEqual(t,BigInt(c),r.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(c)+BigInt(500);if(o-s<l){if(s-=l,s<0)throw new Error("gas Insufficient balance");let m=new Oe.Transaction;return{fixAmount:s,newTx:m}}}return{fixAmount:s}}static buildCoinForAmount(e,t,s,n,r=!0,o=!1){let c=T.getCoinAssets(n,t);if(s===BigInt(0)&&c.length===0)return I.buildZeroValueCoin(t,e,n,r);let u=T.calculateTotalBalance(c);if(u<s)throw new Error(`The amount(${u}) is Insufficient balance for ${n} , expect ${s} `);return I.buildCoin(e,t,c,s,n,r,o)}static buildCoin(e,t,s,n,r,o=!0,c=!1){if(T.isSuiCoin(r)){if(o){let b=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[b]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let b=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(b.objectArray[0]),remainCoins:b.remainCoins,tragetCoinAmount:b.amountArray[0],isMintZeroCoin:!1}}let C=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:C.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=T.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),m=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:m.map(C=>e.object(C))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),isMintZeroCoin:!1};let[g,...d]=m,p=e.object(g),h=p,_=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),S;return d.length>0&&e.mergeCoins(p,d.map(C=>e.object(C))),c&&Number(l)>Number(n)&&(h=e.splitCoins(p,[e.pure.u64(n)]),_=n.toString(),S=p),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:_,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,s,n=!0){let r=I.callMintZeroValueCoin(t,s),o;return n?o=t.makeMoveVec({elements:[r]}):o=r,{targetCoin:o,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,s,n,r=!0){let o=T.getCoinAssets(n,t);if(s.amountFirst===BigInt(0))return o.length>0?I.buildCoin(e,[...t],[...o],s.amountFirst,n,r):I.buildZeroValueCoin(t,e,n,r);let c=T.calculateTotalBalance(o);if(c>=s.amountFirst)return I.buildCoin(e,[...t],[...o],s.amountFirst,n,r);if(c<s.amountSecond)throw new Error(`The amount(${c}) is Insufficient balance for ${n} , expect ${s.amountSecond} `);return I.buildCoin(e,[...t],[...o],s.amountSecond,n,r)}static buildCoinTypePair(e,t){let s=[];if(e.length===2){let n=[];n.push(e[0],e[1]),s.push(n)}else{let n=[];n.push(e[0],e[e.length-1]),s.push(n);for(let r=1;r<e.length-1;r+=1){if(t[r-1]===0)continue;let o=[];o.push(e[0],e[r],e[e.length-1]),s.push(o)}}return s}},E=I;he(E,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function L(i){return i.data}function we(i){if(i.error&&"object_id"in i.error&&"version"in i.error&&"digest"in i.error){let{error:e}=i;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function Te(i){if(i.error&&"object_id"in i.error&&!("version"in i.error)&&!("digest"in i.error))return i.error.object_id}function ue(i){if("reference"in i)return i.reference;let e=L(i);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:we(i)}function le(i){return"objectId"in i?i.objectId:ue(i)?.objectId??Te(i)}function dt(i){return"version"in i?i.version:ue(i)?.version}function xe(i){return i.data!==void 0}function pt(i){return i.content!==void 0}function gt(i){let e=L(i);if(e?.content?.dataType==="package")return e.content.disassembled}function ne(i){let e="data"in i?L(i):i;if(!(!e||!pt(e)||e.content.dataType!=="moveObject"))return e.content}function je(i){return ne(i)?.type}function mt(i){let e=xe(i)?i.data:i;return!e?.type&&"data"in i?e?.content?.dataType==="package"?"package":je(i):e?.type}function bt(i){return L(i)?.previousTransaction}function _t(i){return L(i)?.owner}function ht(i){let e=L(i)?.display;return e||{data:null,error:null}}function de(i){let e=ne(i)?.fields;if(e)return"fields"in e?e.fields:e}function ft(i){return ne(i)?.hasPublicTransfer??!1}var V=require("@mysten/bcs"),pe=require("@mysten/sui/keypairs/ed25519"),ge=require("@mysten/sui/keypairs/secp256k1");function Ct(i,e){let t=ee(a(e));return Number(a(i).mul(t))}function yt(i,e=32){return BigInt.asUintN(e,BigInt(i)).toString()}function kt(i,e=32){return Number(BigInt.asIntN(e,BigInt(i)))}function F(i,e){let t=ee(a(e));return Number(a(i).div(t))}function St(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return pe.Ed25519Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(i):(0,V.fromB64)(i);return pe.Ed25519Keypair.fromSecretKey(t)}function At(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return ge.Secp256k1Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(i):(0,V.fromB64)(i);return ge.Secp256k1Keypair.fromSecretKey(t)}var Be=require("@mysten/sui/client"),H=class extends Be.SuiClient{async queryEventsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.queryEvents({query:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(e,t,s="all"){let n=[],r=!0,o=s==="all",c=o?null:s.cursor;do{let u=await this.getOwnedObjects({owner:e,...t,cursor:c,limit:o?null:s.limit});u.data?(n=[...n,...u.data],r=u.hasNextPage,c=u.nextCursor):r=!1}while(o&&r);return{data:n,nextCursor:c,hasNextPage:r}}async getDynamicFieldsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.getDynamicFields({parentId:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async batchGetObjects(e,t,s=50){let n=[];try{for(let r=0;r<Math.ceil(e.length/s);r++){let o=await this.multiGetObjects({ids:e.slice(r*s,s*(r+1)),options:t});n=[...n,...o]}}catch{}return n}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let s=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:n}=s.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 me=require("@mysten/deepbook-v3"),f=require("@mysten/sui/bcs"),De=require("js-base64"),O=require("@mysten/sui/transactions"),w=require("@mysten/sui/utils");function v(...i){let e="DeepbookV3_Utils_Sdk###"}var se=1e6,D=1e9,Ot={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},wt={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},ve=1e3*60*60*24*365*100,Q=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?wt:Ot}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new O.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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;let r=new O.Transaction;r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),r.pure.address(e)],typeArguments:[]});let u=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:r}))?.events?.filter(m=>m.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(m=>{l.push({balanceManager:m,cetusBalanceManager:""})}),this.updateCache(s,l,q),l||[]}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new O.Transaction;n.setSenderIfNotSet(e);let r=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),o=(0,O.coinWithBalance)({type:t.coinType,balance:BigInt(s)});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[r,o],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),r],typeArguments:[]}),n.moveCall({target:"0x2::transfer::public_share_object",arguments:[r],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),n}depositIntoManager({account:e,balanceManager:t,coin:s,amountToDeposit:n,tx:r}){let o=r||new O.Transaction;if(t){o.setSenderIfNotSet(e);let c=(0,O.coinWithBalance)({type:s.coinType,balance:BigInt(n)});return o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[o.object(t),c],typeArguments:[s.coinType]}),o}return null}withdrawFromManager({account:e,balanceManager:t,coin:s,amountToWithdraw:n,returnAssets:r,txb:o}){let c=o||new O.Transaction,u=c.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[c.object(t),c.pure.u64(n)],typeArguments:[s.coinType]});return r?u:(c.transferObjects([u],e),c)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:s=new O.Transaction}){for(let n in t)t[n].forEach(o=>{let c=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[s.object(n),s.pure.u64(o.amount)],typeArguments:[o.coinType]});s.transferObjects([c],e)});return s}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new O.Transaction,n=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[s.object(e.address),s.object(t),n],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),s}async getManagerBalance({account:e,balanceManager:t,coins:s}){let n=new O.Transaction;s.forEach(c=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(t)],typeArguments:[c.coinType]})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),o={};return r.results?.forEach((c,u)=>{let l=s[u],m=c.returnValues[0][0],g=f.bcs.U64.parse(new Uint8Array(m)),d=a(g),p=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:p,balance:d.toString()}}),o}async getAccountAllManagerBalance({account:e,coins:t}){let s=new O.Transaction,n=await this.getBalanceManager(e,!0);n.forEach(c=>{t.forEach(u=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[s.object(c.balanceManager)],typeArguments:[u.coinType]})})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o={};return n.forEach((c,u)=>{let l={},m=u*t.length;t.forEach((g,d)=>{let p=m+d,h=r.results?.[p];if(h){let _=h.returnValues[0][0],S=f.bcs.U64.parse(new Uint8Array(_)),C=a(S),y=C.eq(0)?"0":C.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:y,balance:C.toString()}}}),o[c.balanceManager]=l}),o}async getMarketPrice(e){try{let t=new O.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(w.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],r=Number(f.bcs.U64.parse(new Uint8Array(n))),o=Math.pow(10,e.baseCoin.decimals).toString(),c=Math.pow(10,e.quoteCoin.decimals).toString();return a(r).mul(o).div(c).div(D).toString()}catch(t){return v("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,s=[];return e?.data?.forEach(n=>{let r=n?.parsedJson,o=n.type.match(t);if(o){let u=o[1].split(", ");s.push({...r,baseCoinType:u[0],quoteCoinType:u[1]})}}),s}async getQuoteQuantityOut(e,t,s){let n=new O.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(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(se).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new O.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(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.bcs.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{quoteQuantityDisplay:a(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(se).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let r=new O.Transaction;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[r.object(e.address),r.pure.u64(t),r.pure.u64(s),r.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),c=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[0][0]))),u=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[1][0]))),l=Number(f.bcs.U64.parse(new Uint8Array(o.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:a(s).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(c).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(l).div(se).toString(),baseQuantity:t,quoteQuantity:s,baseOut:c,quoteOut:u,deepRequired:l}}async estimatedMaxFee(e,t,s,n,r,o,c){let u=this.deepCoin,{taker_fee:l,maker_fee:m}=e,g=a(l).div(D).toString(),d=a(m).div(D).toString(),p=await this.getMarketPrice(e),h=o?s:p!=="0"?p:c;if(h==="0")throw new Error("Cannot get market price");let _=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),C=a(h).div(_).mul(S).mul(D).toString();if(n){let y=await this.getMarketPrice(e),A=a(o?s:y!=="0"?y:c).div(_).mul(S).mul(D).toString(),B=await this.getOrderDeepPrice(e);if(!B)throw new Error("Cannot get deep price");let k=te(A,s),x=a(t).mul(a(g)).mul(a(B.deep_per_asset)).div(a(D)),j=a(t).mul(a(d)).mul(a(B.deep_per_asset)).div(a(D));B.asset_is_base||(x=x.mul(k).div(a(D)),j=j.mul(k).div(a(D)));let z=x.ceil().toString(),P=j.ceil().toString();return{takerFee:z,makerFee:P,takerFeeDisplay:F(z,u.decimals).toString(),makerFeeDisplay:F(P,u.decimals).toString(),feeType:u.coinType}}else if(r){let y=te(C,s),b=a(t).mul(y).mul(g).div(a(D)).ceil().toFixed(0),A=a(t).mul(y).mul(d).div(a(D)).ceil().toFixed(0);return{takerFee:b,makerFee:A,takerFeeDisplay:F(b,e.quoteCoin.decimals).toString(),makerFeeDisplay:F(A,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}else{let y=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),b=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:y,makerFee:b,takerFeeDisplay:F(y,e.baseCoin.decimals).toString(),makerFeeDisplay:F(b,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}}async getOrderDeepPrice(e){try{let t=new O.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(t){return v("getMarketPrice ~ error:",t),null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),s=t.getUint8(0)!==0,n=Number(t.getBigUint64(1,!0));return{asset_is_base:s,deep_per_asset:n}}getCoinAssets(e,t,s,n){return E.buildCoinForAmount(n,s,BigInt(a(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,s,n,r,o,c){let u=this.deepCoin;if(!c)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let m=await this.getManagerBalance({account:r,balanceManager:c,coins:l}),g=m?.[t]?.balance||"0",d=m?.[s]?.balance||"0",p=o&&m?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:p}}getFeeAsset(e,t,s,n,r,o,c,u,l,m){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(m,t),haveDepositFee:"0"};if(o||c){let p=a(r).sub(o?n:s);d=p.lte(0)?e:p.sub(e).lt(0)?p.sub(e).toString():"0"}else d=a(r).sub(e).lt("0")?a(r).sub(e).abs().toString():"0";return{feeAsset:a(d).gt("0")?this.getCoinAssets(t,d,u,m):this.getEmptyCoin(m,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=(0,w.normalizeStructTag)(e.baseCoin.coinType),d=(0,w.normalizeStructTag)(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C,feeManaerBalance:y}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),b,A,B=!1,k=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let j=a(C).sub(s).toString();a(j).lt(0)?(B=!0,A=this.getCoinAssets(d,j,k,l)):A=this.getEmptyCoin(l,d),b=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let j=a(S).sub(t).toString();a(j).lt(0)?(B=!0,b=this.getCoinAssets(g,j,k,l)):b=this.getEmptyCoin(l,g),A=this.getEmptyCoin(l,d)}let x=this.getFeeAsset(n,m.coinType,t,s,y,h,p,k,c,l);return{baseAsset:b,quoteAsset:A,feeAsset:x,haveDeposit:B}}async getMarketTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=(0,w.normalizeStructTag)(e.baseCoin.coinType),d=(0,w.normalizeStructTag)(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),y,b,A=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let k=a(C).sub(s).toString();if(a(k).lt(0)){let x;a(C).gt(0)&&(x=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:C,returnAssets:!0,txb:l}));let j=this.getCoinAssets(d,k,A,l);x&&l.mergeCoins(j,[x]),b=j}else b=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});y=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let k=a(S).sub(t).toString();if(a(k).lt(0)){let x;a(S).gt(0)&&(x=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:S,returnAssets:!0,txb:l}));let j=this.getCoinAssets(g,k,A,l);x&&l.mergeCoins(j,[x]),y=j}else y=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});b=this.getEmptyCoin(l,d)}let B=this.getEmptyCoin(l,m.coinType);return{baseAsset:y,quoteAsset:b,feeAsset:B}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:r,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+ve}){let m=this.deepCoin,g=e.address,d=e.baseCoin.decimals,p=e.quoteCoin.decimals,h=e.baseCoin.coinType,_=e.quoteCoin.coinType,S=a(t).mul(10**(p-d+9)).toString(),C=(0,w.normalizeStructTag)(h),y=(0,w.normalizeStructTag)(_),b=new O.Transaction,A,B,k=await this._sdk.getOwnerCoinAssets(c);if(r){let P=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(P=a(P).add(a(o)).toString()),B=E.buildCoinForAmount(b,k,BigInt(P),y,!1,!0)?.targetCoin}else{let P=s;u||(P=a(s).abs().add(a(o)).toString()),A=E.buildCoinForAmount(b,k,BigInt(a(P).abs().toString()),C,!1,!0)?.targetCoin}let x=u?a(o).gt(0)?E.buildCoinForAmount(b,k,BigInt(a(o).abs().ceil().toString()),m.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,m.coinType):this.getEmptyCoin(b,m.coinType),j=b.moveCall({typeArguments:[r?h:_],target:"0x2::coin::zero",arguments:[]}),z=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(g),r?j:A,r?B:j,x,b.pure.u8(n),b.pure.u8(0),b.pure.u64(S),b.pure.u64(s),b.pure.bool(r),b.pure.bool(!1),b.pure.u64(l),b.object(w.SUI_CLOCK_OBJECT_ID)];return b.moveCall({typeArguments:[C,y],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:z}),b}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:s,maxFee:n,account:r,payWithDeep:o,slippage:c=.01}){let u=e.address,l=e.baseCoin.coinType,m=e.quoteCoin.coinType,g=(0,w.normalizeStructTag)(l),d=(0,w.normalizeStructTag)(m),p=new O.Transaction,h,_,S=t,C,y=await this.getOrderBook(e,"all",6);if(s){let k=y?.ask?.[0]?.price||"0",x=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(x).plus(a(x).mul(c)).ceil().toString()}else{let k=await y?.bid?.[0]?.price||"0",x=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(x).minus(a(x).mul(c)).floor().toString()}let b=await this._sdk.getOwnerCoinAssets(r);s?(o||(C=a(C).add(a(n)).toString()),_=this.getCoinAssets(d,C,b,p),h=this.getEmptyCoin(p,g)):(o||(S=a(S).add(a(n)).toString()),_=this.getEmptyCoin(p,d),h=this.getCoinAssets(g,S,b,p));let A=o?a(n).gt(0)?E.buildCoinForAmount(p,b,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(p,this.deepCoin.coinType):this.getEmptyCoin(p,this.deepCoin.coinType),B=[p.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),p.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),p.object(u),h,_,A,p.pure.u8(0),p.pure.u64(t),p.pure.bool(s),p.pure.bool(o),p.pure.u64(C),p.object(w.SUI_CLOCK_OBJECT_ID)];return p.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:B}),p}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:r,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:m=Date.now()+ve}){let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),p=t.baseCoin.coinType,h=t.quoteCoin.coinType,_=new O.Transaction,S=r?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",C=r?"0":n,{baseAsset:y,quoteAsset:b,feeAsset:A,haveDeposit:B}=await this.getTransactionRelatedAssets(t,C,S,c,r,u,l,e,_);if(B){v("placeLimitOrder~ deposit_then_place_limit_order_by_owner have deposit"),v("placeLimitOrder ~ deposit_then_place_limit_order_by_owner args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,baseAsset:y,quoteAsset:b,feeAsset:A.feeAsset,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:w.SUI_CLOCK_OBJECT_ID});let k=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(t.address),_.object(e),y,b,A.feeAsset,_.pure.u8(o),_.pure.u8(0),_.pure.u64(d),_.pure.u64(n),_.pure.bool(r),_.pure.bool(l),_.pure.u64(m),_.object(w.SUI_CLOCK_OBJECT_ID)];return _.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:k}),_}else{let k=new O.Transaction;a(A.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:A.haveDepositFee,tx:k}),v("placeLimitOrder~ not have deposit"),v("placeLimitOrder ~ args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,pay_with_deep:!0,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:w.SUI_CLOCK_OBJECT_ID});let x=[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(o),k.pure.u8(0),k.pure.u64(d),k.pure.u64(n),k.pure.bool(r),k.pure.bool(l),k.pure.u64(m),k.object(w.SUI_CLOCK_OBJECT_ID)];return k.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:x}),k}}modifyOrder({balanceManager:e,poolInfo:t,orderId:s,newOrderQuantity:n}){let r=new O.Transaction;return r.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),r.object(e),r.object(t.address),r.pure.u128(s),r.pure.u64(n),r.object(w.SUI_CLOCK_OBJECT_ID)]}),r}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O.Transaction,r=await this.getMarketPrice(e),o=a(r).gt(0)?r:Math.pow(10,-1),c=Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(u),n.pure.u64(l),n.pure.bool(!1),n.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestAskprice ~ error:",t),0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O.Transaction,r=await this.getMarketPrice(e),o=a(r).gt(0)?a(r).div(3).toNumber():Math.pow(10,-6),c=a(r).gt(0)?r:Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(R(u,0)),n.pure.u64(R(l,0)),n.pure.bool(!0),n.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestBidprice ~ error:",t),0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,r=new O.Transaction,o=await this.getMarketPrice(e),c,u;t?(c=a(o).gt(0)?a(o).div(3).toNumber():Math.pow(10,-6),u=a(o).gt(0)?o:Math.pow(10,6)):(c=a(o).gt(0)?o:Math.pow(10,-1),u=a(o).gt(0)?a(o).mul(3).toNumber():Math.pow(10,6));let l=a(c).mul(Math.pow(10,9+n.decimals-s.decimals)).toString(),m=a(u).mul(Math.pow(10,9+n.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(R(l,0)),r.pure.u64(R(m,0)),r.pure.bool(t),r.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[s.coinType,n.coinType]});let g=this._sdk.sdkOptions.simulationAccount.address,d=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:r}),p=[],h=d.results[0].returnValues[0][0],_=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],C=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(S));return _.forEach((y,b)=>{let A=a(y).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),B=a(C[b]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:B})}),p?.[0]?.price||0}catch(s){return v("getBestBidprice ~ error:",s),0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:r,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){let m=(0,w.normalizeStructTag)(t.baseCoin.coinType),g=(0,w.normalizeStructTag)(t.quoteCoin.coinType),d=new O.Transaction,{baseAsset:p,quoteAsset:h,feeAsset:_}=await this.getMarketTransactionRelatedAssets(t,s,n,o,r,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(r){let b=S?.ask?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).plus(a(A).mul(l)).ceil().toString()}else{let b=await S?.bid?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).minus(a(A).mul(l)).floor().toString()}let C=n;console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:1450 ~ DeepbookUtilsModule ~ placeMarketOrder ~ amountLimit:",{amountLimit:C,quoteQuantity:n});let y=[d.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),d.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),d.object(t.address),d.object(e),p,h,_,d.pure.u8(0),d.pure.u64(s),d.pure.bool(r),d.pure.bool(u),d.pure.u64(C),d.object(w.SUI_CLOCK_OBJECT_ID)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[m,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:y}),d}async getOpenOrderFromDeepbook(e,t){let s=this._sdk.fullClient,n=new me.DeepBookClient({client:s,address:e,env:"testnet",balanceManagers:{test1:{address:t,tradeCap:""}}}),r=await n.accountOpenOrders("DEEP_SUI","test1"),o=await n.getOrder("DEEP_SUI","1844674407389401905673709551611")}async getOrderInfoList(e,t,s){try{let n=new O.Transaction;t.forEach(m=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(m)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=f.bcs.struct("ID",{bytes:f.bcs.Address}),c=f.bcs.struct("OrderDeepPrice",{asset_is_base:f.bcs.bool(),deep_per_asset:f.bcs.u64()}),u=f.bcs.struct("Order",{balance_manager_id:o,order_id:f.bcs.u128(),client_order_id:f.bcs.u64(),quantity:f.bcs.u64(),filled_quantity:f.bcs.u64(),fee_is_deep:f.bcs.bool(),order_deep_price:c,epoch:f.bcs.u64(),status:f.bcs.u8(),expire_timestamp:f.bcs.u64()}),l=[];return r?.results?.forEach(m=>{let g=m.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch(n){return v("getOrderInfoList ~ error:",n),[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),s=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),n=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:s,orderId:n}}async getOpenOrder(e,t,s,n){let r;if(n)r=n;else{let u=new O.Transaction;u.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[u.object(e.address),u.object(s)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let m=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:u})).results[0].returnValues[0][0];r=f.bcs.struct("VecSet",{constants:f.bcs.vector(f.bcs.U128)}).parse(new Uint8Array(m)).constants,v("getOpenOrder ~ orderIds:",r)}let o=await this.getOrderInfoList(e,r,t)||[];v("getOpenOrder ~ orderInfoList:",o);let c=[];return o.forEach(u=>{let l=this.decodeOrderId(BigInt(u.order_id));c.push({...u,price:l.price,isBid:l.isBid})}),c}cancelOrders(e,t){let s=new O.Transaction;return e.forEach(n=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(t),s.object(n.poolInfo.address),s.pure.u128(n.orderId),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[n.poolInfo.baseCoin.coinType,n.poolInfo.quoteCoin.coinType]})}),s}async getDeepbookOrderBook(e,t,s,n,r,o){let c=this._sdk.fullClient,l=await new me.DeepBookClient({client:c,address:r,env:"testnet",balanceManagers:{test1:{address:o,tradeCap:""}}}).getLevel2Range(e,t,s,n)}processOrderBookData(e,t,s,n){let r=e.returnValues[0][0],o=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(r)),c=e.returnValues[1][0],u=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(c)),l={};return o.forEach((g,d)=>{let p=R(a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),n),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[p]?l[p]={price:p,quantity:a(l[p].quantity).add(h).toString()}:l[p]={price:p,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,r=new O.Transaction){let{baseCoin:o,quoteCoin:c}=e,u=R(a(s).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0),l=R(a(n).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0);return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(u),r.pure.u64(l),r.pure.bool(t),r.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[o.coinType,c.coinType]}),r}async fetchOrderBook(e,t,s,n,r,o){let c=new O.Transaction,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,_=s==="0"?r:s;c=this.getLevel2RangeTx(e,!0,h,_,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,_=r;c=this.getLevel2RangeTx(e,!1,h,_,c)}let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let p=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;p=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,_)=>_.price-h.price),ask:p.sort((h,_)=>h.price-_.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],p=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});p=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{p=[]}return{bid:d,ask:p}}}async getOrderBook(e,t,s){let n={bid:[],ask:[]};try{let r=await this.getMarketPrice(e),o=t,c=Math.pow(10,-s),u=Math.pow(10,s),l=await this.fetchOrderBook(e,o,r,c,u,s);return{bid:l?.bid,ask:l?.ask}}catch{return n}}async getOrderBookOrigin(e,t){try{let s=new O.Transaction,n=await this.getMarketPrice(e),{baseCoin:r,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!0),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,o.coinType]})}if(t==="ask"||t==="all"){let g=n,d=Math.pow(10,6),p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!1),s.object(w.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,o.coinType]})}let c=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.devInspectTransactionBlock({sender:c,transactionBlock:s}),l=[];if(t==="bid"||t==="all"){let g=u.results[0]?.returnValues[0]?.[0],d=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(g)),p=u.results[0]?.returnValues[1]?.[0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(p));d.forEach((_,S)=>{let C=a(_).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),y=a(h[S]).div(Math.pow(10,r.decimals)).toString();l.push({price:C,quantity:y})})}let m=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],p=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],_=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h));p.forEach((S,C)=>{let y=a(S).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),b=a(_[C]).div(Math.pow(10,r.decimals)).toString();m.push({price:y,quantity:b})})}return{bid:l,ask:m}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,r)=>[(0,w.normalizeStructTag)(n.coinType),n]))}async getAccount(e,t){let s=new O.Transaction;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:"0xade998d24db74df75d96646e1ce7bb996587ce28747b4db600b5ccd82e00cb5a::order_trader::get_account_id",arguments:[s.object(u.address),s.object(e)],typeArguments:[u.baseCoin.coinType,u.quoteCoin.coinType]})}let n=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:s});console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1808 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ devInspectRes:",JSON.stringify(n,null,2));let r;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{r=c?.parsedJson,console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1816 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ eventData:",JSON.stringify(r,null,2));let l=r.account.open_orders.contents,m=r.account.owed_balances,g=r.account.settled_balances,d=r.account.unclaimed_rebates,p=r.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:m,settled_balances:g,unclaimed_rebates:d,taker_volume:p,poolInfo:t[u]})}),o}async getSuiTransactionResponse(e,t=!1){let s=`${e}_getSuiTransactionResponse`,n=this.getCache(s,t);if(n!==void 0)return n;let r;try{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(s,r,q),r}transformExtensions(e,t,s=!0){let n=[];for(let r of t){let{key:o}=r.fields,{value:c}=r.fields;if(o==="labels")try{c=JSON.parse(decodeURIComponent(De.Base64.decode(c)))}catch{}s&&(e[o]=c),n.push({key:o,value:c})}delete e.extension_fields,s||(e.extensions=n)}async getCoinConfigs(e=!1,t=!0){let s=this.sdk.sdkOptions.coinlist.handle,n=`${s}_getCoinConfigs`,r=this.getCache(n,e);if(r)return r;let c=(await this._sdk.fullClient.getDynamicFieldsByPage(s)).data.map(m=>m.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(m=>{let g=this.buildCoinConfig(m,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,q),l.push({...g})}),this.updateCache(n,l,q),l}buildCoinConfig(e,t=!0){let s=de(e);s=s.value.fields;let n={...s};return n.id=le(e),n.address=M(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=(0,w.normalizeSuiObjectId)(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=re){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Z=class{_cache={};_rpcModule;_deepbookUtils;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new H({url:e.fullRpcUrl}),this._deepbookUtils=new Q(this),X(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,s=!0){let n=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,c=this.getCache(o,s);if(c)return c;for(;;){let u=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:r}):this.fullClient.getAllCoins({owner:e,cursor:r}));if(u.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:M(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),r=u.nextCursor,!u.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(e,t){let s=[];return t?s=[await this.fullClient.getBalance({owner:e,coinType:t})]:s=[...await this.fullClient.getAllBalances({owner:e})],s}updateCache(e,t,s=q){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Tt="0x0000000000000000000000000000000000000000000000000000000000000006",xt="pool_script",jt="pool_script_v2",Bt="router",vt="router_with_partner",Dt="fetcher_script",Mt="expect_swap",Et="utils",Pt="0x1::coin::CoinInfo",Rt="0x1::coin::CoinStore",It="custodian_v2",qt="clob_v2",Ut="endpoints_v2",Ft=i=>{if(typeof i=="string"&&i.startsWith("0x"))return"object";if(typeof i=="number"||typeof i=="bigint")return"u64";if(typeof i=="boolean")return"bool";throw new Error(`Unknown type for value: ${i}`)};var Me=(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))(Me||{});var Nt=Z;0&&(module.exports={CLOCK_ADDRESS,CachedContent,CetusClmmSDK,ClmmExpectSwapModule,ClmmFetcherModule,ClmmIntegratePoolModule,ClmmIntegratePoolV2Module,ClmmIntegrateRouterModule,ClmmIntegrateRouterWithPartnerModule,ClmmIntegrateUtilsModule,CoinAssist,CoinInfoAddress,CoinStoreAddress,DEEP_SCALAR,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,FLOAT_SCALAR,GAS_SYMBOL,GAS_TYPE_ARG,GAS_TYPE_ARG_LONG,NORMALIZED_SUI_COIN_TYPE,OrderType,RpcModule,SUI_SYSTEM_STATE_OBJECT_ID,TransactionUtil,addHexPrefix,asIntN,asUintN,bufferToHex,cacheTime24h,cacheTime5min,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 CHANGED
@@ -1 +1 @@
1
- var ke=Object.defineProperty;var Se=(i,e,t)=>e in i?ke(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var se=(i,e,t)=>(Se(i,typeof e!="symbol"?e+"":e,t),t);var re=5*60*1e3,U=24*60*60*1e3;function $(i){return Date.parse(new Date().toString())+i}var N=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{normalizeSuiObjectId as W,normalizeStructTag as Be,SUI_TYPE_ARG as ve}from"@mysten/sui/utils";var Ae="0x2::coin::Coin",Oe=/^0x2::coin::Coin<(.+)>$/,Je=1e3,We=500,Ye=100,Xe=100,et=1e3,z="0x2::sui::SUI",ie="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",tt="SUI",nt=450,st="0x0000000000000000000000000000000000000005",w=class{static getCoinTypeArg(e){let t=e.type.match(Oe);return t?t[1]:null}static isSUI(e){let t=w.getCoinTypeArg(e);return t?w.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 s=BigInt(0);return e.forEach(n=>{t===n.coinAddress&&(s+=BigInt(n.balance))}),s}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${Ae}<${e}>`}static getCoinAssets(e,t){let s=[];return t.forEach(n=>{Q(n.coinAddress)===Q(e)&&s.push(n)}),s}static isSuiCoin(e){return E(e).full_address===z}static selectCoinObjectIdGreaterThanOrEqual(e,t,s=[]){let n=w.selectCoinAssetGreaterThanOrEqual(e,t,s),r=n.selectedCoins.map(u=>u.coinObjectId),o=n.remainingCoins,c=n.selectedCoins.map(u=>u.balance.toString());return{objectArray:r,remainCoins:o,amountArray:c}}static selectCoinAssetGreaterThanOrEqual(e,t,s=[]){let n=w.sortByBalance(e.filter(l=>!s.includes(l.coinObjectId))),r=w.calculateTotalBalance(n);if(r<t)return{selectedCoins:[],remainingCoins:n};if(r===t)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),c=[],u=[...n];for(;o<r;){let l=t-o,m=u.findIndex(d=>d.balance>=l);if(m!==-1){c.push(u[m]),u.splice(m,1);break}let g=u.pop();g.balance>0&&(c.push(g),o+=g.balance)}return{selectedCoins:w.sortByBalance(c),remainingCoins:w.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,s)=>t.balance<s.balance?-1:t.balance>s.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,s)=>t.balance>s.balance?-1:t.balance<s.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,s)=>t+s.balance,BigInt(0))}};var we=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function oe(i){return i.startsWith("0x")?i:`0x${i}`}function J(i){return i.startsWith("0x")?`${i.slice(2)}`:i}function Te(i,e=4,t=4){let s=Math.max(e,1),n=Math.max(t,1);return`${i.slice(0,s+2)} ... ${i.slice(-n)}`}function it(i,e=4,t=4){return Te(oe(i),e,t)}function ot(i,e={leadingZero:!0}){if(typeof i!="string")return!1;let t=i;if(e.leadingZero){if(!i.startsWith("0x"))return!1;t=t.substring(2)}return we.test(t)}function xe(i){if(!Buffer.isBuffer(i))if(Array.isArray(i))i=Buffer.from(i);else if(typeof i=="string")exports.isHexString(i)?i=Buffer.from(exports.padToEven(exports.stripHexPrefix(i)),"hex"):i=Buffer.from(i);else if(typeof i=="number")i=exports.intToBuffer(i);else if(i==null)i=Buffer.allocUnsafe(0);else if(i.toArray)i=Buffer.from(i.toArray());else throw new Error("invalid type");return i}function at(i){return oe(xe(i).toString("hex"))}function ct(i){let e=new ArrayBuffer(4),t=new DataView(e);for(let n=0;n<i.length;n++)t.setUint8(n,i.charCodeAt(n));return t.getUint32(0,!0)}function je(i){let e,t,s,n,r;e="";let o=i.length;for(t=0;t<o;)switch(s=i.charCodeAt(t++),s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=i.charAt(t-1);break;case 12:case 13:n=i.charCodeAt(t++),e+=String.fromCharCode((s&31)<<6|n&63);break;case 14:n=i.charCodeAt(t++),r=i.charCodeAt(t++),e+=String.fromCharCode((s&15)<<12|(n&63)<<6|(r&63)<<0);break}return e}function ut(i){let e="",t=J(i),s=t.length/2;for(let n=0;n<s;n++)e+=String.fromCharCode(parseInt(t.substr(n*2,2),16));return je(e)}var De=0,ue=1,Me=2;function ae(i,e){return i===e?De:i<e?ue:Me}function Ee(i,e){let t=0,s=i.length<=e.length?i.length:e.length,n=ae(i.length,e.length);for(;t<s;){let r=ae(i.charCodeAt(t),e.charCodeAt(t));if(t+=1,r!==0)return r}return n}function mt(i,e){return Ee(i,e)===ue}function ce(i,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],n=[i,...e].filter(Boolean).join("::");return t&&t.length&&(n+=`<${t.join(", ")}>`),n}function bt(i){return i.split("::")[0]}function E(i){try{let e=i.replace(/\s/g,""),s=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(s){e=e.slice(0,e.indexOf("<"));let u={...E(e),type_arguments:s.map(l=>E(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>w.isSuiCoin(l)?l:E(l).source_address),u.source_address=ce(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===z||e===ie?"0x2":W(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return o.full_address=`${o.address}::${o.module}::${o.name}`,o.source_address=ce(o.full_address,o.type_arguments),o}catch{return{full_address:i,address:"",module:"",name:"",type_arguments:[],source_address:i}}}function Q(i){return E(i).source_address}function Pe(i){return i.toLowerCase().startsWith("0x")?W(i):i}var _t=(i,e=!0)=>{let t=i.split("::"),s=t.shift(),n=W(s);return e&&(n=J(n)),`${n}::${t.join("::")}`};function Y(i){for(let e in i){let t=typeof i[e];if(t==="object")Y(i[e]);else if(t==="string"){let s=i[e];i[e]=Pe(s)}}}var ht=Be(ve);import le from"decimal.js";le.config({precision:64,rounding:le.ROUND_DOWN,toExpNeg:-64,toExpPos:64});import G from"decimal.js";function a(i){return G.isDecimal(i)?i:new G(i===void 0?0:i)}function X(i){return a(10).pow(a(i).abs())}var q=(i,e)=>{try{return a(i).toDP(e,G.ROUND_DOWN).toString()}catch{return i}},ee=(i,e)=>G.max(a(i),a(e));import{Transaction as Re}from"@mysten/sui/transactions";async function Tt(i,e=!0){i.blockData.transactions.forEach((t,s)=>{})}var R=class{static async adjustTransactionForGas(e,t,s,n){n.setSender(e.senderAddress);let r=w.selectCoinAssetGreaterThanOrEqual(t,s).selectedCoins;if(r.length===0)throw new Error("Insufficient balance");let o=w.calculateTotalBalance(t);if(o-s>1e9)return{fixAmount:s};let c=await e.fullClient.calculationTxGas(n);if(w.selectCoinAssetGreaterThanOrEqual(t,BigInt(c),r.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(c)+BigInt(500);if(o-s<l){if(s-=l,s<0)throw new Error("gas Insufficient balance");let m=new Re;return{fixAmount:s,newTx:m}}}return{fixAmount:s}}static buildCoinForAmount(e,t,s,n,r=!0,o=!1){let c=w.getCoinAssets(n,t);if(s===BigInt(0)&&c.length===0)return R.buildZeroValueCoin(t,e,n,r);let u=w.calculateTotalBalance(c);if(u<s)throw new Error(`The amount(${u}) is Insufficient balance for ${n} , expect ${s} `);return R.buildCoin(e,t,c,s,n,r,o)}static buildCoin(e,t,s,n,r,o=!0,c=!1){if(w.isSuiCoin(r)){if(o){let b=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[b]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let b=w.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(b.objectArray[0]),remainCoins:b.remainCoins,tragetCoinAmount:b.amountArray[0],isMintZeroCoin:!1}}let C=w.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:C.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=w.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),m=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:m.map(C=>e.object(C))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),isMintZeroCoin:!1};let[g,...d]=m,p=e.object(g),h=p,_=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),S;return d.length>0&&e.mergeCoins(p,d.map(C=>e.object(C))),c&&Number(l)>Number(n)&&(h=e.splitCoins(p,[e.pure.u64(n)]),_=n.toString(),S=p),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:_,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,s,n=!0){let r=R.callMintZeroValueCoin(t,s),o;return n?o=t.makeMoveVec({elements:[r]}):o=r,{targetCoin:o,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,s,n,r=!0){let o=w.getCoinAssets(n,t);if(s.amountFirst===BigInt(0))return o.length>0?R.buildCoin(e,[...t],[...o],s.amountFirst,n,r):R.buildZeroValueCoin(t,e,n,r);let c=w.calculateTotalBalance(o);if(c>=s.amountFirst)return R.buildCoin(e,[...t],[...o],s.amountFirst,n,r);if(c<s.amountSecond)throw new Error(`The amount(${c}) is Insufficient balance for ${n} , expect ${s.amountSecond} `);return R.buildCoin(e,[...t],[...o],s.amountSecond,n,r)}static buildCoinTypePair(e,t){let s=[];if(e.length===2){let n=[];n.push(e[0],e[1]),s.push(n)}else{let n=[];n.push(e[0],e[e.length-1]),s.push(n);for(let r=1;r<e.length-1;r+=1){if(t[r-1]===0)continue;let o=[];o.push(e[0],e[r],e[e.length-1]),s.push(o)}}return s}},I=R;se(I,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function L(i){return i.data}function Ie(i){if(i.error&&"object_id"in i.error&&"version"in i.error&&"digest"in i.error){let{error:e}=i;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function qe(i){if(i.error&&"object_id"in i.error&&!("version"in i.error)&&!("digest"in i.error))return i.error.object_id}function de(i){if("reference"in i)return i.reference;let e=L(i);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Ie(i)}function pe(i){return"objectId"in i?i.objectId:de(i)?.objectId??qe(i)}function Bt(i){return"version"in i?i.version:de(i)?.version}function Ue(i){return i.data!==void 0}function Fe(i){return i.content!==void 0}function vt(i){let e=L(i);if(e?.content?.dataType==="package")return e.content.disassembled}function te(i){let e="data"in i?L(i):i;if(!(!e||!Fe(e)||e.content.dataType!=="moveObject"))return e.content}function Ne(i){return te(i)?.type}function Dt(i){let e=Ue(i)?i.data:i;return!e?.type&&"data"in i?e?.content?.dataType==="package"?"package":Ne(i):e?.type}function Mt(i){return L(i)?.previousTransaction}function Et(i){return L(i)?.owner}function Pt(i){let e=L(i)?.display;return e||{data:null,error:null}}function ge(i){let e=te(i)?.fields;if(e)return"fields"in e?e.fields:e}function Rt(i){return te(i)?.hasPublicTransfer??!1}import{fromB64 as _e,fromHEX as he}from"@mysten/bcs";import{Ed25519Keypair as me}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as be}from"@mysten/sui/keypairs/secp256k1";function $t(i,e){let t=X(a(e));return Number(a(i).mul(t))}function Lt(i,e=32){return BigInt.asUintN(e,BigInt(i)).toString()}function Vt(i,e=32){return Number(BigInt.asIntN(e,BigInt(i)))}function F(i,e){let t=X(a(e));return Number(a(i).div(t))}function Gt(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return me.fromSecretKey(s)}let t=e==="hex"?he(i):_e(i);return me.fromSecretKey(t)}function Kt(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return be.fromSecretKey(s)}let t=e==="hex"?he(i):_e(i);return be.fromSecretKey(t)}import{SuiClient as $e}from"@mysten/sui/client";var K=class extends $e{async queryEventsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.queryEvents({query:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(e,t,s="all"){let n=[],r=!0,o=s==="all",c=o?null:s.cursor;do{let u=await this.getOwnedObjects({owner:e,...t,cursor:c,limit:o?null:s.limit});u.data?(n=[...n,...u.data],r=u.hasNextPage,c=u.nextCursor):r=!1}while(o&&r);return{data:n,nextCursor:c,hasNextPage:r}}async getDynamicFieldsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.getDynamicFields({parentId:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async batchGetObjects(e,t,s=50){let n=[];try{for(let r=0;r<Math.ceil(e.length/s);r++){let o=await this.multiGetObjects({ids:e.slice(r*s,s*(r+1)),options:t});n=[...n,...o]}}catch{}return n}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let s=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:n}=s.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{}}};import{DeepBookClient as fe}from"@mysten/deepbook-v3";import{bcs as f}from"@mysten/sui/bcs";import{Base64 as Le}from"js-base64";import{Transaction as O,coinWithBalance as Ce}from"@mysten/sui/transactions";import{normalizeStructTag as D,SUI_CLOCK_OBJECT_ID as B,normalizeSuiObjectId as Ve}from"@mysten/sui/utils";function v(...i){let e="DeepbookV3_Utils_Sdk###"}var ne=1e6,M=1e9,Ge={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Ke={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},ye=1e3*60*60*24*365*100,H=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?Ke:Ge}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new O,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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;let r=new O;r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),r.pure.address(e)],typeArguments:[]});let u=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:r}))?.events?.filter(m=>m.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(m=>{l.push({balanceManager:m,cetusBalanceManager:""})}),this.updateCache(s,l,U),l||[]}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new O;n.setSenderIfNotSet(e);let r=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),o=Ce({type:t.coinType,balance:BigInt(s)});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[r,o],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),r],typeArguments:[]}),n.moveCall({target:"0x2::transfer::public_share_object",arguments:[r],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),n}depositIntoManager({account:e,balanceManager:t,coin:s,amountToDeposit:n,tx:r}){let o=r||new O;if(t){o.setSenderIfNotSet(e);let c=Ce({type:s.coinType,balance:BigInt(n)});return o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[o.object(t),c],typeArguments:[s.coinType]}),o}return null}withdrawFromManager({account:e,balanceManager:t,coin:s,amountToWithdraw:n,returnAssets:r,txb:o}){let c=o||new O,u=c.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[c.object(t),c.pure.u64(n)],typeArguments:[s.coinType]});return r?u:(c.transferObjects([u],e),c)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:s=new O}){for(let n in t)t[n].forEach(o=>{let c=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[s.object(n),s.pure.u64(o.amount)],typeArguments:[o.coinType]});s.transferObjects([c],e)});return s}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new O,n=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[s.object(e.address),s.object(t),n],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),s}async getManagerBalance({account:e,balanceManager:t,coins:s}){let n=new O;s.forEach(c=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(t)],typeArguments:[c.coinType]})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),o={};return r.results?.forEach((c,u)=>{let l=s[u],m=c.returnValues[0][0],g=f.U64.parse(new Uint8Array(m)),d=a(g),p=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:p,balance:d.toString()}}),o}async getAccountAllManagerBalance({account:e,coins:t}){let s=new O,n=await this.getBalanceManager(e,!0);n.forEach(c=>{t.forEach(u=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[s.object(c.balanceManager)],typeArguments:[u.coinType]})})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o={};return n.forEach((c,u)=>{let l={},m=u*t.length;t.forEach((g,d)=>{let p=m+d,h=r.results?.[p];if(h){let _=h.returnValues[0][0],S=f.U64.parse(new Uint8Array(_)),C=a(S),y=C.eq(0)?"0":C.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:y,balance:C.toString()}}}),o[c.balanceManager]=l}),o}async getMarketPrice(e){try{let t=new O;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(B)],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],r=Number(f.U64.parse(new Uint8Array(n))),o=Math.pow(10,e.baseCoin.decimals).toString(),c=Math.pow(10,e.quoteCoin.decimals).toString();return a(r).mul(o).div(c).div(M).toString()}catch(t){return v("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,s=[];return e?.data?.forEach(n=>{let r=n?.parsedJson,o=n.type.match(t);if(o){let u=o[1].split(", ");s.push({...r,baseCoinType:u[0],quoteCoinType:u[1]})}}),s}async getQuoteQuantityOut(e,t,s){let n=new O;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(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(ne).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new O;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(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{quoteQuantityDisplay:a(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(ne).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let r=new O;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[r.object(e.address),r.pure.u64(t),r.pure.u64(s),r.object(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),c=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[0][0]))),u=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[1][0]))),l=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:a(s).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(c).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(l).div(ne).toString(),baseQuantity:t,quoteQuantity:s,baseOut:c,quoteOut:u,deepRequired:l}}async estimatedMaxFee(e,t,s,n,r,o,c){let u=this.deepCoin,{taker_fee:l,maker_fee:m}=e,g=a(l).div(M).toString(),d=a(m).div(M).toString(),p=await this.getMarketPrice(e),h=o?s:p!=="0"?p:c;if(h==="0")throw new Error("Cannot get market price");let _=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),C=a(h).div(_).mul(S).mul(M).toString();if(n){let y=await this.getMarketPrice(e),A=a(o?s:y!=="0"?y:c).div(_).mul(S).mul(M).toString(),j=await this.getOrderDeepPrice(e);if(!j)throw new Error("Cannot get deep price");let k=ee(A,s),T=a(t).mul(a(g)).mul(a(j.deep_per_asset)).div(a(M)),x=a(t).mul(a(d)).mul(a(j.deep_per_asset)).div(a(M));j.asset_is_base||(T=T.mul(k).div(a(M)),x=x.mul(k).div(a(M)));let V=T.ceil().toString(),P=x.ceil().toString();return{takerFee:V,makerFee:P,takerFeeDisplay:F(V,u.decimals).toString(),makerFeeDisplay:F(P,u.decimals).toString(),feeType:u.coinType}}else if(r){let y=ee(C,s),b=a(t).mul(y).mul(g).div(a(M)).ceil().toFixed(0),A=a(t).mul(y).mul(d).div(a(M)).ceil().toFixed(0);return{takerFee:b,makerFee:A,takerFeeDisplay:F(b,e.quoteCoin.decimals).toString(),makerFeeDisplay:F(A,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}else{let y=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),b=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:y,makerFee:b,takerFeeDisplay:F(y,e.baseCoin.decimals).toString(),makerFeeDisplay:F(b,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}}async getOrderDeepPrice(e){try{let t=new O;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(t){return v("getMarketPrice ~ error:",t),null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),s=t.getUint8(0)!==0,n=Number(t.getBigUint64(1,!0));return{asset_is_base:s,deep_per_asset:n}}getCoinAssets(e,t,s,n){return I.buildCoinForAmount(n,s,BigInt(a(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,s,n,r,o,c){let u=this.deepCoin;if(!c)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let m=await this.getManagerBalance({account:r,balanceManager:c,coins:l}),g=m?.[t]?.balance||"0",d=m?.[s]?.balance||"0",p=o&&m?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:p}}getFeeAsset(e,t,s,n,r,o,c,u,l,m){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(m,t),haveDepositFee:"0"};if(o||c){let p=a(r).sub(o?n:s);d=p.lte(0)?e:p.sub(e).lt(0)?p.sub(e).toString():"0"}else d=a(r).sub(e).lt("0")?a(r).sub(e).abs().toString():"0";return{feeAsset:a(d).gt("0")?this.getCoinAssets(t,d,u,m):this.getEmptyCoin(m,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=D(e.baseCoin.coinType),d=D(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C,feeManaerBalance:y}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),b,A,j=!1,k=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let x=a(C).sub(s).toString();a(x).lt(0)?(j=!0,A=this.getCoinAssets(d,x,k,l)):A=this.getEmptyCoin(l,d),b=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let x=a(S).sub(t).toString();a(x).lt(0)?(j=!0,b=this.getCoinAssets(g,x,k,l)):b=this.getEmptyCoin(l,g),A=this.getEmptyCoin(l,d)}let T=this.getFeeAsset(n,m.coinType,t,s,y,h,p,k,c,l);return{baseAsset:b,quoteAsset:A,feeAsset:T,haveDeposit:j}}async getMarketTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=D(e.baseCoin.coinType),d=D(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),y,b,A=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let k=a(C).sub(s).toString();if(a(k).lt(0)){let T;a(C).gt(0)&&(T=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:C,returnAssets:!0,txb:l}));let x=this.getCoinAssets(d,k,A,l);T&&l.mergeCoins(x,[T]),b=x}else b=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});y=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let k=a(S).sub(t).toString();if(a(k).lt(0)){let T;a(S).gt(0)&&(T=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:S,returnAssets:!0,txb:l}));let x=this.getCoinAssets(g,k,A,l);T&&l.mergeCoins(x,[T]),y=x}else y=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});b=this.getEmptyCoin(l,d)}let j=this.getEmptyCoin(l,m.coinType);return{baseAsset:y,quoteAsset:b,feeAsset:j}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:r,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+ye}){let m=this.deepCoin,g=e.address,d=e.baseCoin.decimals,p=e.quoteCoin.decimals,h=e.baseCoin.coinType,_=e.quoteCoin.coinType,S=a(t).mul(10**(p-d+9)).toString(),C=D(h),y=D(_),b=new O,A,j,k=await this._sdk.getOwnerCoinAssets(c);if(r){let P=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(P=a(P).add(a(o)).toString()),j=I.buildCoinForAmount(b,k,BigInt(P),y,!1,!0)?.targetCoin}else{let P=s;u||(P=a(s).abs().add(a(o)).toString()),A=I.buildCoinForAmount(b,k,BigInt(a(P).abs().toString()),C,!1,!0)?.targetCoin}let T=u?a(o).gt(0)?I.buildCoinForAmount(b,k,BigInt(a(o).abs().ceil().toString()),m.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,m.coinType):this.getEmptyCoin(b,m.coinType),x=b.moveCall({typeArguments:[r?h:_],target:"0x2::coin::zero",arguments:[]}),V=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(g),r?x:A,r?j:x,T,b.pure.u8(n),b.pure.u8(0),b.pure.u64(S),b.pure.u64(s),b.pure.bool(r),b.pure.bool(!1),b.pure.u64(l),b.object(B)];return b.moveCall({typeArguments:[C,y],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:V}),b}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:s,maxFee:n,account:r,payWithDeep:o,slippage:c=.01}){let u=e.address,l=e.baseCoin.coinType,m=e.quoteCoin.coinType,g=D(l),d=D(m),p=new O,h,_,S=t,C,y=await this.getOrderBook(e,"all",6);if(s){let k=y?.ask?.[0]?.price||"0",T=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(T).plus(a(T).mul(c)).ceil().toString()}else{let k=await y?.bid?.[0]?.price||"0",T=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(T).minus(a(T).mul(c)).floor().toString()}let b=await this._sdk.getOwnerCoinAssets(r);s?(o||(C=a(C).add(a(n)).toString()),_=this.getCoinAssets(d,C,b,p),h=this.getEmptyCoin(p,g)):(o||(S=a(S).add(a(n)).toString()),_=this.getEmptyCoin(p,d),h=this.getCoinAssets(g,S,b,p));let A=o?a(n).gt(0)?I.buildCoinForAmount(p,b,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(p,this.deepCoin.coinType):this.getEmptyCoin(p,this.deepCoin.coinType),j=[p.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),p.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),p.object(u),h,_,A,p.pure.u8(0),p.pure.u64(t),p.pure.bool(s),p.pure.bool(o),p.pure.u64(C),p.object(B)];return p.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:j}),p}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:r,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:m=Date.now()+ye}){let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),p=t.baseCoin.coinType,h=t.quoteCoin.coinType,_=new O,S=r?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",C=r?"0":n,{baseAsset:y,quoteAsset:b,feeAsset:A,haveDeposit:j}=await this.getTransactionRelatedAssets(t,C,S,c,r,u,l,e,_);if(j){v("placeLimitOrder~ deposit_then_place_limit_order_by_owner have deposit"),v("placeLimitOrder ~ deposit_then_place_limit_order_by_owner args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,baseAsset:y,quoteAsset:b,feeAsset:A.feeAsset,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:B});let k=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(t.address),_.object(e),y,b,A.feeAsset,_.pure.u8(o),_.pure.u8(0),_.pure.u64(d),_.pure.u64(n),_.pure.bool(r),_.pure.bool(l),_.pure.u64(m),_.object(B)];return _.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:k}),_}else{let k=new O;a(A.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:A.haveDepositFee,tx:k}),v("placeLimitOrder~ not have deposit"),v("placeLimitOrder ~ args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,pay_with_deep:!0,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:B});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(o),k.pure.u8(0),k.pure.u64(d),k.pure.u64(n),k.pure.bool(r),k.pure.bool(l),k.pure.u64(m),k.object(B)];return k.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:T}),k}}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O,r=await this.getMarketPrice(e),o=a(r).gt(0)?r:Math.pow(10,-1),c=Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(u),n.pure.u64(l),n.pure.bool(!1),n.object(B)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestAskprice ~ error:",t),0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O,r=await this.getMarketPrice(e),o=a(r).gt(0)?a(r).div(3).toNumber():Math.pow(10,-6),c=a(r).gt(0)?r:Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(q(u,0)),n.pure.u64(q(l,0)),n.pure.bool(!0),n.object(B)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestBidprice ~ error:",t),0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,r=new O,o=await this.getMarketPrice(e),c,u;t?(c=a(o).gt(0)?a(o).div(3).toNumber():Math.pow(10,-6),u=a(o).gt(0)?o:Math.pow(10,6)):(c=a(o).gt(0)?o:Math.pow(10,-1),u=a(o).gt(0)?a(o).mul(3).toNumber():Math.pow(10,6));let l=a(c).mul(Math.pow(10,9+n.decimals-s.decimals)).toString(),m=a(u).mul(Math.pow(10,9+n.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(q(l,0)),r.pure.u64(q(m,0)),r.pure.bool(t),r.object(B)],typeArguments:[s.coinType,n.coinType]});let g=this._sdk.sdkOptions.simulationAccount.address,d=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:r}),p=[],h=d.results[0].returnValues[0][0],_=f.vector(f.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],C=f.vector(f.u64()).parse(new Uint8Array(S));return _.forEach((y,b)=>{let A=a(y).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),j=a(C[b]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:j})}),p?.[0]?.price||0}catch(s){return v("getBestBidprice ~ error:",s),0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:r,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){let m=D(t.baseCoin.coinType),g=D(t.quoteCoin.coinType),d=new O,{baseAsset:p,quoteAsset:h,feeAsset:_}=await this.getMarketTransactionRelatedAssets(t,s,n,o,r,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(r){let b=S?.ask?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).plus(a(A).mul(l)).ceil().toString()}else{let b=await S?.bid?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).minus(a(A).mul(l)).floor().toString()}let C=n;console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:1450 ~ DeepbookUtilsModule ~ placeMarketOrder ~ amountLimit:",{amountLimit:C,quoteQuantity:n});let y=[d.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),d.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),d.object(t.address),d.object(e),p,h,_,d.pure.u8(0),d.pure.u64(s),d.pure.bool(r),d.pure.bool(u),d.pure.u64(C),d.object(B)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[m,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:y}),d}async getOpenOrderFromDeepbook(e,t){let s=this._sdk.fullClient,n=new fe({client:s,address:e,env:"testnet",balanceManagers:{test1:{address:t,tradeCap:""}}}),r=await n.accountOpenOrders("DEEP_SUI","test1"),o=await n.getOrder("DEEP_SUI","1844674407389401905673709551611")}async getOrderInfoList(e,t,s){try{let n=new O;t.forEach(m=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(m)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=f.struct("ID",{bytes:f.Address}),c=f.struct("OrderDeepPrice",{asset_is_base:f.bool(),deep_per_asset:f.u64()}),u=f.struct("Order",{balance_manager_id:o,order_id:f.u128(),client_order_id:f.u64(),quantity:f.u64(),filled_quantity:f.u64(),fee_is_deep:f.bool(),order_deep_price:c,epoch:f.u64(),status:f.u8(),expire_timestamp:f.u64()}),l=[];return r?.results?.forEach(m=>{let g=m.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch(n){return v("getOrderInfoList ~ error:",n),[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),s=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),n=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:s,orderId:n}}async getOpenOrder(e,t,s,n){let r;if(n)r=n;else{let u=new O;u.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[u.object(e.address),u.object(s)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let m=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:u})).results[0].returnValues[0][0];r=f.struct("VecSet",{constants:f.vector(f.U128)}).parse(new Uint8Array(m)).constants,v("getOpenOrder ~ orderIds:",r)}let o=await this.getOrderInfoList(e,r,t)||[];v("getOpenOrder ~ orderInfoList:",o);let c=[];return o.forEach(u=>{let l=this.decodeOrderId(BigInt(u.order_id));c.push({...u,price:l.price,isBid:l.isBid})}),c}cancelOrders(e,t){let s=new O;return e.forEach(n=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(t),s.object(n.poolInfo.address),s.pure.u128(n.orderId),s.object(B)],typeArguments:[n.poolInfo.baseCoin.coinType,n.poolInfo.quoteCoin.coinType]})}),s}async getDeepbookOrderBook(e,t,s,n,r,o){let c=this._sdk.fullClient,l=await new fe({client:c,address:r,env:"testnet",balanceManagers:{test1:{address:o,tradeCap:""}}}).getLevel2Range(e,t,s,n)}processOrderBookData(e,t,s,n){let r=e.returnValues[0][0],o=f.vector(f.u64()).parse(new Uint8Array(r)),c=e.returnValues[1][0],u=f.vector(f.u64()).parse(new Uint8Array(c)),l={};return o.forEach((g,d)=>{let p=q(a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),n),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[p]?l[p]={price:p,quantity:a(l[p].quantity).add(h).toString()}:l[p]={price:p,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,r=new O){let{baseCoin:o,quoteCoin:c}=e,u=q(a(s).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0),l=q(a(n).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0);return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(u),r.pure.u64(l),r.pure.bool(t),r.object(B)],typeArguments:[o.coinType,c.coinType]}),r}async fetchOrderBook(e,t,s,n,r,o){let c=new O,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,_=s==="0"?r:s;c=this.getLevel2RangeTx(e,!0,h,_,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,_=r;c=this.getLevel2RangeTx(e,!1,h,_,c)}let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let p=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;p=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,_)=>_.price-h.price),ask:p.sort((h,_)=>h.price-_.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],p=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});p=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{p=[]}return{bid:d,ask:p}}}async getOrderBook(e,t,s){let n={bid:[],ask:[]};try{let r=await this.getMarketPrice(e),o=t,c=Math.pow(10,-s),u=Math.pow(10,s),l=await this.fetchOrderBook(e,o,r,c,u,s);return{bid:l?.bid,ask:l?.ask}}catch{return n}}async getOrderBookOrigin(e,t){try{let s=new O,n=await this.getMarketPrice(e),{baseCoin:r,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!0),s.object(B)],typeArguments:[r.coinType,o.coinType]})}if(t==="ask"||t==="all"){let g=n,d=Math.pow(10,6),p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!1),s.object(B)],typeArguments:[r.coinType,o.coinType]})}let c=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.devInspectTransactionBlock({sender:c,transactionBlock:s}),l=[];if(t==="bid"||t==="all"){let g=u.results[0]?.returnValues[0]?.[0],d=f.vector(f.u64()).parse(new Uint8Array(g)),p=u.results[0]?.returnValues[1]?.[0],h=f.vector(f.u64()).parse(new Uint8Array(p));d.forEach((_,S)=>{let C=a(_).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),y=a(h[S]).div(Math.pow(10,r.decimals)).toString();l.push({price:C,quantity:y})})}let m=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],p=f.vector(f.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],_=f.vector(f.u64()).parse(new Uint8Array(h));p.forEach((S,C)=>{let y=a(S).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),b=a(_[C]).div(Math.pow(10,r.decimals)).toString();m.push({price:y,quantity:b})})}return{bid:l,ask:m}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,r)=>[D(n.coinType),n]))}async getAccount(e,t){let s=new O;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:"0xade998d24db74df75d96646e1ce7bb996587ce28747b4db600b5ccd82e00cb5a::order_trader::get_account_id",arguments:[s.object(u.address),s.object(e)],typeArguments:[u.baseCoin.coinType,u.quoteCoin.coinType]})}let n=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:s});console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1808 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ devInspectRes:",JSON.stringify(n,null,2));let r;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{r=c?.parsedJson,console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1816 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ eventData:",JSON.stringify(r,null,2));let l=r.account.open_orders.contents,m=r.account.owed_balances,g=r.account.settled_balances,d=r.account.unclaimed_rebates,p=r.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:m,settled_balances:g,unclaimed_rebates:d,taker_volume:p,poolInfo:t[u]})}),o}async getSuiTransactionResponse(e,t=!1){let s=`${e}_getSuiTransactionResponse`,n=this.getCache(s,t);if(n!==void 0)return n;let r;try{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(s,r,U),r}transformExtensions(e,t,s=!0){let n=[];for(let r of t){let{key:o}=r.fields,{value:c}=r.fields;if(o==="labels")try{c=JSON.parse(decodeURIComponent(Le.decode(c)))}catch{}s&&(e[o]=c),n.push({key:o,value:c})}delete e.extension_fields,s||(e.extensions=n)}async getCoinConfigs(e=!1,t=!0){let s=this.sdk.sdkOptions.coinlist.handle,n=`${s}_getCoinConfigs`,r=this.getCache(n,e);if(r)return r;let c=(await this._sdk.fullClient.getDynamicFieldsByPage(s)).data.map(m=>m.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(m=>{let g=this.buildCoinConfig(m,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,U),l.push({...g})}),this.updateCache(n,l,U),l}buildCoinConfig(e,t=!0){let s=ge(e);s=s.value.fields;let n={...s};return n.id=pe(e),n.address=E(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=Ve(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=re){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Z=class{_cache={};_rpcModule;_deepbookUtils;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new K({url:e.fullRpcUrl}),this._deepbookUtils=new H(this),Y(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,s=!0){let n=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,c=this.getCache(o,s);if(c)return c;for(;;){let u=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:r}):this.fullClient.getAllCoins({owner:e,cursor:r}));if(u.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:E(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),r=u.nextCursor,!u.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(e,t){let s=[];return t?s=[await this.fullClient.getBalance({owner:e,coinType:t})]:s=[...await this.fullClient.getAllBalances({owner:e})],s}updateCache(e,t,s=U){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Rn="0x0000000000000000000000000000000000000000000000000000000000000006",In="pool_script",qn="pool_script_v2",Un="router",Fn="router_with_partner",Nn="fetcher_script",$n="expect_swap",Ln="utils",Vn="0x1::coin::CoinInfo",Gn="0x1::coin::CoinStore",Kn="custodian_v2",Hn="clob_v2",Zn="endpoints_v2",Qn=i=>{if(typeof i=="string"&&i.startsWith("0x"))return"object";if(typeof i=="number"||typeof i=="bigint")return"u64";if(typeof i=="boolean")return"bool";throw new Error(`Unknown type for value: ${i}`)};var He=(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))(He||{});var os=Z;export{Rn as CLOCK_ADDRESS,N as CachedContent,Z as CetusClmmSDK,$n as ClmmExpectSwapModule,Nn as ClmmFetcherModule,In as ClmmIntegratePoolModule,qn as ClmmIntegratePoolV2Module,Un as ClmmIntegrateRouterModule,Fn as ClmmIntegrateRouterWithPartnerModule,Ln as ClmmIntegrateUtilsModule,w as CoinAssist,Vn as CoinInfoAddress,Gn as CoinStoreAddress,ne as DEEP_SCALAR,We as DEFAULT_GAS_BUDGET_FOR_MERGE,Je as DEFAULT_GAS_BUDGET_FOR_SPLIT,et as DEFAULT_GAS_BUDGET_FOR_STAKE,Ye as DEFAULT_GAS_BUDGET_FOR_TRANSFER,Xe as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,nt as DEFAULT_NFT_TRANSFER_GAS_FEE,Hn as DeepbookClobV2Moudle,Kn as DeepbookCustodianV2Moudle,Zn as DeepbookEndpointsV2Moudle,H as DeepbookUtilsModule,M as FLOAT_SCALAR,tt as GAS_SYMBOL,z as GAS_TYPE_ARG,ie as GAS_TYPE_ARG_LONG,ht as NORMALIZED_SUI_COIN_TYPE,He as OrderType,K as RpcModule,st as SUI_SYSTEM_STATE_OBJECT_ID,I as TransactionUtil,oe as addHexPrefix,Vt as asIntN,Lt as asUintN,at as bufferToHex,U as cacheTime24h,re as cacheTime5min,ot as checkAddress,ce as composeType,a as d,X as decimalsMultiplier,os as default,bt as extractAddressFromType,E as extractStructTagFromType,_t as fixCoinType,q as fixDown,Pe as fixSuiObjectId,F as fromDecimalsAmount,Qn as getDefaultSuiInputType,$ as getFutureTime,te as getMoveObject,Ne as getMoveObjectType,vt as getMovePackageContent,Ie as getObjectDeletedResponse,Pt as getObjectDisplay,ge as getObjectFields,pe as getObjectId,qe as getObjectNotExistsResponse,Et as getObjectOwner,Mt as getObjectPreviousTransactionDigest,de as getObjectReference,Dt as getObjectType,Bt as getObjectVersion,L as getSuiObjectData,Rt as hasPublicTransfer,ct as hexToNumber,ut as hexToString,mt as isSortedSymbols,Ue as isSuiObjectResponse,ee as maxDecimal,Q as normalizeCoinType,Y as patchFixSuiObjectId,Tt as printTransaction,J as removeHexPrefix,Gt as secretKeyToEd25519Keypair,Kt as secretKeyToSecp256k1Keypair,it as shortAddress,Te as shortString,xe as toBuffer,$t as toDecimalsAmount,je as utf8to16};
1
+ var ke=Object.defineProperty;var Se=(i,e,t)=>e in i?ke(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var se=(i,e,t)=>(Se(i,typeof e!="symbol"?e+"":e,t),t);var re=5*60*1e3,U=24*60*60*1e3;function $(i){return Date.parse(new Date().toString())+i}var N=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{normalizeSuiObjectId as W,normalizeStructTag as Be,SUI_TYPE_ARG as ve}from"@mysten/sui/utils";var Ae="0x2::coin::Coin",Oe=/^0x2::coin::Coin<(.+)>$/,Je=1e3,We=500,Ye=100,Xe=100,et=1e3,z="0x2::sui::SUI",ie="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",tt="SUI",nt=450,st="0x0000000000000000000000000000000000000005",w=class{static getCoinTypeArg(e){let t=e.type.match(Oe);return t?t[1]:null}static isSUI(e){let t=w.getCoinTypeArg(e);return t?w.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 s=BigInt(0);return e.forEach(n=>{t===n.coinAddress&&(s+=BigInt(n.balance))}),s}static getID(e){return e.fields.id.id}static getCoinTypeFromArg(e){return`${Ae}<${e}>`}static getCoinAssets(e,t){let s=[];return t.forEach(n=>{Z(n.coinAddress)===Z(e)&&s.push(n)}),s}static isSuiCoin(e){return E(e).full_address===z}static selectCoinObjectIdGreaterThanOrEqual(e,t,s=[]){let n=w.selectCoinAssetGreaterThanOrEqual(e,t,s),r=n.selectedCoins.map(u=>u.coinObjectId),o=n.remainingCoins,c=n.selectedCoins.map(u=>u.balance.toString());return{objectArray:r,remainCoins:o,amountArray:c}}static selectCoinAssetGreaterThanOrEqual(e,t,s=[]){let n=w.sortByBalance(e.filter(l=>!s.includes(l.coinObjectId))),r=w.calculateTotalBalance(n);if(r<t)return{selectedCoins:[],remainingCoins:n};if(r===t)return{selectedCoins:n,remainingCoins:[]};let o=BigInt(0),c=[],u=[...n];for(;o<r;){let l=t-o,m=u.findIndex(d=>d.balance>=l);if(m!==-1){c.push(u[m]),u.splice(m,1);break}let g=u.pop();g.balance>0&&(c.push(g),o+=g.balance)}return{selectedCoins:w.sortByBalance(c),remainingCoins:w.sortByBalance(u)}}static sortByBalance(e){return e.sort((t,s)=>t.balance<s.balance?-1:t.balance>s.balance?1:0)}static sortByBalanceDes(e){return e.sort((t,s)=>t.balance>s.balance?-1:t.balance<s.balance?0:1)}static calculateTotalBalance(e){return e.reduce((t,s)=>t+s.balance,BigInt(0))}};var we=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function oe(i){return i.startsWith("0x")?i:`0x${i}`}function J(i){return i.startsWith("0x")?`${i.slice(2)}`:i}function Te(i,e=4,t=4){let s=Math.max(e,1),n=Math.max(t,1);return`${i.slice(0,s+2)} ... ${i.slice(-n)}`}function it(i,e=4,t=4){return Te(oe(i),e,t)}function ot(i,e={leadingZero:!0}){if(typeof i!="string")return!1;let t=i;if(e.leadingZero){if(!i.startsWith("0x"))return!1;t=t.substring(2)}return we.test(t)}function xe(i){if(!Buffer.isBuffer(i))if(Array.isArray(i))i=Buffer.from(i);else if(typeof i=="string")exports.isHexString(i)?i=Buffer.from(exports.padToEven(exports.stripHexPrefix(i)),"hex"):i=Buffer.from(i);else if(typeof i=="number")i=exports.intToBuffer(i);else if(i==null)i=Buffer.allocUnsafe(0);else if(i.toArray)i=Buffer.from(i.toArray());else throw new Error("invalid type");return i}function at(i){return oe(xe(i).toString("hex"))}function ct(i){let e=new ArrayBuffer(4),t=new DataView(e);for(let n=0;n<i.length;n++)t.setUint8(n,i.charCodeAt(n));return t.getUint32(0,!0)}function je(i){let e,t,s,n,r;e="";let o=i.length;for(t=0;t<o;)switch(s=i.charCodeAt(t++),s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=i.charAt(t-1);break;case 12:case 13:n=i.charCodeAt(t++),e+=String.fromCharCode((s&31)<<6|n&63);break;case 14:n=i.charCodeAt(t++),r=i.charCodeAt(t++),e+=String.fromCharCode((s&15)<<12|(n&63)<<6|(r&63)<<0);break}return e}function ut(i){let e="",t=J(i),s=t.length/2;for(let n=0;n<s;n++)e+=String.fromCharCode(parseInt(t.substr(n*2,2),16));return je(e)}var De=0,ue=1,Me=2;function ae(i,e){return i===e?De:i<e?ue:Me}function Ee(i,e){let t=0,s=i.length<=e.length?i.length:e.length,n=ae(i.length,e.length);for(;t<s;){let r=ae(i.charCodeAt(t),e.charCodeAt(t));if(t+=1,r!==0)return r}return n}function mt(i,e){return Ee(i,e)===ue}function ce(i,...e){let t=Array.isArray(e[e.length-1])?e.pop():[],n=[i,...e].filter(Boolean).join("::");return t&&t.length&&(n+=`<${t.join(", ")}>`),n}function bt(i){return i.split("::")[0]}function E(i){try{let e=i.replace(/\s/g,""),s=e.match(/(<.+>)$/)?.[0]?.match(/(\w+::\w+::\w+)(?:<.*?>(?!>))?/g);if(s){e=e.slice(0,e.indexOf("<"));let u={...E(e),type_arguments:s.map(l=>E(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>w.isSuiCoin(l)?l:E(l).source_address),u.source_address=ce(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===z||e===ie?"0x2":W(n[0]),module:n[1],name:n[2],type_arguments:[],source_address:""};return o.full_address=`${o.address}::${o.module}::${o.name}`,o.source_address=ce(o.full_address,o.type_arguments),o}catch{return{full_address:i,address:"",module:"",name:"",type_arguments:[],source_address:i}}}function Z(i){return E(i).source_address}function Pe(i){return i.toLowerCase().startsWith("0x")?W(i):i}var _t=(i,e=!0)=>{let t=i.split("::"),s=t.shift(),n=W(s);return e&&(n=J(n)),`${n}::${t.join("::")}`};function Y(i){for(let e in i){let t=typeof i[e];if(t==="object")Y(i[e]);else if(t==="string"){let s=i[e];i[e]=Pe(s)}}}var ht=Be(ve);import le from"decimal.js";le.config({precision:64,rounding:le.ROUND_DOWN,toExpNeg:-64,toExpPos:64});import G from"decimal.js";function a(i){return G.isDecimal(i)?i:new G(i===void 0?0:i)}function X(i){return a(10).pow(a(i).abs())}var q=(i,e)=>{try{return a(i).toDP(e,G.ROUND_DOWN).toString()}catch{return i}},ee=(i,e)=>G.max(a(i),a(e));import{Transaction as Re}from"@mysten/sui/transactions";async function Tt(i,e=!0){i.blockData.transactions.forEach((t,s)=>{})}var R=class{static async adjustTransactionForGas(e,t,s,n){n.setSender(e.senderAddress);let r=w.selectCoinAssetGreaterThanOrEqual(t,s).selectedCoins;if(r.length===0)throw new Error("Insufficient balance");let o=w.calculateTotalBalance(t);if(o-s>1e9)return{fixAmount:s};let c=await e.fullClient.calculationTxGas(n);if(w.selectCoinAssetGreaterThanOrEqual(t,BigInt(c),r.map(l=>l.coinObjectId)).selectedCoins.length===0){let l=BigInt(c)+BigInt(500);if(o-s<l){if(s-=l,s<0)throw new Error("gas Insufficient balance");let m=new Re;return{fixAmount:s,newTx:m}}}return{fixAmount:s}}static buildCoinForAmount(e,t,s,n,r=!0,o=!1){let c=w.getCoinAssets(n,t);if(s===BigInt(0)&&c.length===0)return R.buildZeroValueCoin(t,e,n,r);let u=w.calculateTotalBalance(c);if(u<s)throw new Error(`The amount(${u}) is Insufficient balance for ${n} , expect ${s} `);return R.buildCoin(e,t,c,s,n,r,o)}static buildCoin(e,t,s,n,r,o=!0,c=!1){if(w.isSuiCoin(r)){if(o){let b=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[b]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let b=w.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(b.objectArray[0]),remainCoins:b.remainCoins,tragetCoinAmount:b.amountArray[0],isMintZeroCoin:!1}}let C=w.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:C.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=w.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),m=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:m.map(C=>e.object(C))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),isMintZeroCoin:!1};let[g,...d]=m,p=e.object(g),h=p,_=u.amountArray.reduce((C,y)=>Number(C)+Number(y),0).toString(),S;return d.length>0&&e.mergeCoins(p,d.map(C=>e.object(C))),c&&Number(l)>Number(n)&&(h=e.splitCoins(p,[e.pure.u64(n)]),_=n.toString(),S=p),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:_,isMintZeroCoin:!1}}static buildZeroValueCoin(e,t,s,n=!0){let r=R.callMintZeroValueCoin(t,s),o;return n?o=t.makeMoveVec({elements:[r]}):o=r,{targetCoin:o,remainCoins:e,isMintZeroCoin:!0,tragetCoinAmount:"0"}}static buildCoinForAmountInterval(e,t,s,n,r=!0){let o=w.getCoinAssets(n,t);if(s.amountFirst===BigInt(0))return o.length>0?R.buildCoin(e,[...t],[...o],s.amountFirst,n,r):R.buildZeroValueCoin(t,e,n,r);let c=w.calculateTotalBalance(o);if(c>=s.amountFirst)return R.buildCoin(e,[...t],[...o],s.amountFirst,n,r);if(c<s.amountSecond)throw new Error(`The amount(${c}) is Insufficient balance for ${n} , expect ${s.amountSecond} `);return R.buildCoin(e,[...t],[...o],s.amountSecond,n,r)}static buildCoinTypePair(e,t){let s=[];if(e.length===2){let n=[];n.push(e[0],e[1]),s.push(n)}else{let n=[];n.push(e[0],e[e.length-1]),s.push(n);for(let r=1;r<e.length-1;r+=1){if(t[r-1]===0)continue;let o=[];o.push(e[0],e[r],e[e.length-1]),s.push(o)}}return s}},I=R;se(I,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function L(i){return i.data}function Ie(i){if(i.error&&"object_id"in i.error&&"version"in i.error&&"digest"in i.error){let{error:e}=i;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function qe(i){if(i.error&&"object_id"in i.error&&!("version"in i.error)&&!("digest"in i.error))return i.error.object_id}function de(i){if("reference"in i)return i.reference;let e=L(i);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Ie(i)}function pe(i){return"objectId"in i?i.objectId:de(i)?.objectId??qe(i)}function Bt(i){return"version"in i?i.version:de(i)?.version}function Ue(i){return i.data!==void 0}function Fe(i){return i.content!==void 0}function vt(i){let e=L(i);if(e?.content?.dataType==="package")return e.content.disassembled}function te(i){let e="data"in i?L(i):i;if(!(!e||!Fe(e)||e.content.dataType!=="moveObject"))return e.content}function Ne(i){return te(i)?.type}function Dt(i){let e=Ue(i)?i.data:i;return!e?.type&&"data"in i?e?.content?.dataType==="package"?"package":Ne(i):e?.type}function Mt(i){return L(i)?.previousTransaction}function Et(i){return L(i)?.owner}function Pt(i){let e=L(i)?.display;return e||{data:null,error:null}}function ge(i){let e=te(i)?.fields;if(e)return"fields"in e?e.fields:e}function Rt(i){return te(i)?.hasPublicTransfer??!1}import{fromB64 as _e,fromHEX as he}from"@mysten/bcs";import{Ed25519Keypair as me}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as be}from"@mysten/sui/keypairs/secp256k1";function $t(i,e){let t=X(a(e));return Number(a(i).mul(t))}function Lt(i,e=32){return BigInt.asUintN(e,BigInt(i)).toString()}function Vt(i,e=32){return Number(BigInt.asIntN(e,BigInt(i)))}function F(i,e){let t=X(a(e));return Number(a(i).div(t))}function Gt(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return me.fromSecretKey(s)}let t=e==="hex"?he(i):_e(i);return me.fromSecretKey(t)}function Kt(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return be.fromSecretKey(s)}let t=e==="hex"?he(i):_e(i);return be.fromSecretKey(t)}import{SuiClient as $e}from"@mysten/sui/client";var K=class extends $e{async queryEventsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.queryEvents({query:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async getOwnedObjectsByPage(e,t,s="all"){let n=[],r=!0,o=s==="all",c=o?null:s.cursor;do{let u=await this.getOwnedObjects({owner:e,...t,cursor:c,limit:o?null:s.limit});u.data?(n=[...n,...u.data],r=u.hasNextPage,c=u.nextCursor):r=!1}while(o&&r);return{data:n,nextCursor:c,hasNextPage:r}}async getDynamicFieldsByPage(e,t="all"){let s=[],n=!0,r=t==="all",o=r?null:t.cursor;do{let c=await this.getDynamicFields({parentId:e,cursor:o,limit:r?null:t.limit});c.data?(s=[...s,...c.data],n=c.hasNextPage,o=c.nextCursor):n=!1}while(r&&n);return{data:s,nextCursor:o,hasNextPage:n}}async batchGetObjects(e,t,s=50){let n=[];try{for(let r=0;r<Math.ceil(e.length/s);r++){let o=await this.multiGetObjects({ids:e.slice(r*s,s*(r+1)),options:t});n=[...n,...o]}}catch{}return n}async calculationTxGas(e){let{sender:t}=e.blockData;if(t===void 0)throw Error("sdk sender is empty");let s=await this.devInspectTransactionBlock({transactionBlock:e,sender:t}),{gasUsed:n}=s.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{}}};import{DeepBookClient as fe}from"@mysten/deepbook-v3";import{bcs as f}from"@mysten/sui/bcs";import{Base64 as Le}from"js-base64";import{Transaction as O,coinWithBalance as Ce}from"@mysten/sui/transactions";import{normalizeStructTag as D,SUI_CLOCK_OBJECT_ID as B,normalizeSuiObjectId as Ve}from"@mysten/sui/utils";function v(...i){let e="DeepbookV3_Utils_Sdk###"}var ne=1e6,M=1e9,Ge={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Ke={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},ye=1e3*60*60*24*365*100,H=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?Ke:Ge}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new O,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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;let r=new O;r.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::get_balance_managers_by_owner`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),r.pure.address(e)],typeArguments:[]});let u=(await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:r}))?.events?.filter(m=>m.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(m=>{l.push({balanceManager:m,cetusBalanceManager:""})}),this.updateCache(s,l,U),l||[]}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new O;n.setSenderIfNotSet(e);let r=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),o=Ce({type:t.coinType,balance:BigInt(s)});return n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[r,o],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),r],typeArguments:[]}),n.moveCall({target:"0x2::transfer::public_share_object",arguments:[r],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),n}depositIntoManager({account:e,balanceManager:t,coin:s,amountToDeposit:n,tx:r}){let o=r||new O;if(t){o.setSenderIfNotSet(e);let c=Ce({type:s.coinType,balance:BigInt(n)});return o.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::deposit`,arguments:[o.object(t),c],typeArguments:[s.coinType]}),o}return null}withdrawFromManager({account:e,balanceManager:t,coin:s,amountToWithdraw:n,returnAssets:r,txb:o}){let c=o||new O,u=c.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::withdraw`,arguments:[c.object(t),c.pure.u64(n)],typeArguments:[s.coinType]});return r?u:(c.transferObjects([u],e),c)}withdrawManagersFreeBalance({account:e,balanceManagers:t,tx:s=new O}){for(let n in t)t[n].forEach(o=>{let c=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::withdraw`,arguments:[s.object(n),s.pure.u64(o.amount)],typeArguments:[o.coinType]});s.transferObjects([c],e)});return s}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new O,n=s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::generate_proof_as_owner`,arguments:[s.object(t)]});return s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::withdraw_settled_amounts`,arguments:[s.object(e.address),s.object(t),n],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]}),s}async getManagerBalance({account:e,balanceManager:t,coins:s}){let n=new O;s.forEach(c=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[n.object(t)],typeArguments:[c.coinType]})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:n}),o={};return r.results?.forEach((c,u)=>{let l=s[u],m=c.returnValues[0][0],g=f.U64.parse(new Uint8Array(m)),d=a(g),p=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:p,balance:d.toString()}}),o}async getAccountAllManagerBalance({account:e,coins:t}){let s=new O,n=await this.getBalanceManager(e,!0);n.forEach(c=>{t.forEach(u=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::balance_manager::balance`,arguments:[s.object(c.balanceManager)],typeArguments:[u.coinType]})})});let r=await this.sdk.fullClient.devInspectTransactionBlock({sender:e,transactionBlock:s}),o={};return n.forEach((c,u)=>{let l={},m=u*t.length;t.forEach((g,d)=>{let p=m+d,h=r.results?.[p];if(h){let _=h.returnValues[0][0],S=f.U64.parse(new Uint8Array(_)),C=a(S),y=C.eq(0)?"0":C.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:y,balance:C.toString()}}}),o[c.balanceManager]=l}),o}async getMarketPrice(e){try{let t=new O;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(B)],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],r=Number(f.U64.parse(new Uint8Array(n))),o=Math.pow(10,e.baseCoin.decimals).toString(),c=Math.pow(10,e.quoteCoin.decimals).toString();return a(r).mul(o).div(c).div(M).toString()}catch(t){return v("getMarketPrice ~ error:",t),"0"}}async getPools(){let e=await this._sdk.fullClient?.queryEventsByPage({MoveEventModule:{module:"pool",package:this._sdk.sdkOptions.deepbook.package_id}}),t=/<([^>]+)>/,s=[];return e?.data?.forEach(n=>{let r=n?.parsedJson,o=n.type.match(t);if(o){let u=o[1].split(", ");s.push({...r,baseCoinType:u[0],quoteCoinType:u[1]})}}),s}async getQuoteQuantityOut(e,t,s){let n=new O;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(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(ne).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new O;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(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[0][0]))),c=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[1][0]))),u=String(f.U64.parse(new Uint8Array(r.results[0].returnValues[2][0])));return{quoteQuantityDisplay:a(t).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(o).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(c).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(u).div(ne).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let r=new O;r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quantity_out`,arguments:[r.object(e.address),r.pure.u64(t),r.pure.u64(s),r.object(B)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let o=await this._sdk.fullClient.devInspectTransactionBlock({sender:n,transactionBlock:r}),c=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[0][0]))),u=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[1][0]))),l=Number(f.U64.parse(new Uint8Array(o.results[0].returnValues[2][0])));return{baseQuantityDisplay:a(t).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteQuantityDisplay:a(s).div(Math.pow(10,e.quoteCoin.decimals)).toString(),baseOutDisplay:a(c).div(Math.pow(10,e.baseCoin.decimals)).toString(),quoteOutDisplay:a(u).div(Math.pow(10,e.quoteCoin.decimals)).toString(),deepRequiredDisplay:a(l).div(ne).toString(),baseQuantity:t,quoteQuantity:s,baseOut:c,quoteOut:u,deepRequired:l}}async estimatedMaxFee(e,t,s,n,r,o,c){let u=this.deepCoin,{taker_fee:l,maker_fee:m}=e,g=a(l).div(M).toString(),d=a(m).div(M).toString(),p=await this.getMarketPrice(e),h=o?s:p!=="0"?p:c;if(h==="0")throw new Error("Cannot get market price");let _=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),C=a(h).div(_).mul(S).mul(M).toString();if(n){let y=await this.getMarketPrice(e),A=a(o?s:y!=="0"?y:c).div(_).mul(S).mul(M).toString(),j=await this.getOrderDeepPrice(e);if(!j)throw new Error("Cannot get deep price");let k=ee(A,s),T=a(t).mul(a(g)).mul(a(j.deep_per_asset)).div(a(M)),x=a(t).mul(a(d)).mul(a(j.deep_per_asset)).div(a(M));j.asset_is_base||(T=T.mul(k).div(a(M)),x=x.mul(k).div(a(M)));let V=T.ceil().toString(),P=x.ceil().toString();return{takerFee:V,makerFee:P,takerFeeDisplay:F(V,u.decimals).toString(),makerFeeDisplay:F(P,u.decimals).toString(),feeType:u.coinType}}else if(r){let y=ee(C,s),b=a(t).mul(y).mul(g).div(a(M)).ceil().toFixed(0),A=a(t).mul(y).mul(d).div(a(M)).ceil().toFixed(0);return{takerFee:b,makerFee:A,takerFeeDisplay:F(b,e.quoteCoin.decimals).toString(),makerFeeDisplay:F(A,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}else{let y=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),b=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:y,makerFee:b,takerFeeDisplay:F(y,e.baseCoin.decimals).toString(),makerFeeDisplay:F(b,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}}async getOrderDeepPrice(e){try{let t=new O;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(t){return v("getMarketPrice ~ error:",t),null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),s=t.getUint8(0)!==0,n=Number(t.getBigUint64(1,!0));return{asset_is_base:s,deep_per_asset:n}}getCoinAssets(e,t,s,n){return I.buildCoinForAmount(n,s,BigInt(a(t).abs().ceil().toString()),e,!1,!0).targetCoin}async getTransactionRelatedBalance(e,t,s,n,r,o,c){let u=this.deepCoin;if(!c)return{baseManagerBlance:"0",quoteManagerBlance:"0",feeManaerBalance:"0"};let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let m=await this.getManagerBalance({account:r,balanceManager:c,coins:l}),g=m?.[t]?.balance||"0",d=m?.[s]?.balance||"0",p=o&&m?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:p}}getFeeAsset(e,t,s,n,r,o,c,u,l,m){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(m,t),haveDepositFee:"0"};if(o||c){let p=a(r).sub(o?n:s);d=p.lte(0)?e:p.sub(e).lt(0)?p.sub(e).toString():"0"}else d=a(r).sub(e).lt("0")?a(r).sub(e).abs().toString():"0";return{feeAsset:a(d).gt("0")?this.getCoinAssets(t,d,u,m):this.getEmptyCoin(m,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=D(e.baseCoin.coinType),d=D(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C,feeManaerBalance:y}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),b,A,j=!1,k=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let x=a(C).sub(s).toString();a(x).lt(0)?(j=!0,A=this.getCoinAssets(d,x,k,l)):A=this.getEmptyCoin(l,d),b=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let x=a(S).sub(t).toString();a(x).lt(0)?(j=!0,b=this.getCoinAssets(g,x,k,l)):b=this.getEmptyCoin(l,g),A=this.getEmptyCoin(l,d)}let T=this.getFeeAsset(n,m.coinType,t,s,y,h,p,k,c,l);return{baseAsset:b,quoteAsset:A,feeAsset:T,haveDeposit:j}}async getMarketTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){let m=this.deepCoin,g=D(e.baseCoin.coinType),d=D(e.quoteCoin.coinType),p=g===m.coinType,h=d===m.coinType,_=!p&&!h,{baseManagerBlance:S,quoteManagerBlance:C}=await this.getTransactionRelatedBalance(e,g,d,_,o,c,u),y,b,A=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let k=a(C).sub(s).toString();if(a(k).lt(0)){let T;a(C).gt(0)&&(T=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:C,returnAssets:!0,txb:l}));let x=this.getCoinAssets(d,k,A,l);T&&l.mergeCoins(x,[T]),b=x}else b=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});y=this.getEmptyCoin(l,g)}else{c||(t=a(t).add(a(n)).toString());let k=a(S).sub(t).toString();if(a(k).lt(0)){let T;a(S).gt(0)&&(T=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:S,returnAssets:!0,txb:l}));let x=this.getCoinAssets(g,k,A,l);T&&l.mergeCoins(x,[T]),y=x}else y=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});b=this.getEmptyCoin(l,d)}let j=this.getEmptyCoin(l,m.coinType);return{baseAsset:y,quoteAsset:b,feeAsset:j}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:r,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+ye}){let m=this.deepCoin,g=e.address,d=e.baseCoin.decimals,p=e.quoteCoin.decimals,h=e.baseCoin.coinType,_=e.quoteCoin.coinType,S=a(t).mul(10**(p-d+9)).toString(),C=D(h),y=D(_),b=new O,A,j,k=await this._sdk.getOwnerCoinAssets(c);if(r){let P=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(P=a(P).add(a(o)).toString()),j=I.buildCoinForAmount(b,k,BigInt(P),y,!1,!0)?.targetCoin}else{let P=s;u||(P=a(s).abs().add(a(o)).toString()),A=I.buildCoinForAmount(b,k,BigInt(a(P).abs().toString()),C,!1,!0)?.targetCoin}let T=u?a(o).gt(0)?I.buildCoinForAmount(b,k,BigInt(a(o).abs().ceil().toString()),m.coinType,!1,!0).targetCoin:this.getEmptyCoin(b,m.coinType):this.getEmptyCoin(b,m.coinType),x=b.moveCall({typeArguments:[r?h:_],target:"0x2::coin::zero",arguments:[]}),V=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(g),r?x:A,r?j:x,T,b.pure.u8(n),b.pure.u8(0),b.pure.u64(S),b.pure.u64(s),b.pure.bool(r),b.pure.bool(!1),b.pure.u64(l),b.object(B)];return b.moveCall({typeArguments:[C,y],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:V}),b}getEmptyCoin(e,t){return e.moveCall({typeArguments:[t],target:"0x2::coin::zero",arguments:[]})}async createDepositThenPlaceMarketOrder({poolInfo:e,quantity:t,isBid:s,maxFee:n,account:r,payWithDeep:o,slippage:c=.01}){let u=e.address,l=e.baseCoin.coinType,m=e.quoteCoin.coinType,g=D(l),d=D(m),p=new O,h,_,S=t,C,y=await this.getOrderBook(e,"all",6);if(s){let k=y?.ask?.[0]?.price||"0",T=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(T).plus(a(T).mul(c)).ceil().toString()}else{let k=await y?.bid?.[0]?.price||"0",T=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();C=a(T).minus(a(T).mul(c)).floor().toString()}let b=await this._sdk.getOwnerCoinAssets(r);s?(o||(C=a(C).add(a(n)).toString()),_=this.getCoinAssets(d,C,b,p),h=this.getEmptyCoin(p,g)):(o||(S=a(S).add(a(n)).toString()),_=this.getEmptyCoin(p,d),h=this.getCoinAssets(g,S,b,p));let A=o?a(n).gt(0)?I.buildCoinForAmount(p,b,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(p,this.deepCoin.coinType):this.getEmptyCoin(p,this.deepCoin.coinType),j=[p.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),p.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),p.object(u),h,_,A,p.pure.u8(0),p.pure.u64(t),p.pure.bool(s),p.pure.bool(o),p.pure.u64(C),p.object(B)];return p.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:j}),p}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:r,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:m=Date.now()+ye}){let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),p=t.baseCoin.coinType,h=t.quoteCoin.coinType,_=new O,S=r?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",C=r?"0":n,{baseAsset:y,quoteAsset:b,feeAsset:A,haveDeposit:j}=await this.getTransactionRelatedAssets(t,C,S,c,r,u,l,e,_);if(j){v("placeLimitOrder~ deposit_then_place_limit_order_by_owner have deposit"),v("placeLimitOrder ~ deposit_then_place_limit_order_by_owner args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,baseAsset:y,quoteAsset:b,feeAsset:A.feeAsset,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:B});let k=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(t.address),_.object(e),y,b,A.feeAsset,_.pure.u8(o),_.pure.u8(0),_.pure.u64(d),_.pure.u64(n),_.pure.bool(r),_.pure.bool(l),_.pure.u64(m),_.object(B)];return _.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:k}),_}else{let k=new O;a(A.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:A.haveDepositFee,tx:k}),v("placeLimitOrder~ not have deposit"),v("placeLimitOrder ~ args: ",{global_config_id:this._sdk.sdkOptions.deepbook_utils.global_config_id,cetus_balance_manager_indexer_id:this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id,poolId:t.address,balanceManager:e,order_type:0,self_matching_option:0,price:d,quantity:n,is_bid:r,pay_with_deep:!0,expirationTimestamp:m,SUI_CLOCK_OBJECT_ID:B});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(o),k.pure.u8(0),k.pure.u64(d),k.pure.u64(n),k.pure.bool(r),k.pure.bool(l),k.pure.u64(m),k.object(B)];return k.moveCall({typeArguments:[p,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:T}),k}}modifyOrder({balanceManager:e,poolInfo:t,orderId:s,newOrderQuantity:n}){let r=new O;return r.moveCall({typeArguments:[t.baseCoin.coinType,t.quoteCoin.coinType],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::modify_order`,arguments:[r.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),r.object(e),r.object(t.address),r.pure.u128(s),r.pure.u64(n),r.object(B)]}),r}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O,r=await this.getMarketPrice(e),o=a(r).gt(0)?r:Math.pow(10,-1),c=Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(u),n.pure.u64(l),n.pure.bool(!1),n.object(B)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestAskprice ~ error:",t),0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new O,r=await this.getMarketPrice(e),o=a(r).gt(0)?a(r).div(3).toNumber():Math.pow(10,-6),c=a(r).gt(0)?r:Math.pow(10,6),u=a(o).mul(Math.pow(10,9+s.decimals-t.decimals)).toString(),l=a(c).mul(Math.pow(10,9+s.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(q(u,0)),n.pure.u64(q(l,0)),n.pure.bool(!0),n.object(B)],typeArguments:[t.coinType,s.coinType]});let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:n}),d=[],p=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(p)),_=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(_));return h.forEach((C,y)=>{let b=a(C).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),A=a(S[y]).div(Math.pow(10,t.decimals)).toString();d.push({price:b,quantity:A})}),d?.[0]?.price||0}catch(t){return v("getBestBidprice ~ error:",t),0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,r=new O,o=await this.getMarketPrice(e),c,u;t?(c=a(o).gt(0)?a(o).div(3).toNumber():Math.pow(10,-6),u=a(o).gt(0)?o:Math.pow(10,6)):(c=a(o).gt(0)?o:Math.pow(10,-1),u=a(o).gt(0)?a(o).mul(3).toNumber():Math.pow(10,6));let l=a(c).mul(Math.pow(10,9+n.decimals-s.decimals)).toString(),m=a(u).mul(Math.pow(10,9+n.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(q(l,0)),r.pure.u64(q(m,0)),r.pure.bool(t),r.object(B)],typeArguments:[s.coinType,n.coinType]});let g=this._sdk.sdkOptions.simulationAccount.address,d=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:r}),p=[],h=d.results[0].returnValues[0][0],_=f.vector(f.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],C=f.vector(f.u64()).parse(new Uint8Array(S));return _.forEach((y,b)=>{let A=a(y).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),j=a(C[b]).div(Math.pow(10,s.decimals)).toString();p.push({price:A,quantity:j})}),p?.[0]?.price||0}catch(s){return v("getBestBidprice ~ error:",s),0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:r,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){let m=D(t.baseCoin.coinType),g=D(t.quoteCoin.coinType),d=new O,{baseAsset:p,quoteAsset:h,feeAsset:_}=await this.getMarketTransactionRelatedAssets(t,s,n,o,r,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(r){let b=S?.ask?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).plus(a(A).mul(l)).ceil().toString()}else{let b=await S?.bid?.[0]?.price||"0",A=a(b).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(A).minus(a(A).mul(l)).floor().toString()}let C=n;console.log("\u{1F680}\u{1F680}\u{1F680} ~ deepbookUtilsModule.ts:1450 ~ DeepbookUtilsModule ~ placeMarketOrder ~ amountLimit:",{amountLimit:C,quoteQuantity:n});let y=[d.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),d.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),d.object(t.address),d.object(e),p,h,_,d.pure.u8(0),d.pure.u64(s),d.pure.bool(r),d.pure.bool(u),d.pure.u64(C),d.object(B)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[m,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:y}),d}async getOpenOrderFromDeepbook(e,t){let s=this._sdk.fullClient,n=new fe({client:s,address:e,env:"testnet",balanceManagers:{test1:{address:t,tradeCap:""}}}),r=await n.accountOpenOrders("DEEP_SUI","test1"),o=await n.getOrder("DEEP_SUI","1844674407389401905673709551611")}async getOrderInfoList(e,t,s){try{let n=new O;t.forEach(m=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(m)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]})});let r=await this._sdk.fullClient.devInspectTransactionBlock({sender:s,transactionBlock:n}),o=f.struct("ID",{bytes:f.Address}),c=f.struct("OrderDeepPrice",{asset_is_base:f.bool(),deep_per_asset:f.u64()}),u=f.struct("Order",{balance_manager_id:o,order_id:f.u128(),client_order_id:f.u64(),quantity:f.u64(),filled_quantity:f.u64(),fee_is_deep:f.bool(),order_deep_price:c,epoch:f.u64(),status:f.u8(),expire_timestamp:f.u64()}),l=[];return r?.results?.forEach(m=>{let g=m.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch(n){return v("getOrderInfoList ~ error:",n),[]}}decodeOrderId(e){let t=e>>BigInt(127)===BigInt(0),s=e>>BigInt(64)&(BigInt(1)<<BigInt(63))-BigInt(1),n=e&(BigInt(1)<<BigInt(64))-BigInt(1);return{isBid:t,price:s,orderId:n}}async getOpenOrder(e,t,s,n){let r;if(n)r=n;else{let u=new O;u.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::account_open_orders`,arguments:[u.object(e.address),u.object(s)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let m=(await this._sdk.fullClient.devInspectTransactionBlock({sender:t,transactionBlock:u})).results[0].returnValues[0][0];r=f.struct("VecSet",{constants:f.vector(f.U128)}).parse(new Uint8Array(m)).constants,v("getOpenOrder ~ orderIds:",r)}let o=await this.getOrderInfoList(e,r,t)||[];v("getOpenOrder ~ orderInfoList:",o);let c=[];return o.forEach(u=>{let l=this.decodeOrderId(BigInt(u.order_id));c.push({...u,price:l.price,isBid:l.isBid})}),c}cancelOrders(e,t){let s=new O;return e.forEach(n=>{s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::cancel_order`,arguments:[s.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),s.object(t),s.object(n.poolInfo.address),s.pure.u128(n.orderId),s.object(B)],typeArguments:[n.poolInfo.baseCoin.coinType,n.poolInfo.quoteCoin.coinType]})}),s}async getDeepbookOrderBook(e,t,s,n,r,o){let c=this._sdk.fullClient,l=await new fe({client:c,address:r,env:"testnet",balanceManagers:{test1:{address:o,tradeCap:""}}}).getLevel2Range(e,t,s,n)}processOrderBookData(e,t,s,n){let r=e.returnValues[0][0],o=f.vector(f.u64()).parse(new Uint8Array(r)),c=e.returnValues[1][0],u=f.vector(f.u64()).parse(new Uint8Array(c)),l={};return o.forEach((g,d)=>{let p=q(a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),n),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[p]?l[p]={price:p,quantity:a(l[p].quantity).add(h).toString()}:l[p]={price:p,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,r=new O){let{baseCoin:o,quoteCoin:c}=e,u=q(a(s).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0),l=q(a(n).mul(Math.pow(10,9+c.decimals-o.decimals)).toString(),0);return r.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_level2_range`,arguments:[r.object(e.address),r.pure.u64(u),r.pure.u64(l),r.pure.bool(t),r.object(B)],typeArguments:[o.coinType,c.coinType]}),r}async fetchOrderBook(e,t,s,n,r,o){let c=new O,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,_=s==="0"?r:s;c=this.getLevel2RangeTx(e,!0,h,_,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,_=r;c=this.getLevel2RangeTx(e,!1,h,_,c)}let m=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:m,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let p=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;p=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,_)=>_.price-h.price),ask:p.sort((h,_)=>h.price-_.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],p=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),_=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});p=_.results?.[0]?this.processOrderBookData(_.results[0],u,l,o):[]}catch{p=[]}return{bid:d,ask:p}}}async getOrderBook(e,t,s){let n={bid:[],ask:[]};try{let r=await this.getMarketPrice(e),o=t,c=Math.pow(10,-s),u=Math.pow(10,s),l=await this.fetchOrderBook(e,o,r,c,u,s);return{bid:l?.bid,ask:l?.ask}}catch{return n}}async getOrderBookOrigin(e,t){try{let s=new O,n=await this.getMarketPrice(e),{baseCoin:r,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!0),s.object(B)],typeArguments:[r.coinType,o.coinType]})}if(t==="ask"||t==="all"){let g=n,d=Math.pow(10,6),p=a(g).mul(Math.pow(10,9+o.decimals-r.decimals)).toString(),h=a(d).mul(Math.pow(10,9+o.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(p),s.pure.u64(h),s.pure.bool(!1),s.object(B)],typeArguments:[r.coinType,o.coinType]})}let c=this._sdk.sdkOptions.simulationAccount.address,u=await this._sdk.fullClient.devInspectTransactionBlock({sender:c,transactionBlock:s}),l=[];if(t==="bid"||t==="all"){let g=u.results[0]?.returnValues[0]?.[0],d=f.vector(f.u64()).parse(new Uint8Array(g)),p=u.results[0]?.returnValues[1]?.[0],h=f.vector(f.u64()).parse(new Uint8Array(p));d.forEach((_,S)=>{let C=a(_).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),y=a(h[S]).div(Math.pow(10,r.decimals)).toString();l.push({price:C,quantity:y})})}let m=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],p=f.vector(f.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],_=f.vector(f.u64()).parse(new Uint8Array(h));p.forEach((S,C)=>{let y=a(S).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),b=a(_[C]).div(Math.pow(10,r.decimals)).toString();m.push({price:y,quantity:b})})}return{bid:l,ask:m}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,r)=>[D(n.coinType),n]))}async getAccount(e,t){let s=new O;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:"0xade998d24db74df75d96646e1ce7bb996587ce28747b4db600b5ccd82e00cb5a::order_trader::get_account_id",arguments:[s.object(u.address),s.object(e)],typeArguments:[u.baseCoin.coinType,u.quoteCoin.coinType]})}let n=await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:s});console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1808 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ devInspectRes:",JSON.stringify(n,null,2));let r;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{r=c?.parsedJson,console.log("\u{1F680} ~ file: deepbookUtilsModule.ts:1816 ~ DeepbookUtilsModule ~ getSettleBalancesAccount ~ eventData:",JSON.stringify(r,null,2));let l=r.account.open_orders.contents,m=r.account.owed_balances,g=r.account.settled_balances,d=r.account.unclaimed_rebates,p=r.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:m,settled_balances:g,unclaimed_rebates:d,taker_volume:p,poolInfo:t[u]})}),o}async getSuiTransactionResponse(e,t=!1){let s=`${e}_getSuiTransactionResponse`,n=this.getCache(s,t);if(n!==void 0)return n;let r;try{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showBalanceChanges:!0,showInput:!0,showObjectChanges:!0}})}catch{r=await this._sdk.fullClient.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0}})}return this.updateCache(s,r,U),r}transformExtensions(e,t,s=!0){let n=[];for(let r of t){let{key:o}=r.fields,{value:c}=r.fields;if(o==="labels")try{c=JSON.parse(decodeURIComponent(Le.decode(c)))}catch{}s&&(e[o]=c),n.push({key:o,value:c})}delete e.extension_fields,s||(e.extensions=n)}async getCoinConfigs(e=!1,t=!0){let s=this.sdk.sdkOptions.coinlist.handle,n=`${s}_getCoinConfigs`,r=this.getCache(n,e);if(r)return r;let c=(await this._sdk.fullClient.getDynamicFieldsByPage(s)).data.map(m=>m.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(m=>{let g=this.buildCoinConfig(m,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,U),l.push({...g})}),this.updateCache(n,l,U),l}buildCoinConfig(e,t=!0){let s=ge(e);s=s.value.fields;let n={...s};return n.id=pe(e),n.address=E(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=Ve(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=re){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Q=class{_cache={};_rpcModule;_deepbookUtils;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new K({url:e.fullRpcUrl}),this._deepbookUtils=new H(this),Y(this._sdkOptions)}get senderAddress(){return this._senderAddress}set senderAddress(e){this._senderAddress=e}get DeepbookUtils(){return this._deepbookUtils}get fullClient(){return this._rpcModule}get sdkOptions(){return this._sdkOptions}async getOwnerCoinAssets(e,t,s=!0){let n=[],r=null,o=`${this.sdkOptions.fullRpcUrl}_${e}_${t}_getOwnerCoinAssets`,c=this.getCache(o,s);if(c)return c;for(;;){let u=await(t?this.fullClient.getCoins({owner:e,coinType:t,cursor:r}):this.fullClient.getAllCoins({owner:e,cursor:r}));if(u.data.forEach(l=>{BigInt(l.balance)>0&&n.push({coinAddress:E(l.coinType).source_address,coinObjectId:l.coinObjectId,balance:BigInt(l.balance)})}),r=u.nextCursor,!u.hasNextPage)break}return this.updateCache(o,n,30*1e3),n}async getOwnerCoinBalances(e,t){let s=[];return t?s=[await this.fullClient.getBalance({owner:e,coinType:t})]:s=[...await this.fullClient.getAllBalances({owner:e})],s}updateCache(e,t,s=U){let n=this._cache[e];n?(n.overdueTime=$(s),n.value=t):n=new N(t,$(s)),this._cache[e]=n}getCache(e,t=!1){let s=this._cache[e],n=s?.isValid();if(!t&&n)return s.value;n||delete this._cache[e]}};var Rn="0x0000000000000000000000000000000000000000000000000000000000000006",In="pool_script",qn="pool_script_v2",Un="router",Fn="router_with_partner",Nn="fetcher_script",$n="expect_swap",Ln="utils",Vn="0x1::coin::CoinInfo",Gn="0x1::coin::CoinStore",Kn="custodian_v2",Hn="clob_v2",Qn="endpoints_v2",Zn=i=>{if(typeof i=="string"&&i.startsWith("0x"))return"object";if(typeof i=="number"||typeof i=="bigint")return"u64";if(typeof i=="boolean")return"bool";throw new Error(`Unknown type for value: ${i}`)};var He=(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))(He||{});var os=Q;export{Rn as CLOCK_ADDRESS,N as CachedContent,Q as CetusClmmSDK,$n as ClmmExpectSwapModule,Nn as ClmmFetcherModule,In as ClmmIntegratePoolModule,qn as ClmmIntegratePoolV2Module,Un as ClmmIntegrateRouterModule,Fn as ClmmIntegrateRouterWithPartnerModule,Ln as ClmmIntegrateUtilsModule,w as CoinAssist,Vn as CoinInfoAddress,Gn as CoinStoreAddress,ne as DEEP_SCALAR,We as DEFAULT_GAS_BUDGET_FOR_MERGE,Je as DEFAULT_GAS_BUDGET_FOR_SPLIT,et as DEFAULT_GAS_BUDGET_FOR_STAKE,Ye as DEFAULT_GAS_BUDGET_FOR_TRANSFER,Xe as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,nt as DEFAULT_NFT_TRANSFER_GAS_FEE,Hn as DeepbookClobV2Moudle,Kn as DeepbookCustodianV2Moudle,Qn as DeepbookEndpointsV2Moudle,H as DeepbookUtilsModule,M as FLOAT_SCALAR,tt as GAS_SYMBOL,z as GAS_TYPE_ARG,ie as GAS_TYPE_ARG_LONG,ht as NORMALIZED_SUI_COIN_TYPE,He as OrderType,K as RpcModule,st as SUI_SYSTEM_STATE_OBJECT_ID,I as TransactionUtil,oe as addHexPrefix,Vt as asIntN,Lt as asUintN,at as bufferToHex,U as cacheTime24h,re as cacheTime5min,ot as checkAddress,ce as composeType,a as d,X as decimalsMultiplier,os as default,bt as extractAddressFromType,E as extractStructTagFromType,_t as fixCoinType,q as fixDown,Pe as fixSuiObjectId,F as fromDecimalsAmount,Zn as getDefaultSuiInputType,$ as getFutureTime,te as getMoveObject,Ne as getMoveObjectType,vt as getMovePackageContent,Ie as getObjectDeletedResponse,Pt as getObjectDisplay,ge as getObjectFields,pe as getObjectId,qe as getObjectNotExistsResponse,Et as getObjectOwner,Mt as getObjectPreviousTransactionDigest,de as getObjectReference,Dt as getObjectType,Bt as getObjectVersion,L as getSuiObjectData,Rt as hasPublicTransfer,ct as hexToNumber,ut as hexToString,mt as isSortedSymbols,Ue as isSuiObjectResponse,ee as maxDecimal,Z as normalizeCoinType,Y as patchFixSuiObjectId,Tt as printTransaction,J as removeHexPrefix,Gt as secretKeyToEd25519Keypair,Kt as secretKeyToSecp256k1Keypair,it as shortAddress,Te as shortString,xe as toBuffer,$t as toDecimalsAmount,je as utf8to16};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cetusprotocol/deepbook-utils",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "cetus deepbook utils sdk",
5
5
  "typings": "dist/index.d.ts",
6
6
  "main": "dist/index.js",