{"version":3,"sources":["../../src/modules/swapModule.ts"],"sourcesContent":["import {\n  InputGenerateTransactionPayloadData,\n  Serializer,\n} from \"@aptos-labs/ts-sdk\";\nimport {\n  SwapAMMParams,\n  SwapCLMMParams,\n  SwapStableParams,\n} from \"../types/swap.type\";\nimport { TappSDK } from \"../core\";\nimport { Nullable, PoolInfo, RequestResult } from \"../types\";\nimport { ErrorNotFound } from \"../common/ErrorNotFound\";\n\nexport default class SwapModule {\n  protected _sdk: TappSDK;\n  constructor(sdk: TappSDK) {\n    this._sdk = sdk;\n  }\n\n  swapAMMTransactionPayload({\n    poolId,\n    a2b,\n    fixedAmountIn = true,\n    amount0,\n    amount1,\n  }: SwapAMMParams) {\n    const ser = new Serializer();\n\n    ser.serializeStr(poolId);\n    ser.serializeBool(a2b);\n    ser.serializeBool(fixedAmountIn);\n    ser.serializeU64(amount0);\n    ser.serializeU64(amount1);\n\n    const payload: InputGenerateTransactionPayloadData = {\n      function: `${this._sdk.sdkConfig.contractAddress}::router::swap`,\n      functionArguments: [ser.toUint8Array()],\n    };\n\n    return payload;\n  }\n\n  swapCLMMTransactionPayload({\n    poolId,\n    amountIn,\n    minAmountOut,\n    a2b,\n    fixedAmountIn = true,\n    targetSqrtPrice,\n  }: SwapCLMMParams) {\n    const ser = new Serializer();\n\n    ser.serializeStr(poolId);\n    ser.serializeBool(a2b);\n    ser.serializeBool(fixedAmountIn);\n    ser.serializeU64(amountIn);\n    ser.serializeU64(minAmountOut);\n    ser.serializeU128(targetSqrtPrice);\n\n    const payload: InputGenerateTransactionPayloadData = {\n      function: `${this._sdk.sdkConfig.contractAddress}::router::swap`,\n      functionArguments: [ser.toUint8Array()],\n    };\n\n    return payload;\n  }\n\n  swapStableTransactionPayload({\n    poolId,\n    tokenIn,\n    tokenOut,\n    amountIn,\n    minAmountOut,\n  }: SwapStableParams) {\n    const ser = new Serializer();\n\n    ser.serializeStr(poolId);\n    ser.serializeU64(tokenIn);\n    ser.serializeU64(tokenOut);\n    ser.serializeU256(amountIn);\n    ser.serializeU256(minAmountOut);\n\n    const payload: InputGenerateTransactionPayloadData = {\n      function: `${this._sdk.sdkConfig.contractAddress}::router::swap`,\n      functionArguments: [ser.toUint8Array()],\n    };\n\n    return payload;\n  }\n\n  async getRoute(tokenAddr0: string, tokenAddr1: string) {\n    const res = await this._sdk.request.post<RequestResult<Nullable<PoolInfo>>>(\n      \"public/pool_info\",\n      {\n        tokenAddrs: [tokenAddr0, tokenAddr1],\n      }\n    );\n\n    if (!res.result) {\n      throw new ErrorNotFound(`Route not found. ${tokenAddr0} - ${tokenAddr1}`);\n    }\n\n    return res.result;\n  }\n}\n"],"mappings":"yCAAA,OAEE,cAAAA,MACK,qBAUP,IAAqBC,EAArB,KAAgC,CAE9B,YAAYC,EAAc,CACxB,KAAK,KAAOA,CACd,CAEA,0BAA0B,CACxB,OAAAC,EACA,IAAAC,EACA,cAAAC,EAAgB,GAChB,QAAAC,EACA,QAAAC,CACF,EAAkB,CAChB,IAAMC,EAAM,IAAIC,EAEhB,OAAAD,EAAI,aAAaL,CAAM,EACvBK,EAAI,cAAcJ,CAAG,EACrBI,EAAI,cAAcH,CAAa,EAC/BG,EAAI,aAAaF,CAAO,EACxBE,EAAI,aAAaD,CAAO,EAE6B,CACnD,SAAU,GAAG,KAAK,KAAK,UAAU,eAAe,iBAChD,kBAAmB,CAACC,EAAI,aAAa,CAAC,CACxC,CAGF,CAEA,2BAA2B,CACzB,OAAAL,EACA,SAAAO,EACA,aAAAC,EACA,IAAAP,EACA,cAAAC,EAAgB,GAChB,gBAAAO,CACF,EAAmB,CACjB,IAAMJ,EAAM,IAAIC,EAEhB,OAAAD,EAAI,aAAaL,CAAM,EACvBK,EAAI,cAAcJ,CAAG,EACrBI,EAAI,cAAcH,CAAa,EAC/BG,EAAI,aAAaE,CAAQ,EACzBF,EAAI,aAAaG,CAAY,EAC7BH,EAAI,cAAcI,CAAe,EAEoB,CACnD,SAAU,GAAG,KAAK,KAAK,UAAU,eAAe,iBAChD,kBAAmB,CAACJ,EAAI,aAAa,CAAC,CACxC,CAGF,CAEA,6BAA6B,CAC3B,OAAAL,EACA,QAAAU,EACA,SAAAC,EACA,SAAAJ,EACA,aAAAC,CACF,EAAqB,CACnB,IAAMH,EAAM,IAAIC,EAEhB,OAAAD,EAAI,aAAaL,CAAM,EACvBK,EAAI,aAAaK,CAAO,EACxBL,EAAI,aAAaM,CAAQ,EACzBN,EAAI,cAAcE,CAAQ,EAC1BF,EAAI,cAAcG,CAAY,EAEuB,CACnD,SAAU,GAAG,KAAK,KAAK,UAAU,eAAe,iBAChD,kBAAmB,CAACH,EAAI,aAAa,CAAC,CACxC,CAGF,CAEA,MAAM,SAASO,EAAoBC,EAAoB,CACrD,IAAMC,EAAM,MAAM,KAAK,KAAK,QAAQ,KAClC,mBACA,CACE,WAAY,CAACF,EAAYC,CAAU,CACrC,CACF,EAEA,GAAI,CAACC,EAAI,OACP,MAAM,IAAIC,EAAc,oBAAoBH,CAAU,MAAMC,CAAU,EAAE,EAG1E,OAAOC,EAAI,MACb,CACF","names":["Serializer","SwapModule","sdk","poolId","a2b","fixedAmountIn","amount0","amount1","ser","Serializer","amountIn","minAmountOut","targetSqrtPrice","tokenIn","tokenOut","tokenAddr0","tokenAddr1","res","ErrorNotFound"]}