@absol-labs/agent 0.12.0-rc.4 → 0.12.0-rc.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/cli/commands/claim.d.ts.map +1 -1
- package/dist/cli/commands/claim.js +1 -0
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.d.ts.map +1 -1
- package/dist/cli/commands/close.js +1 -0
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/invoke.d.ts.map +1 -1
- package/dist/cli/commands/invoke.js +1 -0
- package/dist/cli/commands/invoke.js.map +1 -1
- package/dist/cli/commands/open.d.ts.map +1 -1
- package/dist/cli/commands/open.js +10 -2
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/pay.d.ts.map +1 -1
- package/dist/cli/commands/pay.js +1 -0
- package/dist/cli/commands/pay.js.map +1 -1
- package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
- package/dist/cli/commands/reclaim-unverified.js +1 -0
- package/dist/cli/commands/reclaim-unverified.js.map +1 -1
- package/dist/cli/commands/reclaim.d.ts.map +1 -1
- package/dist/cli/commands/reclaim.js +1 -0
- package/dist/cli/commands/reclaim.js.map +1 -1
- package/dist/cli/commands/refund.d.ts.map +1 -1
- package/dist/cli/commands/refund.js +1 -0
- package/dist/cli/commands/refund.js.map +1 -1
- package/dist/cli/commands/streams.d.ts.map +1 -1
- package/dist/cli/commands/streams.js +35 -6
- package/dist/cli/commands/streams.js.map +1 -1
- package/dist/cli/privy.d.ts +7 -0
- package/dist/cli/privy.d.ts.map +1 -1
- package/dist/cli/privy.js +10 -7
- package/dist/cli/privy.js.map +1 -1
- package/dist/cli/scan-range.d.ts +34 -0
- package/dist/cli/scan-range.d.ts.map +1 -1
- package/dist/cli/scan-range.js +73 -0
- package/dist/cli/scan-range.js.map +1 -1
- package/dist/cli/wallet.d.ts +7 -0
- package/dist/cli/wallet.d.ts.map +1 -1
- package/dist/cli/wallet.js +6 -4
- package/dist/cli/wallet.js.map +1 -1
- package/dist/fees.d.ts +72 -0
- package/dist/fees.d.ts.map +1 -0
- package/dist/fees.js +114 -0
- package/dist/fees.js.map +1 -0
- package/dist/gateway/http-server.d.ts.map +1 -1
- package/dist/gateway/http-server.js +3 -2
- package/dist/gateway/http-server.js.map +1 -1
- package/dist/gateway/x402-opener-mode.d.ts +7 -0
- package/dist/gateway/x402-opener-mode.d.ts.map +1 -1
- package/dist/gateway/x402-opener-mode.js +7 -2
- package/dist/gateway/x402-opener-mode.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/network.d.ts +16 -0
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +32 -0
- package/dist/network.js.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.d.ts +22 -0
- package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.js +36 -19
- package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.d.ts +7 -4
- package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.js +7 -4
- package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
- package/dist/wallet/autonomous-wallet.d.ts +20 -1
- package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet.js +13 -9
- package/dist/wallet/autonomous-wallet.js.map +1 -1
- package/dist/wallet/lifecycle.d.ts +7 -2
- package/dist/wallet/lifecycle.d.ts.map +1 -1
- package/dist/wallet/lifecycle.js +21 -7
- package/dist/wallet/lifecycle.js.map +1 -1
- package/dist/wallet/privy-broker-server.d.ts +20 -1
- package/dist/wallet/privy-broker-server.d.ts.map +1 -1
- package/dist/wallet/privy-broker-server.js +63 -23
- package/dist/wallet/privy-broker-server.js.map +1 -1
- package/dist/wallet/privy-session-broker.d.ts +28 -0
- package/dist/wallet/privy-session-broker.d.ts.map +1 -1
- package/dist/wallet/privy-session-broker.js +40 -12
- package/dist/wallet/privy-session-broker.js.map +1 -1
- package/dist/x402-opener/facilitator-server.d.ts +14 -0
- package/dist/x402-opener/facilitator-server.d.ts.map +1 -1
- package/dist/x402-opener/facilitator-server.js +13 -0
- package/dist/x402-opener/facilitator-server.js.map +1 -1
- package/dist/x402-opener/refund-relay.d.ts +7 -0
- package/dist/x402-opener/refund-relay.d.ts.map +1 -1
- package/dist/x402-opener/refund-relay.js +3 -0
- package/dist/x402-opener/refund-relay.js.map +1 -1
- package/dist/x402-opener/scheme.d.ts +7 -0
- package/dist/x402-opener/scheme.d.ts.map +1 -1
- package/dist/x402-opener/scheme.js +3 -0
- package/dist/x402-opener/scheme.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/commands/claim.ts +1 -0
- package/src/cli/commands/close.ts +1 -0
- package/src/cli/commands/invoke.ts +1 -0
- package/src/cli/commands/open.ts +10 -2
- package/src/cli/commands/pay.ts +1 -0
- package/src/cli/commands/reclaim-unverified.ts +1 -0
- package/src/cli/commands/reclaim.ts +1 -0
- package/src/cli/commands/refund.ts +1 -0
- package/src/cli/commands/streams.ts +50 -5
- package/src/cli/privy.ts +35 -16
- package/src/cli/scan-range.ts +111 -0
- package/src/cli/wallet.ts +13 -4
- package/src/fees.ts +151 -0
- package/src/gateway/http-server.ts +7 -2
- package/src/gateway/x402-opener-mode.ts +14 -2
- package/src/index.ts +15 -0
- package/src/network.ts +39 -0
- package/src/wallet/autonomous-wallet-broker.ts +64 -18
- package/src/wallet/autonomous-wallet-protocol.ts +7 -4
- package/src/wallet/autonomous-wallet.ts +31 -10
- package/src/wallet/lifecycle.ts +27 -8
- package/src/wallet/privy-broker-server.ts +78 -26
- package/src/wallet/privy-session-broker.ts +73 -12
- package/src/x402-opener/facilitator-server.ts +23 -0
- package/src/x402-opener/refund-relay.ts +13 -0
- package/src/x402-opener/scheme.ts +13 -0
|
@@ -3,7 +3,7 @@ import { integerFlag, stringFlag } from "../args.js";
|
|
|
3
3
|
import { formatUsdc } from "../amounts.js";
|
|
4
4
|
import { assertTestnetRpc, escrowDeployBlock, } from "../config.js";
|
|
5
5
|
import { CliError, configError, usageError } from "../errors.js";
|
|
6
|
-
import { escrowScanRange } from "../scan-range.js";
|
|
6
|
+
import { classifyLogScanError, escrowScanRange, logScanPolicy, splitWindow, } from "../scan-range.js";
|
|
7
7
|
import { optionalCliWallet, PRIVATE_KEY_ENV } from "../wallet.js";
|
|
8
8
|
/** Indexed-party filters, and the `--role` values that select them. */
|
|
9
9
|
const ROLES = ["buyer", "operator"];
|
|
@@ -24,6 +24,13 @@ const SCAN_CONCURRENCY = 6;
|
|
|
24
24
|
*/
|
|
25
25
|
const WINDOW_ATTEMPTS = 3;
|
|
26
26
|
const RETRY_DELAY_MS = 400;
|
|
27
|
+
/**
|
|
28
|
+
* How many times one window may be halved after the node refuses it as too
|
|
29
|
+
* large (a block-range or result-count cap — see `classifyLogScanError`). Six
|
|
30
|
+
* halvings take a 10 000-block page to ~156 blocks across at most 64 calls, so
|
|
31
|
+
* a node that refuses every size still costs a bounded number of requests.
|
|
32
|
+
*/
|
|
33
|
+
const MAX_SPLIT_DEPTH = 6;
|
|
27
34
|
export const streamsCommand = {
|
|
28
35
|
name: "streams",
|
|
29
36
|
summary: "List the streams a wallet has opened, or been hired through",
|
|
@@ -50,7 +57,8 @@ export const streamsCommand = {
|
|
|
50
57
|
await assertTestnetRpc(config, () => read.getChainId());
|
|
51
58
|
const anchor = resolveAnchorBlock(args, config);
|
|
52
59
|
const head = await read.blockNumber();
|
|
53
|
-
const
|
|
60
|
+
const policy = logScanPolicy(config.network);
|
|
61
|
+
const range = escrowScanRange(head, anchor.block, policy.chunk, policy.maxWindows);
|
|
54
62
|
// Retention canary, before the scan is believed. A node that has pruned its
|
|
55
63
|
// log index answers a range it no longer retains with a SUCCESSFUL EMPTY
|
|
56
64
|
// result (measured on Base Sepolia: one public endpoint returned 0 logs for
|
|
@@ -168,7 +176,10 @@ async function resolveScanAddress(context) {
|
|
|
168
176
|
// This command broadcasts nothing and signs nothing, so it must not demand a
|
|
169
177
|
// wallet: `--address` is enough to read anyone's streams. A configured wallet
|
|
170
178
|
// is simply the default subject.
|
|
171
|
-
const wallet = await optionalCliWallet(env, {
|
|
179
|
+
const wallet = await optionalCliWallet(env, {
|
|
180
|
+
note: out.note,
|
|
181
|
+
network: context.config.network,
|
|
182
|
+
});
|
|
172
183
|
if (wallet === null) {
|
|
173
184
|
throw configError("metrik streams needs a wallet to know whose streams to list", `pass --address 0x… to list any address's streams without one, or set ${PRIVATE_KEY_ENV} (or the CDP or Privy variables).`);
|
|
174
185
|
}
|
|
@@ -205,12 +216,30 @@ async function scanOpenedStreams(read, address, roles, windows, sleep) {
|
|
|
205
216
|
// A wallet that is BOTH buyer and operator on one stream matches two filters.
|
|
206
217
|
const byStreamId = new Map();
|
|
207
218
|
let failedWindows = 0;
|
|
208
|
-
const readWindow = async (query) => {
|
|
219
|
+
const readWindow = async (query, depth = 0) => {
|
|
209
220
|
for (let attempt = 1; attempt <= WINDOW_ATTEMPTS; attempt++) {
|
|
210
221
|
try {
|
|
211
222
|
return await read.streamOpenedLogs(query);
|
|
212
223
|
}
|
|
213
|
-
catch {
|
|
224
|
+
catch (error) {
|
|
225
|
+
// The node refused the WINDOW (block-range or result-count cap):
|
|
226
|
+
// retrying it verbatim can never succeed, so scan its halves instead.
|
|
227
|
+
// A half that fails fails the whole window — it is reported, never
|
|
228
|
+
// silently dropped.
|
|
229
|
+
if (classifyLogScanError(error) === "range-too-large" &&
|
|
230
|
+
depth < MAX_SPLIT_DEPTH) {
|
|
231
|
+
const halves = splitWindow([query.fromBlock, query.toBlock]);
|
|
232
|
+
if (halves !== null) {
|
|
233
|
+
const parts = [];
|
|
234
|
+
for (const [fromBlock, toBlock] of halves) {
|
|
235
|
+
const logs = await readWindow({ ...query, fromBlock, toBlock }, depth + 1);
|
|
236
|
+
if (logs === null)
|
|
237
|
+
return null;
|
|
238
|
+
parts.push(...logs);
|
|
239
|
+
}
|
|
240
|
+
return parts;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
214
243
|
if (attempt < WINDOW_ATTEMPTS)
|
|
215
244
|
await sleep(RETRY_DELAY_MS * attempt);
|
|
216
245
|
}
|
|
@@ -220,7 +249,7 @@ async function scanOpenedStreams(read, address, roles, windows, sleep) {
|
|
|
220
249
|
const queries = windows.flatMap(([fromBlock, toBlock]) => roles.map((role) => ({ role, address, fromBlock, toBlock })));
|
|
221
250
|
for (let index = 0; index < queries.length; index += SCAN_CONCURRENCY) {
|
|
222
251
|
const batch = queries.slice(index, index + SCAN_CONCURRENCY);
|
|
223
|
-
const settled = await Promise.all(batch.map(readWindow));
|
|
252
|
+
const settled = await Promise.all(batch.map((query) => readWindow(query)));
|
|
224
253
|
for (const logs of settled) {
|
|
225
254
|
if (logs === null) {
|
|
226
255
|
failedWindows++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/privy.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MetrikNetwork } from "@absol-labs/sdk";
|
|
1
2
|
import { type Account, type Transport } from "viem";
|
|
2
3
|
import { type AutonomousWalletCredentialStore } from "../wallet/autonomous-wallet.js";
|
|
3
4
|
/**
|
|
@@ -69,6 +70,12 @@ export interface ResolvePrivyCliWalletOptions {
|
|
|
69
70
|
readonly store?: AutonomousWalletCredentialStore;
|
|
70
71
|
/** Test seam for the broker HTTP contract. */
|
|
71
72
|
readonly fetchImpl?: typeof fetch;
|
|
73
|
+
/**
|
|
74
|
+
* The network this run settles on (the CLI's resolved `--network` /
|
|
75
|
+
* `METRIK_NETWORK`). A Privy wallet signs on its broker's ONE network, so
|
|
76
|
+
* this must be that network. Default: the registry's default network.
|
|
77
|
+
*/
|
|
78
|
+
readonly network?: MetrikNetwork;
|
|
72
79
|
}
|
|
73
80
|
/**
|
|
74
81
|
* Resolves a Privy wallet from the environment, or `null` when no Privy
|
package/dist/cli/privy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.d.ts","sourceRoot":"","sources":["../../src/cli/privy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,MAAM,CAAC;AAEd,OAAO,EAQL,KAAK,+BAA+B,EAErC,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"privy.d.ts","sourceRoot":"","sources":["../../src/cli/privy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,MAAM,CAAC;AAEd,OAAO,EAQL,KAAK,+BAA+B,EAErC,MAAM,gCAAgC,CAAC;AASxC;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAExE,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AACpE,0EAA0E;AAC1E,eAAO,MAAM,oBAAoB,kCAAkC,CAAC;AACpE,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAC1E,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,+BAA+B,CAAC;AAC9D,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,cAAc,4KAMjB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,2IAKzB,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,uFAAuF;AACvF,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyC3B;AAUD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,4BAA4B;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,CAAC,EAAE,+BAA+B,CAAC;IACjD,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA+CxC"}
|
package/dist/cli/privy.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { custom, isAddress, getAddress, } from "viem";
|
|
2
2
|
import { AutonomousWalletError, EncryptedFileCredentialStore, HttpAutonomousWalletBroker, METRIK_AUTONOMOUS_WALLET_BROKER_URL, METRIK_WALLET_ENCRYPTION_KEY_ENV, createAutonomousWalletProvider, createDefaultAutonomousWalletStore, } from "../wallet/autonomous-wallet.js";
|
|
3
3
|
import { createPrivySessionProvider } from "../wallet/privy-session-provider.js";
|
|
4
|
-
import { PRIVY_BROKER_CHAIN_ID } from "../wallet/privy-session-broker.js";
|
|
5
4
|
import { defaultNetwork } from "../network.js";
|
|
6
5
|
import { createPrivyEmbeddedAccount, } from "../wallet/provider.js";
|
|
7
6
|
import { configError } from "./errors.js";
|
|
@@ -106,6 +105,7 @@ export async function resolvePrivyCliWallet(env, options = {}) {
|
|
|
106
105
|
sessionToken: sessionToken,
|
|
107
106
|
address: address,
|
|
108
107
|
appId: appId,
|
|
108
|
+
network: options.network ?? defaultNetwork(),
|
|
109
109
|
...(options.rpcUrl === undefined ? {} : { rpcUrl: options.rpcUrl }),
|
|
110
110
|
...(options.fetchImpl === undefined
|
|
111
111
|
? {}
|
|
@@ -142,15 +142,17 @@ async function resolveAutonomous(walletKey, brokerUrlOverride, env, options) {
|
|
|
142
142
|
catch (error) {
|
|
143
143
|
throw configError(`the autonomous wallet broker URL is not usable: ${describe(error)}`, `set ${PRIVY_BROKER_URL_ENV} to an HTTPS broker you control (the default is ${METRIK_AUTONOMOUS_WALLET_BROKER_URL}).`);
|
|
144
144
|
}
|
|
145
|
+
const network = options.network ?? defaultNetwork();
|
|
145
146
|
const provider = createAutonomousWalletProvider({
|
|
146
147
|
wallet: record,
|
|
147
148
|
broker,
|
|
149
|
+
network,
|
|
148
150
|
...(options.rpcUrl === undefined ? {} : { rpcUrl: options.rpcUrl }),
|
|
149
151
|
...(options.fetchImpl === undefined
|
|
150
152
|
? {}
|
|
151
153
|
: { fetchImpl: options.fetchImpl }),
|
|
152
154
|
});
|
|
153
|
-
const account = await embeddedAccount(provider, record.appId, record.address);
|
|
155
|
+
const account = await embeddedAccount(provider, record.appId, record.address, network);
|
|
154
156
|
return {
|
|
155
157
|
source: "privy-autonomous",
|
|
156
158
|
account,
|
|
@@ -170,14 +172,15 @@ function resolveSession(input) {
|
|
|
170
172
|
brokerUrl: input.brokerUrl,
|
|
171
173
|
sessionToken: input.sessionToken,
|
|
172
174
|
address,
|
|
173
|
-
|
|
175
|
+
chainId: input.network.chain.id,
|
|
176
|
+
rpcUrl: input.rpcUrl ?? input.network.rpcUrls[0],
|
|
174
177
|
...(input.fetchImpl === undefined ? {} : { fetchImpl: input.fetchImpl }),
|
|
175
178
|
});
|
|
176
179
|
}
|
|
177
180
|
catch (error) {
|
|
178
181
|
throw configError(`the Privy session broker URL is not usable: ${describe(error)}`, `set ${PRIVY_BROKER_URL_ENV} to the HTTPS broker that minted ${PRIVY_SESSION_TOKEN_ENV}. A session token is only valid against the broker that issued it.`);
|
|
179
182
|
}
|
|
180
|
-
return embeddedAccount(provider, input.appId, address).then((account) => ({
|
|
183
|
+
return embeddedAccount(provider, input.appId, address, input.network).then((account) => ({
|
|
181
184
|
source: "privy-session",
|
|
182
185
|
account,
|
|
183
186
|
transport: custom(provider),
|
|
@@ -192,17 +195,17 @@ function resolveSession(input) {
|
|
|
192
195
|
* adapter's session assertion is a pure local consistency check here — no
|
|
193
196
|
* network call happens while the wallet is being resolved.
|
|
194
197
|
*/
|
|
195
|
-
async function embeddedAccount(provider, appId, address) {
|
|
198
|
+
async function embeddedAccount(provider, appId, address, network) {
|
|
196
199
|
try {
|
|
197
200
|
return await createPrivyEmbeddedAccount({
|
|
198
201
|
appId,
|
|
199
202
|
address,
|
|
200
203
|
provider,
|
|
201
|
-
chainId:
|
|
204
|
+
chainId: network.chain.id,
|
|
202
205
|
});
|
|
203
206
|
}
|
|
204
207
|
catch (error) {
|
|
205
|
-
throw configError(`the Privy wallet could not be prepared: ${describe(error)}`, `check ${PRIVY_ENV_VARS.join(", ")}. Metrik Privy wallets are on the broker's network only (${
|
|
208
|
+
throw configError(`the Privy wallet could not be prepared: ${describe(error)}`, `check ${PRIVY_ENV_VARS.join(", ")}. Metrik Privy wallets are on the broker's network only (${network.name}, chain ${network.chain.id}).`);
|
|
206
209
|
}
|
|
207
210
|
}
|
|
208
211
|
/**
|
package/dist/cli/privy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privy.js","sourceRoot":"","sources":["../../src/cli/privy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"privy.js","sourceRoot":"","sources":["../../src/cli/privy.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/scan-range.d.ts
CHANGED
|
@@ -36,6 +36,40 @@ export declare const LOG_SCAN_CHUNK = 9999n;
|
|
|
36
36
|
* error — it is reported as `degraded`.
|
|
37
37
|
*/
|
|
38
38
|
export declare const LOG_SCAN_MAX_WINDOWS = 400;
|
|
39
|
+
/**
|
|
40
|
+
* The page size and window budget for one network's log scan. Both are
|
|
41
|
+
* per-network because the RPC cap is per-network and so is the block time: the
|
|
42
|
+
* budget is a TIME span of history, expressed in blocks.
|
|
43
|
+
*/
|
|
44
|
+
export interface LogScanPolicy {
|
|
45
|
+
/** getLogs page size; the window is `chunk + 1` blocks (bounds inclusive). */
|
|
46
|
+
readonly chunk: bigint;
|
|
47
|
+
/** Window ceiling for one scan; past it the scan is reported `degraded`. */
|
|
48
|
+
readonly maxWindows: number;
|
|
49
|
+
}
|
|
50
|
+
/** Today's values; every network without its own row uses exactly these. */
|
|
51
|
+
export declare const DEFAULT_LOG_SCAN_POLICY: LogScanPolicy;
|
|
52
|
+
/** The log-scan policy for a network: its own row, else {@link DEFAULT_LOG_SCAN_POLICY}. */
|
|
53
|
+
export declare function logScanPolicy(network: {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
}): LogScanPolicy;
|
|
56
|
+
/**
|
|
57
|
+
* What a failed `eth_getLogs` call means for the scan:
|
|
58
|
+
*
|
|
59
|
+
* - `range-too-large`: the node refused the WINDOW, not the request — a
|
|
60
|
+
* block-range cap (`-32012` on Arc, `-32614` on public Base RPCs) or a
|
|
61
|
+
* result-count cap (`-32602` "exceeds max results", sometimes 2 000 logs on
|
|
62
|
+
* Arc). Retrying the same window can never succeed; a smaller one can.
|
|
63
|
+
* - `rate-limited`: HTTP 429 / `-32005`. Transient; retry the same window.
|
|
64
|
+
* - `other`: anything else. Retried as before.
|
|
65
|
+
*/
|
|
66
|
+
export type LogScanErrorKind = "range-too-large" | "rate-limited" | "other";
|
|
67
|
+
export declare function classifyLogScanError(error: unknown): LogScanErrorKind;
|
|
68
|
+
/**
|
|
69
|
+
* Halve an inclusive window, or `null` for a single block (which cannot be
|
|
70
|
+
* split, so a node that refuses even that is a genuinely failed window).
|
|
71
|
+
*/
|
|
72
|
+
export declare function splitWindow(window: readonly [bigint, bigint]): readonly [readonly [bigint, bigint], readonly [bigint, bigint]] | null;
|
|
39
73
|
export interface ScanRange {
|
|
40
74
|
readonly fromBlock: bigint;
|
|
41
75
|
readonly toBlock: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-range.d.ts","sourceRoot":"","sources":["../../src/cli/scan-range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACzD,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAuB,EAC9B,UAAU,GAAE,MAA6B,GACxC,SAAS,CAaX"}
|
|
1
|
+
{"version":3,"file":"scan-range.d.ts","sourceRoot":"","sources":["../../src/cli/scan-range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAS,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,EAAE,aAGrC,CAAC;AAcF,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAE7E;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,GAAG,OAAO,CAAC;AAO5E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAqBrE;AAsBD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAQxE;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACzD,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAuB,EAC9B,UAAU,GAAE,MAA6B,GACxC,SAAS,CAaX"}
|
package/dist/cli/scan-range.js
CHANGED
|
@@ -36,6 +36,79 @@ export const LOG_SCAN_CHUNK = 9999n;
|
|
|
36
36
|
* error — it is reported as `degraded`.
|
|
37
37
|
*/
|
|
38
38
|
export const LOG_SCAN_MAX_WINDOWS = 400;
|
|
39
|
+
/** Today's values; every network without its own row uses exactly these. */
|
|
40
|
+
export const DEFAULT_LOG_SCAN_POLICY = {
|
|
41
|
+
chunk: LOG_SCAN_CHUNK,
|
|
42
|
+
maxWindows: LOG_SCAN_MAX_WINDOWS,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Per-network overrides, keyed by registry id (never chain id).
|
|
46
|
+
*
|
|
47
|
+
* Arc testnet: `eth_getLogs` is capped at 10 000 blocks (`-32012`), so the page
|
|
48
|
+
* stays 9 999. Its blocks are ~0.5 s against Base Sepolia's ~2 s, so the same
|
|
49
|
+
* TIME budget the default buys (400 windows x 10 000 blocks x 2 s ~= 92 days)
|
|
50
|
+
* needs four times the windows: 1 600.
|
|
51
|
+
*/
|
|
52
|
+
const NETWORK_LOG_SCAN = {
|
|
53
|
+
arcTestnet: { chunk: 9999n, maxWindows: 1_600 },
|
|
54
|
+
};
|
|
55
|
+
/** The log-scan policy for a network: its own row, else {@link DEFAULT_LOG_SCAN_POLICY}. */
|
|
56
|
+
export function logScanPolicy(network) {
|
|
57
|
+
return NETWORK_LOG_SCAN[network.id] ?? DEFAULT_LOG_SCAN_POLICY;
|
|
58
|
+
}
|
|
59
|
+
const RANGE_CODES = new Set([-32012, -32614]);
|
|
60
|
+
const RANGE_TEXT = /exceeds? (the )?max(imum)? results|max(imum)? results|too many results|query returned more than|block range|range (is )?too (large|wide)|limited to a? ?[0-9,]+ (block )?range|range limit/i;
|
|
61
|
+
const RATE_TEXT = /rate.?limit|too many requests/i;
|
|
62
|
+
export function classifyLogScanError(error) {
|
|
63
|
+
let rateLimited = false;
|
|
64
|
+
for (const node of errorChain(error)) {
|
|
65
|
+
const code = node.code;
|
|
66
|
+
const text = [node.message, node.details, node.shortMessage]
|
|
67
|
+
.filter((value) => typeof value === "string")
|
|
68
|
+
.join(" ");
|
|
69
|
+
if (typeof code === "number" && RANGE_CODES.has(code)) {
|
|
70
|
+
return "range-too-large";
|
|
71
|
+
}
|
|
72
|
+
if (code === -32602 && /results|range|block/i.test(text)) {
|
|
73
|
+
return "range-too-large";
|
|
74
|
+
}
|
|
75
|
+
if (RANGE_TEXT.test(text))
|
|
76
|
+
return "range-too-large";
|
|
77
|
+
if (code === -32005 || code === 429 || node.status === 429) {
|
|
78
|
+
rateLimited = true;
|
|
79
|
+
}
|
|
80
|
+
else if (RATE_TEXT.test(text)) {
|
|
81
|
+
rateLimited = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return rateLimited ? "rate-limited" : "other";
|
|
85
|
+
}
|
|
86
|
+
/** The error and its `cause` chain (viem nests the RPC error), bounded. */
|
|
87
|
+
function errorChain(error) {
|
|
88
|
+
const chain = [];
|
|
89
|
+
let current = error;
|
|
90
|
+
for (let depth = 0; depth < 8 && current !== null; depth++) {
|
|
91
|
+
if (typeof current !== "object" && typeof current !== "function")
|
|
92
|
+
break;
|
|
93
|
+
chain.push(current);
|
|
94
|
+
current = current.cause ?? null;
|
|
95
|
+
}
|
|
96
|
+
return chain;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Halve an inclusive window, or `null` for a single block (which cannot be
|
|
100
|
+
* split, so a node that refuses even that is a genuinely failed window).
|
|
101
|
+
*/
|
|
102
|
+
export function splitWindow(window) {
|
|
103
|
+
const [from, to] = window;
|
|
104
|
+
if (to <= from)
|
|
105
|
+
return null;
|
|
106
|
+
const mid = from + (to - from) / 2n;
|
|
107
|
+
return [
|
|
108
|
+
[from, mid],
|
|
109
|
+
[mid + 1n, to],
|
|
110
|
+
];
|
|
111
|
+
}
|
|
39
112
|
/**
|
|
40
113
|
* Page `[anchor, head]` into non-overlapping inclusive windows.
|
|
41
114
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-range.js","sourceRoot":"","sources":["../../src/cli/scan-range.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAM,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"scan-range.js","sourceRoot":"","sources":["../../src/cli/scan-range.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/wallet.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MetrikNetwork } from "@absol-labs/sdk";
|
|
1
2
|
import type { Account, LocalAccount, Transport } from "viem";
|
|
2
3
|
import type { AutonomousWalletCredentialStore } from "../wallet/autonomous-wallet.js";
|
|
3
4
|
import { type PrivyCliWalletSource, type PrivySpendPolicy } from "./privy.js";
|
|
@@ -105,6 +106,12 @@ export interface ResolveCliWalletOptions {
|
|
|
105
106
|
readonly store?: AutonomousWalletCredentialStore;
|
|
106
107
|
/** Test seam: the `fetch` the Privy broker is reached through. */
|
|
107
108
|
readonly fetchImpl?: typeof fetch;
|
|
109
|
+
/**
|
|
110
|
+
* The network this run settles on. Only the Privy paths use it at resolution
|
|
111
|
+
* time (their provider answers `eth_chainId` locally). Default: the
|
|
112
|
+
* registry's default network.
|
|
113
|
+
*/
|
|
114
|
+
readonly network?: MetrikNetwork;
|
|
108
115
|
}
|
|
109
116
|
/**
|
|
110
117
|
* Resolves the signing wallet, or throws an actionable configuration error.
|
package/dist/cli/wallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/wallet.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { privateKeyToAccount } from "viem/accounts";
|
|
2
2
|
import { resolveAgentWallet } from "../wallet/provider.js";
|
|
3
|
+
import { noGasTokenPhrase } from "../network.js";
|
|
3
4
|
import { configError } from "./errors.js";
|
|
4
5
|
import { PRIVY_ENV_VARS, PRIVY_SESSION_ENV_VARS, PRIVY_WALLET_KEY_ENV, resolvePrivyCliWallet, } from "./privy.js";
|
|
5
6
|
/**
|
|
@@ -70,13 +71,14 @@ const ENV_ONLY = "All are read from the environment only — never pass a creden
|
|
|
70
71
|
* transaction is broadcast: an off-chain signature costs nothing, and telling
|
|
71
72
|
* someone to fund a key for one sends them to a faucet for no reason.
|
|
72
73
|
*/
|
|
73
|
-
function walletHint(purpose) {
|
|
74
|
+
function walletHint(purpose, network) {
|
|
75
|
+
const noGas = noGasTokenPhrase(network);
|
|
74
76
|
if (purpose === "x402-payment") {
|
|
75
|
-
return (`export ${PRIVATE_KEY_ENV}=0x… (a testnet key holding USDC;
|
|
77
|
+
return (`export ${PRIVATE_KEY_ENV}=0x… (a testnet key holding USDC; ${noGas} needed), or configure a Coinbase CDP wallet with ` +
|
|
76
78
|
`${CDP_ENV_VARS.join(", ")}. A Privy wallet cannot pay x402: its broker does not sign EIP-3009. ${ENV_ONLY}`);
|
|
77
79
|
}
|
|
78
80
|
if (purpose === "payer-close") {
|
|
79
|
-
return (`export ${PRIVATE_KEY_ENV}=0x… (the key that paid; it needs
|
|
81
|
+
return (`export ${PRIVATE_KEY_ENV}=0x… (the key that paid; it needs ${noGas} or USDC), or configure the paying Coinbase CDP wallet with ` +
|
|
80
82
|
`${CDP_ENV_VARS.join(", ")}. A Privy wallet cannot sign the Close. ${ENV_ONLY}`);
|
|
81
83
|
}
|
|
82
84
|
return (`export ${PRIVATE_KEY_ENV}=0x… (${purpose === "transaction" ? "a funded testnet key" : "a testnet key; it needs no funds for this"}), configure a Coinbase CDP wallet with ` +
|
|
@@ -94,7 +96,7 @@ export async function resolveCliWallet(env, options = {}) {
|
|
|
94
96
|
const wallet = await optionalCliWallet(env, options);
|
|
95
97
|
if (wallet === null) {
|
|
96
98
|
const purpose = options.purpose ?? "transaction";
|
|
97
|
-
throw configError(`this command ${PURPOSE_TEXT[purpose]} and needs a wallet: none of ${PRIVATE_KEY_ENV}, the CDP variables or the Privy variables are set`, walletHint(purpose));
|
|
99
|
+
throw configError(`this command ${PURPOSE_TEXT[purpose]} and needs a wallet: none of ${PRIVATE_KEY_ENV}, the CDP variables or the Privy variables are set`, walletHint(purpose, options.network));
|
|
98
100
|
}
|
|
99
101
|
return wallet;
|
|
100
102
|
}
|
package/dist/cli/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/fees.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { MetrikNetwork } from "@absol-labs/sdk";
|
|
2
|
+
/**
|
|
3
|
+
* A per-network floor under `maxFeePerGas` for the transactions this package
|
|
4
|
+
* SENDS ITSELF: the x402 opener facilitator's relayer, the gasless refund
|
|
5
|
+
* relay, and the Privy brokers.
|
|
6
|
+
*
|
|
7
|
+
* Why it exists: some chains drop an under-priced transaction silently instead
|
|
8
|
+
* of rejecting it. Arc fixes its base fee (20 gwei at the time of writing) and a
|
|
9
|
+
* transaction whose `maxFeePerGas` is below it is never mined and never
|
|
10
|
+
* reported — the sender waits on a hash that will not land. An estimate that
|
|
11
|
+
* lags, or a wallet backend that fills a generic default, can produce exactly
|
|
12
|
+
* that transaction.
|
|
13
|
+
*
|
|
14
|
+
* Where the floor comes from, highest wins:
|
|
15
|
+
*
|
|
16
|
+
* 1. the network registry's `minMaxFeePerGas` (wei), when the installed
|
|
17
|
+
* `@absol-labs/sdk` records one for the network;
|
|
18
|
+
* 2. `METRIK_MIN_MAX_FEE_GWEI` (decimal gwei) in the process environment.
|
|
19
|
+
*
|
|
20
|
+
* Both unset — Base Sepolia today — means NO floor, and every send path passes
|
|
21
|
+
* no fee fields at all, so its transactions are byte-for-byte what they were
|
|
22
|
+
* before this module existed. The env value can only RAISE a registry floor,
|
|
23
|
+
* never lower it: a floor is a liveness guarantee, and an operator typo must
|
|
24
|
+
* not be able to re-open the silent-drop it closes.
|
|
25
|
+
*/
|
|
26
|
+
/** Environment variable for an operator-set fee floor, in decimal gwei. */
|
|
27
|
+
export declare const MIN_MAX_FEE_GWEI_ENV = "METRIK_MIN_MAX_FEE_GWEI";
|
|
28
|
+
/** EIP-1559 fees, as viem's `estimateFeesPerGas` returns them. */
|
|
29
|
+
export interface Eip1559Fees {
|
|
30
|
+
readonly maxFeePerGas: bigint;
|
|
31
|
+
readonly maxPriorityFeePerGas: bigint;
|
|
32
|
+
}
|
|
33
|
+
/** What {@link flooredFees} needs; a viem `PublicClient` satisfies it. */
|
|
34
|
+
export interface FeeEstimator {
|
|
35
|
+
estimateFeesPerGas(): Promise<{
|
|
36
|
+
readonly maxFeePerGas?: bigint | undefined;
|
|
37
|
+
readonly maxPriorityFeePerGas?: bigint | undefined;
|
|
38
|
+
readonly gasPrice?: bigint | undefined;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The registry's `minMaxFeePerGas` for `network`, in wei, or `undefined` when
|
|
43
|
+
* the installed SDK does not record one. Read structurally so this package
|
|
44
|
+
* builds against an SDK that predates the field.
|
|
45
|
+
*/
|
|
46
|
+
export declare function registryMinMaxFeePerGas(network: MetrikNetwork | undefined): bigint | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Parse `METRIK_MIN_MAX_FEE_GWEI` (decimal gwei, e.g. `20` or `20.5`) to wei.
|
|
49
|
+
* Unset or empty is `undefined`. Anything else that is not a positive amount
|
|
50
|
+
* throws: a mistyped floor must stop the process at startup, not be ignored.
|
|
51
|
+
*/
|
|
52
|
+
export declare function envMinMaxFeePerGas(env?: NodeJS.ProcessEnv): bigint | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* The `maxFeePerGas` floor for `network` (wei), or `undefined` for none. See
|
|
55
|
+
* the module comment for precedence.
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveMinMaxFeePerGas(network: MetrikNetwork | undefined, env?: NodeJS.ProcessEnv): bigint | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Raise estimated fees to the floor: `maxFeePerGas` is never below `floor`, and
|
|
60
|
+
* `maxPriorityFeePerGas` never exceeds `maxFeePerGas` (which a node rejects).
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyFeeFloor(fees: Eip1559Fees, floor: bigint): Eip1559Fees;
|
|
63
|
+
/**
|
|
64
|
+
* The fee fields a send path should add: `undefined` when there is no floor (so
|
|
65
|
+
* the caller adds NOTHING and its transaction is unchanged), otherwise the
|
|
66
|
+
* node's current EIP-1559 estimate raised to the floor.
|
|
67
|
+
*
|
|
68
|
+
* Fails closed: if the estimate cannot be read, this throws rather than
|
|
69
|
+
* broadcasting a transaction whose fee nobody checked against the floor.
|
|
70
|
+
*/
|
|
71
|
+
export declare function flooredFees(estimator: FeeEstimator, floor: bigint | undefined): Promise<Eip1559Fees | undefined>;
|
|
72
|
+
//# sourceMappingURL=fees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../src/fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,kBAAkB,IAAI,OAAO,CAAC;QAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACxC,CAAC,CAAC;CACJ;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,MAAM,GAAG,SAAS,CAgBpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAepB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAO3E;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAgBlC"}
|