@clober/v2-sdk 0.0.59 → 0.0.61
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.
- package/dist/cjs/abis/rebalancer/minter-abi.js +262 -0
- package/dist/cjs/abis/rebalancer/minter-abi.js.map +1 -0
- package/dist/cjs/abis/rebalancer/mock-swap-abi.js +95 -0
- package/dist/cjs/abis/rebalancer/mock-swap-abi.js.map +1 -0
- package/dist/cjs/abis/rebalancer/operator-abi.js +370 -0
- package/dist/cjs/abis/rebalancer/operator-abi.js.map +1 -0
- package/dist/cjs/abis/rebalancer/rebalancer-abi.js +1235 -0
- package/dist/cjs/abis/rebalancer/rebalancer-abi.js.map +1 -0
- package/dist/cjs/abis/rebalancer/strategy-abi.js +633 -0
- package/dist/cjs/abis/rebalancer/strategy-abi.js.map +1 -0
- package/dist/cjs/apis/market.js +2 -2
- package/dist/cjs/apis/market.js.map +1 -1
- package/dist/cjs/apis/odos.js +100 -0
- package/dist/cjs/apis/odos.js.map +1 -0
- package/dist/cjs/apis/pool.js +61 -0
- package/dist/cjs/apis/pool.js.map +1 -0
- package/dist/cjs/apis/strategy.js +23 -0
- package/dist/cjs/apis/strategy.js.map +1 -0
- package/dist/cjs/call.js +359 -1
- package/dist/cjs/call.js.map +1 -1
- package/dist/cjs/constants/addresses.js +23 -3
- package/dist/cjs/constants/addresses.js.map +1 -1
- package/dist/cjs/constants/chain.js +5 -1
- package/dist/cjs/constants/chain.js.map +1 -1
- package/dist/cjs/constants/permit.js +13 -0
- package/dist/cjs/constants/permit.js.map +1 -0
- package/dist/cjs/constants/subgraph.js +1 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/market.js +45 -0
- package/dist/cjs/model/market.js.map +1 -1
- package/dist/cjs/model/pool.js +136 -0
- package/dist/cjs/model/pool.js.map +1 -0
- package/dist/cjs/model/strategy.js +3 -0
- package/dist/cjs/model/strategy.js.map +1 -0
- package/dist/cjs/type.js.map +1 -1
- package/dist/cjs/utils/math.js +3 -1
- package/dist/cjs/utils/math.js.map +1 -1
- package/dist/cjs/utils/open.js +34 -35
- package/dist/cjs/utils/open.js.map +1 -1
- package/dist/cjs/utils/pool-key.js +17 -0
- package/dist/cjs/utils/pool-key.js.map +1 -0
- package/dist/cjs/utils/pool.js +88 -0
- package/dist/cjs/utils/pool.js.map +1 -0
- package/dist/cjs/utils/prices.js +7 -2
- package/dist/cjs/utils/prices.js.map +1 -1
- package/dist/cjs/view.js +37 -30
- package/dist/cjs/view.js.map +1 -1
- package/dist/esm/abis/rebalancer/minter-abi.js +259 -0
- package/dist/esm/abis/rebalancer/minter-abi.js.map +1 -0
- package/dist/esm/abis/rebalancer/mock-swap-abi.js +92 -0
- package/dist/esm/abis/rebalancer/mock-swap-abi.js.map +1 -0
- package/dist/esm/abis/rebalancer/operator-abi.js +367 -0
- package/dist/esm/abis/rebalancer/operator-abi.js.map +1 -0
- package/dist/esm/abis/rebalancer/rebalancer-abi.js +1232 -0
- package/dist/esm/abis/rebalancer/rebalancer-abi.js.map +1 -0
- package/dist/esm/abis/rebalancer/strategy-abi.js +630 -0
- package/dist/esm/abis/rebalancer/strategy-abi.js.map +1 -0
- package/dist/esm/apis/market.js +3 -3
- package/dist/esm/apis/market.js.map +1 -1
- package/dist/esm/apis/odos.js +94 -0
- package/dist/esm/apis/odos.js.map +1 -0
- package/dist/esm/apis/pool.js +57 -0
- package/dist/esm/apis/pool.js.map +1 -0
- package/dist/esm/apis/strategy.js +19 -0
- package/dist/esm/apis/strategy.js.map +1 -0
- package/dist/esm/call.js +390 -45
- package/dist/esm/call.js.map +1 -1
- package/dist/esm/constants/addresses.js +24 -4
- package/dist/esm/constants/addresses.js.map +1 -1
- package/dist/esm/constants/chain.js +3 -0
- package/dist/esm/constants/chain.js.map +1 -1
- package/dist/esm/constants/permit.js +10 -0
- package/dist/esm/constants/permit.js.map +1 -0
- package/dist/esm/constants/subgraph.js +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/market.js +46 -1
- package/dist/esm/model/market.js.map +1 -1
- package/dist/esm/model/pool.js +133 -0
- package/dist/esm/model/pool.js.map +1 -0
- package/dist/esm/model/strategy.js +2 -0
- package/dist/esm/model/strategy.js.map +1 -0
- package/dist/esm/type.js.map +1 -1
- package/dist/esm/utils/math.js +1 -0
- package/dist/esm/utils/math.js.map +1 -1
- package/dist/esm/utils/open.js +32 -33
- package/dist/esm/utils/open.js.map +1 -1
- package/dist/esm/utils/pool-key.js +12 -0
- package/dist/esm/utils/pool-key.js.map +1 -0
- package/dist/esm/utils/pool.js +84 -0
- package/dist/esm/utils/pool.js.map +1 -0
- package/dist/esm/utils/prices.js +5 -1
- package/dist/esm/utils/prices.js.map +1 -1
- package/dist/esm/view.js +62 -43
- package/dist/esm/view.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/abis/rebalancer/minter-abi.d.ts +198 -0
- package/dist/types/abis/rebalancer/minter-abi.d.ts.map +1 -0
- package/dist/types/abis/rebalancer/mock-swap-abi.d.ts +70 -0
- package/dist/types/abis/rebalancer/mock-swap-abi.d.ts.map +1 -0
- package/dist/types/abis/rebalancer/operator-abi.d.ts +283 -0
- package/dist/types/abis/rebalancer/operator-abi.d.ts.map +1 -0
- package/dist/types/abis/rebalancer/rebalancer-abi.d.ts +952 -0
- package/dist/types/abis/rebalancer/rebalancer-abi.d.ts.map +1 -0
- package/dist/types/abis/rebalancer/strategy-abi.d.ts +487 -0
- package/dist/types/abis/rebalancer/strategy-abi.d.ts.map +1 -0
- package/dist/types/apis/odos.d.ts +28 -0
- package/dist/types/apis/odos.d.ts.map +1 -0
- package/dist/types/apis/pool.d.ts +5 -0
- package/dist/types/apis/pool.d.ts.map +1 -0
- package/dist/types/apis/strategy.d.ts +5 -0
- package/dist/types/apis/strategy.d.ts.map +1 -0
- package/dist/types/call.d.ts +108 -44
- package/dist/types/call.d.ts.map +1 -1
- package/dist/types/constants/addresses.d.ts +4 -0
- package/dist/types/constants/addresses.d.ts.map +1 -1
- package/dist/types/constants/chain.d.ts +1 -0
- package/dist/types/constants/chain.d.ts.map +1 -1
- package/dist/types/constants/permit.d.ts +10 -0
- package/dist/types/constants/permit.d.ts.map +1 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/model/currency.d.ts +7 -0
- package/dist/types/model/currency.d.ts.map +1 -1
- package/dist/types/model/market.d.ts +3 -0
- package/dist/types/model/market.d.ts.map +1 -1
- package/dist/types/model/pool.d.ts +38 -0
- package/dist/types/model/pool.d.ts.map +1 -0
- package/dist/types/model/strategy.d.ts +6 -0
- package/dist/types/model/strategy.d.ts.map +1 -0
- package/dist/types/type.d.ts +20 -1
- package/dist/types/type.d.ts.map +1 -1
- package/dist/types/utils/math.d.ts +1 -0
- package/dist/types/utils/math.d.ts.map +1 -1
- package/dist/types/utils/open.d.ts +1 -1
- package/dist/types/utils/open.d.ts.map +1 -1
- package/dist/types/utils/pool-key.d.ts +3 -0
- package/dist/types/utils/pool-key.d.ts.map +1 -0
- package/dist/types/utils/pool.d.ts +11 -0
- package/dist/types/utils/pool.d.ts.map +1 -0
- package/dist/types/utils/prices.d.ts +1 -0
- package/dist/types/utils/prices.d.ts.map +1 -1
- package/dist/types/view.d.ts +52 -17
- package/dist/types/view.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/signature.js +0 -149
- package/dist/cjs/signature.js.map +0 -1
- package/dist/esm/signature.js +0 -172
- package/dist/esm/signature.js.map +0 -1
- package/dist/types/signature.d.ts +0 -38
- package/dist/types/signature.d.ts.map +0 -1
package/dist/types/view.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
150
|
-
* @param options.
|
|
151
|
-
* @param options.
|
|
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.
|
|
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'
|
package/dist/types/view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAa,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/cjs/signature.js
DELETED
|
@@ -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":";;;AAAA,+BAOa;AAEb,6CAAwD;AACxD,uCAA4D;AAC5D,qDAA0D;AAC1D,+CAAgD;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;AA6BH,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,IAAA,yBAAkB,EAAC;QACtC,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,GAAE;KAC3D,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,8BAAkB,CAAC,OAAO,CAAE,CAAC,UAAU,CAAA;IACvD,MAAM,KAAK,GAAG,IAAA,iBAAU,EAAC,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,IAAA,oCAA6B,GAAE,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,IAAA,sBAAe,EAAC;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,IAAA,qBAAc,EAAC,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;AAzGY,QAAA,eAAe,mBAyG3B"}
|
package/dist/esm/signature.js
DELETED
|
@@ -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":"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"}
|
|
@@ -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"}
|