@eulerxyz/euler-v2-sdk 1.0.3 → 1.0.5
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/src/entities/Account.d.ts +14 -0
- package/dist/src/entities/Account.d.ts.map +1 -1
- package/dist/src/entities/Account.js +5 -3
- package/dist/src/entities/Account.js.map +1 -1
- package/dist/src/entities/Wallet.d.ts +7 -0
- package/dist/src/entities/Wallet.d.ts.map +1 -1
- package/dist/src/entities/Wallet.js +10 -1
- package/dist/src/entities/Wallet.js.map +1 -1
- package/dist/src/sdk/buildSDK.d.ts.map +1 -1
- package/dist/src/sdk/buildSDK.js +1 -0
- package/dist/src/sdk/buildSDK.js.map +1 -1
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.d.ts.map +1 -1
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.js +9 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.js.map +1 -1
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountLensTypes.d.ts +5 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountLensTypes.d.ts.map +1 -1
- package/dist/src/services/executionService/executionService.d.ts.map +1 -1
- package/dist/src/services/executionService/executionService.js +16 -2
- package/dist/src/services/executionService/executionService.js.map +1 -1
- package/dist/src/services/executionService/executionServiceTypes.d.ts +6 -0
- package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
- package/dist/src/services/executionService/executionServiceTypes.js.map +1 -1
- package/dist/src/services/executionService/simulate.d.ts +27 -0
- package/dist/src/services/executionService/simulate.d.ts.map +1 -1
- package/dist/src/services/executionService/simulate.js +523 -38
- package/dist/src/services/executionService/simulate.js.map +1 -1
- package/dist/src/services/reulLockService/reulLockService.d.ts +2 -2
- package/dist/src/services/reulLockService/reulLockService.d.ts.map +1 -1
- package/dist/src/services/reulLockService/reulLockService.js +25 -7
- package/dist/src/services/reulLockService/reulLockService.js.map +1 -1
- package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts +1 -1
- package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts.map +1 -1
- package/dist/src/services/rewardsService/index.d.ts +1 -1
- package/dist/src/services/rewardsService/index.d.ts.map +1 -1
- package/dist/src/services/rewardsService/index.js.map +1 -1
- package/dist/src/services/rewardsService/rewardsService.d.ts +16 -1
- package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
- package/dist/src/services/rewardsService/rewardsService.js +163 -3
- package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
- package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +18 -0
- package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
- package/dist/src/services/rewardsService/rewardsServiceTypes.js.map +1 -1
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.d.ts +3 -1
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.d.ts.map +1 -1
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.js +20 -2
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.js.map +1 -1
- package/dist/src/utils/stateOverrides/approvalOverrides.d.ts +1 -1
- package/dist/src/utils/stateOverrides/approvalOverrides.d.ts.map +1 -1
- package/dist/src/utils/stateOverrides/approvalOverrides.js +40 -36
- package/dist/src/utils/stateOverrides/approvalOverrides.js.map +1 -1
- package/dist/src/utils/stateOverrides/balanceOverrides.d.ts +8 -6
- package/dist/src/utils/stateOverrides/balanceOverrides.d.ts.map +1 -1
- package/dist/src/utils/stateOverrides/balanceOverrides.js +62 -55
- package/dist/src/utils/stateOverrides/balanceOverrides.js.map +1 -1
- package/dist/src/utils/stateOverrides/getStateOverrides.d.ts.map +1 -1
- package/dist/src/utils/stateOverrides/getStateOverrides.js +9 -8
- package/dist/src/utils/stateOverrides/getStateOverrides.js.map +1 -1
- package/package.json +1 -1
|
@@ -57,11 +57,13 @@ function findIndexOfLargest(arr) {
|
|
|
57
57
|
* 2. Read `balanceOf` on-chain; skip if sufficient.
|
|
58
58
|
* 3. Use caller-supplied `balanceSlotIndex` → compute slot cryptographically.
|
|
59
59
|
* 4. Use cached probed slot index (`fetchErc20SlotHints` cache) → same.
|
|
60
|
-
* 5. Probe
|
|
61
|
-
* 6. Fall back to
|
|
60
|
+
* 5. Probe via `eth_createAccessList` discovery + per-slot verification.
|
|
61
|
+
* 6. Fall back to sequential `fetchErc20SlotHints` probing when access-list
|
|
62
|
+
* discovery is unavailable.
|
|
62
63
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
64
|
+
* Access-list probing handles proxy / namespaced token layouts when the RPC
|
|
65
|
+
* supports it. Sequential probing remains the fallback for standard ERC20
|
|
66
|
+
* layouts on RPCs where `eth_createAccessList` is unavailable.
|
|
65
67
|
*/
|
|
66
68
|
export async function getBalanceOverrides(client, account, tokens, options = {}) {
|
|
67
69
|
if (tokens.length === 0)
|
|
@@ -131,25 +133,9 @@ export async function getBalanceOverrides(client, account, tokens, options = {})
|
|
|
131
133
|
});
|
|
132
134
|
continue;
|
|
133
135
|
}
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
skipAllowance: true,
|
|
138
|
-
});
|
|
139
|
-
if (fresh.balanceSlotIndex !== undefined && !shouldSkipCaching(token)) {
|
|
140
|
-
const slot = computeBalanceSlot(account, fresh.balanceSlotIndex);
|
|
141
|
-
stateOverride.push({
|
|
142
|
-
address: tokenAddr,
|
|
143
|
-
stateDiff: [{ slot, value: valueHex }],
|
|
144
|
-
});
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (e) {
|
|
149
|
-
// fall through to legacy access-list discovery
|
|
150
|
-
}
|
|
151
|
-
// Legacy fallback: eth_createAccessList-based discovery. Only reached
|
|
152
|
-
// for exotic storage layouts where the small-integer slot probe failed.
|
|
136
|
+
// Prefer access-list discovery for unresolved tokens; it can surface
|
|
137
|
+
// proxy / namespaced storage slots that raw sequential probing cannot.
|
|
138
|
+
let resolvedViaAccessList = false;
|
|
153
139
|
try {
|
|
154
140
|
const accessedSlots = await getAccessedSlots(client, {
|
|
155
141
|
data: encodeFunctionData({
|
|
@@ -160,44 +146,65 @@ export async function getBalanceOverrides(client, account, tokens, options = {})
|
|
|
160
146
|
to: token,
|
|
161
147
|
});
|
|
162
148
|
const tokenSlots = accessedSlots.get(getAddress(token));
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
149
|
+
if (tokenSlots && tokenSlots.length > 0) {
|
|
150
|
+
const candidateSlots = tokenSlots.map((slot) => ({
|
|
151
|
+
address: getAddress(token),
|
|
152
|
+
slot,
|
|
153
|
+
}));
|
|
154
|
+
// Test each candidate: override slot → read balanceOf → pick best
|
|
155
|
+
const testBalances = await Promise.all(candidateSlots.map((slot) => client
|
|
156
|
+
.readContract({
|
|
157
|
+
abi: erc20Abi,
|
|
158
|
+
address: token,
|
|
159
|
+
functionName: "balanceOf",
|
|
160
|
+
args: [account],
|
|
161
|
+
stateOverride: [
|
|
162
|
+
{
|
|
163
|
+
address: slot.address,
|
|
164
|
+
stateDiff: [{ slot: slot.slot, value: valueHex }],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
})
|
|
168
|
+
.catch(() => 0n)));
|
|
169
|
+
const bestIdx = findIndexOfLargest(testBalances);
|
|
170
|
+
const bestSlot = candidateSlots[bestIdx];
|
|
171
|
+
const bestBalance = bestIdx >= 0 ? testBalances[bestIdx] : undefined;
|
|
172
|
+
if (bestSlot &&
|
|
173
|
+
bestBalance !== undefined &&
|
|
174
|
+
(bestBalance > currentBalance || shouldSkipCaching(token))) {
|
|
175
|
+
stateOverride.push({
|
|
176
|
+
address: bestSlot.address,
|
|
177
|
+
stateDiff: [{ slot: bestSlot.slot, value: valueHex }],
|
|
178
|
+
});
|
|
179
|
+
if (!shouldSkipCaching(token)) {
|
|
180
|
+
balanceSlotCache.set(cacheKey, bestSlot);
|
|
181
|
+
}
|
|
182
|
+
resolvedViaAccessList = true;
|
|
195
183
|
}
|
|
196
184
|
}
|
|
197
185
|
}
|
|
198
186
|
catch (e) {
|
|
199
187
|
console.warn(`[balanceOverrides] slot discovery failed for ${token}:`, e);
|
|
200
188
|
}
|
|
189
|
+
if (resolvedViaAccessList)
|
|
190
|
+
continue;
|
|
191
|
+
// Sequential probing via fetchErc20SlotHints (cheap, owner-agnostic) is
|
|
192
|
+
// the fallback for standard ERC20 layouts when access-list is unavailable.
|
|
193
|
+
try {
|
|
194
|
+
const fresh = await fetchErc20SlotHints(client, tokenAddr, {
|
|
195
|
+
skipAllowance: true,
|
|
196
|
+
});
|
|
197
|
+
if (fresh.balanceSlotIndex !== undefined && !shouldSkipCaching(token)) {
|
|
198
|
+
const slot = computeBalanceSlot(account, fresh.balanceSlotIndex);
|
|
199
|
+
stateOverride.push({
|
|
200
|
+
address: tokenAddr,
|
|
201
|
+
stateDiff: [{ slot, value: valueHex }],
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
// unresolved; callers still get any other applicable overrides.
|
|
207
|
+
}
|
|
201
208
|
}
|
|
202
209
|
return applySpecialCasing(stateOverride);
|
|
203
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balanceOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/balanceOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,QAAQ,EACR,UAAU,EACV,WAAW,GACX,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAElB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE9D,oDAAoD;AACpD,MAAM,WAAW,GAAG,4CAA4C,CAAC;AAEjE,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,aAA4B;IACvD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACtC,IACC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC;YACxD,QAAQ,CAAC,SAAS,EACjB,CAAC;YACF,mEAAmE;YACnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAClD,QAAQ,CAAC,EAAE,CAAC;qBACZ,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAS,CAAC;gBAC7B,OAAO;oBACN,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;oBACxC;wBACC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;6BACjC,QAAQ,CAAC,EAAE,CAAC;6BACZ,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAS;wBAC5B,KAAK,EAAE,YAAY;qBACnB;iBACD,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAa;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,QAAQ,EAAE,CAAC;YACxB,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACnB,QAAQ,GAAG,CAAC,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAkBD
|
|
1
|
+
{"version":3,"file":"balanceOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/balanceOverrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStateOverrides.d.ts","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/getStateOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAGlB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAIhG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,2BAA2B,GAAG;IACzC,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;KACrD,CAAC;IACF;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;
|
|
1
|
+
{"version":3,"file":"getStateOverrides.d.ts","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/getStateOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAGlB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAIhG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,2BAA2B,GAAG;IACzC,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;KACrD,CAAC;IACF;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAuDF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,2BAA2B,GAClC,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
|
|
@@ -4,23 +4,24 @@ import { getApprovalOverrides } from "./approvalOverrides.js";
|
|
|
4
4
|
import { mergeStateOverrides } from "./mergeStateOverrides.js";
|
|
5
5
|
/**
|
|
6
6
|
* Extract token balance requirements from a TransactionPlan.
|
|
7
|
-
* Each RequiredApproval represents a deposit-like operation where the
|
|
8
|
-
*
|
|
7
|
+
* Each RequiredApproval represents a deposit-like operation where the user needs
|
|
8
|
+
* tokens in their wallet. Several approvals can draw on the same token within one
|
|
9
|
+
* plan (e.g. supplying it into two vaults, or supply + repay), so we sum the
|
|
10
|
+
* amounts per token — the wallet must cover their total, not the largest single
|
|
11
|
+
* one. Over-forging is harmless; under-forging would make an op revert with
|
|
12
|
+
* E_InsufficientBalance mid-simulation.
|
|
9
13
|
*/
|
|
10
14
|
function extractBalanceRequirements(plan, account) {
|
|
11
|
-
const
|
|
15
|
+
const totalPerToken = new Map();
|
|
12
16
|
for (const item of plan) {
|
|
13
17
|
if (item.type !== "requiredApproval")
|
|
14
18
|
continue;
|
|
15
19
|
if (getAddress(item.owner) !== getAddress(account))
|
|
16
20
|
continue;
|
|
17
21
|
const token = getAddress(item.token);
|
|
18
|
-
|
|
19
|
-
if (item.amount > current) {
|
|
20
|
-
maxPerToken.set(token, item.amount);
|
|
21
|
-
}
|
|
22
|
+
totalPerToken.set(token, (totalPerToken.get(token) || 0n) + item.amount);
|
|
22
23
|
}
|
|
23
|
-
return Array.from(
|
|
24
|
+
return Array.from(totalPerToken.entries());
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* Extract approval pairs from a TransactionPlan.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStateOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/getStateOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,UAAU,EACV,UAAU,GACV,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AA+C/D
|
|
1
|
+
{"version":3,"file":"getStateOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/getStateOverrides.ts"],"names":[],"mappings":"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"}
|