@dzapio/sdk 2.0.6 → 2.0.7

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.
Files changed (216) hide show
  1. package/dist/examples/chain-utils.d.ts +1 -0
  2. package/dist/examples/chain-utils.js +20 -0
  3. package/dist/examples/permit-utils.d.ts +1 -0
  4. package/dist/examples/permit-utils.js +90 -0
  5. package/dist/examples/token-utils.d.ts +1 -0
  6. package/dist/examples/token-utils.js +41 -0
  7. package/dist/examples/trade-operations.d.ts +1 -0
  8. package/dist/examples/trade-operations.js +89 -0
  9. package/dist/examples/zap-operations.d.ts +1 -0
  10. package/dist/examples/zap-operations.js +69 -0
  11. package/dist/src/api/index.d.ts +27 -0
  12. package/dist/src/api/index.js +146 -0
  13. package/dist/src/artifacts/ERC20Permit.d.ts +374 -0
  14. package/dist/src/artifacts/ERC20Permit.js +469 -0
  15. package/dist/src/artifacts/Permit2.d.ts +700 -0
  16. package/dist/src/artifacts/Permit2.js +904 -0
  17. package/dist/src/artifacts/Permit2Proxy.d.ts +416 -0
  18. package/dist/src/artifacts/Permit2Proxy.js +206 -0
  19. package/dist/src/artifacts/default/DZapCoreAbi.d.ts +2 -0
  20. package/dist/src/artifacts/default/DZapCoreAbi.js +3079 -0
  21. package/dist/src/artifacts/default/DZapCoreV2Abi.d.ts +2 -0
  22. package/dist/src/artifacts/default/DZapCoreV2Abi.js +3719 -0
  23. package/dist/src/artifacts/default/DZapDcaAbi.d.ts +2 -0
  24. package/dist/src/artifacts/default/DZapDcaAbi.js +1829 -0
  25. package/dist/src/artifacts/default/Permit2Abi.d.ts +700 -0
  26. package/dist/src/artifacts/default/Permit2Abi.js +904 -0
  27. package/dist/src/artifacts/default/erc20Abi.d.ts +165 -0
  28. package/dist/src/artifacts/default/erc20Abi.js +220 -0
  29. package/dist/src/artifacts/default/index.d.ts +6 -0
  30. package/dist/src/artifacts/default/index.js +13 -0
  31. package/dist/src/artifacts/index.d.ts +2 -0
  32. package/dist/src/artifacts/index.js +9 -0
  33. package/dist/src/artifacts/staging/DZapCoreSwapAbi.d.ts +2 -0
  34. package/dist/src/artifacts/staging/DZapCoreSwapAbi.js +3079 -0
  35. package/dist/src/artifacts/staging/index.d.ts +2 -0
  36. package/dist/src/artifacts/staging/index.js +5 -0
  37. package/dist/src/axios/baseClient.d.ts +2 -0
  38. package/dist/src/axios/baseClient.js +7 -0
  39. package/dist/src/axios/index.d.ts +8 -0
  40. package/dist/src/axios/index.js +34 -0
  41. package/dist/src/chains/definitions/arthera.d.ts +35 -0
  42. package/dist/src/chains/definitions/arthera.js +28 -0
  43. package/dist/src/chains/definitions/fiveIre.d.ts +35 -0
  44. package/dist/src/chains/definitions/fiveIre.js +28 -0
  45. package/dist/src/chains/definitions/hyperEvm.d.ts +35 -0
  46. package/dist/src/chains/definitions/hyperEvm.js +26 -0
  47. package/dist/src/chains/definitions/hyperliquid.d.ts +35 -0
  48. package/dist/src/chains/definitions/hyperliquid.js +26 -0
  49. package/dist/src/chains/definitions/stable.d.ts +36 -0
  50. package/dist/src/chains/definitions/stable.js +31 -0
  51. package/dist/src/chains/index.d.ts +179 -0
  52. package/dist/src/chains/index.js +24 -0
  53. package/dist/src/config/index.d.ts +36 -0
  54. package/dist/src/config/index.js +59 -0
  55. package/dist/src/constants/address.d.ts +13 -0
  56. package/dist/src/constants/address.js +29 -0
  57. package/dist/src/constants/approval.d.ts +7 -0
  58. package/dist/src/constants/approval.js +17 -0
  59. package/dist/src/constants/axios.d.ts +2 -0
  60. package/dist/src/constants/axios.js +5 -0
  61. package/dist/src/constants/chains.d.ts +31 -0
  62. package/dist/src/constants/chains.js +34 -0
  63. package/dist/src/constants/contract.d.ts +6 -0
  64. package/dist/src/constants/contract.js +18 -0
  65. package/dist/src/constants/erc20.d.ts +25 -0
  66. package/dist/src/constants/erc20.js +28 -0
  67. package/dist/src/constants/httpMethods.d.ts +2 -0
  68. package/dist/src/constants/httpMethods.js +5 -0
  69. package/dist/src/constants/index.d.ts +48 -0
  70. package/dist/src/constants/index.js +53 -0
  71. package/dist/src/constants/permit.d.ts +29 -0
  72. package/dist/src/constants/permit.js +33 -0
  73. package/dist/src/constants/permit2.d.ts +2 -0
  74. package/dist/src/constants/permit2.js +5 -0
  75. package/dist/src/constants/rpc.d.ts +2 -0
  76. package/dist/src/constants/rpc.js +5 -0
  77. package/dist/src/constants/urlConstants.d.ts +15 -0
  78. package/dist/src/constants/urlConstants.js +18 -0
  79. package/dist/src/dZapClient/index.d.ts +1015 -0
  80. package/dist/src/dZapClient/index.js +255 -0
  81. package/dist/src/enums/index.d.ts +46 -0
  82. package/dist/src/enums/index.js +57 -0
  83. package/dist/src/index.d.ts +17 -0
  84. package/dist/src/index.js +48 -0
  85. package/dist/src/service/cache/cacheProvider.d.ts +10 -0
  86. package/dist/src/service/cache/cacheProvider.js +72 -0
  87. package/dist/src/service/cache/constant.d.ts +2 -0
  88. package/dist/src/service/cache/constant.js +6 -0
  89. package/dist/src/service/price/index.d.ts +16 -0
  90. package/dist/src/service/price/index.js +80 -0
  91. package/dist/src/service/price/provider/coingecko/config.d.ts +6 -0
  92. package/dist/src/service/price/provider/coingecko/config.js +9 -0
  93. package/dist/src/service/price/provider/coingecko/index.d.ts +9 -0
  94. package/dist/src/service/price/provider/coingecko/index.js +66 -0
  95. package/dist/src/service/price/provider/defiLlama/config.d.ts +3 -0
  96. package/dist/src/service/price/provider/defiLlama/config.js +6 -0
  97. package/dist/src/service/price/provider/defiLlama/index.d.ts +9 -0
  98. package/dist/src/service/price/provider/defiLlama/index.js +60 -0
  99. package/dist/src/service/price/provider/defiLlama/types.d.ts +11 -0
  100. package/dist/src/service/price/provider/defiLlama/types.js +2 -0
  101. package/dist/src/service/price/provider/dzap/index.d.ts +6 -0
  102. package/dist/src/service/price/provider/dzap/index.js +22 -0
  103. package/dist/src/service/price/types/IPriceProvider.d.ts +14 -0
  104. package/dist/src/service/price/types/IPriceProvider.js +8 -0
  105. package/dist/src/transactionHandlers/generic.d.ts +24 -0
  106. package/dist/src/transactionHandlers/generic.js +48 -0
  107. package/dist/src/transactionHandlers/permit.d.ts +61 -0
  108. package/dist/src/transactionHandlers/permit.js +177 -0
  109. package/dist/src/transactionHandlers/trade.d.ts +24 -0
  110. package/dist/src/transactionHandlers/trade.js +263 -0
  111. package/dist/src/transactionHandlers/zap.d.ts +37 -0
  112. package/dist/src/transactionHandlers/zap.js +135 -0
  113. package/dist/src/types/axiosClient.d.ts +6 -0
  114. package/dist/src/types/axiosClient.js +2 -0
  115. package/dist/src/types/btc.d.ts +45 -0
  116. package/dist/src/types/btc.js +2 -0
  117. package/dist/src/types/chains.d.ts +3 -0
  118. package/dist/src/types/chains.js +2 -0
  119. package/dist/src/types/contract.d.ts +14 -0
  120. package/dist/src/types/contract.js +2 -0
  121. package/dist/src/types/eip-2612.d.ts +24 -0
  122. package/dist/src/types/eip-2612.js +58 -0
  123. package/dist/src/types/index.d.ts +489 -0
  124. package/dist/src/types/index.js +8 -0
  125. package/dist/src/types/permit.d.ts +191 -0
  126. package/dist/src/types/permit.js +54 -0
  127. package/dist/src/types/wallet.d.ts +2 -0
  128. package/dist/src/types/wallet.js +2 -0
  129. package/dist/src/types/zap/build.d.ts +44 -0
  130. package/dist/src/types/zap/build.js +2 -0
  131. package/dist/src/types/zap/index.d.ts +34 -0
  132. package/dist/src/types/zap/index.js +23 -0
  133. package/dist/src/types/zap/path.d.ts +33 -0
  134. package/dist/src/types/zap/path.js +2 -0
  135. package/dist/src/types/zap/pool.d.ts +39 -0
  136. package/dist/src/types/zap/pool.js +2 -0
  137. package/dist/src/types/zap/position.d.ts +27 -0
  138. package/dist/src/types/zap/position.js +2 -0
  139. package/dist/src/types/zap/quote.d.ts +7 -0
  140. package/dist/src/types/zap/quote.js +2 -0
  141. package/dist/src/types/zap/status.d.ts +28 -0
  142. package/dist/src/types/zap/status.js +2 -0
  143. package/dist/src/types/zap/step.d.ts +23 -0
  144. package/dist/src/types/zap/step.js +2 -0
  145. package/dist/src/utils/amount.d.ts +82 -0
  146. package/dist/src/utils/amount.js +71 -0
  147. package/dist/src/utils/axios.d.ts +13 -0
  148. package/dist/src/utils/axios.js +42 -0
  149. package/dist/src/utils/date.d.ts +1 -0
  150. package/dist/src/utils/date.js +8 -0
  151. package/dist/src/utils/decoder/swap/abis.d.ts +643 -0
  152. package/dist/src/utils/decoder/swap/abis.js +831 -0
  153. package/dist/src/utils/decoder/swap/inputDataDecoder.d.ts +14 -0
  154. package/dist/src/utils/decoder/swap/inputDataDecoder.js +124 -0
  155. package/dist/src/utils/eip-2612/eip2612Permit.d.ts +23 -0
  156. package/dist/src/utils/eip-2612/eip2612Permit.js +121 -0
  157. package/dist/src/utils/eip-5792/batchApproveTokens.d.ts +21 -0
  158. package/dist/src/utils/eip-5792/batchApproveTokens.js +49 -0
  159. package/dist/src/utils/eip-5792/index.d.ts +3 -0
  160. package/dist/src/utils/eip-5792/index.js +9 -0
  161. package/dist/src/utils/eip-5792/isBatchTxnSupportedByWallet.d.ts +6 -0
  162. package/dist/src/utils/eip-5792/isBatchTxnSupportedByWallet.js +22 -0
  163. package/dist/src/utils/eip-5792/sendBatchCalls.d.ts +10 -0
  164. package/dist/src/utils/eip-5792/sendBatchCalls.js +25 -0
  165. package/dist/src/utils/eip-5792/waitForBatchTransactionReceipt.d.ts +4 -0
  166. package/dist/src/utils/eip-5792/waitForBatchTransactionReceipt.js +26 -0
  167. package/dist/src/utils/encodeApproveCall.d.ts +6 -0
  168. package/dist/src/utils/encodeApproveCall.js +13 -0
  169. package/dist/src/utils/erc20.d.ts +65 -0
  170. package/dist/src/utils/erc20.js +153 -0
  171. package/dist/src/utils/errors.d.ts +17 -0
  172. package/dist/src/utils/errors.js +78 -0
  173. package/dist/src/utils/index.d.ts +4566 -0
  174. package/dist/src/utils/index.js +196 -0
  175. package/dist/src/utils/multicall.d.ts +14 -0
  176. package/dist/src/utils/multicall.js +25 -0
  177. package/dist/src/utils/permit2/domain.d.ts +2 -0
  178. package/dist/src/utils/permit2/domain.js +11 -0
  179. package/dist/src/utils/permit2/index.d.ts +4 -0
  180. package/dist/src/utils/permit2/index.js +97 -0
  181. package/dist/src/utils/permit2/nonce.d.ts +15 -0
  182. package/dist/src/utils/permit2/nonce.js +61 -0
  183. package/dist/src/utils/permit2/permitData.d.ts +23 -0
  184. package/dist/src/utils/permit2/permitData.js +85 -0
  185. package/dist/src/utils/permit2/values.d.ts +54 -0
  186. package/dist/src/utils/permit2/values.js +88 -0
  187. package/dist/src/utils/permit2/witnessData.d.ts +4 -0
  188. package/dist/src/utils/permit2/witnessData.js +48 -0
  189. package/dist/src/utils/signIntent/custom.d.ts +11 -0
  190. package/dist/src/utils/signIntent/custom.js +31 -0
  191. package/dist/src/utils/signIntent/gasless.d.ts +12 -0
  192. package/dist/src/utils/signIntent/gasless.js +101 -0
  193. package/dist/src/utils/signTypedData.d.ts +11 -0
  194. package/dist/src/utils/signTypedData.js +21 -0
  195. package/dist/src/utils/tokens.d.ts +8 -0
  196. package/dist/src/utils/tokens.js +73 -0
  197. package/dist/src/utils/updateQuotes.d.ts +3 -0
  198. package/dist/src/utils/updateQuotes.js +69 -0
  199. package/dist/src/zap/constants/index.d.ts +2 -0
  200. package/dist/src/zap/constants/index.js +18 -0
  201. package/dist/src/zap/constants/path.d.ts +8 -0
  202. package/dist/src/zap/constants/path.js +11 -0
  203. package/dist/src/zap/constants/step.d.ts +3 -0
  204. package/dist/src/zap/constants/step.js +6 -0
  205. package/dist/src/zap/constants/urls.d.ts +13 -0
  206. package/dist/src/zap/constants/urls.js +16 -0
  207. package/dist/test/build.test.d.ts +1 -0
  208. package/dist/test/build.test.js +65 -0
  209. package/dist/test/permit/permit2Nonce.test.d.ts +2 -0
  210. package/dist/test/permit/permit2Nonce.test.js +96 -0
  211. package/dist/test/quotes.test.d.ts +1 -0
  212. package/dist/test/quotes.test.js +59 -0
  213. package/dist/test/status.test.d.ts +1 -0
  214. package/dist/test/status.test.js +37 -0
  215. package/dist/tsconfig.tsbuildinfo +1 -0
  216. package/package.json +1 -1
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPermitBatchTransferFromValues = exports.getPermitTransferFromValues = exports.getPermitSingleValues = void 0;
4
+ exports.getPermit2Values = getPermit2Values;
5
+ const erc20_1 = require("../../constants/erc20");
6
+ const permit_1 = require("../../constants/permit");
7
+ const Permit2_1 = require("../../artifacts/Permit2");
8
+ const index_1 = require("../index");
9
+ const nonce_1 = require("./nonce");
10
+ const getPermitSingleValues = async ({ spender, deadline, chainId, rpcUrls, account, expiration, token, permit2Address, }) => {
11
+ const publicClient = (0, index_1.getPublicClient)({ chainId, rpcUrls });
12
+ const nonceResult = await publicClient.readContract({
13
+ address: permit2Address,
14
+ abi: Permit2_1.abi,
15
+ functionName: erc20_1.erc20PermitFunctions.allowance,
16
+ args: [account, token.address, spender],
17
+ });
18
+ return {
19
+ permit2Values: {
20
+ details: {
21
+ token: token.address,
22
+ amount: BigInt(token.amount),
23
+ expiration,
24
+ nonce: nonceResult[2],
25
+ },
26
+ spender,
27
+ sigDeadline: deadline,
28
+ },
29
+ nonce: BigInt(nonceResult[2]),
30
+ };
31
+ };
32
+ exports.getPermitSingleValues = getPermitSingleValues;
33
+ const getPermitTransferFromValues = async ({ spender, deadline, chainId, rpcUrls, account, token, permit2Address, firstTokenNonce, }) => {
34
+ let nonce;
35
+ if (token.index === 0) {
36
+ nonce = await (0, nonce_1.getNextPermit2Nonce)(permit2Address, account, chainId, rpcUrls);
37
+ }
38
+ else if (firstTokenNonce === null) {
39
+ throw new Error(`Unable to find nonce for token:${token.address} for PermitTransferFrom`);
40
+ }
41
+ else {
42
+ nonce = BigInt(firstTokenNonce) + BigInt(token.index);
43
+ }
44
+ return {
45
+ permit2Values: {
46
+ permitted: {
47
+ token: token.address,
48
+ amount: BigInt(token.amount),
49
+ },
50
+ spender,
51
+ nonce,
52
+ deadline,
53
+ },
54
+ nonce,
55
+ };
56
+ };
57
+ exports.getPermitTransferFromValues = getPermitTransferFromValues;
58
+ const getPermitBatchTransferFromValues = async ({ spender, deadline, chainId, rpcUrls, account, permit2Address, tokens, }) => {
59
+ const nonce = await (0, nonce_1.getNextPermit2Nonce)(permit2Address, account, chainId, rpcUrls);
60
+ return {
61
+ permit2Values: {
62
+ permitted: tokens.map((token) => ({
63
+ token: token.address,
64
+ amount: BigInt(token.amount),
65
+ })),
66
+ spender,
67
+ nonce,
68
+ deadline,
69
+ },
70
+ nonce,
71
+ };
72
+ };
73
+ exports.getPermitBatchTransferFromValues = getPermitBatchTransferFromValues;
74
+ async function getPermit2Values(params) {
75
+ switch (params.primaryType) {
76
+ case permit_1.permit2PrimaryType.PermitSingle:
77
+ if (params.expiration === undefined || params.expiration === null) {
78
+ throw new Error('Expiration is required for PermitSingle');
79
+ }
80
+ return (0, exports.getPermitSingleValues)(Object.assign(Object.assign({}, params), { token: params.tokens[0], expiration: params.expiration }));
81
+ case permit_1.permit2PrimaryType.PermitWitnessTransferFrom:
82
+ return (0, exports.getPermitTransferFromValues)(Object.assign(Object.assign({}, params), { token: params.tokens[0] }));
83
+ case permit_1.permit2PrimaryType.PermitBatchWitnessTransferFrom:
84
+ return (0, exports.getPermitBatchTransferFromValues)(params);
85
+ default:
86
+ throw new Error(`Invalid permit type: ${params.primaryType}`);
87
+ }
88
+ }
@@ -0,0 +1,4 @@
1
+ import { Permit2Params, WitnessData } from '../../types/permit';
2
+ export declare const getPermit2WitnessData: (params: Permit2Params) => {
3
+ witnessData: WitnessData;
4
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPermit2WitnessData = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const permit_1 = require("../../types/permit");
6
+ const getPermit2WitnessData = (params) => {
7
+ const { gasless, account, spender } = params;
8
+ let witnessData;
9
+ if (gasless && params.swapDataHash) {
10
+ if (params.txType === constants_1.GaslessTxType.swap) {
11
+ witnessData = {
12
+ witness: {
13
+ txId: params.txId,
14
+ user: account,
15
+ executorFeesHash: params.executorFeesHash,
16
+ swapDataHash: params.swapDataHash,
17
+ },
18
+ witnessTypeName: permit_1.swapGaslessWitnessType.typeName,
19
+ witnessType: permit_1.swapGaslessWitnessType.type,
20
+ };
21
+ }
22
+ else {
23
+ witnessData = {
24
+ witness: {
25
+ txId: params.txId,
26
+ user: account,
27
+ executorFeesHash: params.executorFeesHash,
28
+ swapDataHash: params.swapDataHash,
29
+ adapterDataHash: params.adapterDataHash,
30
+ },
31
+ witnessTypeName: permit_1.bridgeGaslessWitnessType.typeName,
32
+ witnessType: permit_1.bridgeGaslessWitnessType.type,
33
+ };
34
+ }
35
+ }
36
+ else {
37
+ witnessData = {
38
+ witness: {
39
+ owner: account,
40
+ recipient: spender,
41
+ },
42
+ witnessTypeName: permit_1.defaultWitnessType.typeName,
43
+ witnessType: permit_1.defaultWitnessType.type,
44
+ };
45
+ }
46
+ return { witnessData };
47
+ };
48
+ exports.getPermit2WitnessData = getPermit2WitnessData;
@@ -0,0 +1,11 @@
1
+ import { StatusCodes, TxnStatus } from '../../enums';
2
+ import { HexString } from '../../types';
3
+ import { CustomTypedDataParams } from '../../types/permit';
4
+ export declare const signCustomTypedData: (params: CustomTypedDataParams) => Promise<{
5
+ status: TxnStatus;
6
+ code: StatusCodes;
7
+ data?: {
8
+ signature: HexString;
9
+ message: Record<string, any>;
10
+ };
11
+ }>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signCustomTypedData = void 0;
4
+ const enums_1 = require("../../enums");
5
+ const errors_1 = require("../errors");
6
+ const signTypedData_1 = require("../signTypedData");
7
+ const signCustomTypedData = async (params) => {
8
+ try {
9
+ const { account, signer, message, domain, primaryType, types } = params;
10
+ const signature = await (0, signTypedData_1.signTypedData)({
11
+ signer,
12
+ account,
13
+ domain,
14
+ message,
15
+ primaryType,
16
+ types,
17
+ });
18
+ return {
19
+ status: enums_1.TxnStatus.success,
20
+ code: enums_1.StatusCodes.Success,
21
+ data: {
22
+ signature,
23
+ message,
24
+ },
25
+ };
26
+ }
27
+ catch (error) {
28
+ return (0, errors_1.handleViemTransactionError)({ error });
29
+ }
30
+ };
31
+ exports.signCustomTypedData = signCustomTypedData;
@@ -0,0 +1,12 @@
1
+ import { StatusCodes, TxnStatus } from '../../enums';
2
+ import { HexString } from '../../types';
3
+ import { Gasless2612PermitParams } from '../../types/permit';
4
+ export declare const signGaslessDzapUserIntent: (params: Gasless2612PermitParams) => Promise<{
5
+ status: TxnStatus;
6
+ code: StatusCodes;
7
+ data?: {
8
+ signature: HexString;
9
+ nonce: bigint;
10
+ deadline: bigint;
11
+ };
12
+ }>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signGaslessDzapUserIntent = void 0;
4
+ const viem_1 = require("viem");
5
+ const constants_1 = require("../../constants");
6
+ const permit_1 = require("../../constants/permit");
7
+ const permit2_1 = require("../../constants/permit2");
8
+ const enums_1 = require("../../enums");
9
+ const eip_2612_1 = require("../../types/eip-2612");
10
+ const date_1 = require("../date");
11
+ const errors_1 = require("../errors");
12
+ const index_1 = require("../index");
13
+ const signTypedData_1 = require("../signTypedData");
14
+ const getSignTypedData = (params) => {
15
+ const { account, deadline, nonce, swapDataHash } = params;
16
+ if (params.txType === constants_1.GaslessTxType.swap) {
17
+ return {
18
+ message: {
19
+ txId: params.txId,
20
+ user: account,
21
+ executorFeesHash: params.executorFeesHash,
22
+ swapDataHash: params.swapDataHash,
23
+ nonce,
24
+ deadline,
25
+ },
26
+ types: eip_2612_1.DzapUserIntentSwapTypes,
27
+ primaryType: permit_1.dZapIntentPrimaryType.SignedGasLessSwapData,
28
+ };
29
+ }
30
+ else if (swapDataHash) {
31
+ return {
32
+ message: {
33
+ txId: params.txId,
34
+ user: account,
35
+ nonce,
36
+ deadline,
37
+ executorFeesHash: params.executorFeesHash,
38
+ swapDataHash: params.swapDataHash,
39
+ adapterDataHash: params.adapterDataHash,
40
+ },
41
+ types: eip_2612_1.DzapUserIntentSwapBridgeTypes,
42
+ primaryType: permit_1.dZapIntentPrimaryType.SignedGasLessSwapBridgeData,
43
+ };
44
+ }
45
+ else {
46
+ return {
47
+ message: {
48
+ txId: params.txId,
49
+ user: account,
50
+ nonce,
51
+ deadline,
52
+ executorFeesHash: params.executorFeesHash,
53
+ adapterDataHash: params.adapterDataHash,
54
+ },
55
+ types: eip_2612_1.DzapUserIntentBridgeTypes,
56
+ primaryType: permit_1.dZapIntentPrimaryType.SignedGasLessBridgeData,
57
+ };
58
+ }
59
+ };
60
+ const signGaslessDzapUserIntent = async (params) => {
61
+ try {
62
+ const { chainId, spender, account, signer, rpcUrls } = params;
63
+ const deadline = params.deadline || (0, date_1.generateDeadline)(permit2_1.SignatureExpiryInSecs);
64
+ const contract = (0, viem_1.getContract)({
65
+ abi: (0, index_1.getDZapAbi)('trade', params.contractVersion),
66
+ address: spender,
67
+ client: (0, index_1.getPublicClient)({ chainId, rpcUrls }),
68
+ });
69
+ const nonce = (await contract.read.getNonce([account]));
70
+ const domain = {
71
+ name: permit_1.eip2612GaslessDomain.name,
72
+ version: permit_1.eip2612GaslessDomain.version,
73
+ chainId,
74
+ verifyingContract: spender,
75
+ salt: permit_1.eip2612GaslessDomain.salt,
76
+ };
77
+ const { message, types, primaryType } = getSignTypedData(Object.assign(Object.assign({}, params), { deadline,
78
+ nonce }));
79
+ const signature = await (0, signTypedData_1.signTypedData)({
80
+ signer,
81
+ domain,
82
+ message,
83
+ types,
84
+ account,
85
+ primaryType,
86
+ });
87
+ return {
88
+ status: enums_1.TxnStatus.success,
89
+ code: enums_1.StatusCodes.Success,
90
+ data: {
91
+ signature,
92
+ nonce,
93
+ deadline,
94
+ },
95
+ };
96
+ }
97
+ catch (error) {
98
+ return (0, errors_1.handleViemTransactionError)({ error });
99
+ }
100
+ };
101
+ exports.signGaslessDzapUserIntent = signGaslessDzapUserIntent;
@@ -0,0 +1,11 @@
1
+ import { Signer, TypedDataField } from 'ethers';
2
+ import { TypedDataDomain, WalletClient } from 'viem';
3
+ import { HexString } from '../types';
4
+ export declare const signTypedData: ({ signer, domain, message, types, account, primaryType, }: {
5
+ signer: WalletClient | Signer;
6
+ domain: TypedDataDomain;
7
+ types: Record<string, Array<TypedDataField>>;
8
+ message: Record<string, any>;
9
+ account: string;
10
+ primaryType: string;
11
+ }) => Promise<HexString>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signTypedData = void 0;
4
+ const index_1 = require("./index");
5
+ const signTypedData = async ({ signer, domain, message, types, account, primaryType, }) => {
6
+ let signature;
7
+ if ((0, index_1.isTypeSigner)(signer)) {
8
+ signature = (await signer._signTypedData(domain, types, message));
9
+ }
10
+ else {
11
+ signature = await signer.signTypedData({
12
+ account: account,
13
+ domain,
14
+ message,
15
+ primaryType,
16
+ types,
17
+ });
18
+ }
19
+ return signature;
20
+ };
21
+ exports.signTypedData = signTypedData;
@@ -0,0 +1,8 @@
1
+ import { PriceService } from '../service/price';
2
+ import { ChainData, HexString, TokenInfo, TokenResponse } from '../types';
3
+ export declare const isNativeCurrency: (address: string, chainConfig: ChainData) => boolean;
4
+ export declare const sortByBalanceInUsd: (tokenEntries: [string, TokenInfo][]) => TokenResponse;
5
+ export declare const updateTokenListPrices: (tokens: TokenResponse, chainId: number, chainConfig: ChainData, priceService: PriceService) => Promise<TokenResponse>;
6
+ export declare function isNonEVMChain(chainId: number, chainConfig: ChainData): boolean;
7
+ export declare const getChecksumAddress: (address: string) => HexString;
8
+ export declare const formatToken: <T extends HexString | string = string>(token: T, nativeTokenAddress?: T) => T;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatToken = exports.getChecksumAddress = exports.updateTokenListPrices = exports.sortByBalanceInUsd = exports.isNativeCurrency = void 0;
4
+ exports.isNonEVMChain = isNonEVMChain;
5
+ const viem_1 = require("viem");
6
+ const address_1 = require("../constants/address");
7
+ const IPriceProvider_1 = require("../service/price/types/IPriceProvider");
8
+ const isNativeCurrency = (address, chainConfig) => {
9
+ if (!chainConfig)
10
+ return false;
11
+ return Object.values(chainConfig).some((chain) => chain.isEnabled && chain.nativeToken.contract === address);
12
+ };
13
+ exports.isNativeCurrency = isNativeCurrency;
14
+ const sortByBalanceInUsd = (tokenEntries) => {
15
+ const { withBalanceInUsd, withoutBalanceInUsd } = tokenEntries.reduce((acc, [key, token]) => {
16
+ if (token.balanceInUsd !== null) {
17
+ acc.withBalanceInUsd.push([key, token]);
18
+ }
19
+ else {
20
+ acc.withoutBalanceInUsd.push([key, token]);
21
+ }
22
+ return acc;
23
+ }, { withBalanceInUsd: [], withoutBalanceInUsd: [] });
24
+ withBalanceInUsd.sort((a, b) => b[1].balanceInUsd - a[1].balanceInUsd);
25
+ return Object.fromEntries([...withBalanceInUsd, ...withoutBalanceInUsd]);
26
+ };
27
+ exports.sortByBalanceInUsd = sortByBalanceInUsd;
28
+ const updateTokenListPrices = async (tokens, chainId, chainConfig, priceService) => {
29
+ try {
30
+ const tokensWithoutPrice = Object.values(tokens)
31
+ .filter(({ price, balance }) => (!price || price === '0') && balance !== '0')
32
+ .map(({ contract }) => contract);
33
+ if (tokensWithoutPrice.length === 0)
34
+ return tokens;
35
+ const fetchedPrices = await priceService.getPrices({
36
+ chainId,
37
+ tokenAddresses: tokensWithoutPrice,
38
+ chainConfig,
39
+ notAllowSources: [IPriceProvider_1.priceProviders.dZap],
40
+ });
41
+ tokensWithoutPrice.forEach((token) => {
42
+ tokens[token].price = fetchedPrices[token] || tokens[token].price;
43
+ tokens[token].balanceInUsd = fetchedPrices[token]
44
+ ? parseFloat(fetchedPrices[token]) * parseFloat((0, viem_1.formatUnits)(BigInt(tokens[token].balance), tokens[token].decimals))
45
+ : null;
46
+ });
47
+ return (0, exports.sortByBalanceInUsd)(Object.entries(tokens));
48
+ }
49
+ catch (error) {
50
+ console.error('Error fetching token prices:', error);
51
+ return tokens;
52
+ }
53
+ };
54
+ exports.updateTokenListPrices = updateTokenListPrices;
55
+ function isNonEVMChain(chainId, chainConfig) {
56
+ var _a;
57
+ return ((_a = chainConfig[chainId]) === null || _a === void 0 ? void 0 : _a.chainType) !== 'evm';
58
+ }
59
+ const isNativeAddress = (contract) => address_1.nativeTokens.includes(contract);
60
+ const getChecksumAddress = (address) => (0, viem_1.getAddress)(address);
61
+ exports.getChecksumAddress = getChecksumAddress;
62
+ const formatToken = (token, nativeTokenAddress = viem_1.zeroAddress) => {
63
+ if (!(0, viem_1.isAddress)(token)) {
64
+ return token;
65
+ }
66
+ else if (isNativeAddress(token)) {
67
+ return nativeTokenAddress;
68
+ }
69
+ else {
70
+ return (0, exports.getChecksumAddress)(token);
71
+ }
72
+ };
73
+ exports.formatToken = formatToken;
@@ -0,0 +1,3 @@
1
+ import { PriceService } from '../service/price';
2
+ import { ChainData, TradeQuotesRequest, TradeQuotesResponse } from '../types';
3
+ export declare const updateQuotes: (quotes: TradeQuotesResponse, request: TradeQuotesRequest, priceService: PriceService, chainConfig: ChainData) => Promise<TradeQuotesResponse>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateQuotes = void 0;
4
+ const decimal_js_1 = require("decimal.js");
5
+ const IPriceProvider_1 = require("../service/price/types/IPriceProvider");
6
+ const amount_1 = require("./amount");
7
+ const updateQuotes = async (quotes, request, priceService, chainConfig) => {
8
+ var _a, _b;
9
+ const tokensWithoutPrice = {};
10
+ Object.values(quotes).forEach((quote) => {
11
+ if (quote.tokensWithoutPrice) {
12
+ Object.entries(quote.tokensWithoutPrice).forEach(([chainIdStr, tokens]) => {
13
+ const chainId = Number(chainIdStr);
14
+ if (!tokensWithoutPrice[chainId]) {
15
+ tokensWithoutPrice[chainId] = new Set();
16
+ }
17
+ tokens.forEach((token) => tokensWithoutPrice[chainId].add(token));
18
+ });
19
+ }
20
+ });
21
+ if (Object.keys(tokensWithoutPrice).length === 0) {
22
+ return quotes;
23
+ }
24
+ const tokensPrice = Object.fromEntries(await Promise.all(Object.entries(tokensWithoutPrice).map(async ([chainIdStr, tokens]) => {
25
+ const chainId = Number(chainIdStr);
26
+ const tokenAddresses = Array.from(tokens);
27
+ const prices = await priceService.getPrices({ chainId, tokenAddresses, chainConfig, notAllowSources: [IPriceProvider_1.priceProviders.dZap] });
28
+ return [chainId, prices];
29
+ })));
30
+ for (const quote of Object.values(quotes)) {
31
+ if (!quote.quoteRates || !Object.keys(quote.quoteRates).length) {
32
+ continue;
33
+ }
34
+ let isSorted = true;
35
+ for (const data of Object.values(quote.quoteRates)) {
36
+ const srcDecimals = data.srcToken.decimals;
37
+ const destDecimals = data.destToken.decimals;
38
+ const toChain = data.destToken.chainId;
39
+ if (!Number(data.srcAmountUSD)) {
40
+ isSorted = false;
41
+ const srcTokenPricePerUnit = ((_a = tokensPrice[request.fromChain]) === null || _a === void 0 ? void 0 : _a[data.srcToken.address]) || '0';
42
+ data.srcAmountUSD = (0, amount_1.calculateAmountUSD)(data.srcAmount, srcDecimals, srcTokenPricePerUnit);
43
+ }
44
+ if (!Number(data.destAmountUSD)) {
45
+ isSorted = false;
46
+ const destTokenPricePerUnit = ((_b = tokensPrice[toChain]) === null || _b === void 0 ? void 0 : _b[data.destToken.address]) || '0';
47
+ data.destAmountUSD = (0, amount_1.calculateAmountUSD)(data.destAmount, destDecimals, destTokenPricePerUnit);
48
+ }
49
+ if (Number(data.srcAmountUSD) && Number(data.destAmountUSD)) {
50
+ const priceImpact = new decimal_js_1.default(data.destAmountUSD).minus(data.srcAmountUSD).div(data.srcAmountUSD).mul(100);
51
+ data.priceImpactPercent = priceImpact.toFixed(2);
52
+ }
53
+ const { isUpdated, fee } = (0, amount_1.updateFee)(data.fee, tokensPrice);
54
+ isSorted = isSorted && !isUpdated;
55
+ data.fee = fee;
56
+ data.path = (0, amount_1.updatePath)(data, tokensPrice);
57
+ }
58
+ if (Object.keys(quote.tokensWithoutPrice).length !== 0 && isSorted === false) {
59
+ quote.quoteRates = Object.fromEntries(Object.entries(quote.quoteRates).sort(([, a], [, b]) => {
60
+ const aNetAmount = (0, amount_1.calculateNetAmountUsd)(a);
61
+ const bNetAmount = (0, amount_1.calculateNetAmountUsd)(b);
62
+ return Number(bNetAmount) - Number(aNetAmount);
63
+ }));
64
+ quote.recommendedSource = Object.keys(quote.quoteRates)[0];
65
+ }
66
+ }
67
+ return quotes;
68
+ };
69
+ exports.updateQuotes = updateQuotes;
@@ -0,0 +1,2 @@
1
+ export * from './path';
2
+ export * from './step';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./path"), exports);
18
+ __exportStar(require("./step"), exports);
@@ -0,0 +1,8 @@
1
+ export declare const zapPathAction: {
2
+ readonly swap: "swap";
3
+ readonly bridge: "bridge";
4
+ readonly deposit: "deposit";
5
+ readonly withdraw: "withdraw";
6
+ readonly stake: "stake";
7
+ readonly unstake: "unstake";
8
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zapPathAction = void 0;
4
+ exports.zapPathAction = {
5
+ swap: 'swap',
6
+ bridge: 'bridge',
7
+ deposit: 'deposit',
8
+ withdraw: 'withdraw',
9
+ stake: 'stake',
10
+ unstake: 'unstake',
11
+ };
@@ -0,0 +1,3 @@
1
+ export declare const zapStepAction: {
2
+ readonly execute: "execute";
3
+ };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zapStepAction = void 0;
4
+ exports.zapStepAction = {
5
+ execute: 'execute',
6
+ };
@@ -0,0 +1,13 @@
1
+ export declare const ZAP_ENDPOINTS: {
2
+ status: string;
3
+ config: {
4
+ chains: string;
5
+ providers: string;
6
+ };
7
+ pools: string;
8
+ poolDetails: string;
9
+ positions: string;
10
+ buildTx: string;
11
+ quote: string;
12
+ broadcast: string;
13
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZAP_ENDPOINTS = void 0;
4
+ exports.ZAP_ENDPOINTS = {
5
+ status: '/status',
6
+ config: {
7
+ chains: '/config/chains',
8
+ providers: '/config/providers',
9
+ },
10
+ pools: '/pools',
11
+ poolDetails: '/pool/details',
12
+ positions: '/user/positions',
13
+ buildTx: '/buildTx',
14
+ quote: '/quote',
15
+ broadcast: '/broadcast',
16
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dZapClient_1 = require("../src/dZapClient");
4
+ describe('DZapClient - buildTxn', () => {
5
+ let client;
6
+ beforeAll(() => {
7
+ client = dZapClient_1.default.getInstance();
8
+ });
9
+ it('should build a cross-chain transaction', async () => {
10
+ const request = {
11
+ fromChain: 42161,
12
+ data: [
13
+ {
14
+ amount: '374980',
15
+ srcToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
16
+ destDecimals: 18,
17
+ srcDecimals: 6,
18
+ protocol: 'relayLink',
19
+ destToken: '0x4200000000000000000000000000000000000006',
20
+ slippage: 1,
21
+ recipient: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
22
+ toChain: 8453,
23
+ },
24
+ ],
25
+ gasless: false,
26
+ refundee: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
27
+ sender: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
28
+ publicKey: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
29
+ };
30
+ const result = await client.buildTradeTxn(request);
31
+ expect(result).toBeDefined();
32
+ expect(result.data).toBeDefined();
33
+ expect(result.to).toBeDefined();
34
+ expect(result.from).toBeDefined();
35
+ expect(result.chainId).toBeDefined();
36
+ });
37
+ it('should build a same-chain transaction', async () => {
38
+ const request = {
39
+ fromChain: 42161,
40
+ data: [
41
+ {
42
+ amount: '374980',
43
+ srcToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
44
+ destDecimals: 18,
45
+ srcDecimals: 6,
46
+ protocol: 'sushiswap',
47
+ destToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
48
+ slippage: 1,
49
+ recipient: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
50
+ toChain: 42161,
51
+ },
52
+ ],
53
+ gasless: false,
54
+ refundee: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
55
+ sender: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
56
+ publicKey: '0x99BCEBf44433E901597D9fCb16E799a4847519f6',
57
+ };
58
+ const result = await client.buildTradeTxn(request);
59
+ expect(result).toBeDefined();
60
+ expect(result.data).toBeDefined();
61
+ expect(result.to).toBeDefined();
62
+ expect(result.from).toBeDefined();
63
+ expect(result.chainId).toBeDefined();
64
+ });
65
+ });
@@ -0,0 +1,2 @@
1
+ import { HexString } from '../../src/types';
2
+ export declare const getNextPermit2NonceFromProxy: (permitAddress: HexString, account: HexString, chainId: number, rpcUrls?: string[]) => Promise<bigint>;