{"mappings":"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","sources":["src/model/canister/Market.ts","src/model/canister/KLine.ts","node_modules/@deland-labs/orderbook_kline_client/index.js","node_modules/@deland-labs/orderbook_kline_client/interface.js","node_modules/@deland-labs/orderbook_kline_client/idl.js","src/model/canister/Fusion.ts","node_modules/@deland-labs/fusion_client/index.js","node_modules/@deland-labs/fusion_client/interface.js","node_modules/@deland-labs/fusion_client/idl.js"],"sourcesContent":["import {\n DBTC_DICP_DEPTH_ID,\n DBTC_DICP_KLINE_ID,\n DBTC_DICP_MARKET_ID,\n DBTC_DICP_TRADE_HISTORY_ID,\n DETH_DICP_DEPTH_ID,\n DETH_DICP_KLINE_ID,\n DETH_DICP_MARKET_ID,\n DETH_DICP_TRADE_HISTORY_ID,\n TOKEN_DBTC_ID,\n TOKEN_DETH_ID,\n TOKEN_DICP_ID\n} from '../utils/config';\n\nexport interface MarketSetting {\n marketId: string;\n baseTokenId: string;\n quoteTokenId: string;\n priceDecimals: number;\n orderPricePrecision: number;\n orderVolumePrecision: number;\n depthVolumePrecision: number;\n depthLevels: Array; //[0.0001, 0.001, 0.01, 0.1, 1.0, 10.0, 100.0]\n defaultDepthLevel: number; // depth levels index\n baseTokenPrecision: number;\n quoteTokenPrecision: number;\n feeRate: number;\n miniOrderAmount: number;\n maxBidPriceLimit: number; // 110%\n maxAskPriceLimit: number; // 90%\n depthCanisterId: string;\n tradeHistoryCanisterId: string;\n klineCanisterId: string;\n}\n\nexport class Market {\n /**\n * get market setting\n * @param baseTokenId\n * @param quoteTokenId\n * @returns\n */\n public getMarketSetting = async (\n baseTokenId,\n quoteTokenId\n ): Promise => {\n if (baseTokenId === TOKEN_DBTC_ID && quoteTokenId === TOKEN_DICP_ID)\n return DBTC_DICP_MARKET_SETTING;\n else if (baseTokenId === TOKEN_DETH_ID && quoteTokenId === TOKEN_DICP_ID)\n return DETH_DICP_MARKET_SETTING;\n };\n\n public getMarketList = async (): Promise> => {\n return [DBTC_DICP_MARKET_SETTING, DETH_DICP_MARKET_SETTING];\n };\n}\n\nconst DBTC_DICP_MARKET_SETTING = {\n marketId: DBTC_DICP_MARKET_ID,\n baseTokenId: TOKEN_DBTC_ID,\n quoteTokenId: TOKEN_DICP_ID,\n priceDecimals: 32,\n orderPricePrecision: 3,\n orderVolumePrecision: 6,\n depthVolumePrecision: 6,\n depthLevels: [0.001, 0.01, 0.1, 1, 10, 100],\n defaultDepthLevel: 3,\n baseTokenPrecision: 6,\n quoteTokenPrecision: 4,\n miniOrderAmount: 10,\n feeRate: 0,\n maxBidPriceLimit: 10.0, // 1000%\n maxAskPriceLimit: 0.1, // 10%\n depthCanisterId: DBTC_DICP_DEPTH_ID,\n tradeHistoryCanisterId: DBTC_DICP_TRADE_HISTORY_ID,\n klineCanisterId: DBTC_DICP_KLINE_ID\n};\n\nconst DETH_DICP_MARKET_SETTING = {\n marketId: DETH_DICP_MARKET_ID,\n baseTokenId: TOKEN_DETH_ID,\n quoteTokenId: TOKEN_DICP_ID,\n priceDecimals: 32,\n orderPricePrecision: 3,\n orderVolumePrecision: 4,\n depthVolumePrecision: 4,\n depthLevels: [0.001, 0.01, 0.1, 1, 10, 100],\n defaultDepthLevel: 3,\n baseTokenPrecision: 4,\n quoteTokenPrecision: 4,\n miniOrderAmount: 10,\n feeRate: 0,\n maxBidPriceLimit: 10.0, // 1000%\n maxAskPriceLimit: 0.1, // 10%\n depthCanisterId: DETH_DICP_DEPTH_ID,\n tradeHistoryCanisterId: DETH_DICP_TRADE_HISTORY_ID,\n klineCanisterId: DETH_DICP_KLINE_ID\n};\n","import BigNumber from 'bignumber.js';\nimport { AuthBase } from '../AuthBase';\nimport {\n KlineTick,\n idlFactory as klineIDL,\n _SERVICE as KlineActor\n} from '@deland-labs/orderbook_kline_client';\nimport { executeWithLogging } from '../utils/errorLogger';\nimport { CanisterError } from '../utils/exception';\nimport { parseToCommon } from '../utils/helper';\n\nexport interface Tick {\n low: BigNumber;\n high: BigNumber;\n close: BigNumber;\n open: BigNumber;\n volume: BigNumber;\n time: number;\n tickIndex: number;\n}\n\nexport enum TickSpaceIndex {\n OneMinute = 1,\n FiveMinutes = 2,\n FifteenMinutes = 3,\n ThirtyMinutes = 4,\n OneHour = 5,\n FourHours = 6,\n OneDay = 7,\n Week = 8,\n Month = 9\n}\n\nexport class KLine extends AuthBase {\n private klineCanisterId: string;\n constructor(klineCanisterId: string) {\n super();\n this.klineCanisterId = klineCanisterId;\n }\n\n /**\n * fetch latest tick\n * @param tickSpace\n * @returns\n */\n public fetchCurrentTick = async (\n tickSpace: TickSpaceIndex\n ): Promise => {\n return await executeWithLogging(async () => {\n const klineActor = await this.createKlineActor(this.klineCanisterId);\n const res = await klineActor.get_current_kline(tickSpace);\n if ('Ok' in res) {\n return res.Ok.length === 0\n ? undefined\n : this.parseOriginTickToCommon(tickSpace, res.Ok[0]);\n } else throw new CanisterError(res.Err);\n });\n };\n /**\n * fetch ticks\n * @param tickSpaceIndex\n * @param offset\n * @param limit\n * @returns\n */\n public fetchTicks = async (\n tickSpaceIndex: TickSpaceIndex,\n offset: number,\n limit: number\n ): Promise> => {\n const klineActor = await this.createKlineActor(this.klineCanisterId);\n const res = await klineActor.get_kline_ticks(tickSpaceIndex, offset, limit);\n if ('Ok' in res)\n return res.Ok.map(tick =>\n this.parseOriginTickToCommon(tickSpaceIndex, tick)\n );\n else throw new CanisterError(res.Err);\n };\n\n private parseOriginTickToCommon = (\n tickSpaceIndex: TickSpaceIndex,\n originTick: KlineTick\n ): Tick => {\n return {\n low: parseToCommon(originTick.low),\n high: parseToCommon(originTick.high),\n close: parseToCommon(originTick.close),\n open: parseToCommon(originTick.open),\n volume: parseToCommon(originTick.volume),\n tickIndex: parseToCommon(originTick.tick_index).toNumber(),\n time: this.parseTickIndexToTimestamp(\n tickSpaceIndex,\n originTick.tick_index\n )\n };\n };\n\n private parseTickIndexToTimestamp = (\n tickSpaceIndex: TickSpaceIndex,\n tickIndex: bigint\n ): number => {\n // start date is 2017-10-01\n const startDate = new Date(1506816000000);\n let tickIndexBN = new BigNumber(tickIndex.toString());\n let targetDate = startDate;\n switch (tickSpaceIndex) {\n case TickSpaceIndex.OneMinute:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 60 * 1000\n );\n break;\n case TickSpaceIndex.FiveMinutes:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 5 * 60 * 1000\n );\n break;\n case TickSpaceIndex.FifteenMinutes:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 15 * 60 * 1000\n );\n break;\n case TickSpaceIndex.ThirtyMinutes:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 30 * 60 * 1000\n );\n break;\n case TickSpaceIndex.OneHour:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 60 * 60 * 1000\n );\n break;\n case TickSpaceIndex.FourHours:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 60 * 60 * 4 * 1000\n );\n break;\n case TickSpaceIndex.OneDay:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 60 * 60 * 24 * 1000\n );\n break;\n case TickSpaceIndex.Week:\n targetDate = new Date(\n startDate.getTime() + tickIndexBN.toNumber() * 60 * 60 * 24 * 7 * 1000\n );\n break;\n case TickSpaceIndex.Month:\n {\n let year = startDate.getFullYear();\n let month = startDate.getMonth() + tickIndexBN.toNumber();\n let day = startDate.getDate();\n if (month > 12) {\n year += month / 12;\n }\n targetDate = new Date(year, month, day);\n }\n break;\n default:\n throw new Error('unsupported tickSpaceIndex');\n }\n\n return targetDate.getTime();\n };\n\n /**\n * create kline actor\n * @param klineCanisterId kline canister id\n * @param anonymous is anonymous access\n * @returns\n */\n private createKlineActor = (\n klineCanisterId: string,\n anonymous: boolean = true\n ) => {\n return this.createActor(klineCanisterId, klineIDL, anonymous);\n };\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nexports.__esModule = true;\nexports.init = exports.idlFactory = void 0;\n__exportStar(require(\"./interface\"), exports);\nvar idl_1 = require(\"./idl\");\n__createBinding(exports, idl_1, \"idlFactory\");\n__createBinding(exports, idl_1, \"init\");\n","\"use strict\";\nexports.__esModule = true;\n","\"use strict\";\nexports.__esModule = true;\nexports.init = exports.idlFactory = void 0;\nvar idlFactory = function (_a) {\n var IDL = _a.IDL;\n var CanisterNames = IDL.Variant({\n 'OrderbookDepth': IDL.Null,\n 'AmountToken': IDL.Null,\n 'OrderbookKline': IDL.Null,\n 'SELF': IDL.Null,\n 'CanisterManagement': IDL.Null,\n 'BucketManager': IDL.Null,\n 'OrderbookTradeList': IDL.Null,\n 'VolumeToken': IDL.Null,\n 'EventStorage': IDL.Null,\n 'Fusion': IDL.Null,\n 'BalanceKeeper': IDL.Null\n });\n var InitArgs = IDL.Record({\n 'dev_named_canister_ids': IDL.Vec(IDL.Tuple(CanisterNames, IDL.Principal))\n });\n var StateExportData = IDL.Record({ 'state_data': IDL.Vec(IDL.Nat8) });\n var ErrorInfo = IDL.Record({ 'code': IDL.Nat32, 'message': IDL.Text });\n var StateExportResponse = IDL.Variant({\n 'Ok': StateExportData,\n 'Err': ErrorInfo\n });\n var KlineTick = IDL.Record({\n 'low': IDL.Nat,\n 'high': IDL.Nat,\n 'close': IDL.Nat,\n 'open': IDL.Nat,\n 'volume': IDL.Nat,\n 'tick_index': IDL.Nat64\n });\n var Result = IDL.Variant({ 'Ok': IDL.Opt(KlineTick), 'Err': ErrorInfo });\n var Result_1 = IDL.Variant({\n 'Ok': IDL.Vec(KlineTick),\n 'Err': ErrorInfo\n });\n var BooleanActorResponse = IDL.Variant({\n 'Ok': IDL.Bool,\n 'Err': ErrorInfo\n });\n var GetVersionResponse = IDL.Variant({\n 'Ok': IDL.Nat64,\n 'Err': ErrorInfo\n });\n return IDL.Service({\n 'export_state': IDL.Func([], [StateExportResponse], []),\n 'get_current_kline': IDL.Func([IDL.Nat32], [Result], ['query']),\n 'get_kline_ticks': IDL.Func([IDL.Nat32, IDL.Nat32, IDL.Nat32], [Result_1], ['query']),\n 'get_reverse_current_kline': IDL.Func([IDL.Nat32], [Result], ['query']),\n 'get_reverse_kline_ticks': IDL.Func([IDL.Nat32, IDL.Nat32, IDL.Nat32], [Result_1], ['query']),\n 'get_wasm_info': IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], ['query']),\n 'load_state': IDL.Func([StateExportData], [BooleanActorResponse], []),\n 'trigger_event_processing': IDL.Func([], [], ['oneway']),\n 'version': IDL.Func([], [GetVersionResponse], ['query'])\n });\n};\nexports.idlFactory = idlFactory;\nvar init = function (_a) {\n var IDL = _a.IDL;\n var CanisterNames = IDL.Variant({\n 'OrderbookDepth': IDL.Null,\n 'AmountToken': IDL.Null,\n 'OrderbookKline': IDL.Null,\n 'SELF': IDL.Null,\n 'CanisterManagement': IDL.Null,\n 'BucketManager': IDL.Null,\n 'OrderbookTradeList': IDL.Null,\n 'VolumeToken': IDL.Null,\n 'EventStorage': IDL.Null,\n 'Fusion': IDL.Null,\n 'BalanceKeeper': IDL.Null\n });\n var InitArgs = IDL.Record({\n 'dev_named_canister_ids': IDL.Vec(IDL.Tuple(CanisterNames, IDL.Principal))\n });\n return [IDL.Opt(InitArgs)];\n};\nexports.init = init;\n","import BigNumber from 'bignumber.js';\nimport { AuthBase } from '../AuthBase';\nimport {\n idlFactory as fusionIDL,\n MyOrderItem,\n SwapExactTokensForTokensRequest,\n SwapTokensForExactTokensRequest,\n _SERVICE as FusionActor\n} from '@deland-labs/fusion_client';\nimport { executeWithLogging } from '../utils/errorLogger';\nimport { CanisterError } from '../utils/exception';\nimport { parseToCommon } from '../utils/helper';\n\nexport enum SpotOrderType {\n Bid = 1,\n Ask = 2\n}\n\nexport interface SpotOrder {\n id: bigint;\n type: SpotOrderType;\n volume: BigNumber;\n createdAt: number;\n filled: BigNumber;\n price: number;\n}\n\nexport enum SwapDirection {\n Bid = 1,\n Ask = 2\n}\n\nexport interface SwapExactTokensForTokenReq {\n amountOutMin: bigint;\n direction: SwapDirection;\n exactTokenAmount: bigint;\n}\n\nexport interface SwapTokensForExactTokenReq {\n direction: SwapDirection;\n amountInMax: bigint;\n exactTokenAmount: bigint;\n}\n\nexport interface SwapLiquidityInfo {\n poolAmount: BigNumber;\n poolVolume: BigNumber;\n poolLP: BigNumber;\n userLP: BigNumber;\n}\n\nexport interface AddLiquidityReq {\n volume: bigint;\n amount: bigint;\n}\n\nexport class Fusion extends AuthBase {\n private marketId: string;\n private priceDecimals: number;\n constructor(marketId: string, priceDecimals: number) {\n super();\n this.marketId = marketId;\n this.priceDecimals = priceDecimals;\n }\n\n /**\n * get liquidity info\n * @returns {Promise}\n */\n public fetchLiquidityInfo = (\n walletAuth: boolean = false\n ): Promise => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, !walletAuth);\n const res = await fusion.get_swap_info();\n if ('Ok' in res) {\n return {\n poolAmount: parseToCommon(res.Ok.pool_amount),\n poolVolume: parseToCommon(res.Ok.pool_volume),\n poolLP: parseToCommon(res.Ok.pool_liquidity),\n userLP: parseToCommon(res.Ok.user_liquidity)\n };\n } else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * add liquidity\n * @param request add liquidity request\n * @returns\n */\n public addLiquidity = (request: AddLiquidityReq): Promise => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.mint_liquidity(request);\n if ('Ok' in res) return res.Ok.liquidity;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * remove liquidity\n * @param liquidity liquidity token amount\n * @returns\n */\n public removeLiquidity = (liquidity: bigint) => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.burn_liquidity({ liquidity });\n if ('Ok' in res) return true;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * swap\n * @param request swap request\n * @returns\n */\n public swap = (\n request: SwapExactTokensForTokenReq | SwapTokensForExactTokenReq\n ) => {\n const reqETT = request as SwapExactTokensForTokenReq;\n const reqTTE = request as SwapTokensForExactTokenReq;\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n if (reqETT.amountOutMin) {\n const res = await fusion.swap_exact_tokens_for_tokens(\n this.parseSwapETTToOrigin(reqETT)\n );\n\n if ('Ok' in res) return res.Ok.order_id.id;\n else throw new CanisterError(res.Err);\n }\n\n if (reqTTE.amountInMax) {\n const res = await fusion.swap_tokens_for_exact_tokens(\n this.parseSwapTTEToOrigin(reqTTE)\n );\n\n if ('Ok' in res) return res.Ok.order_id.id;\n else throw new CanisterError(res.Err);\n }\n });\n };\n\n /**\n * cancel all orders\n * @returns {Promise}\n */\n public cancelAllOrders = () => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.cancel_all_orders();\n if ('Ok' in res) return res.Ok;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * cancel order\n * @param orderId open order id\n * @returns {Promise}\n */\n public cancelOrder = (orderId: bigint) => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.cancel_order({ id: orderId });\n if ('Ok' in res) return res.Ok;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * submit bid limit order\n * @param price price of order\n * @param volume volume of order\n * @returns\n */\n public submitBidLimitOrder = (\n price: bigint,\n volume: bigint\n ): Promise => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.submit_bid_limit_order(price, volume);\n if ('Ok' in res) return res.Ok.order_id.id;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * submit ask limit order\n * @param price price of order\n * @param volume volume of order\n * @returns\n */\n public submitAskLimitOrder = (\n price: bigint,\n volume: bigint\n ): Promise => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.submit_ask_limit_order(price, volume);\n if ('Ok' in res) return res.Ok.order_id.id;\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * fetch my open orders\n * @returns\n */\n public fetchOpenOrders = () => {\n return executeWithLogging(async () => {\n const fusion = await this.createFusionActor(this.marketId, false);\n const res = await fusion.get_user_orders();\n if ('Ok' in res) return res.Ok.map(this.parseOrder);\n else throw new CanisterError(res.Err);\n });\n };\n\n /**\n * parse origin order item to spot order\n * @param order\n * @returns\n */\n private parseOrder = (order: MyOrderItem): SpotOrder => {\n return {\n id: order.id.id,\n type:\n 'Bid' in order.order_direction ? SpotOrderType.Bid : SpotOrderType.Ask,\n volume: parseToCommon(order.volume),\n createdAt: parseToCommon(order.created_at).toNumber(),\n filled: parseToCommon(order.filled),\n price: parseToCommon(order.price, this.priceDecimals).toNumber()\n };\n };\n\n private swapDirectionToOrderDirection = (swapDirection: SwapDirection) => {\n switch (swapDirection) {\n case SwapDirection.Ask:\n return { Ask: null };\n case SwapDirection.Bid:\n return { Bid: null };\n default:\n throw new console.error('unknown swap direction');\n }\n };\n\n /**\n * parse swap exact token to token request to actor origin request\n * @param req\n * @returns {SwapExactTokensForTokensRequest}\n */\n private parseSwapETTToOrigin = (\n req: SwapExactTokensForTokenReq\n ): SwapExactTokensForTokensRequest => {\n return {\n amount_out_min: req.amountOutMin,\n order_direction: this.swapDirectionToOrderDirection(req.direction),\n exact_token: req.exactTokenAmount\n };\n };\n\n /**\n * parse swap token to exact token request to actor origin request\n * @param req\n * @returns {SwapTokensForExactTokensRequest}\n */\n private parseSwapTTEToOrigin = (\n req: SwapTokensForExactTokenReq\n ): SwapTokensForExactTokensRequest => {\n return {\n amount_in_max: req.amountInMax,\n order_direction: this.swapDirectionToOrderDirection(req.direction),\n exact_token: req.exactTokenAmount\n };\n };\n\n private createFusionActor = (marketId: string, anonymous: boolean = true) => {\n return this.createActor(marketId, fusionIDL, anonymous);\n };\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nexports.__esModule = true;\nexports.init = exports.idlFactory = void 0;\n__exportStar(require(\"./interface\"), exports);\nvar idl_1 = require(\"./idl\");\n__createBinding(exports, idl_1, \"idlFactory\");\n__createBinding(exports, idl_1, \"init\");\n","\"use strict\";\nexports.__esModule = true;\n","\"use strict\";\nexports.__esModule = true;\nexports.init = exports.idlFactory = void 0;\nvar idlFactory = function (_a) {\n var IDL = _a.IDL;\n var CanisterNames = IDL.Variant({\n 'OrderbookDepth': IDL.Null,\n 'AmountToken': IDL.Null,\n 'OrderbookKline': IDL.Null,\n 'SELF': IDL.Null,\n 'CanisterManagement': IDL.Null,\n 'BucketManager': IDL.Null,\n 'OrderbookTradeList': IDL.Null,\n 'VolumeToken': IDL.Null,\n 'EventStorage': IDL.Null,\n 'Fusion': IDL.Null,\n 'BalanceKeeper': IDL.Null\n });\n var InitArgs = IDL.Record({\n 'dev_named_canister_ids': IDL.Vec(IDL.Tuple(CanisterNames, IDL.Principal))\n });\n var BurnLiquidityRequest = IDL.Record({ 'liquidity': IDL.Nat });\n var BurnLiquidityResponse = IDL.Record({\n 'pool_volume': IDL.Nat,\n 'user_liquidity': IDL.Nat,\n 'volume': IDL.Nat,\n 'pool_amount': IDL.Nat,\n 'amount': IDL.Nat,\n 'pool_liquidity': IDL.Nat\n });\n var ErrorInfo = IDL.Record({ 'code': IDL.Nat32, 'message': IDL.Text });\n var BurnLiquidityActorResponse = IDL.Variant({\n 'Ok': BurnLiquidityResponse,\n 'Err': ErrorInfo\n });\n var BooleanActorResponse = IDL.Variant({\n 'Ok': IDL.Bool,\n 'Err': ErrorInfo\n });\n var OrderId = IDL.Record({ 'id': IDL.Nat });\n var StateExportData = IDL.Record({ 'state_data': IDL.Vec(IDL.Nat8) });\n var StateExportResponse = IDL.Variant({\n 'Ok': StateExportData,\n 'Err': ErrorInfo\n });\n var GetFusionEventsRequest = IDL.Record({ 'limit': IDL.Nat32 });\n var EventData = IDL.Record({\n 'code': IDL.Nat8,\n 'data': IDL.Vec(IDL.Nat8),\n 'version': IDL.Nat64\n });\n var GetFusionEventsResponse = IDL.Record({\n 'left_count': IDL.Nat32,\n 'events': IDL.Vec(EventData)\n });\n var SwapInfoResponse = IDL.Record({\n 'pool_volume': IDL.Nat,\n 'user_liquidity': IDL.Nat,\n 'pool_amount': IDL.Nat,\n 'pool_liquidity': IDL.Nat\n });\n var GetSwapInfoActorResponse = IDL.Variant({\n 'Ok': SwapInfoResponse,\n 'Err': ErrorInfo\n });\n var OrderDirection = IDL.Variant({ 'Ask': IDL.Null, 'Bid': IDL.Null });\n var MyOrderItem = IDL.Record({\n 'id': OrderId,\n 'order_direction': OrderDirection,\n 'volume': IDL.Nat,\n 'created_at': IDL.Nat64,\n 'filled': IDL.Nat,\n 'price': IDL.Nat\n });\n var GetUserOrdersActorResponse = IDL.Variant({\n 'Ok': IDL.Vec(MyOrderItem),\n 'Err': ErrorInfo\n });\n var MintLiquidityRequest = IDL.Record({\n 'volume': IDL.Nat,\n 'amount': IDL.Nat\n });\n var MintLiquidityActorResponse = IDL.Variant({\n 'Ok': BurnLiquidityRequest,\n 'Err': ErrorInfo\n });\n var RemoveFusionEventsRequest = IDL.Record({\n 'end_version_excluded': IDL.Nat64,\n 'start_version_included': IDL.Nat64\n });\n var RemoveFusionEventsResponse = IDL.Record({ 'left_count': IDL.Nat32 });\n var SubmitOrderResponse = IDL.Record({\n 'state_version_before_submission': IDL.Nat64,\n 'order_id': OrderId\n });\n var SubmitOrderActorResponse = IDL.Variant({\n 'Ok': SubmitOrderResponse,\n 'Err': ErrorInfo\n });\n var SwapExactTokensForTokensRequest = IDL.Record({\n 'amount_out_min': IDL.Nat,\n 'order_direction': OrderDirection,\n 'exact_token': IDL.Nat\n });\n var SwapTokensForExactTokensRequest = IDL.Record({\n 'order_direction': OrderDirection,\n 'amount_in_max': IDL.Nat,\n 'exact_token': IDL.Nat\n });\n var SubmitOrderDetails = IDL.Variant({\n 'Limit': IDL.Record({\n 'order_direction': OrderDirection,\n 'volume': IDL.Nat,\n 'price': IDL.Nat\n }),\n 'SwapExactTokensForTokens': SwapExactTokensForTokensRequest,\n 'SwapTokensForExactTokens': SwapTokensForExactTokensRequest\n });\n var TrySwapTokenRequest = IDL.Record({\n 'order_direction': OrderDirection,\n 'exact_token': IDL.Nat\n });\n var TrySwapTokenResponse = IDL.Record({ 'value': IDL.Nat });\n var TrySwapTokenActorResponse = IDL.Variant({\n 'Ok': TrySwapTokenResponse,\n 'Err': ErrorInfo\n });\n var GetVersionResponse = IDL.Variant({\n 'Ok': IDL.Nat64,\n 'Err': ErrorInfo\n });\n return IDL.Service({\n 'burn_liquidity': IDL.Func([BurnLiquidityRequest], [BurnLiquidityActorResponse], []),\n 'cancel_all_orders': IDL.Func([], [BooleanActorResponse], []),\n 'cancel_order': IDL.Func([OrderId], [BooleanActorResponse], []),\n 'export_state': IDL.Func([], [StateExportResponse], []),\n 'get_events': IDL.Func([GetFusionEventsRequest], [GetFusionEventsResponse], ['query']),\n 'get_swap_info': IDL.Func([], [GetSwapInfoActorResponse], ['query']),\n 'get_user_orders': IDL.Func([], [GetUserOrdersActorResponse], ['query']),\n 'get_wasm_info': IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], ['query']),\n 'init_es': IDL.Func([IDL.Principal, IDL.Nat8, IDL.Principal, IDL.Nat8], [BooleanActorResponse], []),\n 'load_state': IDL.Func([StateExportData], [BooleanActorResponse], []),\n 'mint_liquidity': IDL.Func([MintLiquidityRequest], [MintLiquidityActorResponse], []),\n 'remove_events': IDL.Func([RemoveFusionEventsRequest], [RemoveFusionEventsResponse], []),\n 'submit_ask_limit_order': IDL.Func([IDL.Nat, IDL.Nat], [SubmitOrderActorResponse], []),\n 'submit_bid_limit_order': IDL.Func([IDL.Nat, IDL.Nat], [SubmitOrderActorResponse], []),\n 'submit_order': IDL.Func([SubmitOrderDetails], [SubmitOrderActorResponse], []),\n 'swap_exact_tokens_for_tokens': IDL.Func([SwapExactTokensForTokensRequest], [SubmitOrderActorResponse], []),\n 'swap_tokens_for_exact_tokens': IDL.Func([SwapTokensForExactTokensRequest], [SubmitOrderActorResponse], []),\n 'try_submit_order': IDL.Func([SubmitOrderDetails], [SubmitOrderActorResponse], ['query']),\n 'try_swap_exact_tokens_for_tokens': IDL.Func([TrySwapTokenRequest], [TrySwapTokenActorResponse], ['query']),\n 'try_swap_tokens_for_exact_tokens': IDL.Func([TrySwapTokenRequest], [TrySwapTokenActorResponse], ['query']),\n 'version': IDL.Func([], [GetVersionResponse], ['query'])\n });\n};\nexports.idlFactory = idlFactory;\nvar init = function (_a) {\n var IDL = _a.IDL;\n var CanisterNames = IDL.Variant({\n 'OrderbookDepth': IDL.Null,\n 'AmountToken': IDL.Null,\n 'OrderbookKline': IDL.Null,\n 'SELF': IDL.Null,\n 'CanisterManagement': IDL.Null,\n 'BucketManager': IDL.Null,\n 'OrderbookTradeList': IDL.Null,\n 'VolumeToken': IDL.Null,\n 'EventStorage': IDL.Null,\n 'Fusion': IDL.Null,\n 'BalanceKeeper': IDL.Null\n });\n var InitArgs = IDL.Record({\n 'dev_named_canister_ids': IDL.Vec(IDL.Tuple(CanisterNames, IDL.Principal))\n });\n return [IDL.Opt(InitArgs)];\n};\nexports.init = init;\n"],"names":["$iI5ED","parcelRequire","$9af4a1e4610610fb$export$3db8c5834c5aa726","getMarketSetting","async","baseTokenId","quoteTokenId","TOKEN_DBTC_ID","TOKEN_DICP_ID","$9af4a1e4610610fb$var$DBTC_DICP_MARKET_SETTING","TOKEN_DETH_ID","$9af4a1e4610610fb$var$DETH_DICP_MARKET_SETTING","getMarketList","marketId","DBTC_DICP_MARKET_ID","priceDecimals","orderPricePrecision","orderVolumePrecision","depthVolumePrecision","depthLevels","defaultDepthLevel","baseTokenPrecision","quoteTokenPrecision","miniOrderAmount","feeRate","maxBidPriceLimit","maxAskPriceLimit","depthCanisterId","DBTC_DICP_DEPTH_ID","tradeHistoryCanisterId","DBTC_DICP_TRADE_HISTORY_ID","klineCanisterId","DBTC_DICP_KLINE_ID","DETH_DICP_MARKET_ID","DETH_DICP_DEPTH_ID","DETH_DICP_TRADE_HISTORY_ID","DETH_DICP_KLINE_ID","$5Kq8F","$44c123f15354feb8$export$e7bb70f22234c45c","TickSpaceIndex1","$44c123f15354feb8$export$f10d48daaa48000d","$cdNtN","AuthBase","constructor","super","this","fetchCurrentTick","tickSpace","$9YgT4","executeWithLogging","klineActor","createKlineActor","res","get_current_kline","Ok","length","undefined","parseOriginTickToCommon","$eLiKN","CanisterError","Err","fetchTicks","tickSpaceIndex","offset","limit","get_kline_ticks","map","tick","originTick","low","$j1eIZ","parseToCommon","high","close","open","volume","tickIndex","tick_index","toNumber","time","parseTickIndexToTimestamp","startDate","Date","tickIndexBN","$parcel$interopDefault","toString","targetDate","OneMinute","getTime","FiveMinutes","FifteenMinutes","ThirtyMinutes","OneHour","FourHours","OneDay","Week","Month","year","getFullYear","month","getMonth","day","getDate","Error","anonymous","createActor","$5kgIm","idlFactory","$3e0bc925bfdbee83$var$__createBinding","module","exports","__createBinding","Object","create","o","m","k","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","$3e0bc925bfdbee83$var$__exportStar","__exportStar","p","prototype","hasOwnProperty","call","init","$howoi","$bbf6835dfd5094a1$export$1e511d4a378977f5","$ca9dcdb37bdfd1fe$export$1e511d4a378977f5","$ca9dcdb37bdfd1fe$export$2cd8252107eb640b","$ca9dcdb37bdfd1fe$export$b2034e2ea8897403","_a","IDL","CanisterNames","Variant","OrderbookDepth","Null","AmountToken","OrderbookKline","SELF","CanisterManagement","BucketManager","OrderbookTradeList","VolumeToken","EventStorage","Fusion","BalanceKeeper","StateExportData","Record","dev_named_canister_ids","Vec","Tuple","Principal","state_data","Nat8","ErrorInfo","code","Nat32","message","Text","StateExportResponse","KlineTick","Nat","Nat64","Result","Opt","Result_1","BooleanActorResponse","Bool","GetVersionResponse","Service","export_state","Func","get_reverse_current_kline","get_reverse_kline_ticks","get_wasm_info","load_state","trigger_event_processing","version","InitArgs","$4f18a0b19f3ce0e2$export$d84ce7d327166663","SpotOrderType1","$4f18a0b19f3ce0e2$export$fc91849ec744e649","SwapDirection1","$4f18a0b19f3ce0e2$export$a3c697b37392954d","fetchLiquidityInfo","walletAuth","fusion","createFusionActor","get_swap_info","poolAmount","pool_amount","poolVolume","pool_volume","poolLP","pool_liquidity","userLP","user_liquidity","addLiquidity","request","mint_liquidity","liquidity","removeLiquidity","burn_liquidity","swap","reqETT","reqTTE","amountOutMin","swap_exact_tokens_for_tokens","parseSwapETTToOrigin","order_id","id","amountInMax","swap_tokens_for_exact_tokens","parseSwapTTEToOrigin","cancelAllOrders","cancel_all_orders","cancelOrder","orderId","cancel_order","submitBidLimitOrder","price","submit_bid_limit_order","submitAskLimitOrder","submit_ask_limit_order","fetchOpenOrders","get_user_orders","parseOrder","order","type","order_direction","Bid","Ask","createdAt","created_at","filled","swapDirectionToOrderDirection","swapDirection","console","error","req","amount_out_min","direction","exact_token","exactTokenAmount","amount_in_max","$lzC9t","$fb4a7603183d1430$var$__createBinding","$fb4a7603183d1430$var$__exportStar","$a1zoa","$060b3c30ba9c6dcf$export$1e511d4a378977f5","$74c572d6b22b6a1c$export$1e511d4a378977f5","$74c572d6b22b6a1c$export$2cd8252107eb640b","$74c572d6b22b6a1c$export$b2034e2ea8897403","BurnLiquidityRequest","BurnLiquidityResponse","amount","BurnLiquidityActorResponse","OrderId","GetFusionEventsRequest","EventData","data","GetFusionEventsResponse","left_count","events","SwapInfoResponse","GetSwapInfoActorResponse","OrderDirection","MyOrderItem","GetUserOrdersActorResponse","MintLiquidityRequest","MintLiquidityActorResponse","RemoveFusionEventsRequest","end_version_excluded","start_version_included","RemoveFusionEventsResponse","SubmitOrderResponse","state_version_before_submission","SubmitOrderActorResponse","SwapExactTokensForTokensRequest","SwapTokensForExactTokensRequest","SubmitOrderDetails","Limit","SwapExactTokensForTokens","SwapTokensForExactTokens","TrySwapTokenRequest","TrySwapTokenResponse","value","TrySwapTokenActorResponse","get_events","init_es","remove_events","submit_order","try_submit_order","try_swap_exact_tokens_for_tokens","try_swap_tokens_for_exact_tokens"],"version":3,"file":"Trading.9faaaef3.js.map"}