@kittycorn-labs/v4-sdk 1.1.30 → 2.0.0
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/README.md +9 -0
- package/dist/{PositionManager.d.ts → cjs/src/PositionManager.d.ts} +169 -169
- package/dist/cjs/src/PositionManager.js +242 -0
- package/dist/cjs/src/PositionManager.js.map +1 -0
- package/dist/cjs/src/abis/IMulticall.json +23 -0
- package/dist/{actionConstants.d.ts → cjs/src/actionConstants.d.ts} +1 -1
- package/dist/cjs/src/actionConstants.js +6 -0
- package/dist/cjs/src/actionConstants.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/index.d.ts +4 -4
- package/dist/cjs/src/entities/index.js +8 -0
- package/dist/cjs/src/entities/index.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/pool.d.ts +103 -103
- package/dist/cjs/src/entities/pool.js +196 -0
- package/dist/cjs/src/entities/pool.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/position.d.ts +144 -144
- package/dist/cjs/src/entities/position.js +273 -0
- package/dist/cjs/src/entities/position.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/route.d.ts +28 -28
- package/dist/cjs/src/entities/route.js +89 -0
- package/dist/cjs/src/entities/route.js.map +1 -0
- package/dist/{entities → cjs/src/entities}/trade.d.ts +220 -220
- package/dist/cjs/src/entities/trade.js +441 -0
- package/dist/cjs/src/entities/trade.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +4 -4
- package/dist/cjs/src/index.js +8 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/{internalConstants.d.ts → cjs/src/internalConstants.d.ts} +46 -46
- package/dist/cjs/src/internalConstants.js +69 -0
- package/dist/cjs/src/internalConstants.js.map +1 -0
- package/dist/{multicall.d.ts → cjs/src/multicall.d.ts} +10 -10
- package/dist/cjs/src/multicall.js +26 -0
- package/dist/cjs/src/multicall.js.map +1 -0
- package/dist/cjs/src/tokenize.d.ts +17 -0
- package/dist/cjs/src/tokenize.js +42 -0
- package/dist/cjs/src/tokenize.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/calldata.d.ts +20 -20
- package/dist/cjs/src/utils/calldata.js +20 -0
- package/dist/cjs/src/utils/calldata.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/currencyMap.d.ts +2 -2
- package/dist/cjs/src/utils/currencyMap.js +15 -0
- package/dist/cjs/src/utils/currencyMap.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/encodeRouteToPath.d.ts +10 -10
- package/dist/cjs/src/utils/encodeRouteToPath.js +26 -0
- package/dist/cjs/src/utils/encodeRouteToPath.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/hook.d.ts +45 -45
- package/dist/cjs/src/utils/hook.js +97 -0
- package/dist/cjs/src/utils/hook.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/index.d.ts +11 -11
- package/dist/cjs/src/utils/index.js +15 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +4 -4
- package/dist/cjs/src/utils/pathCurrency.js +27 -0
- package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/positionManagerAbi.d.ts +102 -102
- package/dist/cjs/src/utils/positionManagerAbi.js +1318 -0
- package/dist/cjs/src/utils/positionManagerAbi.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/priceTickConversions.d.ts +20 -20
- package/dist/cjs/src/utils/priceTickConversions.js +55 -0
- package/dist/cjs/src/utils/priceTickConversions.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/sortsBefore.d.ts +2 -2
- package/dist/cjs/src/utils/sortsBefore.js +12 -0
- package/dist/cjs/src/utils/sortsBefore.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/v4BaseActionsParser.d.ts +49 -45
- package/dist/cjs/src/utils/v4BaseActionsParser.js +193 -0
- package/dist/cjs/src/utils/v4BaseActionsParser.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/v4Planner.d.ts +71 -55
- package/dist/cjs/src/utils/v4Planner.js +267 -0
- package/dist/cjs/src/utils/v4Planner.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/v4PositionPlanner.d.ts +13 -12
- package/dist/cjs/src/utils/v4PositionPlanner.js +61 -0
- package/dist/cjs/src/utils/v4PositionPlanner.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/src/PositionManager.d.ts +169 -0
- package/dist/esm/src/PositionManager.js +237 -0
- package/dist/esm/src/PositionManager.js.map +1 -0
- package/dist/esm/src/abis/IMulticall.json +23 -0
- package/dist/esm/src/actionConstants.d.ts +1 -0
- package/dist/esm/src/actionConstants.js +3 -0
- package/dist/esm/src/actionConstants.js.map +1 -0
- package/dist/esm/src/entities/index.d.ts +4 -0
- package/dist/esm/src/entities/index.js +5 -0
- package/dist/esm/src/entities/index.js.map +1 -0
- package/dist/esm/src/entities/pool.d.ts +103 -0
- package/dist/esm/src/entities/pool.js +191 -0
- package/dist/esm/src/entities/pool.js.map +1 -0
- package/dist/esm/src/entities/position.d.ts +144 -0
- package/dist/esm/src/entities/position.js +268 -0
- package/dist/esm/src/entities/position.js.map +1 -0
- package/dist/esm/src/entities/route.d.ts +28 -0
- package/dist/esm/src/entities/route.js +84 -0
- package/dist/esm/src/entities/route.js.map +1 -0
- package/dist/esm/src/entities/trade.d.ts +220 -0
- package/dist/esm/src/entities/trade.js +435 -0
- package/dist/esm/src/entities/trade.js.map +1 -0
- package/dist/esm/src/index.d.ts +4 -0
- package/dist/esm/src/index.js +5 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/internalConstants.d.ts +46 -0
- package/dist/esm/src/internalConstants.js +65 -0
- package/dist/esm/src/internalConstants.js.map +1 -0
- package/dist/esm/src/multicall.d.ts +10 -0
- package/dist/esm/src/multicall.js +21 -0
- package/dist/esm/src/multicall.js.map +1 -0
- package/dist/esm/src/tokenize.d.ts +17 -0
- package/dist/esm/src/tokenize.js +37 -0
- package/dist/esm/src/tokenize.js.map +1 -0
- package/dist/esm/src/utils/calldata.d.ts +20 -0
- package/dist/esm/src/utils/calldata.js +15 -0
- package/dist/esm/src/utils/calldata.js.map +1 -0
- package/dist/esm/src/utils/currencyMap.d.ts +2 -0
- package/dist/esm/src/utils/currencyMap.js +11 -0
- package/dist/esm/src/utils/currencyMap.js.map +1 -0
- package/dist/esm/src/utils/encodeRouteToPath.d.ts +10 -0
- package/dist/esm/src/utils/encodeRouteToPath.js +22 -0
- package/dist/esm/src/utils/encodeRouteToPath.js.map +1 -0
- package/dist/esm/src/utils/hook.d.ts +45 -0
- package/dist/esm/src/utils/hook.js +92 -0
- package/dist/esm/src/utils/hook.js.map +1 -0
- package/dist/esm/src/utils/index.d.ts +11 -0
- package/dist/esm/src/utils/index.js +12 -0
- package/dist/esm/src/utils/index.js.map +1 -0
- package/dist/esm/src/utils/pathCurrency.d.ts +4 -0
- package/dist/esm/src/utils/pathCurrency.js +22 -0
- package/dist/esm/src/utils/pathCurrency.js.map +1 -0
- package/dist/esm/src/utils/positionManagerAbi.d.ts +102 -0
- package/dist/esm/src/utils/positionManagerAbi.js +1315 -0
- package/dist/esm/src/utils/positionManagerAbi.js.map +1 -0
- package/dist/esm/src/utils/priceTickConversions.d.ts +20 -0
- package/dist/esm/src/utils/priceTickConversions.js +49 -0
- package/dist/esm/src/utils/priceTickConversions.js.map +1 -0
- package/dist/esm/src/utils/sortsBefore.d.ts +2 -0
- package/dist/esm/src/utils/sortsBefore.js +8 -0
- package/dist/esm/src/utils/sortsBefore.js.map +1 -0
- package/dist/esm/src/utils/v4BaseActionsParser.d.ts +49 -0
- package/dist/esm/src/utils/v4BaseActionsParser.js +189 -0
- package/dist/esm/src/utils/v4BaseActionsParser.js.map +1 -0
- package/dist/esm/src/utils/v4Planner.d.ts +71 -0
- package/dist/esm/src/utils/v4Planner.js +261 -0
- package/dist/esm/src/utils/v4Planner.js.map +1 -0
- package/dist/esm/src/utils/v4PositionPlanner.d.ts +13 -0
- package/dist/esm/src/utils/v4PositionPlanner.js +57 -0
- package/dist/esm/src/utils/v4PositionPlanner.js.map +1 -0
- package/dist/types/src/PositionManager.d.ts +170 -0
- package/dist/types/src/PositionManager.d.ts.map +1 -0
- package/dist/types/src/actionConstants.d.ts +2 -0
- package/dist/types/src/actionConstants.d.ts.map +1 -0
- package/dist/types/src/entities/index.d.ts +5 -0
- package/dist/types/src/entities/index.d.ts.map +1 -0
- package/dist/types/src/entities/pool.d.ts +104 -0
- package/dist/types/src/entities/pool.d.ts.map +1 -0
- package/dist/types/src/entities/position.d.ts +145 -0
- package/dist/types/src/entities/position.d.ts.map +1 -0
- package/dist/types/src/entities/route.d.ts +29 -0
- package/dist/types/src/entities/route.d.ts.map +1 -0
- package/dist/types/src/entities/trade.d.ts +221 -0
- package/dist/types/src/entities/trade.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/internalConstants.d.ts +47 -0
- package/dist/types/src/internalConstants.d.ts.map +1 -0
- package/dist/types/src/multicall.d.ts +11 -0
- package/dist/types/src/multicall.d.ts.map +1 -0
- package/dist/types/src/tokenize.d.ts +18 -0
- package/dist/types/src/tokenize.d.ts.map +1 -0
- package/dist/types/src/utils/calldata.d.ts +21 -0
- package/dist/types/src/utils/calldata.d.ts.map +1 -0
- package/dist/types/src/utils/currencyMap.d.ts +3 -0
- package/dist/types/src/utils/currencyMap.d.ts.map +1 -0
- package/dist/types/src/utils/encodeRouteToPath.d.ts +11 -0
- package/dist/types/src/utils/encodeRouteToPath.d.ts.map +1 -0
- package/dist/types/src/utils/hook.d.ts +46 -0
- package/dist/types/src/utils/hook.d.ts.map +1 -0
- package/dist/types/src/utils/index.d.ts +12 -0
- package/dist/types/src/utils/index.d.ts.map +1 -0
- package/dist/types/src/utils/pathCurrency.d.ts +5 -0
- package/dist/types/src/utils/pathCurrency.d.ts.map +1 -0
- package/dist/types/src/utils/positionManagerAbi.d.ts +103 -0
- package/dist/types/src/utils/positionManagerAbi.d.ts.map +1 -0
- package/dist/types/src/utils/priceTickConversions.d.ts +21 -0
- package/dist/types/src/utils/priceTickConversions.d.ts.map +1 -0
- package/dist/types/src/utils/sortsBefore.d.ts +3 -0
- package/dist/types/src/utils/sortsBefore.d.ts.map +1 -0
- package/dist/types/src/utils/v4BaseActionsParser.d.ts +50 -0
- package/dist/types/src/utils/v4BaseActionsParser.d.ts.map +1 -0
- package/dist/types/src/utils/v4Planner.d.ts +72 -0
- package/dist/types/src/utils/v4Planner.d.ts.map +1 -0
- package/dist/types/src/utils/v4PositionPlanner.d.ts +14 -0
- package/dist/types/src/utils/v4PositionPlanner.d.ts.map +1 -0
- package/package.json +28 -46
- package/dist/index.js +0 -8
- package/dist/tokenizeAddresses.d.ts +0 -25
- package/dist/v4-sdk.cjs.development.js +0 -3633
- package/dist/v4-sdk.cjs.development.js.map +0 -1
- package/dist/v4-sdk.cjs.production.min.js +0 -2
- package/dist/v4-sdk.cjs.production.min.js.map +0 -1
- package/dist/v4-sdk.esm.js +0 -3597
- package/dist/v4-sdk.esm.js.map +0 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.V4Planner = exports.V4_SWAP_ACTIONS_V2_1_1 = exports.V4_BASE_ACTIONS_ABI_DEFINITION = exports.Subparser = exports.Actions = exports.isAtLeastV2_1_1 = exports.URVersion = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
|
|
6
|
+
const abi_1 = require("@ethersproject/abi");
|
|
7
|
+
const sdk_core_1 = require("@kittycorn-labs/sdk-core");
|
|
8
|
+
const internalConstants_1 = require("../internalConstants");
|
|
9
|
+
const encodeRouteToPath_1 = require("./encodeRouteToPath");
|
|
10
|
+
/**
|
|
11
|
+
* Actions
|
|
12
|
+
* @description Constants that define what action to perform
|
|
13
|
+
* Not all actions are supported yet.
|
|
14
|
+
* @enum {number}
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* UniversalRouter version
|
|
18
|
+
* @description Version of the UniversalRouter contract
|
|
19
|
+
* @enum {string}
|
|
20
|
+
*/
|
|
21
|
+
var URVersion;
|
|
22
|
+
(function (URVersion) {
|
|
23
|
+
URVersion["V2_0"] = "2.0";
|
|
24
|
+
URVersion["V2_1_1"] = "2.1.1";
|
|
25
|
+
URVersion["V2_1_2"] = "2.1.2";
|
|
26
|
+
URVersion["V2_2_0"] = "2.2.0";
|
|
27
|
+
})(URVersion = exports.URVersion || (exports.URVersion = {}));
|
|
28
|
+
function isAtLeastV2_1_1(version) {
|
|
29
|
+
return !!version && version.localeCompare(URVersion.V2_1_1, undefined, { numeric: true }) >= 0;
|
|
30
|
+
}
|
|
31
|
+
exports.isAtLeastV2_1_1 = isAtLeastV2_1_1;
|
|
32
|
+
var Actions;
|
|
33
|
+
(function (Actions) {
|
|
34
|
+
// pool actions
|
|
35
|
+
// liquidity actions
|
|
36
|
+
Actions[Actions["INCREASE_LIQUIDITY"] = 0] = "INCREASE_LIQUIDITY";
|
|
37
|
+
Actions[Actions["DECREASE_LIQUIDITY"] = 1] = "DECREASE_LIQUIDITY";
|
|
38
|
+
Actions[Actions["MINT_POSITION"] = 2] = "MINT_POSITION";
|
|
39
|
+
Actions[Actions["BURN_POSITION"] = 3] = "BURN_POSITION";
|
|
40
|
+
// for fee on transfer tokens
|
|
41
|
+
// INCREASE_LIQUIDITY_FROM_DELTAS = 0x04,
|
|
42
|
+
// MINT_POSITION_FROM_DELTAS = 0x05,
|
|
43
|
+
// swapping
|
|
44
|
+
Actions[Actions["SWAP_EXACT_IN_SINGLE"] = 6] = "SWAP_EXACT_IN_SINGLE";
|
|
45
|
+
Actions[Actions["SWAP_EXACT_IN"] = 7] = "SWAP_EXACT_IN";
|
|
46
|
+
Actions[Actions["SWAP_EXACT_OUT_SINGLE"] = 8] = "SWAP_EXACT_OUT_SINGLE";
|
|
47
|
+
Actions[Actions["SWAP_EXACT_OUT"] = 9] = "SWAP_EXACT_OUT";
|
|
48
|
+
// closing deltas on the pool manager
|
|
49
|
+
// settling
|
|
50
|
+
Actions[Actions["SETTLE"] = 11] = "SETTLE";
|
|
51
|
+
Actions[Actions["SETTLE_ALL"] = 12] = "SETTLE_ALL";
|
|
52
|
+
Actions[Actions["SETTLE_PAIR"] = 13] = "SETTLE_PAIR";
|
|
53
|
+
// taking
|
|
54
|
+
Actions[Actions["TAKE"] = 14] = "TAKE";
|
|
55
|
+
Actions[Actions["TAKE_ALL"] = 15] = "TAKE_ALL";
|
|
56
|
+
Actions[Actions["TAKE_PORTION"] = 16] = "TAKE_PORTION";
|
|
57
|
+
Actions[Actions["TAKE_PAIR"] = 17] = "TAKE_PAIR";
|
|
58
|
+
Actions[Actions["CLOSE_CURRENCY"] = 18] = "CLOSE_CURRENCY";
|
|
59
|
+
// CLEAR_OR_TAKE = 0x13,
|
|
60
|
+
Actions[Actions["SWEEP"] = 20] = "SWEEP";
|
|
61
|
+
// for wrapping/unwrapping native
|
|
62
|
+
// WRAP = 0x15,
|
|
63
|
+
Actions[Actions["UNWRAP"] = 22] = "UNWRAP";
|
|
64
|
+
})(Actions = exports.Actions || (exports.Actions = {}));
|
|
65
|
+
var Subparser;
|
|
66
|
+
(function (Subparser) {
|
|
67
|
+
Subparser[Subparser["V4SwapExactInSingle"] = 0] = "V4SwapExactInSingle";
|
|
68
|
+
Subparser[Subparser["V4SwapExactIn"] = 1] = "V4SwapExactIn";
|
|
69
|
+
Subparser[Subparser["V4SwapExactOutSingle"] = 2] = "V4SwapExactOutSingle";
|
|
70
|
+
Subparser[Subparser["V4SwapExactOut"] = 3] = "V4SwapExactOut";
|
|
71
|
+
Subparser[Subparser["PoolKey"] = 4] = "PoolKey";
|
|
72
|
+
})(Subparser = exports.Subparser || (exports.Subparser = {}));
|
|
73
|
+
const POOL_KEY_STRUCT = '(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)';
|
|
74
|
+
const PATH_KEY_STRUCT = '(address intermediateCurrency,uint256 fee,int24 tickSpacing,address hooks,bytes hookData)';
|
|
75
|
+
// UR 2.0 swap structs (without minHopPriceX36)
|
|
76
|
+
const SWAP_EXACT_IN_SINGLE_STRUCT_V2_0 = '(' + POOL_KEY_STRUCT + ' poolKey,bool zeroForOne,uint128 amountIn,uint128 amountOutMinimum,bytes hookData)';
|
|
77
|
+
const SWAP_EXACT_IN_STRUCT_V2_0 = '(address currencyIn,' + PATH_KEY_STRUCT + '[] path,uint128 amountIn,uint128 amountOutMinimum)';
|
|
78
|
+
const SWAP_EXACT_OUT_SINGLE_STRUCT_V2_0 = '(' + POOL_KEY_STRUCT + ' poolKey,bool zeroForOne,uint128 amountOut,uint128 amountInMaximum,bytes hookData)';
|
|
79
|
+
const SWAP_EXACT_OUT_STRUCT_V2_0 = '(address currencyOut,' + PATH_KEY_STRUCT + '[] path,uint128 amountOut,uint128 amountInMaximum)';
|
|
80
|
+
// UR 2.1.1 swap structs (with minHopPriceX36)
|
|
81
|
+
const SWAP_EXACT_IN_SINGLE_STRUCT_V2_1_1 = '(' +
|
|
82
|
+
POOL_KEY_STRUCT +
|
|
83
|
+
' poolKey,bool zeroForOne,uint128 amountIn,uint128 amountOutMinimum,uint256 minHopPriceX36,bytes hookData)';
|
|
84
|
+
const SWAP_EXACT_IN_STRUCT_V2_1_1 = '(address currencyIn,' +
|
|
85
|
+
PATH_KEY_STRUCT +
|
|
86
|
+
'[] path,uint256[] minHopPriceX36,uint128 amountIn,uint128 amountOutMinimum)';
|
|
87
|
+
const SWAP_EXACT_OUT_SINGLE_STRUCT_V2_1_1 = '(' +
|
|
88
|
+
POOL_KEY_STRUCT +
|
|
89
|
+
' poolKey,bool zeroForOne,uint128 amountOut,uint128 amountInMaximum,uint256 minHopPriceX36,bytes hookData)';
|
|
90
|
+
const SWAP_EXACT_OUT_STRUCT_V2_1_1 = '(address currencyOut,' +
|
|
91
|
+
PATH_KEY_STRUCT +
|
|
92
|
+
'[] path,uint256[] minHopPriceX36,uint128 amountOut,uint128 amountInMaximum)';
|
|
93
|
+
// V4_BASE_ACTIONS_ABI_DEFINITION uses V2.0 structs (default, without minHopPriceX36)
|
|
94
|
+
const SWAP_EXACT_IN_SINGLE_STRUCT = SWAP_EXACT_IN_SINGLE_STRUCT_V2_0;
|
|
95
|
+
const SWAP_EXACT_IN_STRUCT = SWAP_EXACT_IN_STRUCT_V2_0;
|
|
96
|
+
const SWAP_EXACT_OUT_SINGLE_STRUCT = SWAP_EXACT_OUT_SINGLE_STRUCT_V2_0;
|
|
97
|
+
const SWAP_EXACT_OUT_STRUCT = SWAP_EXACT_OUT_STRUCT_V2_0;
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
99
|
+
exports.V4_BASE_ACTIONS_ABI_DEFINITION = {
|
|
100
|
+
// Liquidity commands
|
|
101
|
+
[Actions.INCREASE_LIQUIDITY]: [
|
|
102
|
+
{ name: 'tokenId', type: 'uint256' },
|
|
103
|
+
{ name: 'liquidity', type: 'uint256' },
|
|
104
|
+
{ name: 'amount0Max', type: 'uint128' },
|
|
105
|
+
{ name: 'amount1Max', type: 'uint128' },
|
|
106
|
+
{ name: 'hookData', type: 'bytes' },
|
|
107
|
+
],
|
|
108
|
+
[Actions.DECREASE_LIQUIDITY]: [
|
|
109
|
+
{ name: 'tokenId', type: 'uint256' },
|
|
110
|
+
{ name: 'liquidity', type: 'uint256' },
|
|
111
|
+
{ name: 'amount0Min', type: 'uint128' },
|
|
112
|
+
{ name: 'amount1Min', type: 'uint128' },
|
|
113
|
+
{ name: 'hookData', type: 'bytes' },
|
|
114
|
+
],
|
|
115
|
+
[Actions.MINT_POSITION]: [
|
|
116
|
+
{ name: 'poolKey', type: POOL_KEY_STRUCT, subparser: Subparser.PoolKey },
|
|
117
|
+
{ name: 'tickLower', type: 'int24' },
|
|
118
|
+
{ name: 'tickUpper', type: 'int24' },
|
|
119
|
+
{ name: 'liquidity', type: 'uint256' },
|
|
120
|
+
{ name: 'amount0Max', type: 'uint128' },
|
|
121
|
+
{ name: 'amount1Max', type: 'uint128' },
|
|
122
|
+
{ name: 'owner', type: 'address' },
|
|
123
|
+
{ name: 'hookData', type: 'bytes' },
|
|
124
|
+
],
|
|
125
|
+
[Actions.BURN_POSITION]: [
|
|
126
|
+
{ name: 'tokenId', type: 'uint256' },
|
|
127
|
+
{ name: 'amount0Min', type: 'uint128' },
|
|
128
|
+
{ name: 'amount1Min', type: 'uint128' },
|
|
129
|
+
{ name: 'hookData', type: 'bytes' },
|
|
130
|
+
],
|
|
131
|
+
// Swapping commands
|
|
132
|
+
[Actions.SWAP_EXACT_IN_SINGLE]: [
|
|
133
|
+
{ name: 'swap', type: SWAP_EXACT_IN_SINGLE_STRUCT, subparser: Subparser.V4SwapExactInSingle },
|
|
134
|
+
],
|
|
135
|
+
[Actions.SWAP_EXACT_IN]: [{ name: 'swap', type: SWAP_EXACT_IN_STRUCT, subparser: Subparser.V4SwapExactIn }],
|
|
136
|
+
[Actions.SWAP_EXACT_OUT_SINGLE]: [
|
|
137
|
+
{ name: 'swap', type: SWAP_EXACT_OUT_SINGLE_STRUCT, subparser: Subparser.V4SwapExactOutSingle },
|
|
138
|
+
],
|
|
139
|
+
[Actions.SWAP_EXACT_OUT]: [{ name: 'swap', type: SWAP_EXACT_OUT_STRUCT, subparser: Subparser.V4SwapExactOut }],
|
|
140
|
+
// Payments commands
|
|
141
|
+
[Actions.SETTLE]: [
|
|
142
|
+
{ name: 'currency', type: 'address' },
|
|
143
|
+
{ name: 'amount', type: 'uint256' },
|
|
144
|
+
{ name: 'payerIsUser', type: 'bool' },
|
|
145
|
+
],
|
|
146
|
+
[Actions.SETTLE_ALL]: [
|
|
147
|
+
{ name: 'currency', type: 'address' },
|
|
148
|
+
{ name: 'maxAmount', type: 'uint256' },
|
|
149
|
+
],
|
|
150
|
+
[Actions.SETTLE_PAIR]: [
|
|
151
|
+
{ name: 'currency0', type: 'address' },
|
|
152
|
+
{ name: 'currency1', type: 'address' },
|
|
153
|
+
],
|
|
154
|
+
[Actions.TAKE]: [
|
|
155
|
+
{ name: 'currency', type: 'address' },
|
|
156
|
+
{ name: 'recipient', type: 'address' },
|
|
157
|
+
{ name: 'amount', type: 'uint256' },
|
|
158
|
+
],
|
|
159
|
+
[Actions.TAKE_ALL]: [
|
|
160
|
+
{ name: 'currency', type: 'address' },
|
|
161
|
+
{ name: 'minAmount', type: 'uint256' },
|
|
162
|
+
],
|
|
163
|
+
[Actions.TAKE_PORTION]: [
|
|
164
|
+
{ name: 'currency', type: 'address' },
|
|
165
|
+
{ name: 'recipient', type: 'address' },
|
|
166
|
+
{ name: 'bips', type: 'uint256' },
|
|
167
|
+
],
|
|
168
|
+
[Actions.TAKE_PAIR]: [
|
|
169
|
+
{ name: 'currency0', type: 'address' },
|
|
170
|
+
{ name: 'currency1', type: 'address' },
|
|
171
|
+
{ name: 'recipient', type: 'address' },
|
|
172
|
+
],
|
|
173
|
+
[Actions.CLOSE_CURRENCY]: [{ name: 'currency', type: 'address' }],
|
|
174
|
+
[Actions.SWEEP]: [
|
|
175
|
+
{ name: 'currency', type: 'address' },
|
|
176
|
+
{ name: 'recipient', type: 'address' },
|
|
177
|
+
],
|
|
178
|
+
[Actions.UNWRAP]: [{ name: 'amount', type: 'uint256' }],
|
|
179
|
+
};
|
|
180
|
+
// UR 2.1.1 specific ABI definitions for swap actions (with minHopPriceX36)
|
|
181
|
+
exports.V4_SWAP_ACTIONS_V2_1_1 = {
|
|
182
|
+
[Actions.SWAP_EXACT_IN_SINGLE]: [
|
|
183
|
+
{ name: 'swap', type: SWAP_EXACT_IN_SINGLE_STRUCT_V2_1_1, subparser: Subparser.V4SwapExactInSingle },
|
|
184
|
+
],
|
|
185
|
+
[Actions.SWAP_EXACT_IN]: [{ name: 'swap', type: SWAP_EXACT_IN_STRUCT_V2_1_1, subparser: Subparser.V4SwapExactIn }],
|
|
186
|
+
[Actions.SWAP_EXACT_OUT_SINGLE]: [
|
|
187
|
+
{ name: 'swap', type: SWAP_EXACT_OUT_SINGLE_STRUCT_V2_1_1, subparser: Subparser.V4SwapExactOutSingle },
|
|
188
|
+
],
|
|
189
|
+
[Actions.SWAP_EXACT_OUT]: [{ name: 'swap', type: SWAP_EXACT_OUT_STRUCT_V2_1_1, subparser: Subparser.V4SwapExactOut }],
|
|
190
|
+
};
|
|
191
|
+
const FULL_DELTA_AMOUNT = 0;
|
|
192
|
+
class V4Planner {
|
|
193
|
+
constructor() {
|
|
194
|
+
this.actions = internalConstants_1.EMPTY_BYTES;
|
|
195
|
+
this.params = [];
|
|
196
|
+
}
|
|
197
|
+
addAction(type, parameters, urVersion = URVersion.V2_0) {
|
|
198
|
+
let command = createAction(type, parameters, urVersion);
|
|
199
|
+
this.params.push(command.encodedInput);
|
|
200
|
+
this.actions = this.actions.concat(command.action.toString(16).padStart(2, '0'));
|
|
201
|
+
return this;
|
|
202
|
+
}
|
|
203
|
+
addTrade(trade, slippageTolerance, minHopPriceX36, urVersion = URVersion.V2_0) {
|
|
204
|
+
const exactOutput = trade.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT;
|
|
205
|
+
// exactInput we sometimes perform aggregated slippage checks, but not with exactOutput
|
|
206
|
+
if (exactOutput)
|
|
207
|
+
(0, tiny_invariant_1.default)(!!slippageTolerance, 'ExactOut requires slippageTolerance');
|
|
208
|
+
(0, tiny_invariant_1.default)(trade.swaps.length === 1, 'Only accepts Trades with 1 swap (must break swaps into individual trades)');
|
|
209
|
+
(0, tiny_invariant_1.default)(urVersion === URVersion.V2_0 || !(minHopPriceX36 === null || minHopPriceX36 === void 0 ? void 0 : minHopPriceX36.length) || minHopPriceX36.length === trade.route.pools.length, `minHopPriceX36 length (${minHopPriceX36 === null || minHopPriceX36 === void 0 ? void 0 : minHopPriceX36.length}) must equal route.pools.length (${trade.route.pools.length})`);
|
|
210
|
+
const actionType = exactOutput ? Actions.SWAP_EXACT_OUT : Actions.SWAP_EXACT_IN;
|
|
211
|
+
const currencyIn = currencyAddress(trade.route.pathInput);
|
|
212
|
+
const currencyOut = currencyAddress(trade.route.pathOutput);
|
|
213
|
+
const swapStruct = exactOutput
|
|
214
|
+
? {
|
|
215
|
+
currencyOut,
|
|
216
|
+
path: (0, encodeRouteToPath_1.encodeRouteToPath)(trade.route, exactOutput),
|
|
217
|
+
...(isAtLeastV2_1_1(urVersion) && { minHopPriceX36: minHopPriceX36 !== null && minHopPriceX36 !== void 0 ? minHopPriceX36 : [] }),
|
|
218
|
+
amountOut: trade.outputAmount.quotient.toString(),
|
|
219
|
+
amountInMaximum: trade.maximumAmountIn(slippageTolerance !== null && slippageTolerance !== void 0 ? slippageTolerance : new sdk_core_1.Percent(0)).quotient.toString(),
|
|
220
|
+
}
|
|
221
|
+
: {
|
|
222
|
+
currencyIn,
|
|
223
|
+
path: (0, encodeRouteToPath_1.encodeRouteToPath)(trade.route, exactOutput),
|
|
224
|
+
...(isAtLeastV2_1_1(urVersion) && { minHopPriceX36: minHopPriceX36 !== null && minHopPriceX36 !== void 0 ? minHopPriceX36 : [] }),
|
|
225
|
+
amountIn: trade.inputAmount.quotient.toString(),
|
|
226
|
+
amountOutMinimum: slippageTolerance ? trade.minimumAmountOut(slippageTolerance).quotient.toString() : 0,
|
|
227
|
+
};
|
|
228
|
+
this.addSwapAction(actionType, [swapStruct], urVersion);
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
addSettle(currency, payerIsUser, amount) {
|
|
232
|
+
this.addAction(Actions.SETTLE, [currencyAddress(currency), amount !== null && amount !== void 0 ? amount : FULL_DELTA_AMOUNT, payerIsUser]);
|
|
233
|
+
return this;
|
|
234
|
+
}
|
|
235
|
+
addTake(currency, recipient, amount) {
|
|
236
|
+
const takeAmount = amount !== null && amount !== void 0 ? amount : FULL_DELTA_AMOUNT;
|
|
237
|
+
this.addAction(Actions.TAKE, [currencyAddress(currency), recipient, takeAmount]);
|
|
238
|
+
return this;
|
|
239
|
+
}
|
|
240
|
+
addUnwrap(amount) {
|
|
241
|
+
this.addAction(Actions.UNWRAP, [amount]);
|
|
242
|
+
return this;
|
|
243
|
+
}
|
|
244
|
+
finalize() {
|
|
245
|
+
return abi_1.defaultAbiCoder.encode(['bytes', 'bytes[]'], [this.actions, this.params]);
|
|
246
|
+
}
|
|
247
|
+
addSwapAction(type, parameters, urVersion) {
|
|
248
|
+
// Use V2.1.1 ABI (with minHopPriceX36) for V2.1.1, otherwise default to V2.0 ABI (without minHopPriceX36)
|
|
249
|
+
const abiDef = isAtLeastV2_1_1(urVersion) ? exports.V4_SWAP_ACTIONS_V2_1_1[type] : exports.V4_BASE_ACTIONS_ABI_DEFINITION[type];
|
|
250
|
+
const encodedInput = abi_1.defaultAbiCoder.encode(abiDef.map((v) => v.type), parameters);
|
|
251
|
+
this.params.push(encodedInput);
|
|
252
|
+
this.actions = this.actions.concat(type.toString(16).padStart(2, '0'));
|
|
253
|
+
return this;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.V4Planner = V4Planner;
|
|
257
|
+
function currencyAddress(currency) {
|
|
258
|
+
return currency.isNative ? internalConstants_1.ADDRESS_ZERO : currency.wrapped.address;
|
|
259
|
+
}
|
|
260
|
+
function createAction(action, parameters, urVersion = URVersion.V2_0) {
|
|
261
|
+
const abiDef = isAtLeastV2_1_1(urVersion) && action in exports.V4_SWAP_ACTIONS_V2_1_1
|
|
262
|
+
? exports.V4_SWAP_ACTIONS_V2_1_1[action]
|
|
263
|
+
: exports.V4_BASE_ACTIONS_ABI_DEFINITION[action];
|
|
264
|
+
const encodedInput = abi_1.defaultAbiCoder.encode(abiDef.map((v) => v.type), parameters);
|
|
265
|
+
return { action, encodedInput };
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=v4Planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v4Planner.js","sourceRoot":"","sources":["../../../../src/utils/v4Planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { V4Planner } from './v4Planner';
|
|
2
|
-
import { Pool } from '../entities';
|
|
3
|
-
import { BigintIsh, Currency } from '@kittycorn-labs/sdk-core';
|
|
4
|
-
export declare class V4PositionPlanner extends V4Planner {
|
|
5
|
-
addMint(pool: Pool, tickLower: number, tickUpper: number, liquidity: BigintIsh, amount0Max: BigintIsh, amount1Max: BigintIsh, owner: string, hookData?: string): void;
|
|
6
|
-
addIncrease(tokenId: BigintIsh, liquidity: BigintIsh, amount0Max: BigintIsh, amount1Max: BigintIsh, hookData?: string): void;
|
|
7
|
-
addDecrease(tokenId: BigintIsh, liquidity: BigintIsh, amount0Min: BigintIsh, amount1Min: BigintIsh, hookData?: string): void;
|
|
8
|
-
addBurn(tokenId: BigintIsh, amount0Min: BigintIsh, amount1Min: BigintIsh, hookData?: string): void;
|
|
9
|
-
addSettlePair(currency0: Currency, currency1: Currency): void;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { V4Planner } from './v4Planner';
|
|
2
|
+
import { Pool } from '../entities';
|
|
3
|
+
import { BigintIsh, Currency } from '@kittycorn-labs/sdk-core';
|
|
4
|
+
export declare class V4PositionPlanner extends V4Planner {
|
|
5
|
+
addMint(pool: Pool, tickLower: number, tickUpper: number, liquidity: BigintIsh, amount0Max: BigintIsh, amount1Max: BigintIsh, owner: string, hookData?: string): void;
|
|
6
|
+
addIncrease(tokenId: BigintIsh, liquidity: BigintIsh, amount0Max: BigintIsh, amount1Max: BigintIsh, hookData?: string): void;
|
|
7
|
+
addDecrease(tokenId: BigintIsh, liquidity: BigintIsh, amount0Min: BigintIsh, amount1Min: BigintIsh, hookData?: string): void;
|
|
8
|
+
addBurn(tokenId: BigintIsh, amount0Min: BigintIsh, amount1Min: BigintIsh, hookData?: string): void;
|
|
9
|
+
addSettlePair(currency0: Currency, currency1: Currency): void;
|
|
10
|
+
addCloseCurrency(currency: Currency): void;
|
|
11
|
+
addTakePair(currency0: Currency, currency1: Currency, recipient: string): void;
|
|
12
|
+
addSweep(currency: Currency, to: string): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.V4PositionPlanner = void 0;
|
|
4
|
+
const v4Planner_1 = require("./v4Planner");
|
|
5
|
+
const entities_1 = require("../entities");
|
|
6
|
+
const currencyMap_1 = require("../utils/currencyMap");
|
|
7
|
+
const internalConstants_1 = require("../internalConstants");
|
|
8
|
+
// A wrapper around V4Planner to help handle PositionManager actions
|
|
9
|
+
class V4PositionPlanner extends v4Planner_1.V4Planner {
|
|
10
|
+
// MINT_POSITION
|
|
11
|
+
addMint(pool, tickLower, tickUpper, liquidity, amount0Max, amount1Max, owner, hookData = internalConstants_1.EMPTY_BYTES) {
|
|
12
|
+
const inputs = [
|
|
13
|
+
entities_1.Pool.getPoolKey(pool.currency0, pool.currency1, pool.fee, pool.tickSpacing, pool.hooks),
|
|
14
|
+
tickLower,
|
|
15
|
+
tickUpper,
|
|
16
|
+
liquidity.toString(),
|
|
17
|
+
amount0Max.toString(),
|
|
18
|
+
amount1Max.toString(),
|
|
19
|
+
owner,
|
|
20
|
+
hookData,
|
|
21
|
+
];
|
|
22
|
+
this.addAction(v4Planner_1.Actions.MINT_POSITION, inputs);
|
|
23
|
+
}
|
|
24
|
+
// INCREASE_LIQUIDITY
|
|
25
|
+
addIncrease(tokenId, liquidity, amount0Max, amount1Max, hookData = internalConstants_1.EMPTY_BYTES) {
|
|
26
|
+
const inputs = [tokenId.toString(), liquidity.toString(), amount0Max.toString(), amount1Max.toString(), hookData];
|
|
27
|
+
this.addAction(v4Planner_1.Actions.INCREASE_LIQUIDITY, inputs);
|
|
28
|
+
}
|
|
29
|
+
// DECREASE_LIQUIDITY
|
|
30
|
+
addDecrease(tokenId, liquidity, amount0Min, amount1Min, hookData = internalConstants_1.EMPTY_BYTES) {
|
|
31
|
+
const inputs = [tokenId.toString(), liquidity.toString(), amount0Min.toString(), amount1Min.toString(), hookData];
|
|
32
|
+
this.addAction(v4Planner_1.Actions.DECREASE_LIQUIDITY, inputs);
|
|
33
|
+
}
|
|
34
|
+
// BURN_POSITION
|
|
35
|
+
addBurn(tokenId, amount0Min, amount1Min, hookData = internalConstants_1.EMPTY_BYTES) {
|
|
36
|
+
const inputs = [tokenId.toString(), amount0Min.toString(), amount1Min.toString(), hookData];
|
|
37
|
+
this.addAction(v4Planner_1.Actions.BURN_POSITION, inputs);
|
|
38
|
+
}
|
|
39
|
+
// SETTLE_PAIR
|
|
40
|
+
addSettlePair(currency0, currency1) {
|
|
41
|
+
const inputs = [(0, currencyMap_1.toAddress)(currency0), (0, currencyMap_1.toAddress)(currency1)];
|
|
42
|
+
this.addAction(v4Planner_1.Actions.SETTLE_PAIR, inputs);
|
|
43
|
+
}
|
|
44
|
+
// CLOSE_CURRENCY
|
|
45
|
+
addCloseCurrency(currency) {
|
|
46
|
+
const inputs = [(0, currencyMap_1.toAddress)(currency)];
|
|
47
|
+
this.addAction(v4Planner_1.Actions.CLOSE_CURRENCY, inputs);
|
|
48
|
+
}
|
|
49
|
+
// TAKE_PAIR
|
|
50
|
+
addTakePair(currency0, currency1, recipient) {
|
|
51
|
+
const inputs = [(0, currencyMap_1.toAddress)(currency0), (0, currencyMap_1.toAddress)(currency1), recipient];
|
|
52
|
+
this.addAction(v4Planner_1.Actions.TAKE_PAIR, inputs);
|
|
53
|
+
}
|
|
54
|
+
// SWEEP
|
|
55
|
+
addSweep(currency, to) {
|
|
56
|
+
const inputs = [(0, currencyMap_1.toAddress)(currency), to];
|
|
57
|
+
this.addAction(v4Planner_1.Actions.SWEEP, inputs);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.V4PositionPlanner = V4PositionPlanner;
|
|
61
|
+
//# sourceMappingURL=v4PositionPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v4PositionPlanner.js","sourceRoot":"","sources":["../../../../src/utils/v4PositionPlanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { BigintIsh, Percent, NativeCurrency } from '@kittycorn-labs/sdk-core';
|
|
2
|
+
import { TypedDataDomain, TypedDataField } from '@ethersproject/abstract-signer';
|
|
3
|
+
import { Position } from './entities/position';
|
|
4
|
+
import { MethodParameters } from './utils/calldata';
|
|
5
|
+
import { Interface } from '@ethersproject/abi';
|
|
6
|
+
import { PoolKey } from './entities';
|
|
7
|
+
export interface CommonOptions {
|
|
8
|
+
/**
|
|
9
|
+
* How much the pool price is allowed to move from the specified action.
|
|
10
|
+
*/
|
|
11
|
+
slippageTolerance: Percent;
|
|
12
|
+
/**
|
|
13
|
+
* Optional data to pass to hooks
|
|
14
|
+
*/
|
|
15
|
+
hookData?: string;
|
|
16
|
+
/**
|
|
17
|
+
* When the transaction expires, in epoch seconds.
|
|
18
|
+
*/
|
|
19
|
+
deadline: BigintIsh;
|
|
20
|
+
}
|
|
21
|
+
export interface ModifyPositionSpecificOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Indicates the ID of the position to increase liquidity for.
|
|
24
|
+
*/
|
|
25
|
+
tokenId: BigintIsh;
|
|
26
|
+
}
|
|
27
|
+
export interface MintSpecificOptions {
|
|
28
|
+
/**
|
|
29
|
+
* The account that should receive the minted NFT.
|
|
30
|
+
*/
|
|
31
|
+
recipient: string;
|
|
32
|
+
/**
|
|
33
|
+
* Creates pool if not initialized before mint.
|
|
34
|
+
*/
|
|
35
|
+
createPool?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Initial price to set on the pool if creating
|
|
38
|
+
*/
|
|
39
|
+
sqrtPriceX96?: BigintIsh;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the mint is part of a migration from V3 to V4.
|
|
42
|
+
*/
|
|
43
|
+
migrate?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Options for producing the calldata to add liquidity.
|
|
47
|
+
*/
|
|
48
|
+
export interface CommonAddLiquidityOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Whether to spend ether. If true, one of the currencies must be the NATIVE currency.
|
|
51
|
+
*/
|
|
52
|
+
useNative?: NativeCurrency;
|
|
53
|
+
/**
|
|
54
|
+
* The optional permit2 batch permit parameters for spending token0 and token1
|
|
55
|
+
*/
|
|
56
|
+
batchPermit?: BatchPermitOptions;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Options for producing the calldata to exit a position.
|
|
60
|
+
*/
|
|
61
|
+
export interface RemoveLiquiditySpecificOptions {
|
|
62
|
+
/**
|
|
63
|
+
* The percentage of position liquidity to exit.
|
|
64
|
+
*/
|
|
65
|
+
liquidityPercentage: Percent;
|
|
66
|
+
/**
|
|
67
|
+
* Whether the NFT should be burned if the entire position is being exited, by default false.
|
|
68
|
+
*/
|
|
69
|
+
burnToken?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* The optional permit of the token ID being exited, in case the exit transaction is being sent by an account that does not own the NFT
|
|
72
|
+
*/
|
|
73
|
+
permit?: NFTPermitOptions;
|
|
74
|
+
}
|
|
75
|
+
export interface CollectSpecificOptions {
|
|
76
|
+
/**
|
|
77
|
+
* Indicates the ID of the position to collect for.
|
|
78
|
+
*/
|
|
79
|
+
tokenId: BigintIsh;
|
|
80
|
+
/**
|
|
81
|
+
* The account that should receive the tokens.
|
|
82
|
+
*/
|
|
83
|
+
recipient: string;
|
|
84
|
+
}
|
|
85
|
+
export interface TransferOptions {
|
|
86
|
+
/**
|
|
87
|
+
* The account sending the NFT.
|
|
88
|
+
*/
|
|
89
|
+
sender: string;
|
|
90
|
+
/**
|
|
91
|
+
* The account that should receive the NFT.
|
|
92
|
+
*/
|
|
93
|
+
recipient: string;
|
|
94
|
+
/**
|
|
95
|
+
* The id of the token being sent.
|
|
96
|
+
*/
|
|
97
|
+
tokenId: BigintIsh;
|
|
98
|
+
}
|
|
99
|
+
export interface PermitDetails {
|
|
100
|
+
token: string;
|
|
101
|
+
amount: BigintIsh;
|
|
102
|
+
expiration: BigintIsh;
|
|
103
|
+
nonce: BigintIsh;
|
|
104
|
+
}
|
|
105
|
+
export interface AllowanceTransferPermitSingle {
|
|
106
|
+
details: PermitDetails;
|
|
107
|
+
spender: string;
|
|
108
|
+
sigDeadline: BigintIsh;
|
|
109
|
+
}
|
|
110
|
+
export interface AllowanceTransferPermitBatch {
|
|
111
|
+
details: PermitDetails[];
|
|
112
|
+
spender: string;
|
|
113
|
+
sigDeadline: BigintIsh;
|
|
114
|
+
}
|
|
115
|
+
export interface BatchPermitOptions {
|
|
116
|
+
owner: string;
|
|
117
|
+
permitBatch: AllowanceTransferPermitBatch;
|
|
118
|
+
signature: string;
|
|
119
|
+
}
|
|
120
|
+
export interface NFTPermitValues {
|
|
121
|
+
spender: string;
|
|
122
|
+
tokenId: BigintIsh;
|
|
123
|
+
deadline: BigintIsh;
|
|
124
|
+
nonce: BigintIsh;
|
|
125
|
+
}
|
|
126
|
+
export interface NFTPermitOptions extends NFTPermitValues {
|
|
127
|
+
signature: string;
|
|
128
|
+
}
|
|
129
|
+
export interface NFTPermitData {
|
|
130
|
+
domain: TypedDataDomain;
|
|
131
|
+
types: Record<string, TypedDataField[]>;
|
|
132
|
+
values: NFTPermitValues;
|
|
133
|
+
}
|
|
134
|
+
export type MintOptions = CommonOptions & CommonAddLiquidityOptions & MintSpecificOptions;
|
|
135
|
+
export type IncreaseLiquidityOptions = CommonOptions & CommonAddLiquidityOptions & ModifyPositionSpecificOptions;
|
|
136
|
+
export type AddLiquidityOptions = MintOptions | IncreaseLiquidityOptions;
|
|
137
|
+
export type RemoveLiquidityOptions = CommonOptions & RemoveLiquiditySpecificOptions & ModifyPositionSpecificOptions;
|
|
138
|
+
export type CollectOptions = CommonOptions & CollectSpecificOptions;
|
|
139
|
+
export declare abstract class V4PositionManager {
|
|
140
|
+
static INTERFACE: Interface;
|
|
141
|
+
/**
|
|
142
|
+
* Cannot be constructed.
|
|
143
|
+
*/
|
|
144
|
+
private constructor();
|
|
145
|
+
/**
|
|
146
|
+
* Public methods to encode method parameters for different actions on the PositionManager contract
|
|
147
|
+
*/
|
|
148
|
+
static createCallParameters(poolKey: PoolKey, sqrtPriceX96: BigintIsh): MethodParameters;
|
|
149
|
+
static addCallParameters(position: Position, options: AddLiquidityOptions): MethodParameters;
|
|
150
|
+
/**
|
|
151
|
+
* Produces the calldata for completely or partially exiting a position
|
|
152
|
+
* @param position The position to exit
|
|
153
|
+
* @param options Additional information necessary for generating the calldata
|
|
154
|
+
* @returns The call parameters
|
|
155
|
+
*/
|
|
156
|
+
static removeCallParameters(position: Position, options: RemoveLiquidityOptions): MethodParameters;
|
|
157
|
+
/**
|
|
158
|
+
* Produces the calldata for collecting fees from a position
|
|
159
|
+
* @param position The position to collect fees from
|
|
160
|
+
* @param options Additional information necessary for generating the calldata
|
|
161
|
+
* @returns The call parameters
|
|
162
|
+
*/
|
|
163
|
+
static collectCallParameters(position: Position, options: CollectOptions): MethodParameters;
|
|
164
|
+
private static encodeInitializePool;
|
|
165
|
+
static encodeModifyLiquidities(unlockData: string, deadline: BigintIsh): string;
|
|
166
|
+
static encodePermitBatch(owner: string, permitBatch: AllowanceTransferPermitBatch, signature: string): string;
|
|
167
|
+
static encodeERC721Permit(spender: string, tokenId: BigintIsh, deadline: BigintIsh, nonce: BigintIsh, signature: string): string;
|
|
168
|
+
static getPermitData(permit: NFTPermitValues, positionManagerAddress: string, chainId: number): NFTPermitData;
|
|
169
|
+
}
|