UNPKG

@ferra-xyz/aggregator

Version:
1 lines 93.1 kB
{"version":3,"sources":["../src/errors/errors.ts","../src/modules/quoter.ts","../src/modules/agg-swap.ts","../src/interfaces/IQuoter.ts","../src/utils/contracts.ts","../src/utils/hex.ts","../src/math/coin-assist.ts","../src/types/sui.ts","../src/utils/transaction-util.ts","../src/integrates/ferra/clmm.ts","../src/integrates/ferra/dlmm.ts","../src/utils/cached-content.ts","../src/utils/rpc.ts","../src/utils/tx-block.ts","../src/sdk.ts","../src/main.ts","../src/config/mainnet.ts","../src/config/testnet.ts","../src/config/beta.ts","../src/config/config.ts","../src/index.ts"],"names":["Transaction","DexOrigins","DexTypes","structTag","SDKConfig"],"mappings":"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","sourcesContent":["export enum MathErrorCode {\n IntegerDowncastOverflow = `IntegerDowncastOverflow`,\n MulOverflow = `MultiplicationOverflow`,\n MulDivOverflow = `MulDivOverflow`,\n MulShiftRightOverflow = `MulShiftRightOverflow`,\n MulShiftLeftOverflow = `MulShiftLeftOverflow`,\n DivideByZero = `DivideByZero`,\n UnsignedIntegerOverflow = `UnsignedIntegerOverflow`,\n InvalidCoinAmount = `InvalidCoinAmount`,\n InvalidLiquidityAmount = `InvalidLiquidityAmount`,\n InvalidReserveAmount = `InvalidReserveAmount`,\n InvalidSqrtPrice = `InvalidSqrtPrice`,\n NotSupportedThisCoin = `NotSupportedThisCoin`,\n InvalidTwoTickIndex = `InvalidTwoTickIndex`,\n}\n\nexport enum CoinErrorCode {\n CoinAmountMaxExceeded = `CoinAmountMaxExceeded`,\n CoinAmountMinSubceeded = `CoinAmountMinSubceeded `,\n SqrtPriceOutOfBounds = `SqrtPriceOutOfBounds`,\n}\n\nexport enum SwapErrorCode {\n InvalidSqrtPriceLimitDirection = `InvalidSqrtPriceLimitDirection`,\n ZeroTradableAmount = `ZeroTradableAmount`,\n AmountOutBelowMinimum = `AmountOutBelowMinimum`,\n AmountInAboveMaximum = `AmountInAboveMaximum`,\n NextTickNotFound = `NextTickNoutFound`,\n TickArraySequenceInvalid = `TickArraySequenceInvalid`,\n TickArrayCrossingAboveMax = `TickArrayCrossingAboveMax`,\n TickArrayIndexNotInitialized = `TickArrayIndexNotInitialized`,\n ParamsLengthNotEqual = `ParamsLengthNotEqual`,\n}\n\nexport enum PositionErrorCode {\n InvalidTickEvent = `InvalidTickEvent`,\n InvalidPositionObject = `InvalidPositionObject`,\n InvalidPositionRewardObject = `InvalidPositionRewardObject`,\n}\n\n\nexport enum PartnerErrorCode {\n NotFoundPartnerObject = `NotFoundPartnerObject`,\n InvalidParnterRefFeeFields = `InvalidParnterRefFeeFields`,\n}\n\nexport enum ConfigErrorCode {\n InvalidConfig = `InvalidConfig`,\n InvalidConfigHandle = `InvalidConfigHandle`,\n InvalidSimulateAccount = `InvalidSimulateAccount`,\n}\n\nexport enum UtilsErrorCode {\n InvalidSendAddress = `InvalidSendAddress`,\n InvalidRecipientAddress = `InvalidRecipientAddress`,\n InvalidRecipientAndAmountLength = `InvalidRecipientAndAmountLength`,\n InsufficientBalance = `InsufficientBalance`,\n InvalidTarget = `InvalidTarget`,\n InvalidTransactionBuilder = `InvalidTransactionBuilder`,\n}\n\nexport enum RouterErrorCode {\n InvalidCoin = `InvalidCoin`,\n NotFoundPath = `NotFoundPath`,\n NoDowngradeNeedParams = `NoDowngradeNeedParams`,\n InvalidQuoteUrl = `InvalidQuoteUrl`,\n InvalidTransactionBuilder = `InvalidTransactionBuilder`,\n InvalidServerResponse = `InvalidServerResponse`,\n}\n\nexport enum TypesErrorCode {\n InvalidType = `InvalidType`,\n}\n\nexport type AggPairsErrorCode =\n | MathErrorCode\n | SwapErrorCode\n | CoinErrorCode\n | PositionErrorCode\n | PartnerErrorCode\n | ConfigErrorCode\n | UtilsErrorCode\n | RouterErrorCode\n | TypesErrorCode\n\nexport class AggPairsError extends Error {\n override message: string\n\n errorCode?: AggPairsErrorCode\n\n constructor(message: string, errorCode?: AggPairsErrorCode) {\n super(message)\n this.message = message\n this.errorCode = errorCode\n }\n\n static isClmmpoolsErrorCode(e: any, code: AggPairsErrorCode): boolean {\n return e instanceof AggPairsError && e.errorCode === code\n }\n}\n","import { AggPairsError, RouterErrorCode } from \"../errors/errors\"\nimport { InputFindBestQuotesParams, TradingRoute } from \"../interfaces\"\nimport { IModule } from \"../interfaces/IModule\"\nimport { FerraAggregatorSDK } from \"../sdk\"\nimport { CachedContent } from \"../utils/cached-content\"\n\nexport class QuoterModule implements IModule {\n protected _sdk: FerraAggregatorSDK\n\n /**\n * Cache storage for pair data\n */\n private readonly _cache: Record<string, CachedContent> = {}\n\n /**\n * Initialize the pair module with SDK instance\n * @param sdk - FerraAggregatorSDK instance\n */\n constructor(sdk: FerraAggregatorSDK) {\n this._sdk = sdk\n this.getBestQuotes = this.getBestQuotes.bind(this)\n }\n\n /**\n * Get the SDK instance\n * @returns FerraAggregatorSDK instance\n */\n get sdk() {\n return this._sdk\n }\n\n\n async getBestQuotes(params: InputFindBestQuotesParams): Promise<TradingRoute[]> {\n const { quoterUrl } = this._sdk.sdkOptions\n if (!quoterUrl) {\n return []\n }\n\n let apiResponse\n\n const slippageTolerance = (params.slippageTolerance === null || params.slippageTolerance === undefined)? \"\": `&slippageTolerance=${params.slippageTolerance}`\n const quoteUrlApi = `${quoterUrl}?from=${params.from}&to=${params.to}&amount=${params.amount}` + slippageTolerance\n try {\n apiResponse = await fetch(quoteUrlApi)\n } catch (fetchError) {\n throw new AggPairsError(`Failed to get pool list with liquidity from ${quoteUrlApi}.`, RouterErrorCode.InvalidQuoteUrl)\n }\n\n let responseData\n try {\n responseData = await apiResponse.json()\n } catch (parseError) {\n throw new AggPairsError(`Failed to parse response from ${quoteUrlApi}.`, RouterErrorCode.InvalidQuoteUrl)\n }\n\n if (responseData.code !== 200) {\n throw new AggPairsError(\n `Failed to get pool list from ${quoteUrlApi}. Status code is ${responseData.code}.`,\n RouterErrorCode.InvalidQuoteUrl\n )\n }\n\n return responseData?.data as TradingRoute[]\n }\n\n}\n","// AggSwapModule.ts\nimport { AggPairsError, RouterErrorCode, UtilsErrorCode } from \"../errors/errors\"\nimport { IModule } from \"../interfaces/IModule\"\nimport { FerraAggregatorSDK, SdkOptions } from \"../sdk\"\nimport { CachedContent } from \"../utils/cached-content\"\nimport { Transaction, TransactionResult } from \"@mysten/sui/transactions\"\nimport { SuiObjectRef } from \"@mysten/sui/client\"\nimport { AggSwapParams, SwapClmmFerraParams, SwapDlmmFerraParams } from \"../interfaces/IAggSwap\"\nimport { DexOrigins, DexTypes, TradingRoute } from \"../interfaces\"\nimport { FerraClmmAgg, FerraDlmmAgg } from \"../integrates/ferra\"\nimport { checkInvalidSuiAddress, TransactionUtil } from \"../utils\"\nimport { CoinAssist } from \"../math/coin-assist\"\n\n\nexport class AggSwapModule implements IModule {\n protected _sdk: FerraAggregatorSDK\n\n /**\n * Cache storage for pair data\n */\n private readonly _cache: Record<string, CachedContent> = {}\n\n /**\n * Initialize the pair module with SDK instance\n * @param sdk - FerraAggregatorSDK instance\n */\n constructor(sdk: FerraAggregatorSDK) {\n this._sdk = sdk\n }\n\n /**\n * Get the SDK instance\n * @returns FerraAggregatorSDK instance\n */\n get sdk() {\n return this._sdk\n }\n\n public async swapWithTradingRoutes(params: TradingRoute[]): Promise<Transaction> {\n let tx = new Transaction()\n\n const sender = this.sdk.senderAddress\n\n // Validate sender address\n if (!checkInvalidSuiAddress(this.sdk.senderAddress)) {\n throw new AggPairsError(\n 'Invalid sender address: ferra agg sdk requires a valid sender address. Please set it using sdk.senderAddress = \"0x...\"',\n UtilsErrorCode.InvalidSendAddress\n )\n }\n tx.setSender(sender)\n // Create new transaction if not provided\n tx.setSenderIfNotSet(sender)\n\n const coinTypeIn = params[0].swapStep[0].coinIn\n\n // Fetch coin assets for both tokens (skip if SUI coin)\n const coinInAssets = CoinAssist.isSuiCoin(coinTypeIn) ? [] : await this.sdk.getOwnerCoinAssets(sender, coinTypeIn)\n\n let amountIns: Array<TransactionResult[number]> = []\n let amountOuts: Array<TransactionResult[number]> = []\n\n for (let routeIndex = 0; routeIndex < params.length; routeIndex++) {\n amountIns.push(TransactionUtil.buildCoinAmount(tx, coinInAssets, coinTypeIn, BigInt(params[routeIndex].swapStep[0].amountIn ?? 0n)))\n }\n\n // Process each trading route\n for (let routeIndex = 0; routeIndex < params.length; routeIndex++) {\n const route = params[routeIndex]\n\n // Process each swap step in the route\n let amountIn: TransactionResult[number] = amountIns[routeIndex]\n\n for (let stepIndex = 0; stepIndex < route.swapStep.length; stepIndex++) {\n const step = route.swapStep[stepIndex]\n\n // Create swap parameters from the step\n const swapParams: AggSwapParams = {\n poolId: step.poolAddress,\n coinTypeA: step.direction ? step.coinIn : step.coinOut,\n coinTypeB: step.direction ? step.coinOut : step.coinIn,\n amountIn: amountIn,\n atob: step.direction,\n dexOrigin: step.origin,\n dexType: step.type,\n minAmountOut: stepIndex === route.swapStep.length - 1 ? BigInt(route?.outputAmountMin ?? 0) : 0n\n }\n // Execute the swap\n const data = this.swap(tx, swapParams)\n\n tx = data[0]\n amountIn = data[1] //anount_in = amount_out\n\n if (stepIndex === route.swapStep.length - 1) {\n amountOuts.push(data[1])\n }\n }\n }\n\n //transfer all amountOuts to sender\n if (amountOuts.length > 1) {\n tx.mergeCoins(amountOuts[0], amountOuts.slice(1))\n }\n tx.transferObjects([amountOuts[0]], tx.pure.address(sender))\n\n return tx\n }\n\n /**\n * Execute a swap with automatic routing\n * @param params - Swap parameters\n * @returns Transaction object\n */\n private swap(tx: Transaction, params: AggSwapParams): [Transaction, TransactionResult[number]] {\n const { dexOrigin, dexType, atob } = params\n let coinOut: TransactionResult[number]\n try {\n switch (dexOrigin) {\n case DexOrigins.Ferra:\n [tx, coinOut] = this.switchFerraDex(tx, dexType, {\n poolId: params.poolId,\n coinTypeA: params.coinTypeA,\n coinTypeB: params.coinTypeB,\n amountIn: params.amountIn,\n atob\n })\n break;\n case DexOrigins.Cetus:\n throw new AggPairsError(\"Not supported\")\n case DexOrigins.Navi:\n throw new AggPairsError(\"Not supported\")\n case DexOrigins.SuiSwap:\n throw new AggPairsError(\"Not supported\")\n case DexOrigins.Turbos:\n throw new AggPairsError(\"Not supported\")\n\n default:\n throw new AggPairsError(\"Not supported\")\n }\n\n } catch (error) {\n throw error\n }\n\n return [tx, coinOut]\n }\n\n private switchFerraDex(tx: Transaction, dexType: DexTypes, swapParams: SwapClmmFerraParams | SwapDlmmFerraParams): [Transaction, TransactionResult[number]] {\n try {\n let coinOut: TransactionResult[number]\n switch (dexType) {\n case DexTypes.CLMM:\n [tx, coinOut] = FerraClmmAgg.swap(tx, this.sdk.sdkOptions, swapParams as SwapClmmFerraParams)\n break;\n\n case DexTypes.DLMM:\n [tx, coinOut] = FerraDlmmAgg.swap(tx, this.sdk.sdkOptions, { ...swapParams, pairId: swapParams.poolId })\n break;\n\n default:\n throw new AggPairsError(\"Not supported\")\n }\n return [tx, coinOut]\n\n } catch (error) {\n throw error\n }\n }\n\n}\n","export enum DexOrigins {\n Ferra = \"Ferra\",\n Cetus = \"Cetus\",\n Turbos = \"Turbos\",\n Navi = \"Navi\",\n SuiSwap = \"SuiSwap\",\n}\n\nexport enum DexTypes {\n AMM = \"AMM\",\n DAMM = \"DAMM\",\n DAMM2 = \"DAMM2\",\n CLMM = \"CLMM\",\n DLMM = \"DLMM\"\n}\n\nexport type InputFindBestQuotesParams = {\n from: string,\n to: string,\n amount: string,\n slippageTolerance?: number\n}\n\nexport type SwapStep = {\n direction: boolean //a to b or b to a\n type: DexTypes\n origin: DexOrigins\n poolAddress: string\n coinIn: string\n coinOut: string\n feeRate: number\n amountIn: string\n amountOut: string\n currentSqrtPrice: string\n decimalsIn: number\n decimalsOut: number\n currentPrice: string\n}\n\n// Split path configuration for multi-path routing\nexport type TradingRoute = {\n percent: string\n inputAmount: string\n outputAmount: string\n outputAmountMin?: string\n pathIndex: number\n lastQuoteOutput: string\n swapStep: SwapStep[]\n}","import { normalizeSuiObjectId } from '@mysten/sui/utils'\nimport { SuiAddressType, SuiStructTag } from '../types/sui'\nimport { CoinAssist, GAS_TYPE_ARG, GAS_TYPE_ARG_LONG } from '../math/coin-assist'\nimport { removeHexPrefix } from './hex'\n\nconst EQUAL = 0\nconst LESS_THAN = 1\nconst GREATER_THAN = 2\n\nfunction cmp(a: number, b: number) {\n if (a === b) {\n return EQUAL\n }\n if (a < b) {\n return LESS_THAN\n }\n return GREATER_THAN\n}\n\nfunction compare(symbolX: string, symbolY: string) {\n let i = 0\n\n const len = symbolX.length <= symbolY.length ? symbolX.length : symbolY.length\n\n const lenCmp = cmp(symbolX.length, symbolY.length)\n while (i < len) {\n const elemCmp = cmp(symbolX.charCodeAt(i), symbolY.charCodeAt(i))\n i += 1\n if (elemCmp !== 0) {\n return elemCmp\n }\n }\n\n return lenCmp\n}\n\nexport function isSortedSymbols(symbolX: string, symbolY: string) {\n return compare(symbolX, symbolY) === LESS_THAN\n}\n\nexport function composeType(address: string, generics: SuiAddressType[]): SuiAddressType\nexport function composeType(address: string, struct: string, generics?: SuiAddressType[]): SuiAddressType\nexport function composeType(address: string, module: string, struct: string, generics?: SuiAddressType[]): SuiAddressType\nexport function composeType(address: string, ...args: unknown[]): SuiAddressType {\n const generics: string[] = Array.isArray(args[args.length - 1]) ? (args.pop() as string[]) : []\n const chains = [address, ...args].filter(Boolean)\n\n let result: string = chains.join('::')\n\n if (generics && generics.length) {\n result += `<${generics.join(', ')}>`\n }\n\n return result\n}\n\nexport function extractAddressFromType(type: string) {\n return type.split('::')[0]\n}\n\nexport function extractStructTagFromType(type: string): SuiStructTag {\n try {\n let _type = type.replace(/\\s/g, '')\n\n const genericsString = _type.match(/(<.+>)$/)\n const generics = genericsString?.[0]?.match(/(\\w+::\\w+::\\w+)(?:<.*?>(?!>))?/g)\n if (generics) {\n _type = _type.slice(0, _type.indexOf('<'))\n const tag = extractStructTagFromType(_type)\n const structTag: SuiStructTag = {\n ...tag,\n type_arguments: generics.map((item) => extractStructTagFromType(item).source_address),\n }\n structTag.type_arguments = structTag.type_arguments.map((item: string) => {\n return CoinAssist.isSuiCoin(item) ? item : extractStructTagFromType(item).source_address\n })\n structTag.source_address = composeType(structTag.full_address, structTag.type_arguments)\n return structTag\n }\n const parts = _type.split('::')\n\n const isSuiCoin = _type === GAS_TYPE_ARG || _type === GAS_TYPE_ARG_LONG\n\n const structTag: SuiStructTag = {\n full_address: _type,\n address: isSuiCoin ? '0x2' : normalizeSuiObjectId(parts[0]),\n module: parts[1],\n name: parts[2],\n type_arguments: [],\n source_address: '',\n }\n structTag.full_address = `${structTag.address}::${structTag.module}::${structTag.name}`\n structTag.source_address = composeType(structTag.full_address, structTag.type_arguments)\n return structTag\n } catch (error) {\n return {\n full_address: type,\n address: '',\n module: '',\n name: '',\n type_arguments: [],\n source_address: type,\n }\n }\n}\n\nexport function normalizeCoinType(coinType: string): string {\n return extractStructTagFromType(coinType).source_address\n}\n\nexport function fixSuiObjectId(value: string): string {\n if (value.toLowerCase().startsWith('0x')) {\n return normalizeSuiObjectId(value)\n }\n return value\n}\n\n/**\n * Fixes and normalizes a coin type by removing or keeping the prefix.\n *\n * @param {string} coinType - The coin type to be fixed.\n * @param {boolean} removePrefix - Whether to remove the prefix or not (default: true).\n * @returns {string} - The fixed and normalized coin type.\n */\nexport const fixCoinType = (coinType: string, removePrefix = true) => {\n const arr = coinType.split('::')\n const address = arr.shift() as string\n let normalizeAddress = normalizeSuiObjectId(address)\n if (removePrefix) {\n normalizeAddress = removeHexPrefix(normalizeAddress)\n }\n return `${normalizeAddress}::${arr.join('::')}`\n}\n\n/**\n * Recursively traverses the given data object and patches any string values that represent Sui object IDs.\n *\n * @param {any} data - The data object to be patched.\n */\nexport function patchFixSuiObjectId(data: any) {\n for (const key in data) {\n const type = typeof data[key]\n if (type === 'object') {\n patchFixSuiObjectId(data[key])\n } else if (type === 'string') {\n const value = data[key]\n if (value && !value.includes('::')) {\n data[key] = fixSuiObjectId(value)\n }\n }\n }\n}\n","// eslint-disable-next-line import/no-import-module-exports\nimport { AggPairsError, TypesErrorCode } from '../errors/errors'\n\nconst HEX_REGEXP = /^[-+]?[0-9A-Fa-f]+\\.?[0-9A-Fa-f]*?$/\n\nexport function addHexPrefix(hex: string): string {\n return !hex.startsWith('0x') ? `0x${hex}` : hex\n}\n\nexport function removeHexPrefix(hex: string): string {\n return hex.startsWith('0x') ? `${hex.slice(2)}` : hex\n}\n\nexport function shortString(str: string, start = 4, end = 4) {\n const slen = Math.max(start, 1)\n const elen = Math.max(end, 1)\n\n return `${str.slice(0, slen + 2)} ... ${str.slice(-elen)}`\n}\n\nexport function shortAddress(address: string, start = 4, end = 4) {\n return shortString(addHexPrefix(address), start, end)\n}\n\nexport function checkAddress(address: any, options: { leadingZero: boolean } = { leadingZero: true }): boolean {\n if (typeof address !== 'string') {\n return false\n }\n let str = address\n\n if (options.leadingZero) {\n if (!address.startsWith('0x')) {\n return false\n }\n str = str.substring(2)\n }\n\n return HEX_REGEXP.test(str)\n}\n\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param v the value\n */\nexport function toBuffer(v: any): Buffer {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v)\n } else if (typeof v === 'string') {\n if (exports.isHexString(v)) {\n v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex')\n } else {\n v = Buffer.from(v)\n }\n } else if (typeof v === 'number') {\n v = exports.intToBuffer(v)\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0)\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray())\n } else {\n throw new AggPairsError(`Invalid type`, TypesErrorCode.InvalidType)\n }\n }\n return v\n}\n\nexport function bufferToHex(buffer: Buffer): string {\n return addHexPrefix(toBuffer(buffer).toString('hex'))\n}\n/**\n * '\\x02\\x00\\x00\\x00' to 2\n * @param binaryData\n */\nexport function hexToNumber(binaryData: string) {\n const buffer = new ArrayBuffer(4)\n const view = new DataView(buffer)\n\n for (let i = 0; i < binaryData.length; i++) {\n view.setUint8(i, binaryData.charCodeAt(i))\n }\n\n const number = view.getUint32(0, true) //\n\n return number\n}\n\nexport function utf8to16(str: string) {\n let out\n let i\n let c\n let char2\n let char3\n out = ''\n const len = str.length\n i = 0\n while (i < len) {\n c = str.charCodeAt(i++)\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n out += str.charAt(i - 1)\n break\n case 12:\n case 13:\n char2 = str.charCodeAt(i++)\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n char2 = str.charCodeAt(i++)\n char3 = str.charCodeAt(i++)\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n }\n }\n return out\n}\n\nexport function hexToString(str: string) {\n let val = ''\n const newStr = removeHexPrefix(str)\n\n const len = newStr.length / 2\n for (let i = 0; i < len; i++) {\n val += String.fromCharCode(parseInt(newStr.substr(i * 2, 2), 16))\n }\n return utf8to16(val)\n}\n","import { SuiMoveObject, SuiTransactionBlockResponse } from '@mysten/sui/client'\nimport { CoinAsset } from '../types'\nimport { extractStructTagFromType, normalizeCoinType } from '../utils/contracts'\nimport { SuiAddressType } from '../types/sui'\n\nconst COIN_TYPE = '0x2::coin::Coin'\nconst COIN_TYPE_ARG_REGEX = /^0x2::coin::Coin<(.+)>$/\nexport const DEFAULT_GAS_BUDGET_FOR_SPLIT = 1000\nexport const DEFAULT_GAS_BUDGET_FOR_MERGE = 500\nexport const DEFAULT_GAS_BUDGET_FOR_TRANSFER = 100\nexport const DEFAULT_GAS_BUDGET_FOR_TRANSFER_SUI = 100\nexport const DEFAULT_GAS_BUDGET_FOR_STAKE = 1000\nexport const GAS_TYPE_ARG = '0x2::sui::SUI'\nexport const GAS_TYPE_ARG_LONG = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI'\nexport const GAS_SYMBOL = 'SUI'\nexport const DEFAULT_NFT_TRANSFER_GAS_FEE = 450\nexport const SUI_SYSTEM_STATE_OBJECT_ID = '0x0000000000000000000000000000000000000005'\n/**\n * This class provides helper methods for working with coins.\n */\nexport class CoinAssist {\n /**\n * Get the coin type argument from a SuiMoveObject.\n *\n * @param obj The SuiMoveObject to get the coin type argument from.\n * @returns The coin type argument, or null if it is not found.\n */\n public static getCoinTypeArg(obj: SuiMoveObject) {\n const res = obj.type.match(COIN_TYPE_ARG_REGEX)\n return res ? res[1] : null\n }\n\n /**\n * Get whether a SuiMoveObject is a SUI coin.\n *\n * @param obj The SuiMoveObject to check.\n * @returns Whether the SuiMoveObject is a SUI coin.\n */\n public static isSUI(obj: SuiMoveObject) {\n const arg = CoinAssist.getCoinTypeArg(obj)\n return arg ? CoinAssist.getCoinSymbol(arg) === 'SUI' : false\n }\n\n /**\n * Get the coin symbol from a coin type argument.\n *\n * @param coinTypeArg The coin type argument to get the symbol from.\n * @returns The coin symbol.\n */\n public static getCoinSymbol(coinTypeArg: string) {\n return coinTypeArg.substring(coinTypeArg.lastIndexOf(':') + 1)\n }\n\n /**\n * Get the balance of a SuiMoveObject.\n *\n * @param obj The SuiMoveObject to get the balance from.\n * @returns The balance of the SuiMoveObject.\n */\n public static getBalance(obj: SuiMoveObject): bigint {\n return BigInt((obj.fields as any).balance)\n }\n\n /**\n * Get the total balance of a list of CoinAsset objects for a given coin address.\n *\n * @param objs The list of CoinAsset objects to get the total balance for.\n * @param coinAddress The coin address to get the total balance for.\n * @returns The total balance of the CoinAsset objects for the given coin address.\n */\n public static totalBalance(objs: CoinAsset[], coinAddress: SuiAddressType): bigint {\n let balanceTotal = BigInt(0)\n objs.forEach((obj) => {\n if (coinAddress === obj.coinAddress) {\n balanceTotal += BigInt(obj.balance)\n }\n })\n return balanceTotal\n }\n\n /**\n * Get the ID of a SuiMoveObject.\n *\n * @param obj The SuiMoveObject to get the ID from.\n * @returns The ID of the SuiMoveObject.\n */\n public static getID(obj: SuiMoveObject): string {\n return (obj.fields as any).id.id\n }\n\n /**\n * Get the coin type from a coin type argument.\n *\n * @param coinTypeArg The coin type argument to get the coin type from.\n * @returns The coin type.\n */\n public static getCoinTypeFromArg(coinTypeArg: string) {\n return `${COIN_TYPE}<${coinTypeArg}>`\n }\n\n\n\n /**\n * Get the CoinAsset objects for a given coin type.\n *\n * @param coinType The coin type to get the CoinAsset objects for.\n * @param allSuiObjects The list of all SuiMoveObjects.\n * @returns The CoinAsset objects for the given coin ty