@andrewkimjoseph/celina-sdk 0.9.4 → 0.9.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/build/index.d.ts +0 -4
- package/build/index.js +0 -4
- package/build/index.js.map +1 -1
- package/build/utils/erc20-allowance-storage.d.ts +0 -10
- package/build/utils/erc20-allowance-storage.js +1 -36
- package/build/utils/erc20-allowance-storage.js.map +1 -1
- package/package.json +1 -6
- package/build/preflight.d.ts +0 -7
- package/build/preflight.js +0 -4
- package/build/preflight.js.map +0 -1
- package/build/utils/celo-fee-currency.d.ts +0 -31
- package/build/utils/celo-fee-currency.js +0 -83
- package/build/utils/celo-fee-currency.js.map +0 -1
- package/build/utils/minipay.d.ts +0 -2
- package/build/utils/minipay.js +0 -8
- package/build/utils/minipay.js.map +0 -1
- package/build/utils/simulate-prepared-step.d.ts +0 -17
- package/build/utils/simulate-prepared-step.js +0 -68
- package/build/utils/simulate-prepared-step.js.map +0 -1
package/build/index.d.ts
CHANGED
|
@@ -88,7 +88,3 @@ export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, type SelfSessio
|
|
|
88
88
|
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
|
89
89
|
export { flushCelinaAnalytics } from "./analytics/amplitude.js";
|
|
90
90
|
export { runWithAnalyticsWallet } from "./analytics/wallet-context.js";
|
|
91
|
-
export { isMiniPayBrowser } from "./utils/minipay.js";
|
|
92
|
-
export { MINIPAY_FEE_CURRENCIES, feeCurrencySymbol, resolveMiniPayFeeCurrency, type ResolveMiniPayFeeCurrencyOptions, } from "./utils/celo-fee-currency.js";
|
|
93
|
-
export { simulatePreparedStep, simulatePreparedStepWithFeeCurrency, type SimulatePreparedStepParams, } from "./utils/simulate-prepared-step.js";
|
|
94
|
-
export { parseTaggedErc20Approve, stripCelinaCalldataSuffix, type Erc20ApproveCall, } from "./utils/erc20-allowance-storage.js";
|
package/build/index.js
CHANGED
|
@@ -62,8 +62,4 @@ export { resolveSelfSessionLinks, formatSelfSessionLinksDisplay, } from "./utils
|
|
|
62
62
|
export { clearSelfSessionsForTests } from "./services/self-session-store.js";
|
|
63
63
|
export { flushCelinaAnalytics } from "./analytics/amplitude.js";
|
|
64
64
|
export { runWithAnalyticsWallet } from "./analytics/wallet-context.js";
|
|
65
|
-
export { isMiniPayBrowser } from "./utils/minipay.js";
|
|
66
|
-
export { MINIPAY_FEE_CURRENCIES, feeCurrencySymbol, resolveMiniPayFeeCurrency, } from "./utils/celo-fee-currency.js";
|
|
67
|
-
export { simulatePreparedStep, simulatePreparedStepWithFeeCurrency, } from "./utils/simulate-prepared-step.js";
|
|
68
|
-
export { parseTaggedErc20Approve, stripCelinaCalldataSuffix, } from "./utils/erc20-allowance-storage.js";
|
|
69
65
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Used when estimating swap/send gas before on-chain approval is confirmed.
|
|
4
4
|
*/
|
|
5
5
|
import { type Address, type Hex, type StateOverride } from "viem";
|
|
6
|
-
import type { PreparedTx } from "../types/prepared.js";
|
|
7
6
|
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
8
7
|
declare const ALLOWANCE_MAPPING_SLOTS: readonly [7n, 1n, 0n, 2n, 3n, 4n, 5n, 6n, 8n, 9n, 10n, 11n, 12n, 13n, 14n, 15n, 16n, 17n, 18n, 19n, 20n, 51n];
|
|
9
8
|
/**
|
|
@@ -19,12 +18,3 @@ export declare function erc20AllowanceStateOverride(token: Address, owner: Addre
|
|
|
19
18
|
export declare function isLikelyTransferFailed(error: unknown): boolean;
|
|
20
19
|
/** Mapping base slots to probe when simulating ERC-20 allowance (exported for tests). */
|
|
21
20
|
export { ALLOWANCE_MAPPING_SLOTS };
|
|
22
|
-
export type Erc20ApproveCall = {
|
|
23
|
-
token: `0x${string}`;
|
|
24
|
-
spender: `0x${string}`;
|
|
25
|
-
amount: bigint;
|
|
26
|
-
};
|
|
27
|
-
/** Strip CELINA attribution suffix before ABI decode. */
|
|
28
|
-
export declare function stripCelinaCalldataSuffix(data: Hex): Hex;
|
|
29
|
-
/** Parse ERC-20 approve from a prepared step (handles CELINA calldata suffix). */
|
|
30
|
-
export declare function parseTaggedErc20Approve(step: PreparedTx): Erc20ApproveCall | null;
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* ERC-20 allowance storage slot helpers for gas simulation with state overrides.
|
|
3
3
|
* Used when estimating swap/send gas before on-chain approval is confirmed.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import { CELINA_DATA_SUFFIX } from "../config/celina-tag.js";
|
|
5
|
+
import { encodeAbiParameters, keccak256, pad, parseAbiParameters, toHex, } from "viem";
|
|
7
6
|
/** Common base slots for ERC-20 allowance mappings (Mento stablecoins use 7). */
|
|
8
7
|
const ALLOWANCE_MAPPING_SLOTS = [
|
|
9
8
|
7n,
|
|
@@ -62,38 +61,4 @@ export function isLikelyTransferFailed(error) {
|
|
|
62
61
|
}
|
|
63
62
|
/** Mapping base slots to probe when simulating ERC-20 allowance (exported for tests). */
|
|
64
63
|
export { ALLOWANCE_MAPPING_SLOTS };
|
|
65
|
-
/** Strip CELINA attribution suffix before ABI decode. */
|
|
66
|
-
export function stripCelinaCalldataSuffix(data) {
|
|
67
|
-
if (!data || data === "0x") {
|
|
68
|
-
return data;
|
|
69
|
-
}
|
|
70
|
-
const suffix = CELINA_DATA_SUFFIX.slice(2);
|
|
71
|
-
if (data.toLowerCase().endsWith(suffix.toLowerCase())) {
|
|
72
|
-
return `0x${data.slice(2, data.length - suffix.length)}`;
|
|
73
|
-
}
|
|
74
|
-
return data;
|
|
75
|
-
}
|
|
76
|
-
/** Parse ERC-20 approve from a prepared step (handles CELINA calldata suffix). */
|
|
77
|
-
export function parseTaggedErc20Approve(step) {
|
|
78
|
-
if (!step.data || step.data === "0x") {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
const decoded = decodeFunctionData({
|
|
83
|
-
abi: erc20Abi,
|
|
84
|
-
data: stripCelinaCalldataSuffix(step.data),
|
|
85
|
-
});
|
|
86
|
-
if (decoded.functionName !== "approve") {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
token: step.to,
|
|
91
|
-
spender: decoded.args[0],
|
|
92
|
-
amount: decoded.args[1],
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
64
|
//# sourceMappingURL=erc20-allowance-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"erc20-allowance-storage.js","sourceRoot":"","sources":["../../src/utils/erc20-allowance-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,KAAK,GAIN,MAAM,MAAM,CAAC;AAEd,iFAAiF;AACjF,MAAM,uBAAuB,GAAG;IAC9B,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACK,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAc,EACd,OAAgB,EAChB,WAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,SAAS,CACd,mBAAmB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,KAAc,EACd,OAAgB,EAChB,MAAc,EACd,WAAmB;IAEnB,OAAO;QACL;YACE,OAAO,EAAE,KAAK;YACd,SAAS,EAAE;gBACT;oBACE,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;oBAC5D,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC1B;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/E,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,yFAAyF;AACzF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrewkimjoseph/celina-sdk",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.5",
|
|
4
4
|
"description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -27,11 +27,6 @@
|
|
|
27
27
|
"import": "./build/a2a/index.js",
|
|
28
28
|
"default": "./build/a2a/index.js"
|
|
29
29
|
},
|
|
30
|
-
"./preflight": {
|
|
31
|
-
"types": "./build/preflight.d.ts",
|
|
32
|
-
"import": "./build/preflight.js",
|
|
33
|
-
"default": "./build/preflight.js"
|
|
34
|
-
},
|
|
35
30
|
"./oasf": {
|
|
36
31
|
"types": "./build/oasf/index.d.ts",
|
|
37
32
|
"import": "./build/oasf/index.js",
|
package/build/preflight.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Browser-safe exports (no Node analytics / fs). Use in Celeste and other client bundles.
|
|
3
|
-
*/
|
|
4
|
-
export type { PreparedTx, SerializedPreparedFlow, } from "./types/prepared.js";
|
|
5
|
-
export { isMiniPayBrowser } from "./utils/minipay.js";
|
|
6
|
-
export { simulatePreparedStep, simulatePreparedStepWithFeeCurrency, type SimulatePreparedStepParams, } from "./utils/simulate-prepared-step.js";
|
|
7
|
-
export { feeCurrencySymbol, resolveMiniPayFeeCurrency, type ResolveMiniPayFeeCurrencyOptions, } from "./utils/celo-fee-currency.js";
|
package/build/preflight.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { isMiniPayBrowser } from "./utils/minipay.js";
|
|
2
|
-
export { simulatePreparedStep, simulatePreparedStepWithFeeCurrency, } from "./utils/simulate-prepared-step.js";
|
|
3
|
-
export { feeCurrencySymbol, resolveMiniPayFeeCurrency, } from "./utils/celo-fee-currency.js";
|
|
4
|
-
//# sourceMappingURL=preflight.js.map
|
package/build/preflight.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,mCAAmC,GAEpC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAE1B,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { type PublicClient } from "viem";
|
|
2
|
-
/**
|
|
3
|
-
* MiniPay gas currencies — never CELO.
|
|
4
|
-
* Balance checks use ERC-20 token addresses; eth_estimateGas / send use feeCurrency
|
|
5
|
-
* (CIP-64 adapters for 6-decimal USDT/USDC, token address for 18-decimal USDm).
|
|
6
|
-
*/
|
|
7
|
-
export declare const MINIPAY_FEE_CURRENCIES: readonly [{
|
|
8
|
-
readonly symbol: "USDT";
|
|
9
|
-
readonly token: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e";
|
|
10
|
-
readonly feeCurrency: "0x0e2a3e05bc9a16f5292a6170456a710cb89c6f72";
|
|
11
|
-
}, {
|
|
12
|
-
readonly symbol: "USDm";
|
|
13
|
-
readonly token: "0x765de816845861e75a25fca122bb6898b8b1282a";
|
|
14
|
-
readonly feeCurrency: "0x765de816845861e75a25fca122bb6898b8b1282a";
|
|
15
|
-
}, {
|
|
16
|
-
readonly symbol: "USDC";
|
|
17
|
-
readonly token: "0xceba9300f2b948710d2653dd7b07f33a8b32118c";
|
|
18
|
-
readonly feeCurrency: "0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B";
|
|
19
|
-
}];
|
|
20
|
-
export type ResolveMiniPayFeeCurrencyOptions = {
|
|
21
|
-
isMiniPay?: boolean;
|
|
22
|
-
feeCurrency?: `0x${string}`;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Resolve the fee currency for eth_estimateGas simulation.
|
|
26
|
-
* MiniPay: highest stable balance (USDT tiebreak); no CELO fallback.
|
|
27
|
-
* Other hosts: same stable heuristic, then native CELO when no stable balance.
|
|
28
|
-
*/
|
|
29
|
-
export declare function resolveMiniPayFeeCurrency(publicClient: PublicClient, from: `0x${string}`, options?: ResolveMiniPayFeeCurrencyOptions): Promise<`0x${string}` | undefined>;
|
|
30
|
-
/** Symbol for a known MiniPay fee currency or token address (for error messages). */
|
|
31
|
-
export declare function feeCurrencySymbol(address: `0x${string}` | undefined): string;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { erc20Abi } from "viem";
|
|
2
|
-
/**
|
|
3
|
-
* MiniPay gas currencies — never CELO.
|
|
4
|
-
* Balance checks use ERC-20 token addresses; eth_estimateGas / send use feeCurrency
|
|
5
|
-
* (CIP-64 adapters for 6-decimal USDT/USDC, token address for 18-decimal USDm).
|
|
6
|
-
*/
|
|
7
|
-
export const MINIPAY_FEE_CURRENCIES = [
|
|
8
|
-
{
|
|
9
|
-
symbol: "USDT",
|
|
10
|
-
token: "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
|
|
11
|
-
feeCurrency: "0x0e2a3e05bc9a16f5292a6170456a710cb89c6f72",
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
symbol: "USDm",
|
|
15
|
-
token: "0x765de816845861e75a25fca122bb6898b8b1282a",
|
|
16
|
-
feeCurrency: "0x765de816845861e75a25fca122bb6898b8b1282a",
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
symbol: "USDC",
|
|
20
|
-
token: "0xceba9300f2b948710d2653dd7b07f33a8b32118c",
|
|
21
|
-
feeCurrency: "0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B",
|
|
22
|
-
},
|
|
23
|
-
];
|
|
24
|
-
/**
|
|
25
|
-
* Resolve the fee currency for eth_estimateGas simulation.
|
|
26
|
-
* MiniPay: highest stable balance (USDT tiebreak); no CELO fallback.
|
|
27
|
-
* Other hosts: same stable heuristic, then native CELO when no stable balance.
|
|
28
|
-
*/
|
|
29
|
-
export async function resolveMiniPayFeeCurrency(publicClient, from, options) {
|
|
30
|
-
if (options?.feeCurrency) {
|
|
31
|
-
return options.feeCurrency;
|
|
32
|
-
}
|
|
33
|
-
const isMiniPay = options?.isMiniPay ?? false;
|
|
34
|
-
const results = await publicClient.multicall({
|
|
35
|
-
contracts: MINIPAY_FEE_CURRENCIES.map((entry) => ({
|
|
36
|
-
address: entry.token,
|
|
37
|
-
abi: erc20Abi,
|
|
38
|
-
functionName: "balanceOf",
|
|
39
|
-
args: [from],
|
|
40
|
-
})),
|
|
41
|
-
allowFailure: true,
|
|
42
|
-
});
|
|
43
|
-
let bestIndex = -1;
|
|
44
|
-
let bestBalance = 0n;
|
|
45
|
-
for (let i = 0; i < results.length; i++) {
|
|
46
|
-
const result = results[i];
|
|
47
|
-
if (result.status !== "success") {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
const balance = result.result;
|
|
51
|
-
if (balance > bestBalance) {
|
|
52
|
-
bestBalance = balance;
|
|
53
|
-
bestIndex = i;
|
|
54
|
-
}
|
|
55
|
-
else if (balance === bestBalance && balance > 0n && bestIndex >= 0) {
|
|
56
|
-
// USDT → USDm → USDC tiebreak (lower index wins)
|
|
57
|
-
if (i < bestIndex) {
|
|
58
|
-
bestIndex = i;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (bestIndex >= 0 && bestBalance > 0n) {
|
|
63
|
-
return MINIPAY_FEE_CURRENCIES[bestIndex].feeCurrency;
|
|
64
|
-
}
|
|
65
|
-
if (isMiniPay) {
|
|
66
|
-
throw new Error("No stablecoin balance for gas. MiniPay requires USDT, USDm, or USDC to pay transaction fees.");
|
|
67
|
-
}
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
/** Symbol for a known MiniPay fee currency or token address (for error messages). */
|
|
71
|
-
export function feeCurrencySymbol(address) {
|
|
72
|
-
if (!address) {
|
|
73
|
-
return "CELO";
|
|
74
|
-
}
|
|
75
|
-
const lower = address.toLowerCase();
|
|
76
|
-
const match = MINIPAY_FEE_CURRENCIES.find((entry) => entry.token.toLowerCase() === lower ||
|
|
77
|
-
entry.feeCurrency.toLowerCase() === lower);
|
|
78
|
-
if (match) {
|
|
79
|
-
return match.symbol;
|
|
80
|
-
}
|
|
81
|
-
return address;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=celo-fee-currency.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"celo-fee-currency.js","sourceRoot":"","sources":["../../src/utils/celo-fee-currency.ts"],"names":[],"mappings":"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"}
|
package/build/utils/minipay.d.ts
DELETED
package/build/utils/minipay.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minipay.js","sourceRoot":"","sources":["../../src/utils/minipay.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type PublicClient } from "viem";
|
|
2
|
-
import type { PreparedTx } from "../types/prepared.js";
|
|
3
|
-
export type SimulatePreparedStepParams = {
|
|
4
|
-
from: `0x${string}`;
|
|
5
|
-
step: PreparedTx;
|
|
6
|
-
isMiniPay?: boolean;
|
|
7
|
-
feeCurrency?: `0x${string}`;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Simulate a prepared transaction step before broadcast.
|
|
11
|
-
* Throws when eth_estimateGas would revert (e.g. spend token = fee currency, no gas headroom).
|
|
12
|
-
*/
|
|
13
|
-
export declare function simulatePreparedStep(publicClient: PublicClient, params: SimulatePreparedStepParams): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Resolve fee currency and simulate — for hosts that need the resolved value on send (MCP).
|
|
16
|
-
*/
|
|
17
|
-
export declare function simulatePreparedStepWithFeeCurrency(publicClient: PublicClient, params: SimulatePreparedStepParams): Promise<`0x${string}` | undefined>;
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { erc20Abi } from "viem";
|
|
2
|
-
import { feeCurrencySymbol, resolveMiniPayFeeCurrency } from "./celo-fee-currency.js";
|
|
3
|
-
import { parseTaggedErc20Approve } from "./erc20-allowance-storage.js";
|
|
4
|
-
import { isInsufficientBalanceSimulationError } from "./transaction-errors.js";
|
|
5
|
-
function simulationErrorMessage(step, feeCurrency, cause) {
|
|
6
|
-
const feeLabel = feeCurrencySymbol(feeCurrency);
|
|
7
|
-
const base = cause instanceof Error ? cause.message : String(cause);
|
|
8
|
-
if (isInsufficientBalanceSimulationError(cause)) {
|
|
9
|
-
return (`Preflight simulation failed for "${step.description}": insufficient balance. ` +
|
|
10
|
-
`Leave headroom for gas when paying fees in ${feeLabel}. (${base})`);
|
|
11
|
-
}
|
|
12
|
-
return `Preflight simulation failed for "${step.description}": ${base}`;
|
|
13
|
-
}
|
|
14
|
-
async function estimateStepGas(publicClient, from, step, feeCurrency) {
|
|
15
|
-
const value = step.value ? BigInt(step.value) : 0n;
|
|
16
|
-
const data = (step.data ?? "0x");
|
|
17
|
-
const approve = parseTaggedErc20Approve(step);
|
|
18
|
-
if (approve) {
|
|
19
|
-
await publicClient.estimateContractGas({
|
|
20
|
-
account: from,
|
|
21
|
-
address: approve.token,
|
|
22
|
-
abi: erc20Abi,
|
|
23
|
-
functionName: "approve",
|
|
24
|
-
args: [approve.spender, approve.amount],
|
|
25
|
-
...(feeCurrency ? { feeCurrency } : {}),
|
|
26
|
-
});
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const request = {
|
|
30
|
-
account: from,
|
|
31
|
-
to: step.to,
|
|
32
|
-
data,
|
|
33
|
-
value,
|
|
34
|
-
...(feeCurrency ? { feeCurrency } : {}),
|
|
35
|
-
};
|
|
36
|
-
await publicClient.estimateGas(request);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Simulate a prepared transaction step before broadcast.
|
|
40
|
-
* Throws when eth_estimateGas would revert (e.g. spend token = fee currency, no gas headroom).
|
|
41
|
-
*/
|
|
42
|
-
export async function simulatePreparedStep(publicClient, params) {
|
|
43
|
-
const { from, step, isMiniPay = false } = params;
|
|
44
|
-
const feeCurrency = params.feeCurrency ??
|
|
45
|
-
(await resolveMiniPayFeeCurrency(publicClient, from, { isMiniPay }));
|
|
46
|
-
try {
|
|
47
|
-
await estimateStepGas(publicClient, from, step, feeCurrency);
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
throw new Error(simulationErrorMessage(step, feeCurrency, error));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Resolve fee currency and simulate — for hosts that need the resolved value on send (MCP).
|
|
55
|
-
*/
|
|
56
|
-
export async function simulatePreparedStepWithFeeCurrency(publicClient, params) {
|
|
57
|
-
const { from, isMiniPay = false } = params;
|
|
58
|
-
const feeCurrency = params.feeCurrency ??
|
|
59
|
-
(await resolveMiniPayFeeCurrency(publicClient, from, { isMiniPay }));
|
|
60
|
-
try {
|
|
61
|
-
await estimateStepGas(publicClient, from, params.step, feeCurrency);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
throw new Error(simulationErrorMessage(params.step, feeCurrency, error));
|
|
65
|
-
}
|
|
66
|
-
return feeCurrency;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=simulate-prepared-step.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simulate-prepared-step.js","sourceRoot":"","sources":["../../src/utils/simulate-prepared-step.ts"],"names":[],"mappings":"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"}
|