@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 +102 -3
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
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
|
-
|
|
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
|
-
|
|
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
|
+
"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": "
|
|
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",
|