@gearbox-protocol/sdk 14.12.0-next.4 → 14.12.0-next.6
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/preview/index.js +2 -2
- package/dist/cjs/preview/parse/index.js +0 -2
- package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +5 -12
- package/dist/cjs/preview/parse/parseOperationCalldata.js +5 -3
- package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +4 -0
- package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +0 -4
- package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +19 -1
- package/dist/cjs/preview/prerequisites/buildPrerequisites.js +24 -15
- package/dist/cjs/preview/{simulate/holders.js → preview/errors.js} +12 -21
- package/dist/cjs/preview/{parse → preview}/extractExpectedBalanceChanges.js +1 -1
- package/dist/cjs/preview/preview/index.js +26 -0
- package/dist/cjs/preview/preview/previewOpenCreditAccount.js +99 -0
- package/dist/cjs/preview/preview/previewOperation.js +41 -0
- package/dist/cjs/preview/preview/previewPoolOperation.js +75 -0
- package/dist/cjs/preview/preview/types.js +16 -0
- package/dist/cjs/preview/simulate/simulatePoolOperation.js +20 -116
- package/dist/cjs/sdk/market/zapper/ZapperContract.js +0 -3
- package/dist/esm/preview/index.js +1 -1
- package/dist/esm/preview/parse/index.js +0 -1
- package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +5 -12
- package/dist/esm/preview/parse/parseOperationCalldata.js +5 -3
- package/dist/esm/preview/parse/parsePoolOperationCalldata.js +4 -0
- package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +0 -4
- package/dist/esm/preview/prerequisites/BalancePrerequisite.js +19 -1
- package/dist/esm/preview/prerequisites/buildPrerequisites.js +28 -16
- package/dist/esm/preview/preview/errors.js +12 -0
- package/dist/esm/preview/{parse → preview}/extractExpectedBalanceChanges.js +1 -1
- package/dist/esm/preview/preview/index.js +3 -0
- package/dist/esm/preview/preview/previewOpenCreditAccount.js +77 -0
- package/dist/esm/preview/preview/previewOperation.js +17 -0
- package/dist/esm/preview/preview/previewPoolOperation.js +53 -0
- package/dist/esm/preview/preview/types.js +0 -0
- package/dist/esm/preview/simulate/simulatePoolOperation.js +21 -120
- package/dist/esm/sdk/market/zapper/ZapperContract.js +0 -3
- package/dist/types/history/types.d.ts +4 -4
- package/dist/types/preview/index.d.ts +1 -1
- package/dist/types/preview/parse/index.d.ts +0 -1
- package/dist/types/preview/parse/types-facades.d.ts +0 -33
- package/dist/types/preview/parse/types-pools.d.ts +29 -1
- package/dist/types/preview/parse/types-rwa.d.ts +1 -13
- package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +8 -3
- package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +15 -6
- package/dist/types/preview/preview/errors.d.ts +9 -0
- package/dist/types/preview/{parse → preview}/extractExpectedBalanceChanges.d.ts +4 -5
- package/dist/types/preview/preview/index.d.ts +3 -0
- package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +4 -0
- package/dist/types/preview/preview/previewOperation.d.ts +8 -0
- package/dist/types/preview/preview/previewPoolOperation.d.ts +5 -0
- package/dist/types/preview/preview/types.d.ts +103 -0
- package/dist/types/preview/simulate/index.d.ts +1 -1
- package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +0 -2
- package/dist/types/preview/simulate/simulateOperation.d.ts +0 -2
- package/dist/types/preview/simulate/simulatePoolOperation.d.ts +6 -18
- package/dist/types/preview/simulate/simulateRWAOperation.d.ts +0 -2
- package/dist/types/preview/simulate/types.d.ts +12 -26
- package/dist/types/sdk/market/zapper/types.d.ts +6 -6
- package/package.json +1 -1
- package/dist/esm/preview/simulate/holders.js +0 -21
- package/dist/types/preview/simulate/holders.d.ts +0 -7
|
@@ -17,12 +17,12 @@ var preview_exports = {};
|
|
|
17
17
|
module.exports = __toCommonJS(preview_exports);
|
|
18
18
|
__reExport(preview_exports, require("./parse/index.js"), module.exports);
|
|
19
19
|
__reExport(preview_exports, require("./prerequisites/index.js"), module.exports);
|
|
20
|
-
__reExport(preview_exports, require("./
|
|
20
|
+
__reExport(preview_exports, require("./preview/index.js"), module.exports);
|
|
21
21
|
__reExport(preview_exports, require("./trace/index.js"), module.exports);
|
|
22
22
|
// Annotate the CommonJS export names for ESM import in node:
|
|
23
23
|
0 && (module.exports = {
|
|
24
24
|
...require("./parse/index.js"),
|
|
25
25
|
...require("./prerequisites/index.js"),
|
|
26
|
-
...require("./
|
|
26
|
+
...require("./preview/index.js"),
|
|
27
27
|
...require("./trace/index.js")
|
|
28
28
|
});
|
|
@@ -17,7 +17,6 @@ var parse_exports = {};
|
|
|
17
17
|
module.exports = __toCommonJS(parse_exports);
|
|
18
18
|
__reExport(parse_exports, require("./classifyInnerOperations.js"), module.exports);
|
|
19
19
|
__reExport(parse_exports, require("./errors.js"), module.exports);
|
|
20
|
-
__reExport(parse_exports, require("./extractExpectedBalanceChanges.js"), module.exports);
|
|
21
20
|
__reExport(parse_exports, require("./parseFacadeOperationCalldata.js"), module.exports);
|
|
22
21
|
__reExport(parse_exports, require("./parseOperationCalldata.js"), module.exports);
|
|
23
22
|
__reExport(parse_exports, require("./parsePoolOperationCalldata.js"), module.exports);
|
|
@@ -27,7 +26,6 @@ __reExport(parse_exports, require("./types.js"), module.exports);
|
|
|
27
26
|
0 && (module.exports = {
|
|
28
27
|
...require("./classifyInnerOperations.js"),
|
|
29
28
|
...require("./errors.js"),
|
|
30
|
-
...require("./extractExpectedBalanceChanges.js"),
|
|
31
29
|
...require("./parseFacadeOperationCalldata.js"),
|
|
32
30
|
...require("./parseOperationCalldata.js"),
|
|
33
31
|
...require("./parsePoolOperationCalldata.js"),
|
|
@@ -23,7 +23,6 @@ __export(parseFacadeOperationCalldata_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(parseFacadeOperationCalldata_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
25
|
var import_classifyInnerOperations = require("./classifyInnerOperations.js");
|
|
26
|
-
var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
|
|
27
26
|
function parseFacadeOperationCalldata(props) {
|
|
28
27
|
const { sdk, facade, calldata } = props;
|
|
29
28
|
const parsed = sdk.parseFunctionDataV2(facade.address, calldata);
|
|
@@ -44,23 +43,20 @@ function parseFacadeOperationCalldata(props) {
|
|
|
44
43
|
sdk,
|
|
45
44
|
underlying: suite.underlying
|
|
46
45
|
});
|
|
47
|
-
const expectedBalanceChanges = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls);
|
|
48
46
|
switch (functionName) {
|
|
49
47
|
case "multicall":
|
|
50
48
|
return {
|
|
51
49
|
...metadata,
|
|
52
50
|
operation: "MultiCall",
|
|
53
51
|
creditAccount: rawArgs.creditAccount,
|
|
54
|
-
multicall
|
|
55
|
-
expectedBalanceChanges
|
|
52
|
+
multicall
|
|
56
53
|
};
|
|
57
54
|
case "botMulticall":
|
|
58
55
|
return {
|
|
59
56
|
...metadata,
|
|
60
57
|
operation: "BotMulticall",
|
|
61
58
|
creditAccount: rawArgs.creditAccount,
|
|
62
|
-
multicall
|
|
63
|
-
expectedBalanceChanges
|
|
59
|
+
multicall
|
|
64
60
|
};
|
|
65
61
|
case "openCreditAccount":
|
|
66
62
|
return {
|
|
@@ -69,16 +65,14 @@ function parseFacadeOperationCalldata(props) {
|
|
|
69
65
|
creditAccount: import_viem.zeroAddress,
|
|
70
66
|
onBehalfOf: rawArgs.onBehalfOf,
|
|
71
67
|
referralCode: rawArgs.referralCode,
|
|
72
|
-
multicall
|
|
73
|
-
expectedBalanceChanges
|
|
68
|
+
multicall
|
|
74
69
|
};
|
|
75
70
|
case "closeCreditAccount":
|
|
76
71
|
return {
|
|
77
72
|
...metadata,
|
|
78
73
|
operation: "CloseCreditAccount",
|
|
79
74
|
creditAccount: rawArgs.creditAccount,
|
|
80
|
-
multicall
|
|
81
|
-
expectedBalanceChanges
|
|
75
|
+
multicall
|
|
82
76
|
};
|
|
83
77
|
case "liquidateCreditAccount":
|
|
84
78
|
return {
|
|
@@ -90,8 +84,7 @@ function parseFacadeOperationCalldata(props) {
|
|
|
90
84
|
// liquidation, so they are not recoverable from raw calldata.
|
|
91
85
|
token: import_viem.zeroAddress,
|
|
92
86
|
remainingFunds: 0n,
|
|
93
|
-
multicall
|
|
94
|
-
expectedBalanceChanges
|
|
87
|
+
multicall
|
|
95
88
|
};
|
|
96
89
|
case "partiallyLiquidateCreditAccount":
|
|
97
90
|
return {
|
|
@@ -41,7 +41,8 @@ function parseOperationCalldata(input) {
|
|
|
41
41
|
receiver: parsed.receiver,
|
|
42
42
|
assets: parsed.assets,
|
|
43
43
|
underlying: parsed.underlying,
|
|
44
|
-
tokenIn:
|
|
44
|
+
tokenIn: contract.tokenIn.addr,
|
|
45
|
+
tokenOut: contract.tokenOut.addr,
|
|
45
46
|
zapper: parsed.zapper,
|
|
46
47
|
referralCode: parsed.referralCode
|
|
47
48
|
};
|
|
@@ -51,12 +52,13 @@ function parseOperationCalldata(input) {
|
|
|
51
52
|
operation: "Redeem",
|
|
52
53
|
pool: parsed.pool,
|
|
53
54
|
receiver: parsed.receiver,
|
|
54
|
-
// The zapper burns the caller's
|
|
55
|
+
// The zapper burns the caller's share tokens, so the share owner is the
|
|
55
56
|
// transaction sender.
|
|
56
57
|
owner: sender,
|
|
57
58
|
shares: parsed.shares,
|
|
58
59
|
underlying: parsed.underlying,
|
|
59
|
-
|
|
60
|
+
tokenIn: contract.tokenOut.addr,
|
|
61
|
+
tokenOut: contract.tokenIn.addr,
|
|
60
62
|
zapper: parsed.zapper
|
|
61
63
|
};
|
|
62
64
|
return op;
|
|
@@ -38,6 +38,7 @@ function parsePoolOperationCalldata(props) {
|
|
|
38
38
|
assets: rawArgs.assets,
|
|
39
39
|
underlying,
|
|
40
40
|
tokenIn: underlying,
|
|
41
|
+
tokenOut: pool.address,
|
|
41
42
|
zapper: void 0,
|
|
42
43
|
referralCode: functionName === "depositWithReferral" ? rawArgs.referralCode : void 0
|
|
43
44
|
};
|
|
@@ -50,6 +51,7 @@ function parsePoolOperationCalldata(props) {
|
|
|
50
51
|
shares: rawArgs.shares,
|
|
51
52
|
underlying,
|
|
52
53
|
tokenIn: underlying,
|
|
54
|
+
tokenOut: pool.address,
|
|
53
55
|
zapper: void 0,
|
|
54
56
|
referralCode: functionName === "mintWithReferral" ? rawArgs.referralCode : void 0
|
|
55
57
|
};
|
|
@@ -61,6 +63,7 @@ function parsePoolOperationCalldata(props) {
|
|
|
61
63
|
owner: rawArgs.owner,
|
|
62
64
|
assets: rawArgs.assets,
|
|
63
65
|
underlying,
|
|
66
|
+
tokenIn: pool.address,
|
|
64
67
|
tokenOut: underlying,
|
|
65
68
|
zapper: void 0
|
|
66
69
|
};
|
|
@@ -72,6 +75,7 @@ function parsePoolOperationCalldata(props) {
|
|
|
72
75
|
owner: rawArgs.owner,
|
|
73
76
|
shares: rawArgs.shares,
|
|
74
77
|
underlying,
|
|
78
|
+
tokenIn: pool.address,
|
|
75
79
|
tokenOut: underlying,
|
|
76
80
|
zapper: void 0
|
|
77
81
|
};
|
|
@@ -24,7 +24,6 @@ module.exports = __toCommonJS(parseRWAFactoryOperationCalldata_exports);
|
|
|
24
24
|
var import_adapters = require("../../plugins/adapters/index.js");
|
|
25
25
|
var import_sdk = require("../../sdk/index.js");
|
|
26
26
|
var import_classifyInnerOperations = require("./classifyInnerOperations.js");
|
|
27
|
-
var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
|
|
28
27
|
function parseRWAFactoryOperationCalldata(props) {
|
|
29
28
|
const { contractType, address } = props.factory;
|
|
30
29
|
if ((0, import_sdk.isRWAFactory)(props.factory, import_sdk.RWA_FACTORY_SECURITIZE)) {
|
|
@@ -56,14 +55,12 @@ function parseSecuritizeOperationCalldata(props) {
|
|
|
56
55
|
sdk,
|
|
57
56
|
underlying: suite.underlying
|
|
58
57
|
});
|
|
59
|
-
const expectedBalanceChanges = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls);
|
|
60
58
|
switch (functionName) {
|
|
61
59
|
case "openCreditAccount":
|
|
62
60
|
return {
|
|
63
61
|
...metadata,
|
|
64
62
|
operation: "SecuritizeOpenCreditAccount",
|
|
65
63
|
multicall,
|
|
66
|
-
expectedBalanceChanges,
|
|
67
64
|
tokensToRegister,
|
|
68
65
|
signaturesToCache
|
|
69
66
|
};
|
|
@@ -73,7 +70,6 @@ function parseSecuritizeOperationCalldata(props) {
|
|
|
73
70
|
operation: "SecuritizeMulticall",
|
|
74
71
|
creditAccount: rawArgs.creditAccount,
|
|
75
72
|
multicall,
|
|
76
|
-
expectedBalanceChanges,
|
|
77
73
|
tokensToRegister,
|
|
78
74
|
signaturesToCache
|
|
79
75
|
};
|
|
@@ -22,6 +22,8 @@ __export(BalancePrerequisite_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(BalancePrerequisite_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
|
+
var import_iMulticall3 = require("../../abi/iMulticall3.js");
|
|
26
|
+
var import_sdk = require("../../sdk/index.js");
|
|
25
27
|
var import_Prerequisite = require("./Prerequisite.js");
|
|
26
28
|
class BalancePrerequisite extends import_Prerequisite.Prerequisite {
|
|
27
29
|
#id;
|
|
@@ -49,7 +51,23 @@ class BalancePrerequisite extends import_Prerequisite.Prerequisite {
|
|
|
49
51
|
get detail() {
|
|
50
52
|
return this.#detail;
|
|
51
53
|
}
|
|
52
|
-
calls() {
|
|
54
|
+
calls(ctx) {
|
|
55
|
+
if ((0, import_sdk.hexEq)(this.#detail.token, import_sdk.NATIVE_ADDRESS)) {
|
|
56
|
+
const multicall3 = ctx.sdk.client.chain.contracts?.multicall3?.address;
|
|
57
|
+
if (!multicall3) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
"multicall3 is not configured for this chain, cannot read native balance"
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
return [
|
|
63
|
+
{
|
|
64
|
+
address: multicall3,
|
|
65
|
+
abi: import_iMulticall3.iMulticall3Abi,
|
|
66
|
+
functionName: "getEthBalance",
|
|
67
|
+
args: [this.#detail.owner]
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
}
|
|
53
71
|
return [
|
|
54
72
|
{
|
|
55
73
|
address: this.#detail.token,
|
|
@@ -23,11 +23,14 @@ __export(buildPrerequisites_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(buildPrerequisites_exports);
|
|
24
24
|
var import_viem = require("viem");
|
|
25
25
|
var import_sdk = require("../../sdk/index.js");
|
|
26
|
+
var import_parseOperationCalldata = require("../parse/parseOperationCalldata.js");
|
|
26
27
|
var import_AllowancePrerequisite = require("./AllowancePrerequisite.js");
|
|
27
28
|
var import_BalancePrerequisite = require("./BalancePrerequisite.js");
|
|
28
29
|
var import_RWAOpenRequirementsPrerequisite = require("./RWAOpenRequirementsPrerequisite.js");
|
|
29
|
-
async function buildPrerequisites(
|
|
30
|
-
const { wallet } =
|
|
30
|
+
async function buildPrerequisites(input) {
|
|
31
|
+
const { sdk, sender: wallet, blockNumber } = input;
|
|
32
|
+
const tx = (0, import_parseOperationCalldata.parseOperationCalldata)(input);
|
|
33
|
+
const ctx = { sdk, wallet, blockNumber };
|
|
31
34
|
switch (tx.operation) {
|
|
32
35
|
// Deposit and Mint both pull the underlying from the caller into the pool;
|
|
33
36
|
// they only differ in which side (assets vs shares) the caller specifies.
|
|
@@ -37,21 +40,27 @@ async function buildPrerequisites(tx, ctx) {
|
|
|
37
40
|
// not knowable from calldata alone).
|
|
38
41
|
case "Deposit":
|
|
39
42
|
if (tx.zapper) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
const prereqs = [];
|
|
44
|
+
if (!(0, import_viem.isAddressEqual)(tx.tokenIn, import_sdk.NATIVE_ADDRESS)) {
|
|
45
|
+
prereqs.push(
|
|
46
|
+
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
47
|
+
token: tx.tokenIn,
|
|
48
|
+
owner: wallet,
|
|
49
|
+
spender: tx.zapper,
|
|
50
|
+
required: tx.assets,
|
|
51
|
+
title: "Token approved to zapper"
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
prereqs.push(
|
|
48
56
|
new import_BalancePrerequisite.BalancePrerequisite({
|
|
49
57
|
token: tx.tokenIn,
|
|
50
58
|
owner: wallet,
|
|
51
59
|
required: tx.assets,
|
|
52
60
|
title: "Sufficient token balance"
|
|
53
61
|
})
|
|
54
|
-
|
|
62
|
+
);
|
|
63
|
+
return prereqs;
|
|
55
64
|
}
|
|
56
65
|
return [
|
|
57
66
|
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
@@ -90,17 +99,17 @@ async function buildPrerequisites(tx, ctx) {
|
|
|
90
99
|
if (tx.zapper) {
|
|
91
100
|
return [
|
|
92
101
|
new import_BalancePrerequisite.BalancePrerequisite({
|
|
93
|
-
token: tx.
|
|
102
|
+
token: tx.tokenIn,
|
|
94
103
|
owner: wallet,
|
|
95
104
|
required: tx.shares,
|
|
96
|
-
title: "Sufficient
|
|
105
|
+
title: "Sufficient share token balance"
|
|
97
106
|
}),
|
|
98
107
|
new import_AllowancePrerequisite.AllowancePrerequisite({
|
|
99
|
-
token: tx.
|
|
108
|
+
token: tx.tokenIn,
|
|
100
109
|
owner: wallet,
|
|
101
110
|
spender: tx.zapper,
|
|
102
111
|
required: tx.shares,
|
|
103
|
-
title: "
|
|
112
|
+
title: "Share token approved to zapper"
|
|
104
113
|
})
|
|
105
114
|
];
|
|
106
115
|
}
|
|
@@ -16,30 +16,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var errors_exports = {};
|
|
20
|
+
__export(errors_exports, {
|
|
21
|
+
UnsupportedOperationError: () => UnsupportedOperationError
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
case "Redeem":
|
|
32
|
-
return operation.owner;
|
|
23
|
+
module.exports = __toCommonJS(errors_exports);
|
|
24
|
+
class UnsupportedOperationError extends Error {
|
|
25
|
+
/** The parsed operation kind (the `operation` discriminant). */
|
|
26
|
+
operation;
|
|
27
|
+
constructor(operation) {
|
|
28
|
+
super(`operation "${operation}" is not supported by previewOperation`);
|
|
29
|
+
this.name = "UnsupportedOperationError";
|
|
30
|
+
this.operation = operation;
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
|
-
function watchedHolders(operation, wallet) {
|
|
36
|
-
const holders = new import_sdk.AddressSet([
|
|
37
|
-
sourceHolder(operation, wallet),
|
|
38
|
-
operation.receiver
|
|
39
|
-
]);
|
|
40
|
-
return holders.asArray();
|
|
41
|
-
}
|
|
42
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
43
34
|
0 && (module.exports = {
|
|
44
|
-
|
|
35
|
+
UnsupportedOperationError
|
|
45
36
|
});
|
|
@@ -37,7 +37,7 @@ function extractExpectedBalanceChanges(innerCalls) {
|
|
|
37
37
|
if (!balanceDeltas) {
|
|
38
38
|
return void 0;
|
|
39
39
|
}
|
|
40
|
-
return balanceDeltas.map(({ token, amount }) => ({ token,
|
|
40
|
+
return balanceDeltas.map(({ token, amount }) => ({ token, balance: amount }));
|
|
41
41
|
}
|
|
42
42
|
function functionName(call) {
|
|
43
43
|
return call.functionName.split("(")[0];
|
|
@@ -0,0 +1,26 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var preview_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(preview_exports);
|
|
18
|
+
__reExport(preview_exports, require("./errors.js"), module.exports);
|
|
19
|
+
__reExport(preview_exports, require("./previewOperation.js"), module.exports);
|
|
20
|
+
__reExport(preview_exports, require("./types.js"), module.exports);
|
|
21
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
22
|
+
0 && (module.exports = {
|
|
23
|
+
...require("./errors.js"),
|
|
24
|
+
...require("./previewOperation.js"),
|
|
25
|
+
...require("./types.js")
|
|
26
|
+
});
|
|
@@ -0,0 +1,99 @@
|
|
|
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 previewOpenCreditAccount_exports = {};
|
|
20
|
+
__export(previewOpenCreditAccount_exports, {
|
|
21
|
+
previewOpenCreditAccount: () => previewOpenCreditAccount
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(previewOpenCreditAccount_exports);
|
|
24
|
+
var import_sdk = require("../../sdk/index.js");
|
|
25
|
+
var import_extractExpectedBalanceChanges = require("./extractExpectedBalanceChanges.js");
|
|
26
|
+
function previewOpenCreditAccount(input, operation) {
|
|
27
|
+
const { sdk, to, calldata } = input;
|
|
28
|
+
const market = sdk.marketRegister.findByCreditManager(
|
|
29
|
+
operation.creditManager
|
|
30
|
+
);
|
|
31
|
+
const collateralByToken = new import_sdk.AddressMap();
|
|
32
|
+
const balances = new import_sdk.AddressMap();
|
|
33
|
+
const addBalance = (token, amount) => {
|
|
34
|
+
balances.upsert(token, (balances.get(token) ?? 0n) + amount);
|
|
35
|
+
};
|
|
36
|
+
let debt = 0n;
|
|
37
|
+
const quotas = [];
|
|
38
|
+
for (const op of operation.multicall) {
|
|
39
|
+
switch (op.operation) {
|
|
40
|
+
case "AddCollateral": {
|
|
41
|
+
const balance = collateralByToken.get(op.token)?.balance ?? 0n;
|
|
42
|
+
collateralByToken.upsert(op.token, {
|
|
43
|
+
token: op.token,
|
|
44
|
+
balance: balance + op.amount
|
|
45
|
+
});
|
|
46
|
+
addBalance(op.token, op.amount);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case "WithdrawCollateral":
|
|
50
|
+
addBalance(op.token, -op.amount);
|
|
51
|
+
break;
|
|
52
|
+
case "IncreaseBorrowedAmount":
|
|
53
|
+
debt += op.amount;
|
|
54
|
+
addBalance(op.token, op.amount);
|
|
55
|
+
break;
|
|
56
|
+
case "DecreaseBorrowedAmount":
|
|
57
|
+
debt -= op.amount;
|
|
58
|
+
addBalance(op.token, -op.amount);
|
|
59
|
+
break;
|
|
60
|
+
case "UpdateQuota":
|
|
61
|
+
quotas.push({ token: op.token, balance: op.change });
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const collateral = collateralByToken.values();
|
|
66
|
+
const collateralValue = collateral.reduce(
|
|
67
|
+
(acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
|
|
68
|
+
0n
|
|
69
|
+
);
|
|
70
|
+
const parsed = sdk.parseFunctionDataV2(to, calldata);
|
|
71
|
+
const innerCalls = parsed.rawArgs.calls ?? [];
|
|
72
|
+
const deltas = (0, import_extractExpectedBalanceChanges.extractExpectedBalanceChanges)(innerCalls) ?? [];
|
|
73
|
+
for (const { token, balance } of deltas) {
|
|
74
|
+
addBalance(token, balance);
|
|
75
|
+
}
|
|
76
|
+
const assets = balances.entries().filter(([, balance]) => balance > 1n).map(([token, balance]) => ({ token, balance }));
|
|
77
|
+
return {
|
|
78
|
+
operation: operation.operation,
|
|
79
|
+
target: inferTargetAsset(operation.multicall, balances),
|
|
80
|
+
collateral,
|
|
81
|
+
collateralValue,
|
|
82
|
+
debt,
|
|
83
|
+
quotas,
|
|
84
|
+
assets
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function inferTargetAsset(multicall, balances) {
|
|
88
|
+
for (const op of multicall) {
|
|
89
|
+
if (op.operation === "UpdateQuota" && op.change > 0n) {
|
|
90
|
+
const balance = balances.get(op.token);
|
|
91
|
+
return balance ? { token: op.token, balance } : void 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return void 0;
|
|
95
|
+
}
|
|
96
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
97
|
+
0 && (module.exports = {
|
|
98
|
+
previewOpenCreditAccount
|
|
99
|
+
});
|
|
@@ -0,0 +1,41 @@
|
|
|
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 previewOperation_exports = {};
|
|
20
|
+
__export(previewOperation_exports, {
|
|
21
|
+
previewOperation: () => previewOperation
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(previewOperation_exports);
|
|
24
|
+
var import_parse = require("../parse/index.js");
|
|
25
|
+
var import_errors = require("./errors.js");
|
|
26
|
+
var import_previewOpenCreditAccount = require("./previewOpenCreditAccount.js");
|
|
27
|
+
var import_previewPoolOperation = require("./previewPoolOperation.js");
|
|
28
|
+
async function previewOperation(input, options) {
|
|
29
|
+
const operation = (0, import_parse.parseOperationCalldata)(input);
|
|
30
|
+
if ((0, import_parse.isPoolOperation)(operation)) {
|
|
31
|
+
return (0, import_previewPoolOperation.previewPoolOperation)(input, operation, options);
|
|
32
|
+
}
|
|
33
|
+
if (operation.operation === "OpenCreditAccount" || operation.operation === "SecuritizeOpenCreditAccount") {
|
|
34
|
+
return (0, import_previewOpenCreditAccount.previewOpenCreditAccount)(input, operation);
|
|
35
|
+
}
|
|
36
|
+
throw new import_errors.UnsupportedOperationError(operation.operation);
|
|
37
|
+
}
|
|
38
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
+
0 && (module.exports = {
|
|
40
|
+
previewOperation
|
|
41
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
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 previewPoolOperation_exports = {};
|
|
20
|
+
__export(previewPoolOperation_exports, {
|
|
21
|
+
previewPoolOperation: () => previewPoolOperation
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(previewPoolOperation_exports);
|
|
24
|
+
var import_simulate = require("../simulate/index.js");
|
|
25
|
+
async function previewPoolOperation(input, operation, options) {
|
|
26
|
+
const { sdk, to, calldata } = input;
|
|
27
|
+
const { tokenIn, tokenOut } = operation;
|
|
28
|
+
const sim = await (0, import_simulate.simulatePoolOperation)(
|
|
29
|
+
{ sdk, operation, to, calldata },
|
|
30
|
+
options
|
|
31
|
+
);
|
|
32
|
+
if (sim.status === "success") {
|
|
33
|
+
return {
|
|
34
|
+
operation: operation.operation,
|
|
35
|
+
pool: operation.pool,
|
|
36
|
+
tokenIn: { token: tokenIn, balance: sim.amountIn },
|
|
37
|
+
tokenOut: { token: tokenOut, balance: sim.amountOut }
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const { error } = sim;
|
|
41
|
+
switch (operation.operation) {
|
|
42
|
+
case "Deposit":
|
|
43
|
+
return {
|
|
44
|
+
operation: "Deposit",
|
|
45
|
+
pool: operation.pool,
|
|
46
|
+
tokenIn: { token: tokenIn, balance: operation.assets },
|
|
47
|
+
tokenOut: { token: tokenOut, error }
|
|
48
|
+
};
|
|
49
|
+
case "Mint":
|
|
50
|
+
return {
|
|
51
|
+
operation: "Mint",
|
|
52
|
+
pool: operation.pool,
|
|
53
|
+
tokenIn: { token: tokenIn, error },
|
|
54
|
+
tokenOut: { token: tokenOut, balance: operation.shares }
|
|
55
|
+
};
|
|
56
|
+
case "Withdraw":
|
|
57
|
+
return {
|
|
58
|
+
operation: "Withdraw",
|
|
59
|
+
pool: operation.pool,
|
|
60
|
+
tokenIn: { token: tokenIn, error },
|
|
61
|
+
tokenOut: { token: tokenOut, balance: operation.assets }
|
|
62
|
+
};
|
|
63
|
+
case "Redeem":
|
|
64
|
+
return {
|
|
65
|
+
operation: "Redeem",
|
|
66
|
+
pool: operation.pool,
|
|
67
|
+
tokenIn: { token: tokenIn, balance: operation.shares },
|
|
68
|
+
tokenOut: { token: tokenOut, error }
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
previewPoolOperation
|
|
75
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_exports);
|