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