@gearbox-protocol/sdk 14.12.0-next.1 → 14.12.0-next.3
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/abi/iZapper.js +62 -24
- package/dist/cjs/preview/parse/errors.js +5 -2
- package/dist/cjs/preview/parse/index.js +2 -0
- package/dist/cjs/preview/parse/parseOperationCalldata.js +38 -1
- package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +10 -2
- package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +92 -0
- package/dist/cjs/preview/prerequisites/buildPrerequisites.js +57 -10
- package/dist/cjs/preview/simulate/errors.js +0 -7
- package/dist/cjs/preview/simulate/index.js +0 -3
- package/dist/cjs/preview/simulate/simulatePoolOperation.js +154 -29
- package/dist/cjs/sdk/MultichainSDK.js +1 -0
- package/dist/cjs/sdk/OnchainSDK.js +7 -3
- package/dist/cjs/sdk/market/MarketRegister.js +10 -5
- package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
- package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +20 -0
- package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
- package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
- package/dist/cjs/sdk/market/zapper/ZapperContract.js +109 -0
- package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
- package/dist/cjs/{preview/simulate/constants.js → sdk/market/zapper/errors.js} +15 -6
- package/dist/cjs/sdk/market/zapper/index.js +6 -2
- package/dist/cjs/sdk/market/zapper/types.js +16 -0
- package/dist/cjs/sdk/options.js +41 -17
- package/dist/esm/abi/iZapper.js +62 -24
- package/dist/esm/preview/parse/errors.js +3 -1
- package/dist/esm/preview/parse/index.js +1 -0
- package/dist/esm/preview/parse/parseOperationCalldata.js +41 -2
- package/dist/esm/preview/parse/parsePoolOperationCalldata.js +10 -2
- package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +71 -0
- package/dist/esm/preview/prerequisites/buildPrerequisites.js +57 -10
- package/dist/esm/preview/simulate/errors.js +0 -6
- package/dist/esm/preview/simulate/index.js +0 -2
- package/dist/esm/preview/simulate/simulatePoolOperation.js +155 -30
- package/dist/esm/sdk/MultichainSDK.js +1 -0
- package/dist/esm/sdk/OnchainSDK.js +7 -3
- package/dist/esm/sdk/market/MarketRegister.js +10 -5
- package/dist/esm/sdk/market/ZapperRegister.js +54 -0
- package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +23 -1
- package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
- package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
- package/dist/esm/sdk/market/zapper/ZapperContract.js +85 -0
- package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
- package/dist/esm/sdk/market/zapper/errors.js +13 -0
- package/dist/esm/sdk/market/zapper/index.js +3 -1
- package/dist/esm/sdk/market/zapper/types.js +0 -0
- package/dist/esm/sdk/options.js +39 -15
- package/dist/types/abi/iERC20Zapper.d.ts +91 -23
- package/dist/types/abi/iETHZapper.d.ts +91 -23
- package/dist/types/abi/iZapper.d.ts +91 -23
- package/dist/types/preview/parse/classifyInnerOperations.d.ts +0 -2
- package/dist/types/preview/parse/errors.d.ts +1 -0
- package/dist/types/preview/parse/index.d.ts +1 -0
- package/dist/types/preview/parse/parseOperationCalldata.d.ts +3 -3
- package/dist/types/preview/parse/parseRWAFactoryOperationCalldata.d.ts +23 -0
- package/dist/types/preview/parse/types-pools.d.ts +61 -1
- package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +1 -1
- package/dist/types/preview/simulate/errors.d.ts +6 -12
- package/dist/types/preview/simulate/index.d.ts +0 -1
- package/dist/types/preview/simulate/simulatePoolOperation.d.ts +22 -4
- package/dist/types/preview/simulate/types.d.ts +3 -16
- package/dist/types/sdk/MultichainSDK.d.ts +5 -0
- package/dist/types/sdk/OnchainSDK.d.ts +4 -0
- package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
- package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
- package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +2 -1
- package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
- package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
- package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
- package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
- package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
- package/dist/types/sdk/market/zapper/index.d.ts +3 -1
- package/dist/types/sdk/market/zapper/types.d.ts +64 -0
- package/dist/types/sdk/options.d.ts +10 -5
- package/dist/types/sdk/pools/types.d.ts +3 -3
- package/dist/types/sdk/types/state-human.d.ts +9 -0
- package/dist/types/sdk/types/state.d.ts +7 -0
- package/package.json +3 -3
- package/dist/cjs/preview/simulate/extractERC20Transfers.js +0 -47
- package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +0 -155
- package/dist/cjs/preview/simulate/simulatePoolOpV1.js +0 -106
- package/dist/cjs/sdk/market/zapper/Zapper.js +0 -47
- package/dist/esm/preview/simulate/constants.js +0 -4
- package/dist/esm/preview/simulate/extractERC20Transfers.js +0 -23
- package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +0 -130
- package/dist/esm/preview/simulate/simulatePoolOpV1.js +0 -82
- package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
- package/dist/types/preview/simulate/constants.d.ts +0 -6
- package/dist/types/preview/simulate/extractERC20Transfers.d.ts +0 -11
- package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +0 -28
- package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +0 -14
- package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
package/dist/cjs/abi/iZapper.js
CHANGED
|
@@ -24,80 +24,118 @@ module.exports = __toCommonJS(iZapper_exports);
|
|
|
24
24
|
const iZapperAbi = [
|
|
25
25
|
{
|
|
26
26
|
type: "function",
|
|
27
|
+
name: "contractType",
|
|
27
28
|
inputs: [],
|
|
29
|
+
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
30
|
+
stateMutability: "view"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
type: "function",
|
|
28
34
|
name: "pool",
|
|
29
|
-
|
|
35
|
+
inputs: [],
|
|
36
|
+
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
30
37
|
stateMutability: "view"
|
|
31
38
|
},
|
|
32
39
|
{
|
|
33
40
|
type: "function",
|
|
41
|
+
name: "previewDeposit",
|
|
34
42
|
inputs: [
|
|
35
|
-
{ name: "tokenInAmount",
|
|
43
|
+
{ name: "tokenInAmount", type: "uint256", internalType: "uint256" }
|
|
36
44
|
],
|
|
37
|
-
name: "previewDeposit",
|
|
38
45
|
outputs: [
|
|
39
|
-
{ name: "tokenOutAmount",
|
|
46
|
+
{ name: "tokenOutAmount", type: "uint256", internalType: "uint256" }
|
|
40
47
|
],
|
|
41
48
|
stateMutability: "view"
|
|
42
49
|
},
|
|
43
50
|
{
|
|
44
51
|
type: "function",
|
|
52
|
+
name: "previewRedeem",
|
|
45
53
|
inputs: [
|
|
46
|
-
{ name: "tokenOutAmount",
|
|
54
|
+
{ name: "tokenOutAmount", type: "uint256", internalType: "uint256" }
|
|
47
55
|
],
|
|
48
|
-
name: "previewRedeem",
|
|
49
56
|
outputs: [
|
|
50
|
-
{ name: "tokenInAmount",
|
|
57
|
+
{ name: "tokenInAmount", type: "uint256", internalType: "uint256" }
|
|
51
58
|
],
|
|
52
59
|
stateMutability: "view"
|
|
53
60
|
},
|
|
54
61
|
{
|
|
55
62
|
type: "function",
|
|
63
|
+
name: "redeem",
|
|
56
64
|
inputs: [
|
|
57
|
-
{ name: "tokenOutAmount",
|
|
58
|
-
{ name: "receiver",
|
|
65
|
+
{ name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
|
|
66
|
+
{ name: "receiver", type: "address", internalType: "address" }
|
|
59
67
|
],
|
|
60
|
-
name: "redeem",
|
|
61
68
|
outputs: [
|
|
62
|
-
{ name: "tokenInAmount",
|
|
69
|
+
{ name: "tokenInAmount", type: "uint256", internalType: "uint256" }
|
|
63
70
|
],
|
|
64
71
|
stateMutability: "nonpayable"
|
|
65
72
|
},
|
|
66
73
|
{
|
|
67
74
|
type: "function",
|
|
75
|
+
name: "redeemWithPermit",
|
|
68
76
|
inputs: [
|
|
69
|
-
{ name: "tokenOutAmount",
|
|
70
|
-
{ name: "receiver",
|
|
71
|
-
{ name: "deadline",
|
|
72
|
-
{ name: "v",
|
|
73
|
-
{ name: "r",
|
|
74
|
-
{ name: "s",
|
|
77
|
+
{ name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
|
|
78
|
+
{ name: "receiver", type: "address", internalType: "address" },
|
|
79
|
+
{ name: "deadline", type: "uint256", internalType: "uint256" },
|
|
80
|
+
{ name: "v", type: "uint8", internalType: "uint8" },
|
|
81
|
+
{ name: "r", type: "bytes32", internalType: "bytes32" },
|
|
82
|
+
{ name: "s", type: "bytes32", internalType: "bytes32" }
|
|
75
83
|
],
|
|
76
|
-
name: "redeemWithPermit",
|
|
77
84
|
outputs: [
|
|
78
|
-
{ name: "tokenInAmount",
|
|
85
|
+
{ name: "tokenInAmount", type: "uint256", internalType: "uint256" }
|
|
79
86
|
],
|
|
80
87
|
stateMutability: "nonpayable"
|
|
81
88
|
},
|
|
82
89
|
{
|
|
83
90
|
type: "function",
|
|
91
|
+
name: "redeemWithPermitAllowed",
|
|
92
|
+
inputs: [
|
|
93
|
+
{ name: "tokenOutAmount", type: "uint256", internalType: "uint256" },
|
|
94
|
+
{ name: "receiver", type: "address", internalType: "address" },
|
|
95
|
+
{ name: "nonce", type: "uint256", internalType: "uint256" },
|
|
96
|
+
{ name: "expiry", type: "uint256", internalType: "uint256" },
|
|
97
|
+
{ name: "v", type: "uint8", internalType: "uint8" },
|
|
98
|
+
{ name: "r", type: "bytes32", internalType: "bytes32" },
|
|
99
|
+
{ name: "s", type: "bytes32", internalType: "bytes32" }
|
|
100
|
+
],
|
|
101
|
+
outputs: [
|
|
102
|
+
{ name: "tokenInAmount", type: "uint256", internalType: "uint256" }
|
|
103
|
+
],
|
|
104
|
+
stateMutability: "nonpayable"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: "function",
|
|
108
|
+
name: "serialize",
|
|
84
109
|
inputs: [],
|
|
85
|
-
name: "
|
|
86
|
-
outputs: [{ name: "", internalType: "address", type: "address" }],
|
|
110
|
+
outputs: [{ name: "serializedData", type: "bytes", internalType: "bytes" }],
|
|
87
111
|
stateMutability: "view"
|
|
88
112
|
},
|
|
89
113
|
{
|
|
90
114
|
type: "function",
|
|
115
|
+
name: "tokenIn",
|
|
91
116
|
inputs: [],
|
|
92
|
-
name: "
|
|
93
|
-
outputs: [{ name: "", internalType: "address", type: "address" }],
|
|
117
|
+
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
94
118
|
stateMutability: "view"
|
|
95
119
|
},
|
|
96
120
|
{
|
|
97
121
|
type: "function",
|
|
122
|
+
name: "tokenOut",
|
|
98
123
|
inputs: [],
|
|
124
|
+
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
125
|
+
stateMutability: "view"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: "function",
|
|
99
129
|
name: "underlying",
|
|
100
|
-
|
|
130
|
+
inputs: [],
|
|
131
|
+
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
132
|
+
stateMutability: "view"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: "function",
|
|
136
|
+
name: "version",
|
|
137
|
+
inputs: [],
|
|
138
|
+
outputs: [{ name: "", type: "uint256", internalType: "uint256" }],
|
|
101
139
|
stateMutability: "view"
|
|
102
140
|
}
|
|
103
141
|
];
|
|
@@ -19,9 +19,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var errors_exports = {};
|
|
20
20
|
__export(errors_exports, {
|
|
21
21
|
UnsupportedPoolFunctionError: () => UnsupportedPoolFunctionError,
|
|
22
|
-
UnsupportedTargetError: () => UnsupportedTargetError
|
|
22
|
+
UnsupportedTargetError: () => UnsupportedTargetError,
|
|
23
|
+
UnsupportedZapperFunctionError: () => import_sdk.UnsupportedZapperFunctionError
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(errors_exports);
|
|
26
|
+
var import_sdk = require("../../sdk/index.js");
|
|
25
27
|
class UnsupportedTargetError extends Error {
|
|
26
28
|
target;
|
|
27
29
|
constructor(target) {
|
|
@@ -43,5 +45,6 @@ class UnsupportedPoolFunctionError extends Error {
|
|
|
43
45
|
// Annotate the CommonJS export names for ESM import in node:
|
|
44
46
|
0 && (module.exports = {
|
|
45
47
|
UnsupportedPoolFunctionError,
|
|
46
|
-
UnsupportedTargetError
|
|
48
|
+
UnsupportedTargetError,
|
|
49
|
+
UnsupportedZapperFunctionError
|
|
47
50
|
});
|
|
@@ -21,6 +21,7 @@ __reExport(parse_exports, require("./extractExpectedBalanceChanges.js"), module.
|
|
|
21
21
|
__reExport(parse_exports, require("./parseFacadeOperationCalldata.js"), module.exports);
|
|
22
22
|
__reExport(parse_exports, require("./parseOperationCalldata.js"), module.exports);
|
|
23
23
|
__reExport(parse_exports, require("./parsePoolOperationCalldata.js"), module.exports);
|
|
24
|
+
__reExport(parse_exports, require("./parseRWAFactoryOperationCalldata.js"), module.exports);
|
|
24
25
|
__reExport(parse_exports, require("./types.js"), module.exports);
|
|
25
26
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
27
|
0 && (module.exports = {
|
|
@@ -30,5 +31,6 @@ __reExport(parse_exports, require("./types.js"), module.exports);
|
|
|
30
31
|
...require("./parseFacadeOperationCalldata.js"),
|
|
31
32
|
...require("./parseOperationCalldata.js"),
|
|
32
33
|
...require("./parsePoolOperationCalldata.js"),
|
|
34
|
+
...require("./parseRWAFactoryOperationCalldata.js"),
|
|
33
35
|
...require("./types.js")
|
|
34
36
|
});
|
|
@@ -25,12 +25,42 @@ var import_sdk = require("../../sdk/index.js");
|
|
|
25
25
|
var import_errors = require("./errors.js");
|
|
26
26
|
var import_parseFacadeOperationCalldata = require("./parseFacadeOperationCalldata.js");
|
|
27
27
|
var import_parsePoolOperationCalldata = require("./parsePoolOperationCalldata.js");
|
|
28
|
+
var import_parseRWAFactoryOperationCalldata = require("./parseRWAFactoryOperationCalldata.js");
|
|
28
29
|
function parseOperationCalldata(input) {
|
|
29
|
-
const { sdk, to, calldata } = input;
|
|
30
|
+
const { sdk, to, calldata, value, sender } = input;
|
|
30
31
|
const contract = sdk.getContract(to);
|
|
31
32
|
if (contract instanceof import_sdk.PoolV310Contract) {
|
|
32
33
|
return (0, import_parsePoolOperationCalldata.parsePoolOperationCalldata)({ sdk, pool: contract, calldata });
|
|
33
34
|
}
|
|
35
|
+
if (contract instanceof import_sdk.ZapperContract) {
|
|
36
|
+
const parsed = contract.parseOperation(calldata, value);
|
|
37
|
+
if (parsed.operation === "Deposit") {
|
|
38
|
+
const op2 = {
|
|
39
|
+
operation: "Deposit",
|
|
40
|
+
pool: parsed.pool,
|
|
41
|
+
receiver: parsed.receiver,
|
|
42
|
+
assets: parsed.assets,
|
|
43
|
+
underlying: parsed.underlying,
|
|
44
|
+
tokenIn: parsed.token,
|
|
45
|
+
zapper: parsed.zapper,
|
|
46
|
+
referralCode: parsed.referralCode
|
|
47
|
+
};
|
|
48
|
+
return op2;
|
|
49
|
+
}
|
|
50
|
+
const op = {
|
|
51
|
+
operation: "Redeem",
|
|
52
|
+
pool: parsed.pool,
|
|
53
|
+
receiver: parsed.receiver,
|
|
54
|
+
// The zapper burns the caller's pool shares, so the share owner is the
|
|
55
|
+
// transaction sender.
|
|
56
|
+
owner: sender,
|
|
57
|
+
shares: parsed.shares,
|
|
58
|
+
underlying: parsed.underlying,
|
|
59
|
+
tokenOut: parsed.token,
|
|
60
|
+
zapper: parsed.zapper
|
|
61
|
+
};
|
|
62
|
+
return op;
|
|
63
|
+
}
|
|
34
64
|
if (contract instanceof import_sdk.CreditFacadeV310Contract) {
|
|
35
65
|
return (0, import_parseFacadeOperationCalldata.parseFacadeOperationCalldata)({
|
|
36
66
|
sdk,
|
|
@@ -38,6 +68,13 @@ function parseOperationCalldata(input) {
|
|
|
38
68
|
calldata
|
|
39
69
|
});
|
|
40
70
|
}
|
|
71
|
+
if (contract instanceof import_sdk.SecuritizeRWAFactory) {
|
|
72
|
+
return (0, import_parseRWAFactoryOperationCalldata.parseRWAFactoryOperationCalldata)({
|
|
73
|
+
sdk,
|
|
74
|
+
factory: contract,
|
|
75
|
+
calldata
|
|
76
|
+
});
|
|
77
|
+
}
|
|
41
78
|
throw new import_errors.UnsupportedTargetError(to);
|
|
42
79
|
}
|
|
43
80
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -37,6 +37,8 @@ function parsePoolOperationCalldata(props) {
|
|
|
37
37
|
receiver: rawArgs.receiver,
|
|
38
38
|
assets: rawArgs.assets,
|
|
39
39
|
underlying,
|
|
40
|
+
tokenIn: underlying,
|
|
41
|
+
zapper: void 0,
|
|
40
42
|
referralCode: functionName === "depositWithReferral" ? rawArgs.referralCode : void 0
|
|
41
43
|
};
|
|
42
44
|
case "mint":
|
|
@@ -47,6 +49,8 @@ function parsePoolOperationCalldata(props) {
|
|
|
47
49
|
receiver: rawArgs.receiver,
|
|
48
50
|
shares: rawArgs.shares,
|
|
49
51
|
underlying,
|
|
52
|
+
tokenIn: underlying,
|
|
53
|
+
zapper: void 0,
|
|
50
54
|
referralCode: functionName === "mintWithReferral" ? rawArgs.referralCode : void 0
|
|
51
55
|
};
|
|
52
56
|
case "withdraw":
|
|
@@ -56,7 +60,9 @@ function parsePoolOperationCalldata(props) {
|
|
|
56
60
|
receiver: rawArgs.receiver,
|
|
57
61
|
owner: rawArgs.owner,
|
|
58
62
|
assets: rawArgs.assets,
|
|
59
|
-
underlying
|
|
63
|
+
underlying,
|
|
64
|
+
tokenOut: underlying,
|
|
65
|
+
zapper: void 0
|
|
60
66
|
};
|
|
61
67
|
case "redeem":
|
|
62
68
|
return {
|
|
@@ -65,7 +71,9 @@ function parsePoolOperationCalldata(props) {
|
|
|
65
71
|
receiver: rawArgs.receiver,
|
|
66
72
|
owner: rawArgs.owner,
|
|
67
73
|
shares: rawArgs.shares,
|
|
68
|
-
underlying
|
|
74
|
+
underlying,
|
|
75
|
+
tokenOut: underlying,
|
|
76
|
+
zapper: void 0
|
|
69
77
|
};
|
|
70
78
|
default:
|
|
71
79
|
throw new import_errors.UnsupportedPoolFunctionError(pool.address, parsed.functionName);
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var parseRWAFactoryOperationCalldata_exports = {};
|
|
20
|
+
__export(parseRWAFactoryOperationCalldata_exports, {
|
|
21
|
+
parseRWAFactoryOperationCalldata: () => parseRWAFactoryOperationCalldata
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(parseRWAFactoryOperationCalldata_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
var import_adapters = require("../../plugins/adapters/index.js");
|
|
26
|
+
var import_sdk = require("../../sdk/index.js");
|
|
27
|
+
var import_classifyInnerOperations = require("./classifyInnerOperations.js");
|
|
28
|
+
var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
|
|
29
|
+
function parseRWAFactoryOperationCalldata(props) {
|
|
30
|
+
const { sdk, factory, calldata } = props;
|
|
31
|
+
const parsed = sdk.parseFunctionDataV2(factory.address, calldata);
|
|
32
|
+
const functionName = parsed.functionName.split("(")[0];
|
|
33
|
+
const { rawArgs } = parsed;
|
|
34
|
+
const innerCalls = rawArgs.calls ?? [];
|
|
35
|
+
const suite = functionName === "openCreditAccount" ? sdk.marketRegister.findCreditManager(rawArgs.creditManager) : resolveSuiteForMulticall(sdk, factory, innerCalls);
|
|
36
|
+
const metadata = {
|
|
37
|
+
creditManager: suite.creditManager.address,
|
|
38
|
+
creditFacade: suite.creditFacade.address
|
|
39
|
+
};
|
|
40
|
+
const multicall = (0, import_classifyInnerOperations.classifyInnerOperations)(innerCalls, {
|
|
41
|
+
sdk,
|
|
42
|
+
underlying: suite.underlying
|
|
43
|
+
});
|
|
44
|
+
const expectedBalanceChanges = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls);
|
|
45
|
+
switch (functionName) {
|
|
46
|
+
case "openCreditAccount":
|
|
47
|
+
return {
|
|
48
|
+
...metadata,
|
|
49
|
+
operation: "OpenCreditAccount",
|
|
50
|
+
creditAccount: import_viem.zeroAddress,
|
|
51
|
+
onBehalfOf: import_viem.zeroAddress,
|
|
52
|
+
referralCode: 0n,
|
|
53
|
+
multicall,
|
|
54
|
+
expectedBalanceChanges
|
|
55
|
+
};
|
|
56
|
+
case "multicall":
|
|
57
|
+
return {
|
|
58
|
+
...metadata,
|
|
59
|
+
operation: "MultiCall",
|
|
60
|
+
creditAccount: rawArgs.creditAccount,
|
|
61
|
+
multicall,
|
|
62
|
+
expectedBalanceChanges
|
|
63
|
+
};
|
|
64
|
+
default:
|
|
65
|
+
throw new Error(
|
|
66
|
+
`unsupported RWA factory function "${parsed.functionName}" on ${factory.address}`
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function resolveSuiteForMulticall(sdk, factory, innerCalls) {
|
|
71
|
+
for (const call of innerCalls) {
|
|
72
|
+
const contract = sdk.getContract(call.target);
|
|
73
|
+
if (contract instanceof import_sdk.CreditFacadeV310Contract) {
|
|
74
|
+
const suite = sdk.marketRegister.creditManagers.find(
|
|
75
|
+
(cm) => (0, import_sdk.hexEq)(cm.creditFacade.address, call.target)
|
|
76
|
+
);
|
|
77
|
+
if (suite) {
|
|
78
|
+
return suite;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (contract instanceof import_adapters.AbstractAdapterContract) {
|
|
82
|
+
return sdk.marketRegister.findCreditManager(contract.creditManager);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
throw new Error(
|
|
86
|
+
`cannot resolve credit manager for RWA factory multicall on ${factory.address}`
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
90
|
+
0 && (module.exports = {
|
|
91
|
+
parseRWAFactoryOperationCalldata
|
|
92
|
+
});
|
|
@@ -24,7 +24,7 @@ module.exports = __toCommonJS(buildPrerequisites_exports);
|
|
|
24
24
|
var import_viem = require("viem");
|
|
25
25
|
var import_AllowancePrerequisite = require("./AllowancePrerequisite.js");
|
|
26
26
|
var import_BalancePrerequisite = require("./BalancePrerequisite.js");
|
|
27
|
-
function buildPrerequisites(tx, ctx) {
|
|
27
|
+
async function buildPrerequisites(tx, ctx) {
|
|
28
28
|
const { wallet } = ctx;
|
|
29
29
|
switch (tx.operation) {
|
|
30
30
|
// Deposit and Mint both pull the underlying from the caller into the pool;
|
|
@@ -34,6 +34,23 @@ function buildPrerequisites(tx, ctx) {
|
|
|
34
34
|
// here we approximate Mint by its shares amount (a lower bound on assets is
|
|
35
35
|
// not knowable from calldata alone).
|
|
36
36
|
case "Deposit":
|
|
37
|
+
if (tx.zapper) {
|
|
38
|
+
return [
|
|
39
|
+
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
40
|
+
token: tx.tokenIn,
|
|
41
|
+
owner: wallet,
|
|
42
|
+
spender: tx.zapper,
|
|
43
|
+
required: tx.assets,
|
|
44
|
+
title: "Token approved to zapper"
|
|
45
|
+
}),
|
|
46
|
+
new import_BalancePrerequisite.BalancePrerequisite({
|
|
47
|
+
token: tx.tokenIn,
|
|
48
|
+
owner: wallet,
|
|
49
|
+
required: tx.assets,
|
|
50
|
+
title: "Sufficient token balance"
|
|
51
|
+
})
|
|
52
|
+
];
|
|
53
|
+
}
|
|
37
54
|
return [
|
|
38
55
|
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
39
56
|
token: tx.underlying,
|
|
@@ -68,6 +85,23 @@ function buildPrerequisites(tx, ctx) {
|
|
|
68
85
|
// Redeem and Withdraw both burn LP shares from `owner`; they only differ in
|
|
69
86
|
// which side (shares vs assets) the caller specifies.
|
|
70
87
|
case "Redeem": {
|
|
88
|
+
if (tx.zapper) {
|
|
89
|
+
return [
|
|
90
|
+
new import_BalancePrerequisite.BalancePrerequisite({
|
|
91
|
+
token: tx.pool,
|
|
92
|
+
owner: wallet,
|
|
93
|
+
required: tx.shares,
|
|
94
|
+
title: "Sufficient LP token balance"
|
|
95
|
+
}),
|
|
96
|
+
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
97
|
+
token: tx.pool,
|
|
98
|
+
owner: wallet,
|
|
99
|
+
spender: tx.zapper,
|
|
100
|
+
required: tx.shares,
|
|
101
|
+
title: "LP token approved to zapper"
|
|
102
|
+
})
|
|
103
|
+
];
|
|
104
|
+
}
|
|
71
105
|
const prereqs = [
|
|
72
106
|
new import_BalancePrerequisite.BalancePrerequisite({
|
|
73
107
|
token: tx.pool,
|
|
@@ -116,7 +150,13 @@ function buildPrerequisites(tx, ctx) {
|
|
|
116
150
|
case "OpenCreditAccount":
|
|
117
151
|
case "CloseCreditAccount":
|
|
118
152
|
case "LiquidateCreditAccount":
|
|
119
|
-
return collateralPrerequisites(
|
|
153
|
+
return collateralPrerequisites(
|
|
154
|
+
tx.operation,
|
|
155
|
+
tx.multicall,
|
|
156
|
+
tx.creditManager,
|
|
157
|
+
tx.creditAccount,
|
|
158
|
+
ctx
|
|
159
|
+
);
|
|
120
160
|
case "PartiallyLiquidateCreditAccount": {
|
|
121
161
|
const underlying = underlyingOf(ctx.sdk, tx.creditManager);
|
|
122
162
|
if (!underlying || tx.repaidAmount === 0n) {
|
|
@@ -142,28 +182,35 @@ function buildPrerequisites(tx, ctx) {
|
|
|
142
182
|
return [];
|
|
143
183
|
}
|
|
144
184
|
}
|
|
145
|
-
function collateralPrerequisites(multicall, creditManager,
|
|
185
|
+
async function collateralPrerequisites(op, multicall, creditManager, creditAccount, ctx) {
|
|
186
|
+
const { sdk, wallet } = ctx;
|
|
146
187
|
const required = /* @__PURE__ */ new Map();
|
|
147
|
-
for (const
|
|
148
|
-
if (
|
|
188
|
+
for (const op2 of multicall) {
|
|
189
|
+
if (op2.operation !== "AddCollateral" || op2.amount === 0n) {
|
|
149
190
|
continue;
|
|
150
191
|
}
|
|
151
|
-
const key =
|
|
192
|
+
const key = op2.token.toLowerCase();
|
|
152
193
|
const existing = required.get(key);
|
|
153
194
|
required.set(key, {
|
|
154
|
-
token:
|
|
155
|
-
amount: (existing?.amount ?? 0n) +
|
|
195
|
+
token: op2.token,
|
|
196
|
+
amount: (existing?.amount ?? 0n) + op2.amount
|
|
156
197
|
});
|
|
157
198
|
}
|
|
199
|
+
if (required.size === 0) {
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
const spender = await sdk.accounts.getApprovalAddress(
|
|
203
|
+
op === "OpenCreditAccount" ? { creditManager, borrower: wallet } : { creditManager, creditAccount }
|
|
204
|
+
);
|
|
158
205
|
const prereqs = [];
|
|
159
206
|
for (const { token, amount } of required.values()) {
|
|
160
207
|
prereqs.push(
|
|
161
208
|
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
162
209
|
token,
|
|
163
210
|
owner: wallet,
|
|
164
|
-
spender
|
|
211
|
+
spender,
|
|
165
212
|
required: amount,
|
|
166
|
-
title: "Collateral approved
|
|
213
|
+
title: "Collateral approved"
|
|
167
214
|
}),
|
|
168
215
|
new import_BalancePrerequisite.BalancePrerequisite({
|
|
169
216
|
token,
|
|
@@ -20,7 +20,6 @@ var errors_exports = {};
|
|
|
20
20
|
__export(errors_exports, {
|
|
21
21
|
PreviewSimulationError: () => PreviewSimulationError,
|
|
22
22
|
asPreviewSimulationError: () => asPreviewSimulationError,
|
|
23
|
-
combinePreviewSimulationErrors: () => combinePreviewSimulationErrors,
|
|
24
23
|
decodeSimulationError: () => decodeSimulationError
|
|
25
24
|
});
|
|
26
25
|
module.exports = __toCommonJS(errors_exports);
|
|
@@ -49,11 +48,6 @@ function asPreviewSimulationError(reason, source) {
|
|
|
49
48
|
{ source, detail: decodeSimulationError({ error }) }
|
|
50
49
|
]);
|
|
51
50
|
}
|
|
52
|
-
function combinePreviewSimulationErrors(...errors) {
|
|
53
|
-
return new PreviewSimulationError(
|
|
54
|
-
errors.filter((e) => e).flatMap((e) => e?.failures ?? [])
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
51
|
function decodeSimulationError(revert) {
|
|
58
52
|
const { error, data } = revert;
|
|
59
53
|
if (data && data !== "0x") {
|
|
@@ -93,6 +87,5 @@ function formatDecodedError(errorName, args) {
|
|
|
93
87
|
0 && (module.exports = {
|
|
94
88
|
PreviewSimulationError,
|
|
95
89
|
asPreviewSimulationError,
|
|
96
|
-
combinePreviewSimulationErrors,
|
|
97
90
|
decodeSimulationError
|
|
98
91
|
});
|
|
@@ -18,21 +18,18 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var simulate_exports = {};
|
|
20
20
|
__export(simulate_exports, {
|
|
21
|
-
ETH_SIMULATE_V1_NETWORKS: () => import_constants.ETH_SIMULATE_V1_NETWORKS,
|
|
22
21
|
PreviewSimulationError: () => import_errors.PreviewSimulationError,
|
|
23
22
|
simulateFacadeOperation: () => import_simulateFacadeOperation.simulateFacadeOperation,
|
|
24
23
|
simulateOperation: () => import_simulateOperation.simulateOperation,
|
|
25
24
|
simulatePoolOperation: () => import_simulatePoolOperation.simulatePoolOperation
|
|
26
25
|
});
|
|
27
26
|
module.exports = __toCommonJS(simulate_exports);
|
|
28
|
-
var import_constants = require("./constants.js");
|
|
29
27
|
var import_errors = require("./errors.js");
|
|
30
28
|
var import_simulateFacadeOperation = require("./simulateFacadeOperation.js");
|
|
31
29
|
var import_simulateOperation = require("./simulateOperation.js");
|
|
32
30
|
var import_simulatePoolOperation = require("./simulatePoolOperation.js");
|
|
33
31
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
32
|
0 && (module.exports = {
|
|
35
|
-
ETH_SIMULATE_V1_NETWORKS,
|
|
36
33
|
PreviewSimulationError,
|
|
37
34
|
simulateFacadeOperation,
|
|
38
35
|
simulateOperation,
|