@clober/v2-sdk 0.0.59 → 0.0.60

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 (152) hide show
  1. package/dist/cjs/abis/rebalancer/minter-abi.js +262 -0
  2. package/dist/cjs/abis/rebalancer/minter-abi.js.map +1 -0
  3. package/dist/cjs/abis/rebalancer/mock-swap-abi.js +95 -0
  4. package/dist/cjs/abis/rebalancer/mock-swap-abi.js.map +1 -0
  5. package/dist/cjs/abis/rebalancer/operator-abi.js +370 -0
  6. package/dist/cjs/abis/rebalancer/operator-abi.js.map +1 -0
  7. package/dist/cjs/abis/rebalancer/rebalancer-abi.js +1235 -0
  8. package/dist/cjs/abis/rebalancer/rebalancer-abi.js.map +1 -0
  9. package/dist/cjs/abis/rebalancer/strategy-abi.js +633 -0
  10. package/dist/cjs/abis/rebalancer/strategy-abi.js.map +1 -0
  11. package/dist/cjs/apis/market.js +2 -2
  12. package/dist/cjs/apis/market.js.map +1 -1
  13. package/dist/cjs/apis/odos.js +100 -0
  14. package/dist/cjs/apis/odos.js.map +1 -0
  15. package/dist/cjs/apis/pool.js +61 -0
  16. package/dist/cjs/apis/pool.js.map +1 -0
  17. package/dist/cjs/apis/strategy.js +23 -0
  18. package/dist/cjs/apis/strategy.js.map +1 -0
  19. package/dist/cjs/call.js +359 -1
  20. package/dist/cjs/call.js.map +1 -1
  21. package/dist/cjs/constants/addresses.js +23 -3
  22. package/dist/cjs/constants/addresses.js.map +1 -1
  23. package/dist/cjs/constants/chain.js +5 -1
  24. package/dist/cjs/constants/chain.js.map +1 -1
  25. package/dist/cjs/constants/permit.js +13 -0
  26. package/dist/cjs/constants/permit.js.map +1 -0
  27. package/dist/cjs/constants/subgraph.js +1 -1
  28. package/dist/cjs/index.js +0 -1
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/model/market.js +45 -0
  31. package/dist/cjs/model/market.js.map +1 -1
  32. package/dist/cjs/model/pool.js +136 -0
  33. package/dist/cjs/model/pool.js.map +1 -0
  34. package/dist/cjs/model/strategy.js +3 -0
  35. package/dist/cjs/model/strategy.js.map +1 -0
  36. package/dist/cjs/type.js.map +1 -1
  37. package/dist/cjs/utils/math.js +3 -1
  38. package/dist/cjs/utils/math.js.map +1 -1
  39. package/dist/cjs/utils/open.js +34 -35
  40. package/dist/cjs/utils/open.js.map +1 -1
  41. package/dist/cjs/utils/pool-key.js +17 -0
  42. package/dist/cjs/utils/pool-key.js.map +1 -0
  43. package/dist/cjs/utils/pool.js +88 -0
  44. package/dist/cjs/utils/pool.js.map +1 -0
  45. package/dist/cjs/utils/prices.js +7 -2
  46. package/dist/cjs/utils/prices.js.map +1 -1
  47. package/dist/cjs/view.js +37 -30
  48. package/dist/cjs/view.js.map +1 -1
  49. package/dist/esm/abis/rebalancer/minter-abi.js +259 -0
  50. package/dist/esm/abis/rebalancer/minter-abi.js.map +1 -0
  51. package/dist/esm/abis/rebalancer/mock-swap-abi.js +92 -0
  52. package/dist/esm/abis/rebalancer/mock-swap-abi.js.map +1 -0
  53. package/dist/esm/abis/rebalancer/operator-abi.js +367 -0
  54. package/dist/esm/abis/rebalancer/operator-abi.js.map +1 -0
  55. package/dist/esm/abis/rebalancer/rebalancer-abi.js +1232 -0
  56. package/dist/esm/abis/rebalancer/rebalancer-abi.js.map +1 -0
  57. package/dist/esm/abis/rebalancer/strategy-abi.js +630 -0
  58. package/dist/esm/abis/rebalancer/strategy-abi.js.map +1 -0
  59. package/dist/esm/apis/market.js +3 -3
  60. package/dist/esm/apis/market.js.map +1 -1
  61. package/dist/esm/apis/odos.js +94 -0
  62. package/dist/esm/apis/odos.js.map +1 -0
  63. package/dist/esm/apis/pool.js +57 -0
  64. package/dist/esm/apis/pool.js.map +1 -0
  65. package/dist/esm/apis/strategy.js +19 -0
  66. package/dist/esm/apis/strategy.js.map +1 -0
  67. package/dist/esm/call.js +390 -45
  68. package/dist/esm/call.js.map +1 -1
  69. package/dist/esm/constants/addresses.js +24 -4
  70. package/dist/esm/constants/addresses.js.map +1 -1
  71. package/dist/esm/constants/chain.js +3 -0
  72. package/dist/esm/constants/chain.js.map +1 -1
  73. package/dist/esm/constants/permit.js +10 -0
  74. package/dist/esm/constants/permit.js.map +1 -0
  75. package/dist/esm/constants/subgraph.js +1 -1
  76. package/dist/esm/index.js +0 -1
  77. package/dist/esm/index.js.map +1 -1
  78. package/dist/esm/model/market.js +46 -1
  79. package/dist/esm/model/market.js.map +1 -1
  80. package/dist/esm/model/pool.js +133 -0
  81. package/dist/esm/model/pool.js.map +1 -0
  82. package/dist/esm/model/strategy.js +2 -0
  83. package/dist/esm/model/strategy.js.map +1 -0
  84. package/dist/esm/type.js.map +1 -1
  85. package/dist/esm/utils/math.js +1 -0
  86. package/dist/esm/utils/math.js.map +1 -1
  87. package/dist/esm/utils/open.js +32 -33
  88. package/dist/esm/utils/open.js.map +1 -1
  89. package/dist/esm/utils/pool-key.js +12 -0
  90. package/dist/esm/utils/pool-key.js.map +1 -0
  91. package/dist/esm/utils/pool.js +84 -0
  92. package/dist/esm/utils/pool.js.map +1 -0
  93. package/dist/esm/utils/prices.js +5 -1
  94. package/dist/esm/utils/prices.js.map +1 -1
  95. package/dist/esm/view.js +62 -43
  96. package/dist/esm/view.js.map +1 -1
  97. package/dist/tsconfig.build.tsbuildinfo +1 -1
  98. package/dist/types/abis/rebalancer/minter-abi.d.ts +198 -0
  99. package/dist/types/abis/rebalancer/minter-abi.d.ts.map +1 -0
  100. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts +70 -0
  101. package/dist/types/abis/rebalancer/mock-swap-abi.d.ts.map +1 -0
  102. package/dist/types/abis/rebalancer/operator-abi.d.ts +283 -0
  103. package/dist/types/abis/rebalancer/operator-abi.d.ts.map +1 -0
  104. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts +952 -0
  105. package/dist/types/abis/rebalancer/rebalancer-abi.d.ts.map +1 -0
  106. package/dist/types/abis/rebalancer/strategy-abi.d.ts +487 -0
  107. package/dist/types/abis/rebalancer/strategy-abi.d.ts.map +1 -0
  108. package/dist/types/apis/odos.d.ts +28 -0
  109. package/dist/types/apis/odos.d.ts.map +1 -0
  110. package/dist/types/apis/pool.d.ts +5 -0
  111. package/dist/types/apis/pool.d.ts.map +1 -0
  112. package/dist/types/apis/strategy.d.ts +5 -0
  113. package/dist/types/apis/strategy.d.ts.map +1 -0
  114. package/dist/types/call.d.ts +108 -44
  115. package/dist/types/call.d.ts.map +1 -1
  116. package/dist/types/constants/addresses.d.ts +4 -0
  117. package/dist/types/constants/addresses.d.ts.map +1 -1
  118. package/dist/types/constants/chain.d.ts +1 -0
  119. package/dist/types/constants/chain.d.ts.map +1 -1
  120. package/dist/types/constants/permit.d.ts +10 -0
  121. package/dist/types/constants/permit.d.ts.map +1 -0
  122. package/dist/types/index.d.ts +0 -1
  123. package/dist/types/index.d.ts.map +1 -1
  124. package/dist/types/model/currency.d.ts +7 -0
  125. package/dist/types/model/currency.d.ts.map +1 -1
  126. package/dist/types/model/market.d.ts +3 -0
  127. package/dist/types/model/market.d.ts.map +1 -1
  128. package/dist/types/model/pool.d.ts +38 -0
  129. package/dist/types/model/pool.d.ts.map +1 -0
  130. package/dist/types/model/strategy.d.ts +6 -0
  131. package/dist/types/model/strategy.d.ts.map +1 -0
  132. package/dist/types/type.d.ts +20 -1
  133. package/dist/types/type.d.ts.map +1 -1
  134. package/dist/types/utils/math.d.ts +1 -0
  135. package/dist/types/utils/math.d.ts.map +1 -1
  136. package/dist/types/utils/open.d.ts +1 -1
  137. package/dist/types/utils/open.d.ts.map +1 -1
  138. package/dist/types/utils/pool-key.d.ts +3 -0
  139. package/dist/types/utils/pool-key.d.ts.map +1 -0
  140. package/dist/types/utils/pool.d.ts +11 -0
  141. package/dist/types/utils/pool.d.ts.map +1 -0
  142. package/dist/types/utils/prices.d.ts +1 -0
  143. package/dist/types/utils/prices.d.ts.map +1 -1
  144. package/dist/types/view.d.ts +52 -17
  145. package/dist/types/view.d.ts.map +1 -1
  146. package/package.json +1 -1
  147. package/dist/cjs/signature.js +0 -149
  148. package/dist/cjs/signature.js.map +0 -1
  149. package/dist/esm/signature.js +0 -172
  150. package/dist/esm/signature.js.map +0 -1
  151. package/dist/types/signature.d.ts +0 -38
  152. package/dist/types/signature.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { CHAIN_IDS } from './constants/chain';
