@cetusprotocol/deepbook-utils 1.0.3 → 1.0.4

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
@@ -329,6 +329,11 @@ type Balances = {
329
329
  quote: string;
330
330
  deep: string;
331
331
  };
332
+ /**
333
+ * Provides a high-level interface around deepbook utilities, handling
334
+ * transaction preparation, caching, and common workflows for interacting with
335
+ * DeepBook pools.
336
+ */
332
337
  declare class DeepbookUtilsModule implements IModule {
333
338
  protected _sdk: DeepbookUtilsSDK;
334
339
  protected _deep: DeepCoin;
@@ -336,13 +341,22 @@ declare class DeepbookUtilsModule implements IModule {
336
341
  constructor(sdk: DeepbookUtilsSDK);
337
342
  get sdk(): DeepbookUtilsSDK;
338
343
  get deepCoin(): DeepCoin;
344
+ /**
345
+ * Creates a balance manager and shares it with the caller account.
346
+ */
339
347
  createAndShareBalanceManager(): Transaction;
340
- getBalanceManager(account: string, forceRefresh?: boolean): Promise<any>;
348
+ /**
349
+ * Creates a new balance manager and deposits the specified coin amount into it.
350
+ */
341
351
  createAndDepsit({ account, coin, amountToDeposit }: {
342
352
  account: string;
343
353
  coin: CoinItem;
344
354
  amountToDeposit: string;
345
355
  }): Transaction;
356
+ /**
357
+ * Deposits assets into an existing balance manager, creating a transaction if
358
+ * one is not provided.
359
+ */
346
360
  depositIntoManager({ account, balanceManager, coin, amountToDeposit, tx, }: {
347
361
  account: string;
348
362
  balanceManager: string;
@@ -350,6 +364,10 @@ declare class DeepbookUtilsModule implements IModule {
350
364
  amountToDeposit: string;
351
365
  tx?: Transaction;
352
366
  }): Transaction | null;
367
+ /**
368
+ * Withdraws assets from a balance manager. Optionally returns the withdrawn
369
+ * asset objects instead of transferring them immediately.
370
+ */
353
371
  withdrawFromManager({ account, balanceManager, coin, amountToWithdraw, returnAssets, txb, }: {
354
372
  account: string;
355
373
  balanceManager: string;
@@ -358,6 +376,9 @@ declare class DeepbookUtilsModule implements IModule {
358
376
  returnAssets?: boolean;
359
377
  txb?: Transaction;
360
378
  }): Transaction | _mysten_sui_transactions.TransactionResult;
379
+ /**
380
+ * Withdraws free balances from multiple managers into the owner account.
381
+ */
361
382
  withdrawManagersFreeBalance({ account, balanceManagers, tx }: {
362
383
  account: string;
363
384
  balanceManagers: Record<string, {
@@ -366,21 +387,42 @@ declare class DeepbookUtilsModule implements IModule {
366
387
  }[]>;
367
388
  tx?: Transaction;
368
389
  }): Transaction;
390
+ /**
391
+ * Retrieves balance managers for an account, optionally using the cached
392
+ * result when it is still valid.
393
+ */
394
+ getBalanceManager(account: string, forceRefresh?: boolean): Promise<any>;
369
395
  withdrawSettledAmounts({ poolInfo, balanceManager }: {
370
396
  poolInfo: any;
371
397
  balanceManager: string;
372
398
  }): Transaction;
399
+ /**
400
+ * Retrieves balances for the provided coins tracked by a specific balance
401
+ * manager.
402
+ */
373
403
  getManagerBalance({ account, balanceManager, coins }: {
374
404
  account: string;
375
405
  balanceManager: string;
376
406
  coins: CoinItem[];
377
407
  }): Promise<any>;
408
+ /**
409
+ * Retrieves balances for all balance managers owned by the account.
410
+ */
378
411
  getAccountAllManagerBalance({ account, coins }: {
379
412
  account: string;
380
413
  coins: CoinItem[];
381
414
  }): Promise<any>;
415
+ /**
416
+ * Retrieves the mid-market price for a pool via dev-inspect.
417
+ */
382
418
  getMarketPrice(poolInfo: any): Promise<string>;
419
+ /**
420
+ * Queries on-chain events to retrieve known pools.
421
+ */
383
422
  getPools(): Promise<any>;
423
+ /**
424
+ * Estimates quote quantity output for a given base amount.
425
+ */
384
426
  getQuoteQuantityOut(poolInfo: any, baseQuantity: string, account: string): Promise<{
385
427
  baseQuantityDisplay: string;
386
428
  baseOutDisplay: string;
@@ -391,6 +433,9 @@ declare class DeepbookUtilsModule implements IModule {
391
433
  quoteOut: string;
392
434
  deepRequired: string;
393
435
  }>;
436
+ /**
437
+ * Estimates base quantity output for a provided quote amount.
438
+ */
394
439
  getBaseQuantityOut(poolInfo: any, quoteQuantity: string, account: string): Promise<{
395
440
  quoteQuantityDisplay: string;
396
441
  baseOutDisplay: string;
@@ -401,6 +446,9 @@ declare class DeepbookUtilsModule implements IModule {
401
446
  quoteOut: string;
402
447
  deepRequired: string;
403
448
  }>;
449
+ /**
450
+ * Estimates both base and quote outputs given respective input amounts.
451
+ */
404
452
  getQuantityOut(poolInfo: any, baseQuantity: string, quoteQuantity: string, account: string): Promise<{
405
453
  baseQuantityDisplay: string;
406
454
  quoteQuantityDisplay: string;
@@ -413,19 +461,40 @@ declare class DeepbookUtilsModule implements IModule {
413
461
  quoteOut: number;
414
462
  deepRequired: number;
415
463
  }>;
464
+ /**
465
+ * Estimates taker and maker fees for a prospective trade.
466
+ */
416
467
  estimatedMaxFee(poolInfo: any, quantity: string, priceInput: string, payWithDeep: boolean, isBid: boolean, isLimit: boolean, priceOrigin?: string): Promise<OrderFee>;
468
+ /**
469
+ * Retrieves the deep price information required for fee calculation.
470
+ */
417
471
  getOrderDeepPrice(poolInfo: any): Promise<OrderDeepPrice | null>;
472
+ /**
473
+ * Parses a serialized `OrderDeepPrice` struct from Move into a JS object.
474
+ */
418
475
  parseOrderDeepPrice(bytes: Uint8Array): OrderDeepPrice;
476
+ /**
477
+ * Builds coin assets for the requested amount, sourcing from the owner's coins.
478
+ */
419
479
  getCoinAssets(coin: string, amount: string, allCoinAsset: any, txb: any): TransactionArgument;
420
- getTransactionRelatedBalance(poolInfo: any, baseCoin: string, quoteCoin: string, noDeep: boolean, account: string, payWithDeep: boolean, balanceManager: string): Promise<{
480
+ /**
481
+ * Retrieves balances related to an upcoming transaction to determine deposit needs.
482
+ */
483
+ getTransactionRelatedBalance(poolInfo: any, baseAmount: string, quoteAmount: string, noDeep: boolean, account: string, payWithDeep: boolean, balanceManager: string): Promise<{
421
484
  baseManagerBlance: any;
422
485
  quoteManagerBlance: any;
423
486
  feeManaerBalance: any;
424
487
  }>;
488
+ /**
489
+ * Determines the fee asset to use and whether additional deposits are required.
490
+ */
425
491
  getFeeAsset(maxFee: string, feeCoin: string, baseAmount: string, quoteAmount: string, feeManaerBalance: string, quoteIsDeep: boolean, baseIsDeep: boolean, allCoinAsset: any, payWithDeep: boolean, txb: Transaction): {
426
492
  feeAsset: any;
427
493
  haveDepositFee: string;
428
494
  };
495
+ /**
496
+ * Prepares the assets necessary to execute a limit order transaction.
497
+ */
429
498
  getTransactionRelatedAssets(poolInfo: any, baseAmount: string, quoteAmount: string, maxFee: string, isBid: boolean, account: string, payWithDeep: boolean, balanceManager: string, txb: Transaction): Promise<{
430
499
  baseAsset: any;
431
500
  quoteAsset: any;
@@ -435,11 +504,17 @@ declare class DeepbookUtilsModule implements IModule {
435
504
  };
436
505
  haveDeposit: boolean;
437
506
  }>;
507
+ /**
508
+ * Prepares assets necessary to execute a market order transaction.
509
+ */
438
510
  getMarketTransactionRelatedAssets(poolInfo: any, baseAmount: string, quoteAmount: string, maxFee: string, isBid: boolean, account: string, payWithDeep: boolean, balanceManager: string, txb: Transaction): Promise<{
439
511
  baseAsset: any;
440
512
  quoteAsset: any;
441
513
  feeAsset: any;
442
514
  }>;
515
+ /**
516
+ * Creates a transaction that deposits required assets and then places a limit order.
517
+ */
443
518
  createDepositThenPlaceLimitOrder({ poolInfo, priceInput, quantity, orderType, isBid, maxFee, account, payWithDeep, expirationTimestamp }: {
444
519
  poolInfo: PoolInfo;
445
520
  priceInput: string;
@@ -452,6 +527,9 @@ declare class DeepbookUtilsModule implements IModule {
452
527
  expirationTimestamp?: number;
453
528
  }): Promise<any>;
454
529
  getEmptyCoin(txb: any, coin: string): any;
530
+ /**
531
+ * Creates a transaction that deposits necessary assets and places a market order.
532
+ */
455
533
  createDepositThenPlaceMarketOrder({ poolInfo, quantity, isBid, maxFee, account, payWithDeep, slippage }: {
456
534
  poolInfo: any;
457
535
  quantity: string;
@@ -461,6 +539,9 @@ declare class DeepbookUtilsModule implements IModule {
461
539
  payWithDeep: boolean;
462
540
  slippage?: number;
463
541
  }): Promise<any>;
542
+ /**
543
+ * Builds a transaction to place a limit order and handles required deposits.
544
+ */
464
545
  placeLimitOrder({ balanceManager, poolInfo, priceInput, quantity, isBid, orderType, maxFee, account, payWithDeep, expirationTimestamp }: {
465
546
  balanceManager: string;
466
547
  poolInfo: any;
@@ -473,6 +554,9 @@ declare class DeepbookUtilsModule implements IModule {
473
554
  payWithDeep: boolean;
474
555
  expirationTimestamp?: number;
475
556
  }): Promise<Transaction>;
557
+ /**
558
+ * Builds a transaction to modify an existing order quantity.
559
+ */
476
560
  modifyOrder({ balanceManager, poolInfo, orderId, newOrderQuantity, }: {
477
561
  balanceManager: string;
478
562
  poolInfo: PoolInfo;
@@ -482,6 +566,9 @@ declare class DeepbookUtilsModule implements IModule {
482
566
  getBestAskprice(poolInfo: any): Promise<any>;
483
567
  getBestBidprice(poolInfo: any): Promise<any>;
484
568
  getBestAskOrBidPrice(poolInfo: any, isBid: boolean): Promise<any>;
569
+ /**
570
+ * Builds a transaction to place a market order, handling deposits as needed.
571
+ */
485
572
  placeMarketOrder({ balanceManager, poolInfo, baseQuantity, quoteQuantity, isBid, maxFee, account, payWithDeep, slippage }: {
486
573
  balanceManager: string;
487
574
  poolInfo: PoolInfo;
@@ -493,7 +580,6 @@ declare class DeepbookUtilsModule implements IModule {
493
580
  payWithDeep: boolean;
494
581
  slippage?: number;
495
582
  }): Promise<any>;
496
- getOpenOrderFromDeepbook(account: string, balanceManager: string): Promise<void>;
497
583
  getOrderInfoList(poolInfo: any, orderIds: string[], account: string): Promise<any>;
498
584
  decodeOrderId(encodedOrderId: bigint): {
499
585
  isBid: boolean;
@@ -503,13 +589,26 @@ declare class DeepbookUtilsModule implements IModule {
503
589
  getOpenOrder(poolInfo: any, account: string, balanceManager: string, orders?: string[]): Promise<any>;
504
590
  cancelOrders(orderList: any, balanceManager: string): Transaction;
505
591
  getDeepbookOrderBook(poolKey: string, priceLow: number, priceHigh: number, isBid: boolean, account: string, balanceManager: string): Promise<void>;
592
+ /**
593
+ * Processes raw level 2 order book data returned from dev-inspect into
594
+ * aggregated price levels.
595
+ */
506
596
  processOrderBookData(data: any, baseCoin: any, quoteCoin: any, unit: number): unknown[];
507
597
  getLevel2RangeTx(poolInfo: any, isBid: boolean, priceLow: string | number, priceHigh: string | number, tx?: Transaction): Transaction;
598
+ /**
599
+ * Fetches order book data for the specified price range and order side.
600
+ */
508
601
  fetchOrderBook(poolInfo: any, orderType: 'bid' | 'ask' | 'all', midPrice: string, low: number, high: number, unit: number): Promise<{
509
602
  bid: any;
510
603
  ask: any;
511
604
  }>;
605
+ /**
606
+ * Retrieves the order book for the pool, performing additional requests if needed.
607
+ */
512
608
  getOrderBook(poolInfo: any, orderType: 'bid' | 'ask' | 'all', unit: number): Promise<any>;
609
+ /**
610
+ * Retrieves the raw order book without post-processing, primarily for debugging.
611
+ */
513
612
  getOrderBookOrigin(poolInfo: any, orderType: 'bid' | 'ask' | 'all'): Promise<{
514
613
  bid: any;
515
614
  ask: 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=(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});
1
+ "use strict";var Pe=Object.create;var G=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var Ue=Object.getPrototypeOf,Fe=Object.prototype.hasOwnProperty;var Ne=(i,e,t)=>e in i?G(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var $e=(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 qe(e))!Fe.call(i,n)&&n!==t&&G(i,n,{get:()=>e[n],enumerable:!(s=Ie(e,n))||s.enumerable});return i};var he=(i,e,t)=>(t=i!=null?Pe(Ue(i)):{},be(e||!i||!i.__esModule?G(t,"default",{value:i,enumerable:!0}):t,i)),Ve=i=>be(G({},"__esModule",{value:!0}),i);var _e=(i,e,t)=>(Ne(i,typeof e!="symbol"?e+"":e,t),t);var Lt={};$e(Lt,{CLOCK_ADDRESS:()=>jt,CachedContent:()=>F,CetusClmmSDK:()=>Z,ClmmExpectSwapModule:()=>Rt,ClmmFetcherModule:()=>Mt,ClmmIntegratePoolModule:()=>Bt,ClmmIntegratePoolV2Module:()=>vt,ClmmIntegrateRouterModule:()=>Dt,ClmmIntegrateRouterWithPartnerModule:()=>Et,ClmmIntegrateUtilsModule:()=>Pt,CoinAssist:()=>T,CoinInfoAddress:()=>It,CoinStoreAddress:()=>qt,DEEP_SCALAR:()=>ne,DEFAULT_GAS_BUDGET_FOR_MERGE:()=>He,DEFAULT_GAS_BUDGET_FOR_SPLIT:()=>Ke,DEFAULT_GAS_BUDGET_FOR_STAKE:()=>ze,DEFAULT_GAS_BUDGET_FOR_TRANSFER:()=>Qe,DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI:()=>Ze,DEFAULT_NFT_TRANSFER_GAS_FEE:()=>Je,DeepbookClobV2Moudle:()=>Ft,DeepbookCustodianV2Moudle:()=>Ut,DeepbookEndpointsV2Moudle:()=>Nt,DeepbookUtilsModule:()=>Q,FLOAT_SCALAR:()=>v,GAS_SYMBOL:()=>We,GAS_TYPE_ARG:()=>W,GAS_TYPE_ARG_LONG:()=>re,NORMALIZED_SUI_COIN_TYPE:()=>dt,OrderType:()=>Re,RpcModule:()=>H,SUI_SYSTEM_STATE_OBJECT_ID:()=>Ye,TransactionUtil:()=>M,addHexPrefix:()=>ie,asIntN:()=>wt,asUintN:()=>St,bufferToHex:()=>nt,cacheTime24h:()=>P,cacheTime5min:()=>se,checkAddress:()=>tt,composeType:()=>oe,d:()=>a,decimalsMultiplier:()=>X,default:()=>Vt,extractAddressFromType:()=>ut,extractStructTagFromType:()=>D,fixCoinType:()=>lt,fixDown:()=>q,fixSuiObjectId:()=>we,fromDecimalsAmount:()=>U,getDefaultSuiInputType:()=>$t,getFutureTime:()=>N,getMoveObject:()=>te,getMoveObjectType:()=>je,getMovePackageContent:()=>bt,getObjectDeletedResponse:()=>Oe,getObjectDisplay:()=>yt,getObjectFields:()=>le,getObjectId:()=>ue,getObjectNotExistsResponse:()=>Te,getObjectOwner:()=>ft,getObjectPreviousTransactionDigest:()=>_t,getObjectReference:()=>ce,getObjectType:()=>ht,getObjectVersion:()=>gt,getSuiObjectData:()=>$,hasPublicTransfer:()=>Ct,hexToNumber:()=>st,hexToString:()=>rt,isSortedSymbols:()=>ct,isSuiObjectResponse:()=>xe,maxDecimal:()=>ee,normalizeCoinType:()=>z,patchFixSuiObjectId:()=>Y,printTransaction:()=>pt,removeHexPrefix:()=>J,secretKeyToEd25519Keypair:()=>At,secretKeyToSecp256k1Keypair:()=>Ot,shortAddress:()=>et,shortString:()=>fe,toBuffer:()=>ye,toDecimalsAmount:()=>kt,utf8to16:()=>Ce});module.exports=Ve(Lt);var se=5*60*1e3,P=24*60*60*1e3;function N(i){return Date.parse(new Date().toString())+i}var F=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 I=require("@mysten/sui/utils");var Le="0x2::coin::Coin",Ge=/^0x2::coin::Coin<(.+)>$/,Ke=1e3,He=500,Qe=100,Ze=100,ze=1e3,W="0x2::sui::SUI",re="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",We="SUI",Je=450,Ye="0x0000000000000000000000000000000000000005",T=class{static getCoinTypeArg(e){let t=e.type.match(Ge);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`${Le}<${e}>`}static getCoinAssets(e,t){let s=[];return t.forEach(n=>{z(n.coinAddress)===z(e)&&s.push(n)}),s}static isSuiCoin(e){return D(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,p=u.findIndex(d=>d.balance>=l);if(p!==-1){c.push(u[p]),u.splice(p,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 Xe=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function ie(i){return i.startsWith("0x")?i:`0x${i}`}function J(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 et(i,e=4,t=4){return fe(ie(i),e,t)}function tt(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 Xe.test(t)}function ye(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 nt(i){return ie(ye(i).toString("hex"))}function st(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 Ce(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 rt(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 Ce(e)}var it=0,Se=1,ot=2;function ke(i,e){return i===e?it:i<e?Se:ot}function at(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 ct(i,e){return at(i,e)===Se}function oe(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 ut(i){return i.split("::")[0]}function D(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={...D(e),type_arguments:s.map(l=>D(l).source_address)};return u.type_arguments=u.type_arguments.map(l=>T.isSuiCoin(l)?l:D(l).source_address),u.source_address=oe(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===W||e===re?"0x2":(0,I.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=oe(o.full_address,o.type_arguments),o}catch{return{full_address:i,address:"",module:"",name:"",type_arguments:[],source_address:i}}}function z(i){return D(i).source_address}function we(i){return i.toLowerCase().startsWith("0x")?(0,I.normalizeSuiObjectId)(i):i}var lt=(i,e=!0)=>{let t=i.split("::"),s=t.shift(),n=(0,I.normalizeSuiObjectId)(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]=we(s)}}}var dt=(0,I.normalizeStructTag)(I.SUI_TYPE_ARG);var ae=he(require("decimal.js"));ae.default.config({precision:64,rounding:ae.default.ROUND_DOWN,toExpNeg:-64,toExpPos:64});var K=he(require("decimal.js"));function a(i){return K.default.isDecimal(i)?i:new K.default(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,K.default.ROUND_DOWN).toString()}catch{return i}},ee=(i,e)=>K.default.max(a(i),a(e));var Ae=require("@mysten/sui/transactions");async function pt(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=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 p=new Ae.Transaction;return{fixAmount:s,newTx:p}}}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 R.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 R.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 _=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[_]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let _=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(_.objectArray[0]),remainCoins:_.remainCoins,tragetCoinAmount:_.amountArray[0],isMintZeroCoin:!1}}let y=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:y.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=T.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),p=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:p.map(y=>e.object(y))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),isMintZeroCoin:!1};let[g,...d]=p,m=e.object(g),h=m,b=u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),S;return d.length>0&&e.mergeCoins(m,d.map(y=>e.object(y))),c&&Number(l)>Number(n)&&(h=e.splitCoins(m,[e.pure.u64(n)]),b=n.toString(),S=m),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:b,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=T.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=T.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}},M=R;_e(M,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function $(i){return i.data}function Oe(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 ce(i){if("reference"in i)return i.reference;let e=$(i);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Oe(i)}function ue(i){return"objectId"in i?i.objectId:ce(i)?.objectId??Te(i)}function gt(i){return"version"in i?i.version:ce(i)?.version}function xe(i){return i.data!==void 0}function mt(i){return i.content!==void 0}function bt(i){let e=$(i);if(e?.content?.dataType==="package")return e.content.disassembled}function te(i){let e="data"in i?$(i):i;if(!(!e||!mt(e)||e.content.dataType!=="moveObject"))return e.content}function je(i){return te(i)?.type}function ht(i){let e=xe(i)?i.data:i;return!e?.type&&"data"in i?e?.content?.dataType==="package"?"package":je(i):e?.type}function _t(i){return $(i)?.previousTransaction}function ft(i){return $(i)?.owner}function yt(i){let e=$(i)?.display;return e||{data:null,error:null}}function le(i){let e=te(i)?.fields;if(e)return"fields"in e?e.fields:e}function Ct(i){return te(i)?.hasPublicTransfer??!1}var V=require("@mysten/bcs"),de=require("@mysten/sui/keypairs/ed25519"),pe=require("@mysten/sui/keypairs/secp256k1");function kt(i,e){let t=X(a(e));return Number(a(i).mul(t))}function St(i,e=32){return BigInt.asUintN(e,BigInt(i)).toString()}function wt(i,e=32){return Number(BigInt.asIntN(e,BigInt(i)))}function U(i,e){let t=X(a(e));return Number(a(i).div(t))}function At(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return de.Ed25519Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(i):(0,V.fromB64)(i);return de.Ed25519Keypair.fromSecretKey(t)}function Ot(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return pe.Secp256k1Keypair.fromSecretKey(s)}let t=e==="hex"?(0,V.fromHEX)(i):(0,V.fromB64)(i);return pe.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 Ee=require("@mysten/deepbook-v3"),f=require("@mysten/sui/bcs"),Me=require("js-base64"),A=require("@mysten/sui/transactions"),O=require("@mysten/sui/utils");function ve(...i){let e="DeepbookV3_Utils_Sdk###"}var ne=1e6,v=1e9,Tt={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},xt={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},De=1e3*60*60*24*365*100,Q=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?xt:Tt}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new A.Transaction,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new A.Transaction;n.setSenderIfNotSet(e);let r=n.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`}),o=(0,A.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 A.Transaction;if(t){o.setSenderIfNotSet(e);let c=(0,A.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 A.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 A.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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;try{let r=new A.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(p=>p.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(p=>{l.push({balanceManager:p,cetusBalanceManager:""})}),this.updateCache(s,l,P),l||[]}catch(r){throw r instanceof Error?r:new Error(String(r))}}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new A.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}){try{let n=new A.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],p=c.returnValues[0][0],g=f.bcs.U64.parse(new Uint8Array(p)),d=a(g),m=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:m,balance:d.toString()}}),o}catch(n){throw n instanceof Error?n:new Error(String(n))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let s=new A.Transaction,n=await this.getBalanceManager(e,!0);if(!Array.isArray(n)||n.length===0)return{};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={},p=u*t.length;t.forEach((g,d)=>{let m=p+d,h=r.results?.[m];if(h){let b=h.returnValues[0][0],S=f.bcs.U64.parse(new Uint8Array(b)),y=a(S),C=y.eq(0)?"0":y.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:C,balance:y.toString()}}}),o[c.balanceManager]=l}),o}catch(s){throw s instanceof Error?s:new Error(String(s))}}async getMarketPrice(e){try{let t=new A.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(O.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(v).toString()}catch(t){return ve("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 A.Transaction;n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_quote_quantity_out`,arguments:[n.object(e.address),n.pure.u64(t),n.object(O.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(ne).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new A.Transaction;n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_base_quantity_out`,arguments:[n.object(e.address),n.pure.u64(t),n.object(O.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(ne).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let r=new A.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(O.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(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;try{let{taker_fee:l,maker_fee:p}=e,g=a(l).div(v).toString(),d=a(p).div(v).toString(),m=await this.getMarketPrice(e),h=o?s:m!=="0"?m:c;if(h==="0")throw new Error("Cannot get market price");let b=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),y=a(h).div(b).mul(S).mul(v).toString();if(n){let w=await this.getMarketPrice(e),k=a(o?s:w!=="0"?w:c).div(b).mul(S).mul(v).toString(),x=await this.getOrderDeepPrice(e);if(!x)throw new Error("Cannot get deep price");let j=ee(k,s),L=a(t).mul(a(g)).mul(a(x.deep_per_asset)).div(a(v)),E=a(t).mul(a(d)).mul(a(x.deep_per_asset)).div(a(v));x.asset_is_base||(L=L.mul(j).div(a(v)),E=E.mul(j).div(a(v)));let ge=L.ceil().toString(),me=E.ceil().toString();return{takerFee:ge,makerFee:me,takerFeeDisplay:U(ge,u.decimals).toString(),makerFeeDisplay:U(me,u.decimals).toString(),feeType:u.coinType}}if(r){let w=ee(y,s),B=a(t).mul(w).mul(g).div(a(v)).ceil().toFixed(0),k=a(t).mul(w).mul(d).div(a(v)).ceil().toFixed(0);return{takerFee:B,makerFee:k,takerFeeDisplay:U(B,e.quoteCoin.decimals).toString(),makerFeeDisplay:U(k,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let C=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),_=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:C,makerFee:_,takerFeeDisplay:U(C,e.baseCoin.decimals).toString(),makerFeeDisplay:U(_,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e){try{let t=new A.Transaction;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order_deep_price`,arguments:[t.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let n=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0];return this.parseOrderDeepPrice(new Uint8Array(n))}catch{return null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),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 M.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"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let p=await this.getManagerBalance({account:r,balanceManager:c,coins:l}),g=p?.[t]?.balance||"0",d=p?.[s]?.balance||"0",m=o&&p?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:m}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,s,n,r,o,c,u,l,p){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(p,t),haveDepositFee:"0"};if(o||c){let m=a(r).sub(o?n:s);d=m.lte(0)?e:m.sub(e).lt(0)?m.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,p):this.getEmptyCoin(p,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){try{let p=this.deepCoin,g=(0,O.normalizeStructTag)(e.baseCoin.coinType),d=(0,O.normalizeStructTag)(e.quoteCoin.coinType),m=g===p.coinType,h=d===p.coinType,b=!m&&!h,{baseManagerBlance:S,quoteManagerBlance:y,feeManaerBalance:C}=await this.getTransactionRelatedBalance(e,g,d,b,o,c,u),_,w,B=!1,k=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let j=a(y).sub(s).toString();a(j).lt(0)?(B=!0,w=this.getCoinAssets(d,j,k,l)):w=this.getEmptyCoin(l,d),_=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,_=this.getCoinAssets(g,j,k,l)):_=this.getEmptyCoin(l,g),w=this.getEmptyCoin(l,d)}let x=this.getFeeAsset(n,p.coinType,t,s,C,h,m,k,c,l);return{baseAsset:_,quoteAsset:w,feeAsset:x,haveDeposit:B}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getMarketTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){try{let p=this.deepCoin,g=(0,O.normalizeStructTag)(e.baseCoin.coinType),d=(0,O.normalizeStructTag)(e.quoteCoin.coinType),m=g===p.coinType,h=d===p.coinType,b=!m&&!h,{baseManagerBlance:S,quoteManagerBlance:y}=await this.getTransactionRelatedBalance(e,g,d,b,o,c,u),C,_,w=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let k=a(y).sub(s).toString();if(a(k).lt(0)){let x;a(y).gt(0)&&(x=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:y,returnAssets:!0,txb:l}));let j=this.getCoinAssets(d,k,w,l);x&&l.mergeCoins(j,[x]),_=j}else _=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});C=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,w,l);x&&l.mergeCoins(j,[x]),C=j}else C=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});_=this.getEmptyCoin(l,d)}let B=this.getEmptyCoin(l,p.coinType);return{baseAsset:C,quoteAsset:_,feeAsset:B}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:r,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+De}){try{let p=this.deepCoin,g=e.address,d=e.baseCoin.decimals,m=e.quoteCoin.decimals,h=e.baseCoin.coinType,b=e.quoteCoin.coinType,S=a(t).mul(10**(m-d+9)).toString(),y=(0,O.normalizeStructTag)(h),C=(0,O.normalizeStructTag)(b),_=new A.Transaction,w,B,k=await this._sdk.getOwnerCoinAssets(c);if(r){let E=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(E=a(E).add(a(o)).toString()),B=M.buildCoinForAmount(_,k,BigInt(E),C,!1,!0)?.targetCoin}else{let E=s;u||(E=a(s).abs().add(a(o)).toString()),w=M.buildCoinForAmount(_,k,BigInt(a(E).abs().toString()),y,!1,!0)?.targetCoin}let x=u?a(o).gt(0)?M.buildCoinForAmount(_,k,BigInt(a(o).abs().ceil().toString()),p.coinType,!1,!0).targetCoin:this.getEmptyCoin(_,p.coinType):this.getEmptyCoin(_,p.coinType),j=_.moveCall({typeArguments:[r?h:b],target:"0x2::coin::zero",arguments:[]}),L=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(g),r?j:w,r?B:j,x,_.pure.u8(n),_.pure.u8(0),_.pure.u64(S),_.pure.u64(s),_.pure.bool(r),_.pure.bool(!1),_.pure.u64(l),_.object(O.SUI_CLOCK_OBJECT_ID)];return _.moveCall({typeArguments:[y,C],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:L}),_}catch(p){throw p instanceof Error?p:new Error(String(p))}}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}){try{let u=e.address,l=e.baseCoin.coinType,p=e.quoteCoin.coinType,g=(0,O.normalizeStructTag)(l),d=(0,O.normalizeStructTag)(p),m=new A.Transaction,h,b,S=t,y,C=await this.getOrderBook(e,"all",6);if(s){let k=C?.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();y=a(x).plus(a(x).mul(c)).ceil().toString()}else{let k=await C?.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();y=a(x).minus(a(x).mul(c)).floor().toString()}let _=await this._sdk.getOwnerCoinAssets(r);s?(o||(y=a(y).add(a(n)).toString()),b=this.getCoinAssets(d,y,_,m),h=this.getEmptyCoin(m,g)):(o||(S=a(S).add(a(n)).toString()),b=this.getEmptyCoin(m,d),h=this.getCoinAssets(g,S,_,m));let w=o?a(n).gt(0)?M.buildCoinForAmount(m,_,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(m,this.deepCoin.coinType):this.getEmptyCoin(m,this.deepCoin.coinType),B=[m.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),m.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),m.object(u),h,b,w,m.pure.u8(0),m.pure.u64(t),m.pure.bool(s),m.pure.bool(o),m.pure.u64(y),m.object(O.SUI_CLOCK_OBJECT_ID)];return m.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:B}),m}catch(u){throw u instanceof Error?u:new Error(String(u))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:r,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:p=Date.now()+De}){try{let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),m=t.baseCoin.coinType,h=t.quoteCoin.coinType,b=new A.Transaction,S=r?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",y=r?"0":n,{baseAsset:C,quoteAsset:_,feeAsset:w,haveDeposit:B}=await this.getTransactionRelatedAssets(t,y,S,c,r,u,l,e,b);if(B){let j=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(t.address),b.object(e),C,_,w.feeAsset,b.pure.u8(o),b.pure.u8(0),b.pure.u64(d),b.pure.u64(n),b.pure.bool(r),b.pure.bool(l),b.pure.u64(p),b.object(O.SUI_CLOCK_OBJECT_ID)];return b.moveCall({typeArguments:[m,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:j}),b}let k=new A.Transaction;a(w.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:w.haveDepositFee,tx:k});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(p),k.object(O.SUI_CLOCK_OBJECT_ID)];return k.moveCall({typeArguments:[m,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:x}),k}catch(g){throw g instanceof Error?g:new Error(String(g))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:s,newOrderQuantity:n}){let r=new A.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(O.SUI_CLOCK_OBJECT_ID)]}),r}async getBestAskprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new A.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(O.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:n}),d=[],m=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(m)),b=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(b));return h.forEach((y,C)=>{let _=a(y).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),w=a(S[C]).div(Math.pow(10,t.decimals)).toString();d.push({price:_,quantity:w})}),d?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new A.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(q(u,0)),n.pure.u64(q(l,0)),n.pure.bool(!0),n.object(O.SUI_CLOCK_OBJECT_ID)],typeArguments:[t.coinType,s.coinType]});let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:n}),d=[],m=g.results[0].returnValues[0][0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(m)),b=g.results[0].returnValues[1][0],S=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(b));return h.forEach((y,C)=>{let _=a(y).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),w=a(S[C]).div(Math.pow(10,t.decimals)).toString();d.push({price:_,quantity:w})}),d?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,r=new A.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(),p=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(p,0)),r.pure.bool(t),r.object(O.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}),m=[],h=d.results[0].returnValues[0][0],b=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],y=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(S));return b.forEach((C,_)=>{let w=a(C).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),B=a(y[_]).div(Math.pow(10,s.decimals)).toString();m.push({price:w,quantity:B})}),m?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:r,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){try{let p=(0,O.normalizeStructTag)(t.baseCoin.coinType),g=(0,O.normalizeStructTag)(t.quoteCoin.coinType),d=new A.Transaction,{baseAsset:m,quoteAsset:h,feeAsset:b}=await this.getMarketTransactionRelatedAssets(t,s,n,o,r,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(r){let _=S?.ask?.[0]?.price||"0",w=a(_).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(w).plus(a(w).mul(l)).ceil().toString()}else{let _=await S?.bid?.[0]?.price||"0",w=a(_).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(w).minus(a(w).mul(l)).floor().toString()}let y=n,C=[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),m,h,b,d.pure.u8(0),d.pure.u64(s),d.pure.bool(r),d.pure.bool(u),d.pure.u64(y),d.object(O.SUI_CLOCK_OBJECT_ID)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[p,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:C}),d}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getOrderInfoList(e,t,s){try{let n=new A.Transaction;t.forEach(p=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(p)],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(p=>{let g=p.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch{return[]}}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 A.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 p=(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(p)).constants}let o=await this.getOrderInfoList(e,r,t)||[],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 A.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(O.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 Ee.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 m=a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[m]?l[m]={price:m,quantity:a(l[m].quantity).add(h).toString()}:l[m]={price:m,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,r=new A.Transaction){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(O.SUI_CLOCK_OBJECT_ID)],typeArguments:[o.coinType,c.coinType]}),r}async fetchOrderBook(e,t,s,n,r,o){let c=new A.Transaction,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,b=s==="0"?r:s;c=this.getLevel2RangeTx(e,!0,h,b,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,b=r;c=this.getLevel2RangeTx(e,!1,h,b,c)}let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let m=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;m=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,b)=>b.price-h.price),ask:m.sort((h,b)=>h.price-b.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],m=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),b=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=b.results?.[0]?this.processOrderBookData(b.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),b=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});m=b.results?.[0]?this.processOrderBookData(b.results[0],u,l,o):[]}catch{m=[]}return{bid:d,ask:m}}}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 A.Transaction,n=await this.getMarketPrice(e),{baseCoin:r,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,m=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(m),s.pure.u64(h),s.pure.bool(!0),s.object(O.SUI_CLOCK_OBJECT_ID)],typeArguments:[r.coinType,o.coinType]})}if(t==="ask"||t==="all"){let g=n,d=Math.pow(10,6),m=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(m),s.pure.u64(h),s.pure.bool(!1),s.object(O.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)),m=u.results[0]?.returnValues[1]?.[0],h=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(m));d.forEach((b,S)=>{let y=a(b).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),C=a(h[S]).div(Math.pow(10,r.decimals)).toString();l.push({price:y,quantity:C})})}let p=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],m=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],b=f.bcs.vector(f.bcs.u64()).parse(new Uint8Array(h));m.forEach((S,y)=>{let C=a(S).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),_=a(b[y]).div(Math.pow(10,r.decimals)).toString();p.push({price:C,quantity:_})})}return{bid:l,ask:p}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,r)=>[(0,O.normalizeStructTag)(n.coinType),n]))}async getAccount(e,t){let s=new A.Transaction;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::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}),r;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{r=c?.parsedJson;let l=r.account.open_orders.contents,p=r.account.owed_balances,g=r.account.settled_balances,d=r.account.unclaimed_rebates,m=r.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:p,settled_balances:g,unclaimed_rebates:d,taker_volume:m,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,P),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(Me.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(p=>p.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(p=>{let g=this.buildCoinConfig(p,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,P),l.push({...g})}),this.updateCache(n,l,P),l}buildCoinConfig(e,t=!0){let s=le(e);s=s.value.fields;let n={...s};return n.id=ue(e),n.address=D(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=(0,O.normalizeSuiObjectId)(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=se){let n=this._cache[e];n?(n.overdueTime=N(s),n.value=t):n=new F(t,N(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),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:D(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=P){let n=this._cache[e];n?(n.overdueTime=N(s),n.value=t):n=new F(t,N(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 jt="0x0000000000000000000000000000000000000000000000000000000000000006",Bt="pool_script",vt="pool_script_v2",Dt="router",Et="router_with_partner",Mt="fetcher_script",Rt="expect_swap",Pt="utils",It="0x1::coin::CoinInfo",qt="0x1::coin::CoinStore",Ut="custodian_v2",Ft="clob_v2",Nt="endpoints_v2",$t=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 Re=(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))(Re||{});var Vt=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=>{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};
1
+ var Se=Object.defineProperty;var we=(i,e,t)=>e in i?Se(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var re=(i,e,t)=>(we(i,typeof e!="symbol"?e+"":e,t),t);var ie=5*60*1e3,I=24*60*60*1e3;function N(i){return Date.parse(new Date().toString())+i}var F=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 ve,SUI_TYPE_ARG as De}from"@mysten/sui/utils";var Ae="0x2::coin::Coin",Oe=/^0x2::coin::Coin<(.+)>$/,Ye=1e3,Xe=500,et=100,tt=100,nt=1e3,Z="0x2::sui::SUI",oe="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",st="SUI",rt=450,it="0x0000000000000000000000000000000000000005",T=class{static getCoinTypeArg(e){let t=e.type.match(Oe);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`${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 M(e).full_address===Z}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,p=u.findIndex(d=>d.balance>=l);if(p!==-1){c.push(u[p]),u.splice(p,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 Te=/^[-+]?[0-9A-Fa-f]+\.?[0-9A-Fa-f]*?$/;function ae(i){return i.startsWith("0x")?i:`0x${i}`}function z(i){return i.startsWith("0x")?`${i.slice(2)}`:i}function xe(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 at(i,e=4,t=4){return xe(ae(i),e,t)}function ct(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 Te.test(t)}function je(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 ut(i){return ae(je(i).toString("hex"))}function lt(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 Be(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 dt(i){let e="",t=z(i),s=t.length/2;for(let n=0;n<s;n++)e+=String.fromCharCode(parseInt(t.substr(n*2,2),16));return Be(e)}var Ee=0,le=1,Me=2;function ce(i,e){return i===e?Ee:i<e?le:Me}function Re(i,e){let t=0,s=i.length<=e.length?i.length:e.length,n=ce(i.length,e.length);for(;t<s;){let r=ce(i.charCodeAt(t),e.charCodeAt(t));if(t+=1,r!==0)return r}return n}function ht(i,e){return Re(i,e)===le}function ue(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 _t(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=ue(u.full_address,u.type_arguments),u}let n=e.split("::"),o={full_address:e,address:e===Z||e===oe?"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=ue(o.full_address,o.type_arguments),o}catch{return{full_address:i,address:"",module:"",name:"",type_arguments:[],source_address:i}}}function Q(i){return M(i).source_address}function Pe(i){return i.toLowerCase().startsWith("0x")?W(i):i}var ft=(i,e=!0)=>{let t=i.split("::"),s=t.shift(),n=W(s);return e&&(n=z(n)),`${n}::${t.join("::")}`};function J(i){for(let e in i){let t=typeof i[e];if(t==="object")J(i[e]);else if(t==="string"){let s=i[e];i[e]=Pe(s)}}}var yt=ve(De);import de from"decimal.js";de.config({precision:64,rounding:de.ROUND_DOWN,toExpNeg:-64,toExpPos:64});import L from"decimal.js";function a(i){return L.isDecimal(i)?i:new L(i===void 0?0:i)}function Y(i){return a(10).pow(a(i).abs())}var q=(i,e)=>{try{return a(i).toDP(e,L.ROUND_DOWN).toString()}catch{return i}},X=(i,e)=>L.max(a(i),a(e));import{Transaction as Ie}from"@mysten/sui/transactions";async function jt(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=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 p=new Ie;return{fixAmount:s,newTx:p}}}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 R.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 R.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 _=e.splitCoins(e.gas,[e.pure.u64(n)]);return{targetCoin:e.makeMoveVec({elements:[_]}),remainCoins:t,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}if(n===0n&&s.length>1){let _=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.object(_.objectArray[0]),remainCoins:_.remainCoins,tragetCoinAmount:_.amountArray[0],isMintZeroCoin:!1}}let y=T.selectCoinObjectIdGreaterThanOrEqual(s,n);return{targetCoin:e.splitCoins(e.gas,[e.pure.u64(n)]),remainCoins:y.remainCoins,tragetCoinAmount:n.toString(),isMintZeroCoin:!1,originalSplitedCoin:e.gas}}let u=T.selectCoinObjectIdGreaterThanOrEqual(s,n),l=u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),p=u.objectArray;if(o)return{targetCoin:e.makeMoveVec({elements:p.map(y=>e.object(y))}),remainCoins:u.remainCoins,tragetCoinAmount:u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),isMintZeroCoin:!1};let[g,...d]=p,m=e.object(g),h=m,b=u.amountArray.reduce((y,C)=>Number(y)+Number(C),0).toString(),S;return d.length>0&&e.mergeCoins(m,d.map(y=>e.object(y))),c&&Number(l)>Number(n)&&(h=e.splitCoins(m,[e.pure.u64(n)]),b=n.toString(),S=m),{targetCoin:h,remainCoins:u.remainCoins,originalSplitedCoin:S,tragetCoinAmount:b,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=T.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=T.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}},P=R;re(P,"callMintZeroValueCoin",(e,t)=>e.moveCall({target:"0x2::coin::zero",typeArguments:[t]}));function $(i){return i.data}function qe(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 Ue(i){if(i.error&&"object_id"in i.error&&!("version"in i.error)&&!("digest"in i.error))return i.error.object_id}function pe(i){if("reference"in i)return i.reference;let e=$(i);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:qe(i)}function ge(i){return"objectId"in i?i.objectId:pe(i)?.objectId??Ue(i)}function Dt(i){return"version"in i?i.version:pe(i)?.version}function Fe(i){return i.data!==void 0}function Ne(i){return i.content!==void 0}function Et(i){let e=$(i);if(e?.content?.dataType==="package")return e.content.disassembled}function ee(i){let e="data"in i?$(i):i;if(!(!e||!Ne(e)||e.content.dataType!=="moveObject"))return e.content}function $e(i){return ee(i)?.type}function Mt(i){let e=Fe(i)?i.data:i;return!e?.type&&"data"in i?e?.content?.dataType==="package"?"package":$e(i):e?.type}function Rt(i){return $(i)?.previousTransaction}function Pt(i){return $(i)?.owner}function It(i){let e=$(i)?.display;return e||{data:null,error:null}}function me(i){let e=ee(i)?.fields;if(e)return"fields"in e?e.fields:e}function qt(i){return ee(i)?.hasPublicTransfer??!1}import{fromB64 as _e,fromHEX as fe}from"@mysten/bcs";import{Ed25519Keypair as be}from"@mysten/sui/keypairs/ed25519";import{Secp256k1Keypair as he}from"@mysten/sui/keypairs/secp256k1";function Lt(i,e){let t=Y(a(e));return Number(a(i).mul(t))}function Gt(i,e=32){return BigInt.asUintN(e,BigInt(i)).toString()}function Kt(i,e=32){return Number(BigInt.asIntN(e,BigInt(i)))}function U(i,e){let t=Y(a(e));return Number(a(i).div(t))}function Ht(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return be.fromSecretKey(s)}let t=e==="hex"?fe(i):_e(i);return be.fromSecretKey(t)}function Qt(i,e="hex"){if(i instanceof Uint8Array){let s=Buffer.from(i);return he.fromSecretKey(s)}let t=e==="hex"?fe(i):_e(i);return he.fromSecretKey(t)}import{SuiClient as Ve}from"@mysten/sui/client";var G=class extends Ve{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 Le}from"@mysten/deepbook-v3";import{bcs as f}from"@mysten/sui/bcs";import{Base64 as Ge}from"js-base64";import{Transaction as A,coinWithBalance as Ce}from"@mysten/sui/transactions";import{normalizeStructTag as v,SUI_CLOCK_OBJECT_ID as B,normalizeSuiObjectId as Ke}from"@mysten/sui/utils";function ye(...i){let e="DeepbookV3_Utils_Sdk###"}var te=1e6,D=1e9,He={coinType:"0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP",decimals:6},Qe={coinType:"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",decimals:6},ke=1e3*60*60*24*365*100,K=class{_sdk;_deep;_cache={};constructor(e){this._sdk=e,this._deep=e.sdkOptions.network==="mainnet"?Qe:He}get sdk(){return this._sdk}get deepCoin(){return this._deep}createAndShareBalanceManager(){let e=new A,t=e.moveCall({target:`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::new`});return e.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::cetus_balance_manager::check_and_add_deepbook_balance_manager_indexer`,arguments:[e.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),t],typeArguments:[]}),e.moveCall({target:"0x2::transfer::public_share_object",arguments:[t],typeArguments:[`${this._sdk.sdkOptions.deepbook.published_at}::balance_manager::BalanceManager`]}),e}createAndDepsit({account:e,coin:t,amountToDeposit:s}){let n=new A;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 A;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 A,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 A}){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}async getBalanceManager(e,t=!0){let s=`getBalanceManager_${e}`,n=this.getCache(s,t);if(!t&&n!==void 0)return n;try{let r=new A;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(p=>p.type===`${this._sdk.sdkOptions.deepbook_utils.package_id}::cetus_balance_manager::GetCetusBalanceManagerList`)?.[0]?.parsedJson?.deepbook_balance_managers||[],l=[];return u.forEach(p=>{l.push({balanceManager:p,cetusBalanceManager:""})}),this.updateCache(s,l,I),l||[]}catch(r){throw r instanceof Error?r:new Error(String(r))}}withdrawSettledAmounts({poolInfo:e,balanceManager:t}){let s=new A,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}){try{let n=new A;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],p=c.returnValues[0][0],g=f.U64.parse(new Uint8Array(p)),d=a(g),m=d.eq(0)?"0":d.div(Math.pow(10,l.decimals)).toString();o[l.coinType]={adjusted_balance:m,balance:d.toString()}}),o}catch(n){throw n instanceof Error?n:new Error(String(n))}}async getAccountAllManagerBalance({account:e,coins:t}){try{let s=new A,n=await this.getBalanceManager(e,!0);if(!Array.isArray(n)||n.length===0)return{};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={},p=u*t.length;t.forEach((g,d)=>{let m=p+d,h=r.results?.[m];if(h){let b=h.returnValues[0][0],S=f.U64.parse(new Uint8Array(b)),y=a(S),C=y.eq(0)?"0":y.div(Math.pow(10,g.decimals)).toString();l[g.coinType]={adjusted_balance:C,balance:y.toString()}}}),o[c.balanceManager]=l}),o}catch(s){throw s instanceof Error?s:new Error(String(s))}}async getMarketPrice(e){try{let t=new A;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::mid_price`,arguments:[t.object(e.address),t.object(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(D).toString()}catch(t){return ye("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 A;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(te).toString(),baseQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getBaseQuantityOut(e,t,s){let n=new A;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(te).toString(),quoteQuantity:t,baseOut:o,quoteOut:c,deepRequired:u}}async getQuantityOut(e,t,s,n){let r=new A;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(te).toString(),baseQuantity:t,quoteQuantity:s,baseOut:c,quoteOut:u,deepRequired:l}}async estimatedMaxFee(e,t,s,n,r,o,c){let u=this.deepCoin;try{let{taker_fee:l,maker_fee:p}=e,g=a(l).div(D).toString(),d=a(p).div(D).toString(),m=await this.getMarketPrice(e),h=o?s:m!=="0"?m:c;if(h==="0")throw new Error("Cannot get market price");let b=Math.pow(10,e.baseCoin.decimals).toString(),S=Math.pow(10,e.quoteCoin.decimals).toString(),y=a(h).div(b).mul(S).mul(D).toString();if(n){let w=await this.getMarketPrice(e),k=a(o?s:w!=="0"?w:c).div(b).mul(S).mul(D).toString(),O=await this.getOrderDeepPrice(e);if(!O)throw new Error("Cannot get deep price");let x=X(k,s),V=a(t).mul(a(g)).mul(a(O.deep_per_asset)).div(a(D)),E=a(t).mul(a(d)).mul(a(O.deep_per_asset)).div(a(D));O.asset_is_base||(V=V.mul(x).div(a(D)),E=E.mul(x).div(a(D)));let ne=V.ceil().toString(),se=E.ceil().toString();return{takerFee:ne,makerFee:se,takerFeeDisplay:U(ne,u.decimals).toString(),makerFeeDisplay:U(se,u.decimals).toString(),feeType:u.coinType}}if(r){let w=X(y,s),j=a(t).mul(w).mul(g).div(a(D)).ceil().toFixed(0),k=a(t).mul(w).mul(d).div(a(D)).ceil().toFixed(0);return{takerFee:j,makerFee:k,takerFeeDisplay:U(j,e.quoteCoin.decimals).toString(),makerFeeDisplay:U(k,e.quoteCoin.decimals).toString(),feeType:e.quoteCoin.coinType}}let C=a(t).mul(a(g).mul(1.25)).ceil().toFixed(0),_=a(t).mul(a(d).mul(1.25)).ceil().toFixed(0);return{takerFee:C,makerFee:_,takerFeeDisplay:U(C,e.baseCoin.decimals).toString(),makerFeeDisplay:U(_,e.baseCoin.decimals).toString(),feeType:e.baseCoin.coinType}}catch(l){throw l instanceof Error?l:new Error(String(l))}}async getOrderDeepPrice(e){try{let t=new A;t.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order_deep_price`,arguments:[t.object(e.address)],typeArguments:[e.baseCoin.coinType,e.quoteCoin.coinType]});let n=(await this._sdk.fullClient.devInspectTransactionBlock({sender:this._sdk.sdkOptions.simulationAccount.address,transactionBlock:t})).results[0]?.returnValues[0]?.[0];return this.parseOrderDeepPrice(new Uint8Array(n))}catch{return null}}parseOrderDeepPrice(e){let t=new DataView(e.buffer),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 P.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"};try{let l=[{coinType:e.baseCoin.coinType,decimals:e.baseCoin.decimals},{coinType:e.quoteCoin.coinType,decimals:e.quoteCoin.decimals}];n&&l.push(u);let p=await this.getManagerBalance({account:r,balanceManager:c,coins:l}),g=p?.[t]?.balance||"0",d=p?.[s]?.balance||"0",m=o&&p?.[u.coinType]?.balance||"0";return{baseManagerBlance:g,quoteManagerBlance:d,feeManaerBalance:m}}catch(l){throw l instanceof Error?l:new Error(String(l))}}getFeeAsset(e,t,s,n,r,o,c,u,l,p){let g=a(e).gt(0)&&l,d="0";if(!g)return{feeAsset:this.getEmptyCoin(p,t),haveDepositFee:"0"};if(o||c){let m=a(r).sub(o?n:s);d=m.lte(0)?e:m.sub(e).lt(0)?m.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,p):this.getEmptyCoin(p,t),haveDepositFee:d}}async getTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){try{let p=this.deepCoin,g=v(e.baseCoin.coinType),d=v(e.quoteCoin.coinType),m=g===p.coinType,h=d===p.coinType,b=!m&&!h,{baseManagerBlance:S,quoteManagerBlance:y,feeManaerBalance:C}=await this.getTransactionRelatedBalance(e,g,d,b,o,c,u),_,w,j=!1,k=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let x=a(y).sub(s).toString();a(x).lt(0)?(j=!0,w=this.getCoinAssets(d,x,k,l)):w=this.getEmptyCoin(l,d),_=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,_=this.getCoinAssets(g,x,k,l)):_=this.getEmptyCoin(l,g),w=this.getEmptyCoin(l,d)}let O=this.getFeeAsset(n,p.coinType,t,s,C,h,m,k,c,l);return{baseAsset:_,quoteAsset:w,feeAsset:O,haveDeposit:j}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getMarketTransactionRelatedAssets(e,t,s,n,r,o,c,u,l){try{let p=this.deepCoin,g=v(e.baseCoin.coinType),d=v(e.quoteCoin.coinType),m=g===p.coinType,h=d===p.coinType,b=!m&&!h,{baseManagerBlance:S,quoteManagerBlance:y}=await this.getTransactionRelatedBalance(e,g,d,b,o,c,u),C,_,w=await this._sdk.getOwnerCoinAssets(o);if(r){c||(s=a(s).add(a(n)).toString());let k=a(y).sub(s).toString();if(a(k).lt(0)){let O;a(y).gt(0)&&(O=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:y,returnAssets:!0,txb:l}));let x=this.getCoinAssets(d,k,w,l);O&&l.mergeCoins(x,[O]),_=x}else _=this.withdrawFromManager({account:o,balanceManager:u,coin:e.quoteCoin,amountToWithdraw:s,returnAssets:!0,txb:l});C=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 O;a(S).gt(0)&&(O=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:S,returnAssets:!0,txb:l}));let x=this.getCoinAssets(g,k,w,l);O&&l.mergeCoins(x,[O]),C=x}else C=this.withdrawFromManager({account:o,balanceManager:u,coin:e.baseCoin,amountToWithdraw:t,returnAssets:!0,txb:l});_=this.getEmptyCoin(l,d)}let j=this.getEmptyCoin(l,p.coinType);return{baseAsset:C,quoteAsset:_,feeAsset:j}}catch(p){throw p instanceof Error?p:new Error(String(p))}}async createDepositThenPlaceLimitOrder({poolInfo:e,priceInput:t,quantity:s,orderType:n,isBid:r,maxFee:o,account:c,payWithDeep:u,expirationTimestamp:l=Date.now()+ke}){try{let p=this.deepCoin,g=e.address,d=e.baseCoin.decimals,m=e.quoteCoin.decimals,h=e.baseCoin.coinType,b=e.quoteCoin.coinType,S=a(t).mul(10**(m-d+9)).toString(),y=v(h),C=v(b),_=new A,w,j,k=await this._sdk.getOwnerCoinAssets(c);if(r){let E=a(t).mul(a(s).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();u||(E=a(E).add(a(o)).toString()),j=P.buildCoinForAmount(_,k,BigInt(E),C,!1,!0)?.targetCoin}else{let E=s;u||(E=a(s).abs().add(a(o)).toString()),w=P.buildCoinForAmount(_,k,BigInt(a(E).abs().toString()),y,!1,!0)?.targetCoin}let O=u?a(o).gt(0)?P.buildCoinForAmount(_,k,BigInt(a(o).abs().ceil().toString()),p.coinType,!1,!0).targetCoin:this.getEmptyCoin(_,p.coinType):this.getEmptyCoin(_,p.coinType),x=_.moveCall({typeArguments:[r?h:b],target:"0x2::coin::zero",arguments:[]}),V=[_.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),_.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),_.object(g),r?x:w,r?j:x,O,_.pure.u8(n),_.pure.u8(0),_.pure.u64(S),_.pure.u64(s),_.pure.bool(r),_.pure.bool(!1),_.pure.u64(l),_.object(B)];return _.moveCall({typeArguments:[y,C],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_limit_order`,arguments:V}),_}catch(p){throw p instanceof Error?p:new Error(String(p))}}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}){try{let u=e.address,l=e.baseCoin.coinType,p=e.quoteCoin.coinType,g=v(l),d=v(p),m=new A,h,b,S=t,y,C=await this.getOrderBook(e,"all",6);if(s){let k=C?.ask?.[0]?.price||"0",O=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();y=a(O).plus(a(O).mul(c)).ceil().toString()}else{let k=await C?.bid?.[0]?.price||"0",O=a(k).mul(a(t).div(Math.pow(10,e.baseCoin.decimals))).mul(Math.pow(10,e.quoteCoin.decimals)).toString();y=a(O).minus(a(O).mul(c)).floor().toString()}let _=await this._sdk.getOwnerCoinAssets(r);s?(o||(y=a(y).add(a(n)).toString()),b=this.getCoinAssets(d,y,_,m),h=this.getEmptyCoin(m,g)):(o||(S=a(S).add(a(n)).toString()),b=this.getEmptyCoin(m,d),h=this.getCoinAssets(g,S,_,m));let w=o?a(n).gt(0)?P.buildCoinForAmount(m,_,BigInt(a(n).abs().ceil().toString()),this.deepCoin.coinType,!1,!0).targetCoin:this.getEmptyCoin(m,this.deepCoin.coinType):this.getEmptyCoin(m,this.deepCoin.coinType),j=[m.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),m.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),m.object(u),h,b,w,m.pure.u8(0),m.pure.u64(t),m.pure.bool(s),m.pure.bool(o),m.pure.u64(y),m.object(B)];return m.moveCall({typeArguments:[g,d],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::create_deposit_then_place_market_order_v2`,arguments:j}),m}catch(u){throw u instanceof Error?u:new Error(String(u))}}async placeLimitOrder({balanceManager:e,poolInfo:t,priceInput:s,quantity:n,isBid:r,orderType:o,maxFee:c,account:u,payWithDeep:l,expirationTimestamp:p=Date.now()+ke}){try{let g=this.deepCoin,d=a(s).mul(10**(t.quoteCoin.decimals-t.baseCoin.decimals+9)).toString(),m=t.baseCoin.coinType,h=t.quoteCoin.coinType,b=new A,S=r?a(s).mul(a(n).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString():"0",y=r?"0":n,{baseAsset:C,quoteAsset:_,feeAsset:w,haveDeposit:j}=await this.getTransactionRelatedAssets(t,y,S,c,r,u,l,e,b);if(j){let x=[b.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),b.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),b.object(t.address),b.object(e),C,_,w.feeAsset,b.pure.u8(o),b.pure.u8(0),b.pure.u64(d),b.pure.u64(n),b.pure.bool(r),b.pure.bool(l),b.pure.u64(p),b.object(B)];return b.moveCall({typeArguments:[m,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_limit_order_by_owner`,arguments:x}),b}let k=new A;a(w.haveDepositFee).gt(0)&&this.depositIntoManager({account:u,balanceManager:e,coin:g,amountToDeposit:w.haveDepositFee,tx:k});let O=[k.object(this._sdk.sdkOptions.deepbook_utils.global_config_id),k.object(this._sdk.sdkOptions.deepbook_utils.cetus_balance_manager_indexer_id),k.object(t.address),k.object(e),k.pure.u8(o),k.pure.u8(0),k.pure.u64(d),k.pure.u64(n),k.pure.bool(r),k.pure.bool(l),k.pure.u64(p),k.object(B)];return k.moveCall({typeArguments:[m,h],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::place_limit_order`,arguments:O}),k}catch(g){throw g instanceof Error?g:new Error(String(g))}}modifyOrder({balanceManager:e,poolInfo:t,orderId:s,newOrderQuantity:n}){let r=new A;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 A,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 p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:n}),d=[],m=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(m)),b=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(b));return h.forEach((y,C)=>{let _=a(y).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),w=a(S[C]).div(Math.pow(10,t.decimals)).toString();d.push({price:_,quantity:w})}),d?.[0]?.price||0}catch{return 0}}async getBestBidprice(e){try{let{baseCoin:t,quoteCoin:s}=e,n=new A,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 p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:n}),d=[],m=g.results[0].returnValues[0][0],h=f.vector(f.u64()).parse(new Uint8Array(m)),b=g.results[0].returnValues[1][0],S=f.vector(f.u64()).parse(new Uint8Array(b));return h.forEach((y,C)=>{let _=a(y).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),w=a(S[C]).div(Math.pow(10,t.decimals)).toString();d.push({price:_,quantity:w})}),d?.[0]?.price||0}catch{return 0}}async getBestAskOrBidPrice(e,t){try{let{baseCoin:s,quoteCoin:n}=e,r=new A,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(),p=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(p,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}),m=[],h=d.results[0].returnValues[0][0],b=f.vector(f.u64()).parse(new Uint8Array(h)),S=d.results[0].returnValues[1][0],y=f.vector(f.u64()).parse(new Uint8Array(S));return b.forEach((C,_)=>{let w=a(C).div(Math.pow(10,9+n.decimals-s.decimals)).toString(),j=a(y[_]).div(Math.pow(10,s.decimals)).toString();m.push({price:w,quantity:j})}),m?.[0]?.price||0}catch{return 0}}async placeMarketOrder({balanceManager:e,poolInfo:t,baseQuantity:s,quoteQuantity:n,isBid:r,maxFee:o,account:c,payWithDeep:u,slippage:l=.01}){try{let p=v(t.baseCoin.coinType),g=v(t.quoteCoin.coinType),d=new A,{baseAsset:m,quoteAsset:h,feeAsset:b}=await this.getMarketTransactionRelatedAssets(t,s,n,o,r,c,u,e,d),S=await this.getOrderBook(t,"all",6);if(r){let _=S?.ask?.[0]?.price||"0",w=a(_).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(w).plus(a(w).mul(l)).ceil().toString()}else{let _=await S?.bid?.[0]?.price||"0",w=a(_).mul(a(s).div(Math.pow(10,t.baseCoin.decimals))).mul(Math.pow(10,t.quoteCoin.decimals)).toString();n=a(w).minus(a(w).mul(l)).floor().toString()}let y=n,C=[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),m,h,b,d.pure.u8(0),d.pure.u64(s),d.pure.bool(r),d.pure.bool(u),d.pure.u64(y),d.object(B)];return d.setSenderIfNotSet(c),d.moveCall({typeArguments:[p,g],target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::deepbookv3_utils::deposit_then_place_market_order_by_owner_v2`,arguments:C}),d}catch(p){throw p instanceof Error?p:new Error(String(p))}}async getOrderInfoList(e,t,s){try{let n=new A;t.forEach(p=>{n.moveCall({target:`${this._sdk.sdkOptions.deepbook.package_id}::pool::get_order`,arguments:[n.object(e.address),n.pure.u128(p)],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(p=>{let g=p.returnValues[0][0],d=u.parse(new Uint8Array(g));l.push(d)}),l}catch{return[]}}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 A;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 p=(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(p)).constants}let o=await this.getOrderInfoList(e,r,t)||[],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 A;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 Le({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 m=a(g).div(Math.pow(10,9+s.decimals-t.decimals)).toString(),h=a(u[d]).div(Math.pow(10,t.decimals)).toString();l[m]?l[m]={price:m,quantity:a(l[m].quantity).add(h).toString()}:l[m]={price:m,quantity:h}}),Object.values(l)}getLevel2RangeTx(e,t,s,n,r=new A){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 A,{baseCoin:u,quoteCoin:l}=e;try{if(t==="bid"||t==="all"){let h=n,b=s==="0"?r:s;c=this.getLevel2RangeTx(e,!0,h,b,c)}if(t==="ask"||t==="all"){let h=s==="0"?n:s,b=r;c=this.getLevel2RangeTx(e,!1,h,b,c)}let p=this._sdk.sdkOptions.simulationAccount.address,g=await this._sdk.fullClient.devInspectTransactionBlock({sender:p,transactionBlock:c}),d=[];(t==="bid"||t==="all")&&(d=g.results?.[0]?this.processOrderBookData(g.results[0],u,l,o):[]);let m=[];if(t==="ask"||t==="all"){let h=t==="ask"?0:1;m=g.results?.[h]?this.processOrderBookData(g.results[h],u,l,o):[]}return{bid:d.sort((h,b)=>b.price-h.price),ask:m.sort((h,b)=>h.price-b.price)}}catch{let g=this._sdk.sdkOptions.simulationAccount.address,d=[],m=[];try{let h=this.getLevel2RangeTx(e,!0,n,s),b=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});d=b.results?.[0]?this.processOrderBookData(b.results[0],u,l,o):[]}catch{d=[]}try{let h=this.getLevel2RangeTx(e,!1,n,s),b=await this._sdk.fullClient.devInspectTransactionBlock({sender:g,transactionBlock:h});m=b.results?.[0]?this.processOrderBookData(b.results[0],u,l,o):[]}catch{m=[]}return{bid:d,ask:m}}}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 A,n=await this.getMarketPrice(e),{baseCoin:r,quoteCoin:o}=e;if(t==="bid"||t==="all"){let g=Math.pow(10,-6),d=n,m=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(m),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),m=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(m),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)),m=u.results[0]?.returnValues[1]?.[0],h=f.vector(f.u64()).parse(new Uint8Array(m));d.forEach((b,S)=>{let y=a(b).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),C=a(h[S]).div(Math.pow(10,r.decimals)).toString();l.push({price:y,quantity:C})})}let p=[];if(t==="ask"||t==="all"){let g=t==="ask"?0:1,d=u.results[g]?.returnValues[0]?.[0],m=f.vector(f.u64()).parse(new Uint8Array(d)),h=u.results[g]?.returnValues[1]?.[0],b=f.vector(f.u64()).parse(new Uint8Array(h));m.forEach((S,y)=>{let C=a(S).div(Math.pow(10,9+o.decimals-r.decimals)).toString(),_=a(b[y]).div(Math.pow(10,r.decimals)).toString();p.push({price:C,quantity:_})})}return{bid:l,ask:p}}catch{return{bids:[],asks:[]}}}async getWalletBalance(e){let t=await this._sdk.fullClient?.getAllBalances({owner:e});return Object.fromEntries(t.map((n,r)=>[v(n.coinType),n]))}async getAccount(e,t){let s=new A;for(let c=0;c<t.length;c++){let u=t[c];s.moveCall({target:`${this._sdk.sdkOptions.deepbook_utils.published_at}::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}),r;if(n?.events.length===0)return null;let o=[];return n?.events?.forEach((c,u)=>{r=c?.parsedJson;let l=r.account.open_orders.contents,p=r.account.owed_balances,g=r.account.settled_balances,d=r.account.unclaimed_rebates,m=r.account.taker_volume;o.push({balance_manager_id:e,open_orders:l,owed_balances:p,settled_balances:g,unclaimed_rebates:d,taker_volume:m,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,I),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(Ge.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(p=>p.objectId),u=await this._sdk.fullClient.batchGetObjects(c,{showContent:!0}),l=[];return u.forEach(p=>{let g=this.buildCoinConfig(p,t);this.updateCache(`${s}_${g.address}_getCoinConfig`,g,I),l.push({...g})}),this.updateCache(n,l,I),l}buildCoinConfig(e,t=!0){let s=me(e);s=s.value.fields;let n={...s};return n.id=ge(e),n.address=M(s.coin_type.fields.name).full_address,s.pyth_id&&(n.pyth_id=Ke(s.pyth_id)),this.transformExtensions(n,s.extension_fields.fields.contents,t),delete n.coin_type,n}updateCache(e,t,s=ie){let n=this._cache[e];n?(n.overdueTime=N(s),n.value=t):n=new F(t,N(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 H=class{_cache={};_rpcModule;_deepbookUtils;_sdkOptions;_senderAddress="";constructor(e){this._sdkOptions=e,this._rpcModule=new G({url:e.fullRpcUrl}),this._deepbookUtils=new K(this),J(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=I){let n=this._cache[e];n?(n.overdueTime=N(s),n.value=t):n=new F(t,N(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 qn="0x0000000000000000000000000000000000000000000000000000000000000006",Un="pool_script",Fn="pool_script_v2",Nn="router",$n="router_with_partner",Vn="fetcher_script",Ln="expect_swap",Gn="utils",Kn="0x1::coin::CoinInfo",Hn="0x1::coin::CoinStore",Qn="custodian_v2",Zn="clob_v2",zn="endpoints_v2",Wn=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 Ze=(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))(Ze||{});var cs=H;export{qn as CLOCK_ADDRESS,F as CachedContent,H as CetusClmmSDK,Ln as ClmmExpectSwapModule,Vn as ClmmFetcherModule,Un as ClmmIntegratePoolModule,Fn as ClmmIntegratePoolV2Module,Nn as ClmmIntegrateRouterModule,$n as ClmmIntegrateRouterWithPartnerModule,Gn as ClmmIntegrateUtilsModule,T as CoinAssist,Kn as CoinInfoAddress,Hn as CoinStoreAddress,te as DEEP_SCALAR,Xe as DEFAULT_GAS_BUDGET_FOR_MERGE,Ye as DEFAULT_GAS_BUDGET_FOR_SPLIT,nt as DEFAULT_GAS_BUDGET_FOR_STAKE,et as DEFAULT_GAS_BUDGET_FOR_TRANSFER,tt as DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI,rt as DEFAULT_NFT_TRANSFER_GAS_FEE,Zn as DeepbookClobV2Moudle,Qn as DeepbookCustodianV2Moudle,zn as DeepbookEndpointsV2Moudle,K as DeepbookUtilsModule,D as FLOAT_SCALAR,st as GAS_SYMBOL,Z as GAS_TYPE_ARG,oe as GAS_TYPE_ARG_LONG,yt as NORMALIZED_SUI_COIN_TYPE,Ze as OrderType,G as RpcModule,it as SUI_SYSTEM_STATE_OBJECT_ID,P as TransactionUtil,ae as addHexPrefix,Kt as asIntN,Gt as asUintN,ut as bufferToHex,I as cacheTime24h,ie as cacheTime5min,ct as checkAddress,ue as composeType,a as d,Y as decimalsMultiplier,cs as default,_t as extractAddressFromType,M as extractStructTagFromType,ft as fixCoinType,q as fixDown,Pe as fixSuiObjectId,U as fromDecimalsAmount,Wn as getDefaultSuiInputType,N as getFutureTime,ee as getMoveObject,$e as getMoveObjectType,Et as getMovePackageContent,qe as getObjectDeletedResponse,It as getObjectDisplay,me as getObjectFields,ge as getObjectId,Ue as getObjectNotExistsResponse,Pt as getObjectOwner,Rt as getObjectPreviousTransactionDigest,pe as getObjectReference,Mt as getObjectType,Dt as getObjectVersion,$ as getSuiObjectData,qt as hasPublicTransfer,lt as hexToNumber,dt as hexToString,ht as isSortedSymbols,Fe as isSuiObjectResponse,X as maxDecimal,Q as normalizeCoinType,J as patchFixSuiObjectId,jt as printTransaction,z as removeHexPrefix,Ht as secretKeyToEd25519Keypair,Qt as secretKeyToSecp256k1Keypair,at as shortAddress,xe as shortString,je as toBuffer,Lt as toDecimalsAmount,Be as utf8to16};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cetusprotocol/deepbook-utils",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "cetus deepbook utils sdk",
5
5
  "typings": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
@@ -80,7 +80,7 @@
80
80
  },
81
81
  "overrides": {
82
82
  "chalk": "5.3.0",
83
- "strip-ansi": "7.1.0",
83
+ "strip-ansi": "6.0.1",
84
84
  "color-convert": "2.0.1",
85
85
  "color-name": "1.1.4",
86
86
  "is-core-module": "2.13.1",