2
- import type { ChartLog, Currency, DefaultOptions, Market } from './type';
2
+ import type { ChartLog, Currency, DefaultOptions, Market, Pool } from './type';
3
3
  import { CHART_LOG_INTERVALS } from './type';
4
- import { type OpenOrder } from './model/open-order';
4
+ import { OpenOrder } from './model/open-order';
5
+ import { StrategyPrice } from './model/strategy';
5
6
  /**
6
7
  * Get contract addresses by chain id
7
8
  * @param chainId - chain id from {@link CHAIN_IDS}
@@ -20,6 +21,10 @@ export declare const getContractAddresses: ({ chainId }: {
20
21
  Controller: `0x${string}`;
21
22
  BookManager: `0x${string}`;
22
23
  BookViewer: `0x${string}`;
24
+ Rebalancer: `0x${string}`;
25
+ Strategy: `0x${string}`;
26
+ Minter: `0x${string}`;
27
+ Operator: `0x${string}`;
23
28
  };
24
29
  /**
25
30
  * Get subgraph block number by chain id
@@ -41,10 +46,8 @@ export declare const getSubgraphBlockNumber: ({ chainId, }: {
41
46
  * @param chainId - chain id from {@link CHAIN_IDS}
42
47
  * @param token0 - token0 address
43
48
  * @param token1 - token1 address
44
- * @param options
49
+ * @param options {@link DefaultOptions} options.
45
50
  * @param options.n - number of depth levels to fetch
46
- * @param options.rpcUrl - RPC URL of the blockchain
47
- * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
48
51
  * @returns A market {@link Market}
49
52
  *
50
53
  * @example
@@ -64,6 +67,41 @@ export declare const getMarket: ({ chainId, token0, token1, options, }: {
64
67
  n?: number;
65
68
  } & DefaultOptions;
66
69
  }) => Promise<Market>;
70
+ /**
71
+ * Get pool information by chain id and token addresses
72
+ * @param chainId - chain id from {@link CHAIN_IDS}
73
+ * @param token0 - token0 address
74
+ * @param token1 - token1 address
75
+ * @param salt - salt for the pool
76
+ * @param options {@link DefaultOptions} options.
77
+ * @param options.n - number of depth levels to fetch
78
+ * @returns A pool {@link Pool}
79
+ *
80
+ * @example
81
+ * import { getPool } from '@clober/v2-sdk'
82
+ *
83
+ * const market = await getPool({
84
+ * chainId: 421614,
85
+ * token0: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
86
+ * token1: '0x0000000000000000000000000000000000000000',
87
+ * })
88
+ */
89
+ export declare const getPool: ({ chainId, token0, token1, salt, options, }: {
90
+ chainId: CHAIN_IDS;
91
+ token0: `0x${string}`;
92
+ token1: `0x${string}`;
93
+ salt: `0x${string}`;
94
+ options?: {
95
+ n?: number;
96
+ } & DefaultOptions;
97
+ }) => Promise<Pool>;
98
+ export declare const getStrategyPrice: ({ chainId, token0, token1, salt, options, }: {
99
+ chainId: CHAIN_IDS;
100
+ token0: `0x${string}`;
101
+ token1: `0x${string}`;
102
+ salt: `0x${string}`;
103
+ options?: DefaultOptions;
104
+ }) => Promise<StrategyPrice>;
67
105
  /**
68
106
  * Calculates and returns the neighboring price ticks and their corresponding prices for a given input price.
69
107
  *
@@ -145,10 +183,10 @@ export declare const getPriceNeighborhood: ({ chainId, price, currency0, currenc
145
183
  * @param inputToken The address of the input token.
146
184
  * @param outputToken The address of the output token.
147
185
  * @param amountIn The amount of expected input amount. (ex 1.2 ETH -> 1.2)
148
- * @param options
149
- * @param options.limitPrice The maximum limit price to spend.
150
- * @param options.rpcUrl The RPC URL of the blockchain.
151
- * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
186
+ * @param options {@link DefaultOptions} options.
187
+ * @param options.limitPrice The maximum limit price to take.
188
+ * @param options.roundingDownTakenBid Whether to round down the taken bid.
189
+ * @param options.roundingUpTakenAsk Whether to round up the taken ask.
152
190
  * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
153
191
  * @example
154
192
  * import { getExpectedOutput } from '@clober/v2-sdk'
@@ -187,9 +225,10 @@ export declare const getExpectedOutput: ({ chainId, inputToken, outputToken, amo
187
225
  * @param inputToken The address of the input token.
188
226
  * @param outputToken The address of the output token.
189
227
  * @param amountOut The amount of expected output amount. (ex 1.2 ETH -> 1.2)
190
- * @param options
228
+ * @param options {@link DefaultOptions} options.
191
229
  * @param options.limitPrice The maximum limit price to take.
192
- * @param options.rpcUrl The RPC URL of the blockchain.
230
+ * @param options.roundingDownTakenBid Whether to round down the taken bid.
231
+ * @param options.roundingUpTakenAsk Whether to round up the taken ask.
193
232
  * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
194
233
  * @returns A Promise resolving to an object containing the taken amount, spent amount and result of the calculation.
195
234
  * @example
@@ -227,9 +266,7 @@ export declare const getExpectedInput: ({ chainId, inputToken, outputToken, amou
227
266
  *
228
267
  * @param {CHAIN_IDS} chainId The chain ID.
229
268
  * @param {string} id The ID of the open order.
230
- * @param options
231
- * @param options.rpcUrl The RPC URL of the blockchain.
232
- * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
269
+ * @param options {@link DefaultOptions} options.
233
270
  * @returns {Promise<OpenOrder>} Promise resolving to the open order object, or undefined if not found.
234
271
  * @example
235
272
  * import { getOpenOrder } from '@clober/v2-sdk'
@@ -249,9 +286,7 @@ export declare const getOpenOrder: ({ chainId, id, options, }: {
249
286
  *
250
287
  * @param {CHAIN_IDS} chainId The chain ID.
251
288
  * @param {`0x${string}`} userAddress The Ethereum address of the user.
252
- * @param options
253
- * @param options.rpcUrl The RPC URL of the blockchain.
254
- * @param options.useSubgraph Whether to use the subgraph to fetch the market data.
289
+ * @param options {@link DefaultOptions} options.
255
290
  * @returns {Promise<OpenOrder[]>} Promise resolving to an array of open orders.
256
291
  * @example
257
292
  * import { getOpenOrders } from '@clober/v2-sdk'
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clober/v2-sdk",
3
- "version": "0.0.59",
3
+ "version": "0.0.60",
4
4
  "description": "🛠 An SDK for building applications on top of Clober V2",
5
5
  "files": [
6
6
  "dist"
@@ -1,149 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.signERC20Permit = void 0;
4
- const viem_1 = require("viem");
5
- const chain_1 = require("./constants/chain");
6
- const time_1 = require("./utils/time");
7
- const addresses_1 = require("./constants/addresses");
8
- const currency_1 = require("./utils/currency");
9
- const _abi = [
10
- {
11
- inputs: [],
12
- name: 'version',
13
- outputs: [
14
- {
15
- internalType: 'string',
16
- name: '',
17
- type: 'string',
18
- },
19
- ],
20
- stateMutability: 'view',
21
- type: 'function',
22
- },
23
- {
24
- inputs: [
25
- {
26
- internalType: 'address',
27
- name: 'owner',
28
- type: 'address',
29
- },
30
- ],
31
- name: 'nonces',
32
- outputs: [
33
- {
34
- internalType: 'uint256',
35
- name: '',
36
- type: 'uint256',
37
- },
38
- ],
39
- stateMutability: 'view',
40
- type: 'function',
41
- },
42
- {
43
- inputs: [],
44
- name: 'name',
45
- outputs: [
46
- {
47
- internalType: 'string',
48
- name: '',
49
- type: 'string',
50
- },
51
- ],
52
- stateMutability: 'view',
53
- type: 'function',
54
- },
55
- ];
56
- const signERC20Permit = async ({ chainId, walletClient, token, amount, options, }) => {
57
- if (!walletClient.account) {
58
- throw new Error('Account is not found');
59
- }
60
- const publicClient = (0, viem_1.createPublicClient)({
61
- chain: chain_1.CHAIN_MAP[chainId],
62
- transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
63
- });
64
- const currency = await (0, currency_1.fetchCurrency)(publicClient, chainId, token);
65
- const spender = addresses_1.CONTRACT_ADDRESSES[chainId].Controller;
66
- const value = (0, viem_1.parseUnits)(amount, currency.decimals);
67
- const owner = walletClient.account.address;
68
- const [{ result: nonce }, { result: version }, { result: name }] = await publicClient.multicall({
69
- allowFailure: true,
70
- contracts: [
71
- {
72
- address: token,
73
- abi: _abi,
74
- functionName: 'nonces',
75
- args: [owner],
76
- },
77
- {
78
- address: token,
79
- abi: _abi,
80
- functionName: 'version',
81
- },
82
- {
83
- address: token,
84
- abi: _abi,
85
- functionName: 'name',
86
- },
87
- ],
88
- });
89
- if (nonce === undefined || !name) {
90
- return undefined;
91
- }
92
- const deadline = (0, time_1.getDeadlineTimestampInSeconds)();
93
- const data = {
94
- domain: {
95
- name: name,
96
- version: (version || '1').toString(),
97
- chainId: BigInt(chainId),
98
- verifyingContract: currency.address,
99
- },
100
- message: {
101
- owner,
102
- spender,
103
- value,
104
- nonce,
105
- deadline,
106
- },
107
- primaryType: 'Permit',
108
- types: {
109
- Permit: [
110
- { name: 'owner', type: 'address' },
111
- { name: 'spender', type: 'address' },
112
- { name: 'value', type: 'uint256' },
113
- { name: 'nonce', type: 'uint256' },
114
- { name: 'deadline', type: 'uint256' },
115
- ],
116
- EIP712Domain: [
117
- { name: 'name', type: 'string' },
118
- { name: 'version', type: 'string' },
119
- { name: 'chainId', type: 'uint256' },
120
- { name: 'verifyingContract', type: 'address' },
121
- ],
122
- },
123
- };
124
- const signature = await walletClient.signTypedData({
125
- ...data,
126
- account: walletClient.account,
127
- });
128
- const valid = await (0, viem_1.verifyTypedData)({
129
- ...data,
130
- signature,
131
- address: owner,
132
- });
133
- if (!valid) {
134
- throw new Error('Invalid signature');
135
- }
136
- const { v, s, r } = (0, viem_1.hexToSignature)(signature);
137
- return {
138
- token,
139
- permitAmount: value,
140
- signature: {
141
- v: Number(v),
142
- s,
143
- r,
144
- deadline,
145
- },
146
- };
147
- };
148
- exports.signERC20Permit = signERC20Permit;
149
- //# sourceMappingURL=signature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"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"}
@@ -1,172 +0,0 @@
1
- import { createPublicClient, hexToSignature, http, parseUnits, verifyTypedData, } from 'viem';
2
- import { CHAIN_MAP } from './constants/chain';
3
- import { getDeadlineTimestampInSeconds } from './utils/time';
4
- import { CONTRACT_ADDRESSES } from './constants/addresses';
5
- import { fetchCurrency } from './utils/currency';
6
- const _abi = [
7
- {
8
- inputs: [],
9
- name: 'version',
10
- outputs: [
11
- {
12
- internalType: 'string',
13
- name: '',
14
- type: 'string',
15
- },
16
- ],
17
- stateMutability: 'view',
18
- type: 'function',
19
- },
20
- {
21
- inputs: [
22
- {
23
- internalType: 'address',
24
- name: 'owner',
25
- type: 'address',
26
- },
27
- ],
28
- name: 'nonces',
29
- outputs: [
30
- {
31
- internalType: 'uint256',
32
- name: '',
33
- type: 'uint256',
34
- },
35
- ],
36
- stateMutability: 'view',
37
- type: 'function',
38
- },
39
- {
40
- inputs: [],
41
- name: 'name',
42
- outputs: [
43
- {
44
- internalType: 'string',
45
- name: '',
46
- type: 'string',
47
- },
48
- ],
49
- stateMutability: 'view',
50
- type: 'function',
51
- },
52
- ];
53
- /**
54
- * @dev This function relates with `viem` dependency
55
- * Signs an ERC20 permit using EIP-712 encoding.
56
- *
57
- * @param {CHAIN_IDS} chainId The chain ID.
58
- * @param {WalletClient} walletClient The wallet client.
59
- * @param {`0x${string}`} token The ERC20 token address.
60
- * @param {string} amount The amount of tokens to permit.
61
- * @param options
62
- * @param options.rpcUrl The RPC URL of the blockchain.
63
- * @returns {Promise<erc20PermitParam | undefined>} The signed permit.
64
- * @example
65
- * import { signERC20Permit } from '@clober/v2-sdk'
66
- *
67
- * const walletClient = createWalletClient({
68
- * chain: arbitrumSepolia,
69
- * account: mnemonicToAccount('legal ...'),
70
- * transport: http(),
71
- * })
72
- *
73
- * const { deadline, r, s, v } = await signERC20Permit({
74
- * chainId: 421614,
75
- * walletClient
76
- * token: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
77
- * amount: '1000.123', // spend 1000.123 USDC
78
- * })
79
- */
80
- export const signERC20Permit = async ({ chainId, walletClient, token, amount, options, }) => {
81
- if (!walletClient.account) {
82
- throw new Error('Account is not found');
83
- }
84
- const publicClient = createPublicClient({
85
- chain: CHAIN_MAP[chainId],
86
- transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
87
- });
88
- const currency = await fetchCurrency(publicClient, chainId, token);
89
- const spender = CONTRACT_ADDRESSES[chainId].Controller;
90
- const value = parseUnits(amount, currency.decimals);
91
- const owner = walletClient.account.address;
92
- const [{ result: nonce }, { result: version }, { result: name }] = await publicClient.multicall({
93
- allowFailure: true,
94
- contracts: [
95
- {
96
- address: token,
97
- abi: _abi,
98
- functionName: 'nonces',
99
- args: [owner],
100
- },
101
- {
102
- address: token,
103
- abi: _abi,
104
- functionName: 'version',
105
- },
106
- {
107
- address: token,
108
- abi: _abi,
109
- functionName: 'name',
110
- },
111
- ],
112
- });
113
- if (nonce === undefined || !name) {
114
- return undefined;
115
- }
116
- const deadline = getDeadlineTimestampInSeconds();
117
- const data = {
118
- domain: {
119
- name: name,
120
- version: (version || '1').toString(),
121
- chainId: BigInt(chainId),
122
- verifyingContract: currency.address,
123
- },
124
- message: {
125
- owner,
126
- spender,
127
- value,
128
- nonce,
129
- deadline,
130
- },
131
- primaryType: 'Permit',
132
- types: {
133
- Permit: [
134
- { name: 'owner', type: 'address' },
135
- { name: 'spender', type: 'address' },
136
- { name: 'value', type: 'uint256' },
137
- { name: 'nonce', type: 'uint256' },
138
- { name: 'deadline', type: 'uint256' },
139
- ],
140
- EIP712Domain: [
141
- { name: 'name', type: 'string' },
142
- { name: 'version', type: 'string' },
143
- { name: 'chainId', type: 'uint256' },
144
- { name: 'verifyingContract', type: 'address' },
145
- ],
146
- },
147
- };
148
- const signature = await walletClient.signTypedData({
149
- ...data,
150
- account: walletClient.account,
151
- });
152
- const valid = await verifyTypedData({
153
- ...data,
154
- signature,
155
- address: owner,
156
- });
157
- if (!valid) {
158
- throw new Error('Invalid signature');
159
- }
160
- const { v, s, r } = hexToSignature(signature);
161
- return {
162
- token,
163
- permitAmount: value,
164
- signature: {
165
- v: Number(v),
166
- s,
167
- r,
168
- deadline,
169
- },
170
- };
171
- };
172
- //# sourceMappingURL=signature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,IAAI,EACJ,UAAU,EACV,eAAe,GAEhB,MAAM,MAAM,CAAA;AAEb,OAAO,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,OAAO,EACP,YAAY,EACZ,KAAK,EACL,MAAM,EACN,OAAO,GAOR,EAAyC,EAAE;IAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3D,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAE,CAAC,UAAU,CAAA;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAA;IAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAC9D,MAAM,YAAY,CAAC,SAAS,CAAC;QAC3B,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,IAAI;gBACT,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,CAAC,KAAK,CAAC;aACd;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,IAAI;gBACT,YAAY,EAAE,SAAS;aACxB;YACD;gBACE,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,IAAI;gBACT,YAAY,EAAE,MAAM;aACrB;SACF;KACF,CAAC,CAAA;IAEJ,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,6BAA6B,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG;QACX,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE;YACpC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;YACxB,iBAAiB,EAAE,QAAQ,CAAC,OAAO;SACpC;QACD,OAAO,EAAE;YACP,KAAK;YACL,OAAO;YACP,KAAK;YACL,KAAK;YACL,QAAQ;SACT;QACD,WAAW,EAAE,QAAQ;QACrB,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;aACtC;YACD,YAAY,EAAE;gBACZ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE;aAC/C;SACF;KACO,CAAA;IACV,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACjD,GAAG,IAAI;QACP,OAAO,EAAE,YAAY,CAAC,OAAO;KAC9B,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;QAClC,GAAG,IAAI;QACP,SAAS;QACT,OAAO,EAAE,KAAK;KACf,CAAC,CAAA;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO;QACL,KAAK;QACL,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE;YACT,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,CAAC;YACD,QAAQ;SACT;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -1,38 +0,0 @@
1
- import { WalletClient } from 'viem';
2
- import { CHAIN_IDS } from './constants/chain';
3
- import { DefaultOptions, ERC20PermitParam } from './type';
4
- /**
5
- * @dev This function relates with `viem` dependency
6
- * Signs an ERC20 permit using EIP-712 encoding.
7
- *
8
- * @param {CHAIN_IDS} chainId The chain ID.
9
- * @param {WalletClient} walletClient The wallet client.
10
- * @param {`0x${string}`} token The ERC20 token address.
11
- * @param {string} amount The amount of tokens to permit.
12
- * @param options
13
- * @param options.rpcUrl The RPC URL of the blockchain.
14
- * @returns {Promise<erc20PermitParam | undefined>} The signed permit.
15
- * @example
16
- * import { signERC20Permit } from '@clober/v2-sdk'
17
- *
18
- * const walletClient = createWalletClient({
19
- * chain: arbitrumSepolia,
20
- * account: mnemonicToAccount('legal ...'),
21
- * transport: http(),
22
- * })
23
- *
24
- * const { deadline, r, s, v } = await signERC20Permit({
25
- * chainId: 421614,
26
- * walletClient
27
- * token: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
28
- * amount: '1000.123', // spend 1000.123 USDC
29
- * })
30
- */
31
- export declare const signERC20Permit: ({ chainId, walletClient, token, amount, options, }: {
32
- chainId: CHAIN_IDS;
33
- walletClient: WalletClient;
34
- token: `0x${string}`;
35
- amount: string;
36
- options?: DefaultOptions;
37
- }) => Promise<ERC20PermitParam | undefined>;
38
- //# sourceMappingURL=signature.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,YAAY,EACb,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAA;AAIxD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAkDzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,eAAe,uDAMzB;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,KAAG,QAAQ,gBAAgB,GAAG,SAAS,CA6FvC,CAAA"}