viem 3.0.0-next.12 → 3.0.0-next.13
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/chains/definitions/creditCoin3Devnet.d.ts +6 -0
- package/dist/chains/definitions/creditCoin3Devnet.d.ts.map +1 -1
- package/dist/chains/definitions/creditCoin3Devnet.js +6 -0
- package/dist/chains/definitions/creditCoin3Devnet.js.map +1 -1
- package/dist/chains/definitions/creditCoin3Mainnet.d.ts +5 -1
- package/dist/chains/definitions/creditCoin3Mainnet.d.ts.map +1 -1
- package/dist/chains/definitions/creditCoin3Mainnet.js +4 -0
- package/dist/chains/definitions/creditCoin3Mainnet.js.map +1 -1
- package/dist/chains/definitions/creditCoin3Testnet.d.ts +5 -1
- package/dist/chains/definitions/creditCoin3Testnet.d.ts.map +1 -1
- package/dist/chains/definitions/creditCoin3Testnet.js +4 -0
- package/dist/chains/definitions/creditCoin3Testnet.js.map +1 -1
- package/dist/chains/definitions/crymad.d.ts +25 -0
- package/dist/chains/definitions/crymad.d.ts.map +1 -0
- package/dist/chains/definitions/crymad.js +23 -0
- package/dist/chains/definitions/crymad.js.map +1 -0
- package/dist/chains/definitions/crymadL2.d.ts +26 -0
- package/dist/chains/definitions/crymadL2.d.ts.map +1 -0
- package/dist/chains/definitions/crymadL2.js +24 -0
- package/dist/chains/definitions/crymadL2.js.map +1 -0
- package/dist/chains/definitions/kortana.d.ts +18 -0
- package/dist/chains/definitions/kortana.d.ts.map +1 -0
- package/dist/chains/definitions/kortana.js +16 -0
- package/dist/chains/definitions/kortana.js.map +1 -0
- package/dist/chains/index.d.ts +3 -0
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +3 -0
- package/dist/chains/index.js.map +1 -1
- package/dist/core/actions/wallet/sendCalls.d.ts.map +1 -1
- package/dist/core/actions/wallet/sendCalls.js +1 -0
- package/dist/core/actions/wallet/sendCalls.js.map +1 -1
- package/dist/erc4337/actions/userOperation/waitForReceipt.js +1 -1
- package/dist/erc4337/actions/userOperation/waitForReceipt.js.map +1 -1
- package/dist/node/transports/ipc.d.ts.map +1 -1
- package/dist/node/transports/ipc.js +20 -2
- package/dist/node/transports/ipc.js.map +1 -1
- package/dist/tempo/Abis.d.ts +778 -174
- package/dist/tempo/Abis.d.ts.map +1 -1
- package/dist/tempo/Abis.js +178 -37
- package/dist/tempo/Abis.js.map +1 -1
- package/dist/tempo/Capabilities.d.ts +7 -13
- package/dist/tempo/Capabilities.d.ts.map +1 -1
- package/dist/tempo/Client.d.ts +0 -5
- package/dist/tempo/Client.d.ts.map +1 -1
- package/dist/tempo/Client.js +3 -10
- package/dist/tempo/Client.js.map +1 -1
- package/dist/tempo/ExecutionError.d.ts +81 -0
- package/dist/tempo/ExecutionError.d.ts.map +1 -0
- package/dist/tempo/ExecutionError.js +309 -0
- package/dist/tempo/ExecutionError.js.map +1 -0
- package/dist/tempo/Relay.d.ts +303 -0
- package/dist/tempo/Relay.d.ts.map +1 -0
- package/dist/tempo/Relay.js +170 -0
- package/dist/tempo/Relay.js.map +1 -0
- package/dist/tempo/Selectors.d.ts +16 -5
- package/dist/tempo/Selectors.d.ts.map +1 -1
- package/dist/tempo/Selectors.js +16 -5
- package/dist/tempo/Selectors.js.map +1 -1
- package/dist/tempo/Transport.d.ts +11 -11
- package/dist/tempo/Transport.d.ts.map +1 -1
- package/dist/tempo/Transport.js +22 -51
- package/dist/tempo/Transport.js.map +1 -1
- package/dist/tempo/actions/token/burn.d.ts +38 -9
- package/dist/tempo/actions/token/burn.d.ts.map +1 -1
- package/dist/tempo/actions/token/burn.js +12 -5
- package/dist/tempo/actions/token/burn.js.map +1 -1
- package/dist/tempo/actions/token/burnSync.d.ts +2 -0
- package/dist/tempo/actions/token/burnSync.d.ts.map +1 -1
- package/dist/tempo/chainConfig.d.ts +4 -5
- package/dist/tempo/chainConfig.d.ts.map +1 -1
- package/dist/tempo/chainConfig.js +6 -1
- package/dist/tempo/chainConfig.js.map +1 -1
- package/dist/tempo/index.d.ts +5 -3
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +5 -3
- package/dist/tempo/index.js.map +1 -1
- package/dist/tempo/internal/relay/cache.d.ts +9 -0
- package/dist/tempo/internal/relay/cache.d.ts.map +1 -0
- package/dist/tempo/internal/relay/cache.js +72 -0
- package/dist/tempo/internal/relay/cache.js.map +1 -0
- package/dist/tempo/internal/relay/deadline.d.ts +4 -0
- package/dist/tempo/internal/relay/deadline.d.ts.map +1 -0
- package/dist/tempo/internal/relay/deadline.js +34 -0
- package/dist/tempo/internal/relay/deadline.js.map +1 -0
- package/dist/tempo/internal/relay/error.d.ts +47 -0
- package/dist/tempo/internal/relay/error.d.ts.map +1 -0
- package/dist/tempo/internal/relay/error.js +101 -0
- package/dist/tempo/internal/relay/error.js.map +1 -0
- package/dist/tempo/internal/relay/feePayer.d.ts +70 -0
- package/dist/tempo/internal/relay/feePayer.d.ts.map +1 -0
- package/dist/tempo/internal/relay/feePayer.js +442 -0
- package/dist/tempo/internal/relay/feePayer.js.map +1 -0
- package/dist/tempo/internal/relay/feeToken.d.ts +38 -0
- package/dist/tempo/internal/relay/feeToken.d.ts.map +1 -0
- package/dist/tempo/internal/relay/feeToken.js +143 -0
- package/dist/tempo/internal/relay/feeToken.js.map +1 -0
- package/dist/tempo/internal/relay/multisig.d.ts +4 -0
- package/dist/tempo/internal/relay/multisig.d.ts.map +1 -0
- package/dist/tempo/{Multisig.js → internal/relay/multisig.js} +134 -126
- package/dist/tempo/internal/relay/multisig.js.map +1 -0
- package/dist/tempo/internal/relay/plugin.d.ts +5 -0
- package/dist/tempo/internal/relay/plugin.d.ts.map +1 -0
- package/dist/tempo/internal/relay/plugin.js +10 -0
- package/dist/tempo/internal/relay/plugin.js.map +1 -0
- package/dist/tempo/internal/relay/preflight.d.ts +17 -0
- package/dist/tempo/internal/relay/preflight.d.ts.map +1 -0
- package/dist/tempo/internal/relay/preflight.js +53 -0
- package/dist/tempo/internal/relay/preflight.js.map +1 -0
- package/dist/tempo/internal/relay/request.d.ts +16 -0
- package/dist/tempo/internal/relay/request.d.ts.map +1 -0
- package/dist/tempo/internal/relay/request.js +327 -0
- package/dist/tempo/internal/relay/request.js.map +1 -0
- package/dist/tempo/internal/relay/simulate.d.ts +62 -0
- package/dist/tempo/internal/relay/simulate.d.ts.map +1 -0
- package/dist/tempo/internal/relay/simulate.js +284 -0
- package/dist/tempo/internal/relay/simulate.js.map +1 -0
- package/dist/tempo/internal/relay/utils.d.ts +346 -0
- package/dist/tempo/internal/relay/utils.d.ts.map +1 -0
- package/dist/tempo/internal/relay/utils.js +185 -0
- package/dist/tempo/internal/relay/utils.js.map +1 -0
- package/dist/tempo/internal/relay/virtualAddress.d.ts +9 -0
- package/dist/tempo/internal/relay/virtualAddress.d.ts.map +1 -0
- package/dist/tempo/internal/relay/virtualAddress.js +73 -0
- package/dist/tempo/internal/relay/virtualAddress.js.map +1 -0
- package/dist/tempo/internal/relay.d.ts +4 -0
- package/dist/tempo/internal/relay.d.ts.map +1 -0
- package/dist/tempo/internal/relay.js +132 -0
- package/dist/tempo/internal/relay.js.map +1 -0
- package/dist/tokens/definitions/ousd.d.ts +26 -0
- package/dist/tokens/definitions/ousd.d.ts.map +1 -0
- package/dist/tokens/definitions/ousd.js +26 -0
- package/dist/tokens/definitions/ousd.js.map +1 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +2 -0
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/sets.d.ts +33 -0
- package/dist/tokens/sets.d.ts.map +1 -1
- package/dist/tokens/sets.js +4 -1
- package/dist/tokens/sets.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/chains/definitions/creditCoin3Devnet.ts +6 -0
- package/src/chains/definitions/creditCoin3Mainnet.ts +4 -0
- package/src/chains/definitions/creditCoin3Testnet.ts +4 -0
- package/src/chains/definitions/crymad.ts +23 -0
- package/src/chains/definitions/crymadL2.ts +24 -0
- package/src/chains/definitions/kortana.ts +16 -0
- package/src/chains/index.ts +3 -0
- package/src/core/actions/wallet/sendCalls.ts +1 -0
- package/src/erc4337/actions/userOperation/waitForReceipt.ts +1 -1
- package/src/node/transports/ipc.ts +17 -2
- package/src/tempo/Abis.ts +179 -37
- package/src/tempo/Account.ts +1 -1
- package/src/tempo/Capabilities.ts +7 -15
- package/src/tempo/Client.ts +3 -23
- package/src/tempo/ExecutionError.ts +428 -0
- package/src/tempo/Relay.ts +430 -0
- package/src/tempo/Selectors.ts +25 -11
- package/src/tempo/Transport.ts +71 -41
- package/src/tempo/actions/token/burn.ts +21 -9
- package/src/tempo/actions/token/burnSync.ts +2 -0
- package/src/tempo/chainConfig.ts +9 -6
- package/src/tempo/index.ts +7 -4
- package/src/tempo/internal/relay/cache.ts +82 -0
- package/src/tempo/internal/relay/deadline.ts +45 -0
- package/src/tempo/internal/relay/error.ts +129 -0
- package/src/tempo/internal/relay/feePayer.ts +693 -0
- package/src/tempo/internal/relay/feeToken.ts +190 -0
- package/src/tempo/{Multisig.ts → internal/relay/multisig.ts} +165 -193
- package/src/tempo/internal/relay/plugin.ts +13 -0
- package/src/tempo/internal/relay/preflight.ts +83 -0
- package/src/tempo/internal/relay/request.ts +401 -0
- package/src/tempo/internal/relay/simulate.ts +394 -0
- package/src/tempo/internal/relay/utils.ts +213 -0
- package/src/tempo/internal/relay/virtualAddress.ts +95 -0
- package/src/tempo/internal/relay.ts +149 -0
- package/src/tokens/definitions/ousd.ts +26 -0
- package/src/tokens/index.ts +2 -0
- package/src/tokens/sets.ts +4 -1
- package/src/version.ts +1 -1
- package/dist/tempo/Multisig.d.ts +0 -39
- package/dist/tempo/Multisig.d.ts.map +0 -1
- package/dist/tempo/Multisig.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACpB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,aAAa,EACb,MAAM,EACN,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAEjB,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,2EAA2E;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,0CAA0C;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,wDAAwD;AACxD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,wEAAwE;AACxE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,gFAAgF;AAChF,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,0CAA0C;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,4CAA4C;AAC5C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,qEAAqE;AACrE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,wFAAwF;AACxF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7E,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,0DAA0D;AAC1D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,4CAA4C;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AAEvE,4DAA4D;AAC5D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,kEAAkE;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,0DAA0D;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,8EAA8E;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACpB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,aAAa,EACb,MAAM,EACN,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAEjB,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,2EAA2E;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,0CAA0C;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,wDAAwD;AACxD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,wEAAwE;AACxE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,gFAAgF;AAChF,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,0CAA0C;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,4CAA4C;AAC5C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,qEAAqE;AACrE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,wFAAwF;AACxF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7E,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,uEAAuE;AACvE,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD,0DAA0D;AAC1D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,4CAA4C;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AAEvE,4DAA4D;AAC5D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,yCAAyC;AACzC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,kEAAkE;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,0DAA0D;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,mDAAmD;AACnD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,sEAAsE;AACtE,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAKnD,mBAAmB,0BAA0B,CAAA;AAE7C,yBAAyB;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
|
package/dist/tempo/index.js
CHANGED
|
@@ -27,6 +27,8 @@ export * as Client from './Client.js';
|
|
|
27
27
|
export { tempoActions } from './Decorator.js';
|
|
28
28
|
/** Tempo errors. */
|
|
29
29
|
export * from './errors.js';
|
|
30
|
+
/** Decodes Tempo precompile reverts into readable execution errors. */
|
|
31
|
+
export * as ExecutionError from './ExecutionError.js';
|
|
30
32
|
/** Helpers producing unix timestamps for key expiries. */
|
|
31
33
|
export * as Expiry from './Expiry.js';
|
|
32
34
|
/** Tempo hardforks & activation helpers. */
|
|
@@ -35,6 +37,8 @@ export * as Hardfork from './Hardfork.js';
|
|
|
35
37
|
export * as KeyAuthorizationManager from './KeyAuthorizationManager.js';
|
|
36
38
|
/** P256 (secp256r1) key utilities. Re-exports `ox/P256`. */
|
|
37
39
|
export * as P256 from './P256.js';
|
|
40
|
+
/** Composable relay request handlers. */
|
|
41
|
+
export * as Relay from './Relay.js';
|
|
38
42
|
/** Call scopes restricting access keys to targets & selectors. */
|
|
39
43
|
export * as Scopes from './Scopes.js';
|
|
40
44
|
/** Function selectors of the Tempo precompile ABIs. */
|
|
@@ -42,13 +46,11 @@ export * as Selectors from './Selectors.js';
|
|
|
42
46
|
/** Minimal async key-value storages (memory, session). */
|
|
43
47
|
export * as Store from './Store.js';
|
|
44
48
|
/** Relay transport: routes fee sponsorship traffic to a fee payer service. */
|
|
45
|
-
export {
|
|
49
|
+
export { withRelay } from './Transport.js';
|
|
46
50
|
/** WebAuthn P256 credential creation & signing. */
|
|
47
51
|
export * as WebAuthnP256 from './WebAuthnP256.js';
|
|
48
52
|
/** WebCrypto-backed P256 key pairs. Re-exports `ox/WebCryptoP256`. */
|
|
49
53
|
export * as WebCryptoP256 from './WebCryptoP256.js';
|
|
50
|
-
/** Coordinates native multisig approvals over JSON-RPC. */
|
|
51
|
-
export * as Multisig from './Multisig.js';
|
|
52
54
|
/** Tempo Zone chains. */
|
|
53
55
|
export * as Zone from './Zone.js';
|
|
54
56
|
//# sourceMappingURL=index.js.map
|
package/dist/tempo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,4DAA4D;AAC5D,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACpB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,aAAa,EACb,MAAM,EACN,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAEjB,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,2EAA2E;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,0CAA0C;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,wDAAwD;AACxD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,wEAAwE;AACxE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,gFAAgF;AAChF,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,0CAA0C;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,4CAA4C;AAC5C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,qEAAqE;AACrE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,wFAAwF;AACxF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAkC,MAAM,gBAAgB,CAAA;AAE7E,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,0DAA0D;AAC1D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,4CAA4C;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AAEvE,4DAA4D;AAC5D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,kEAAkE;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,0DAA0D;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,8EAA8E;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,4DAA4D;AAC5D,OAAO,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,oBAAoB,EACpB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,aAAa,EACb,MAAM,EACN,qBAAqB,GACtB,MAAM,UAAU,CAAA;AAEjB,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAErD,2EAA2E;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,0CAA0C;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,wDAAwD;AACxD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,wEAAwE;AACxE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,gFAAgF;AAChF,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,0CAA0C;AAC1C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,4CAA4C;AAC5C,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,qEAAqE;AACrE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,wFAAwF;AACxF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAkC,MAAM,gBAAgB,CAAA;AAE7E,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,uEAAuE;AACvE,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD,0DAA0D;AAC1D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,4CAA4C;AAC5C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,2CAA2C;AAC3C,OAAO,KAAK,uBAAuB,MAAM,8BAA8B,CAAA;AAEvE,4DAA4D;AAC5D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,yCAAyC;AACzC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,kEAAkE;AAClE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,uDAAuD;AACvD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,0DAA0D;AAC1D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,mDAAmD;AACnD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD,sEAAsE;AACtE,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAOnD,yBAAyB;AACzB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as Store_ from '../../Store.js';
|
|
2
|
+
export type Store = Store_.Store;
|
|
3
|
+
export declare function scoped(store: Store | undefined): Store | undefined;
|
|
4
|
+
export declare function memoize<value>(fetch: () => Promise<value>, options: {
|
|
5
|
+
key: string;
|
|
6
|
+
store: Store;
|
|
7
|
+
ttl: number;
|
|
8
|
+
}): Promise<value>;
|
|
9
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAE7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;AAMhC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAOlE;AAED,wBAAsB,OAAO,CAAC,KAAK,EACjC,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAC3B,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,KAAK,CAAC,CA4DhB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { withTimeout } from '../../../core/internal/promise.js';
|
|
2
|
+
// Scope in-flight work to one request so Workers never share request-owned I/O.
|
|
3
|
+
const flights = new WeakMap();
|
|
4
|
+
const prefix = 'viem:relay:cache:';
|
|
5
|
+
export function scoped(store) {
|
|
6
|
+
if (!store)
|
|
7
|
+
return undefined;
|
|
8
|
+
return {
|
|
9
|
+
getItem: (key) => store.getItem(key),
|
|
10
|
+
setItem: (key, value) => store.setItem(key, value),
|
|
11
|
+
removeItem: (key) => store.removeItem(key),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export async function memoize(fetch, options) {
|
|
15
|
+
const { store, ttl } = options;
|
|
16
|
+
const key = `${prefix}${options.key}`;
|
|
17
|
+
let active = true;
|
|
18
|
+
const timeoutError = new Error('Relay cache operation timed out.');
|
|
19
|
+
return withTimeout(async () => {
|
|
20
|
+
const raw = await store.getItem(key);
|
|
21
|
+
if (!active)
|
|
22
|
+
throw timeoutError;
|
|
23
|
+
if (raw) {
|
|
24
|
+
try {
|
|
25
|
+
const entry = JSON.parse(raw, (_key, item) => {
|
|
26
|
+
if (typeof item !== 'string' || !item.startsWith(prefix))
|
|
27
|
+
return item;
|
|
28
|
+
if (item.startsWith(`${prefix}string:`))
|
|
29
|
+
return item.slice(`${prefix}string:`.length);
|
|
30
|
+
if (item.startsWith(`${prefix}bigint:`))
|
|
31
|
+
return BigInt(item.slice(`${prefix}bigint:`.length));
|
|
32
|
+
throw new TypeError('Invalid relay cache value.');
|
|
33
|
+
});
|
|
34
|
+
if (entry.expiresAt > Date.now())
|
|
35
|
+
return entry.value;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Refresh malformed or older entries.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
let pending = flights.get(store);
|
|
42
|
+
if (!pending) {
|
|
43
|
+
pending = new Map();
|
|
44
|
+
flights.set(store, pending);
|
|
45
|
+
}
|
|
46
|
+
const existing = pending.get(key);
|
|
47
|
+
if (existing)
|
|
48
|
+
return existing;
|
|
49
|
+
const result = (async () => {
|
|
50
|
+
const value = await fetch();
|
|
51
|
+
if (!active)
|
|
52
|
+
throw timeoutError;
|
|
53
|
+
if (value !== undefined)
|
|
54
|
+
await store.setItem(key, JSON.stringify({ value, expiresAt: Date.now() + ttl }, (_key, item) => {
|
|
55
|
+
if (typeof item === 'bigint')
|
|
56
|
+
return `${prefix}bigint:${item}`;
|
|
57
|
+
if (typeof item === 'string' && item.startsWith(prefix))
|
|
58
|
+
return `${prefix}string:${item}`;
|
|
59
|
+
return item;
|
|
60
|
+
}));
|
|
61
|
+
return value;
|
|
62
|
+
})().finally(() => pending.delete(key));
|
|
63
|
+
pending.set(key, result);
|
|
64
|
+
return result;
|
|
65
|
+
}, {
|
|
66
|
+
timeout: 30_000,
|
|
67
|
+
errorInstance: timeoutError,
|
|
68
|
+
}).finally(() => {
|
|
69
|
+
active = false;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type * as Relay from '../../Relay.js';
|
|
2
|
+
/** Bounds the complete fill, including callbacks that do not observe abort signals. */
|
|
3
|
+
export declare function run(handler: Relay.handleRequest.Handler, request: Relay.handleRequest.Request, options: Relay.handleRequest.RequestOptions, config: Relay.handleRequest.Options): Promise<unknown>;
|
|
4
|
+
//# sourceMappingURL=deadline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadline.d.ts","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/deadline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAE5C,uFAAuF;AACvF,wBAAsB,GAAG,CACvB,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,EACpC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,EACpC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,EAC3C,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,oBAoCpC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RpcResponse } from 'ox';
|
|
2
|
+
/** Bounds the complete fill, including callbacks that do not observe abort signals. */
|
|
3
|
+
export async function run(handler, request, options, config) {
|
|
4
|
+
const controller = new AbortController();
|
|
5
|
+
const abort = () => controller.abort(options.signal?.reason);
|
|
6
|
+
options.signal?.addEventListener('abort', abort, { once: true });
|
|
7
|
+
if (options.signal?.aborted)
|
|
8
|
+
abort();
|
|
9
|
+
const timeout = setTimeout(() => controller.abort(new RpcResponse.LimitExceededError({
|
|
10
|
+
message: 'Relay fill exceeded its deadline.',
|
|
11
|
+
})), config.timeout ?? 10_000);
|
|
12
|
+
const signal = controller.signal;
|
|
13
|
+
let rejectAbort;
|
|
14
|
+
const aborted = new Promise((_, reject) => {
|
|
15
|
+
rejectAbort = reject;
|
|
16
|
+
});
|
|
17
|
+
const onAbort = () => rejectAbort(signal.reason);
|
|
18
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
19
|
+
try {
|
|
20
|
+
signal.throwIfAborted();
|
|
21
|
+
return await Promise.race([
|
|
22
|
+
handler(request, { ...options, signal }),
|
|
23
|
+
aborted,
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
clearTimeout(timeout);
|
|
28
|
+
options.signal?.removeEventListener('abort', abort);
|
|
29
|
+
signal.removeEventListener('abort', onAbort);
|
|
30
|
+
// Prevent timed-out hooks from dispatching additional I/O after the response completes.
|
|
31
|
+
controller.abort();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=deadline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadline.js","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/deadline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAGhC,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,OAAoC,EACpC,OAAoC,EACpC,OAA2C,EAC3C,MAAmC;IAEnC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5D,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,KAAK,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE,CACH,UAAU,CAAC,KAAK,CACd,IAAI,WAAW,CAAC,kBAAkB,CAAC;QACjC,OAAO,EAAE,mCAAmC;KAC7C,CAAC,CACH,EACH,MAAM,CAAC,OAAO,IAAI,MAAM,CACzB,CAAA;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAEhC,IAAI,WAAuC,CAAA;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/C,WAAW,GAAG,MAAM,CAAA;IACtB,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;YACxC,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAA;QACrB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACnD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC5C,wFAAwF;QACxF,UAAU,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Client } from '../../../core/Client.js';
|
|
2
|
+
import * as ExecutionError from '../../ExecutionError.js';
|
|
3
|
+
import type * as Store from './cache.js';
|
|
4
|
+
/** Distinguishes execution reverts from transport and plugin failures. */
|
|
5
|
+
export declare function isExecutionError(error: unknown): error is Error;
|
|
6
|
+
export declare function formatError(error: Error, parameters: Record<string, unknown>, client: Client, simulateStore?: Store.Store): Promise<{
|
|
7
|
+
tx: {
|
|
8
|
+
from: unknown;
|
|
9
|
+
to: {} | null;
|
|
10
|
+
gas: string;
|
|
11
|
+
nonce: string;
|
|
12
|
+
value: string;
|
|
13
|
+
maxFeePerGas: string;
|
|
14
|
+
maxPriorityFeePerGas: string;
|
|
15
|
+
};
|
|
16
|
+
capabilities: {
|
|
17
|
+
balanceDiffs: {
|
|
18
|
+
[x: string]: import("../../Capabilities.js").BalanceDiff[];
|
|
19
|
+
} | undefined;
|
|
20
|
+
error: ExecutionError.Rpc;
|
|
21
|
+
insufficientFunds: {
|
|
22
|
+
amount: `0x${string}`;
|
|
23
|
+
decimals: number;
|
|
24
|
+
formatted: string;
|
|
25
|
+
token: `0x${string}`;
|
|
26
|
+
symbol: string;
|
|
27
|
+
} | undefined;
|
|
28
|
+
sponsored: boolean;
|
|
29
|
+
virtualAddresses?: Record<`0x${string}`, `0x${string}` | null>;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
tx: {
|
|
33
|
+
from: unknown;
|
|
34
|
+
to: {} | null;
|
|
35
|
+
gas: string;
|
|
36
|
+
nonce: string;
|
|
37
|
+
value: string;
|
|
38
|
+
maxFeePerGas: string;
|
|
39
|
+
maxPriorityFeePerGas: string;
|
|
40
|
+
};
|
|
41
|
+
capabilities: {
|
|
42
|
+
error: ExecutionError.Rpc;
|
|
43
|
+
sponsored: boolean;
|
|
44
|
+
virtualAddresses?: Record<`0x${string}`, `0x${string}` | null>;
|
|
45
|
+
};
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/error.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,cAAc,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAMxC,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CA0B/D;AAID,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,KAAK,CAAC,KAAK;;;;;;;;;;;;;;;;oBAsDoB,KAAK,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;GA4B7D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Hex } from 'ox';
|
|
2
|
+
import { format as formatUnits } from 'ox/Value';
|
|
3
|
+
import * as ExecutionError from '../../ExecutionError.js';
|
|
4
|
+
import { resolveTokenMetadata } from './feeToken.js';
|
|
5
|
+
import { simulateAndParseDiffs } from './simulate.js';
|
|
6
|
+
import * as Utils from './utils.js';
|
|
7
|
+
import { extractCalls, resolveVirtualAddresses } from './virtualAddress.js';
|
|
8
|
+
/** Distinguishes execution reverts from transport and plugin failures. */
|
|
9
|
+
export function isExecutionError(error) {
|
|
10
|
+
if (!(error instanceof Error))
|
|
11
|
+
return false;
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
const pending = [error];
|
|
14
|
+
while (pending.length) {
|
|
15
|
+
const current = pending.pop();
|
|
16
|
+
if (!current || typeof current !== 'object' || seen.has(current))
|
|
17
|
+
continue;
|
|
18
|
+
seen.add(current);
|
|
19
|
+
const candidate = current;
|
|
20
|
+
if (candidate.code === 3 ||
|
|
21
|
+
candidate.name === 'UpstreamRevertError' ||
|
|
22
|
+
candidate.name === 'ExecutionRevertedError' ||
|
|
23
|
+
candidate.name === 'ContractFunctionRevertedError' ||
|
|
24
|
+
[candidate.message, candidate.details].some((message) => typeof message === 'string' && /^execution reverted\b/i.test(message)))
|
|
25
|
+
return true;
|
|
26
|
+
pending.push(candidate.cause, candidate.error);
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const zeroAddress = '0x0000000000000000000000000000000000000000';
|
|
31
|
+
export async function formatError(error, parameters, client, simulateStore) {
|
|
32
|
+
const revert = ExecutionError.from(error);
|
|
33
|
+
const stub = {
|
|
34
|
+
from: parameters.from,
|
|
35
|
+
to: parameters.to ?? null,
|
|
36
|
+
gas: '0x0',
|
|
37
|
+
nonce: '0x0',
|
|
38
|
+
value: '0x0',
|
|
39
|
+
maxFeePerGas: '0x0',
|
|
40
|
+
maxPriorityFeePerGas: '0x0',
|
|
41
|
+
};
|
|
42
|
+
if (revert.errorName === 'InsufficientBalance' && revert.args?.length === 3) {
|
|
43
|
+
const [available, required, token] = revert.args;
|
|
44
|
+
const normalized = Utils.normalizeFillTransactionRequest(parameters);
|
|
45
|
+
// Simulate from zero address for optimistic balance diffs.
|
|
46
|
+
const optimisticCalls = normalized ? extractCalls(normalized) : undefined;
|
|
47
|
+
const [{ balanceDiffs, tokenMetadata }, virtualAddresses] = optimisticCalls
|
|
48
|
+
? await Promise.all([
|
|
49
|
+
simulateAndParseDiffs(client, {
|
|
50
|
+
account: zeroAddress,
|
|
51
|
+
calls: optimisticCalls,
|
|
52
|
+
store: simulateStore,
|
|
53
|
+
}),
|
|
54
|
+
resolveVirtualAddresses(client, { calls: optimisticCalls }).catch(() => undefined),
|
|
55
|
+
])
|
|
56
|
+
: [{ balanceDiffs: undefined, tokenMetadata: undefined }, undefined];
|
|
57
|
+
// Re-key balance diffs from zero address to the real sender.
|
|
58
|
+
const senderDiffs = parameters.from && balanceDiffs
|
|
59
|
+
? { [parameters.from]: balanceDiffs[zeroAddress] ?? [] }
|
|
60
|
+
: balanceDiffs;
|
|
61
|
+
const metadata = await resolveTokenMetadata(client, {
|
|
62
|
+
token,
|
|
63
|
+
tokenMetadata,
|
|
64
|
+
store: simulateStore,
|
|
65
|
+
}).catch(() => undefined);
|
|
66
|
+
const deficit = required - available;
|
|
67
|
+
return {
|
|
68
|
+
tx: stub,
|
|
69
|
+
capabilities: {
|
|
70
|
+
balanceDiffs: senderDiffs,
|
|
71
|
+
error: ExecutionError.serialize(revert),
|
|
72
|
+
insufficientFunds: metadata
|
|
73
|
+
? {
|
|
74
|
+
amount: Hex.fromNumber(deficit),
|
|
75
|
+
decimals: metadata.decimals,
|
|
76
|
+
formatted: formatUnits(deficit, metadata.decimals),
|
|
77
|
+
token,
|
|
78
|
+
symbol: metadata.symbol,
|
|
79
|
+
}
|
|
80
|
+
: undefined,
|
|
81
|
+
sponsored: false,
|
|
82
|
+
...(virtualAddresses ? { virtualAddresses } : {}),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const normalized = Utils.normalizeFillTransactionRequest(parameters);
|
|
87
|
+
const virtualAddresses = normalized
|
|
88
|
+
? await resolveVirtualAddresses(client, {
|
|
89
|
+
calls: extractCalls(normalized),
|
|
90
|
+
}).catch(() => undefined)
|
|
91
|
+
: undefined;
|
|
92
|
+
return {
|
|
93
|
+
tx: stub,
|
|
94
|
+
capabilities: {
|
|
95
|
+
error: ExecutionError.serialize(revert),
|
|
96
|
+
sponsored: false,
|
|
97
|
+
...(virtualAddresses ? { virtualAddresses } : {}),
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Address } from 'abitype';
|
|
2
|
+
import { type Hex } from 'ox';
|
|
3
|
+
import type { Local as LocalAccount } from '../../../core/Account.js';
|
|
4
|
+
import type * as Relay from '../../Relay.js';
|
|
5
|
+
import type * as TransactionRequest from 'ox/tempo/TransactionRequest';
|
|
6
|
+
export declare function create(options: Relay.feePayer.Options): Relay.Plugin;
|
|
7
|
+
/** Checks a prepared transaction with its chain ID. Rejected fills fall back to sender payment; rejected raw submissions return a refusal. */
|
|
8
|
+
export type Validate = (request: TransactionRequest.TransactionRequest & {
|
|
9
|
+
chainId?: number | Hex.Hex | undefined;
|
|
10
|
+
}) => Validation | Promise<Validation>;
|
|
11
|
+
/** A sponsorship verdict: `true` sponsors; `false` or a named reason refuses. */
|
|
12
|
+
export type Validation = boolean | 'billing_past_due' | 'billing_required' | 'fee_token_unsupported' | 'spend_limit_exceeded' | 'tx_fee_limit_exceeded';
|
|
13
|
+
/** Details recorded for a sponsored transaction. */
|
|
14
|
+
export type SponsorshipDetails = {
|
|
15
|
+
/** Whether Tempo subsidizes the sponsorship instead of charging the API-key organization. */
|
|
16
|
+
subsidized: boolean;
|
|
17
|
+
};
|
|
18
|
+
/** Signs a filled transaction as the fee payer. */
|
|
19
|
+
export declare function sign(options: sign.Options): Promise<{
|
|
20
|
+
sponsorshipDetails?: SponsorshipDetails;
|
|
21
|
+
transaction: {
|
|
22
|
+
from: `0x${string}` | undefined;
|
|
23
|
+
feePayerSignature: {
|
|
24
|
+
r: Hex.Hex;
|
|
25
|
+
s: Hex.Hex;
|
|
26
|
+
yParity: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}>;
|
|
30
|
+
export declare namespace sign {
|
|
31
|
+
type Options = {
|
|
32
|
+
/** Abort signal for the enclosing fill. */
|
|
33
|
+
signal?: AbortSignal | undefined;
|
|
34
|
+
/** Account used as the fee payer. */
|
|
35
|
+
account: LocalAccount;
|
|
36
|
+
/** Called once the fee payer has signed the fill. Awaited: a throw aborts the fill. */
|
|
37
|
+
onSponsored?: ((event: SponsoredEvent) => SponsorshipDetails | Promise<SponsorshipDetails | void> | void) | undefined;
|
|
38
|
+
/** Filled transaction to sign. */
|
|
39
|
+
transaction: Record<string, unknown>;
|
|
40
|
+
/** Sender address from the original request. */
|
|
41
|
+
sender?: Address | undefined;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Facts of one sponsorship commitment, emitted at fee-payer signing time. */
|
|
45
|
+
export type SponsoredEvent = {
|
|
46
|
+
/** Chain the sponsored transaction targets. */
|
|
47
|
+
chainId: number;
|
|
48
|
+
/** Fee token the sponsorship resolved, when known. */
|
|
49
|
+
feeToken?: Address | undefined;
|
|
50
|
+
/** Method that triggered sponsorship: a fill (intent) or a raw submission. */
|
|
51
|
+
method: 'eth_fillTransaction' | 'eth_signRawTransaction' | 'eth_sendRawTransaction' | 'eth_sendRawTransactionSync';
|
|
52
|
+
/** Transaction sender. */
|
|
53
|
+
sender: Address;
|
|
54
|
+
/** Fee-payer sign payload: a stable identity for the sponsored envelope. */
|
|
55
|
+
signPayload: Hex.Hex;
|
|
56
|
+
/** Serialized sponsored transaction (sender-unsigned for fill intents). */
|
|
57
|
+
transaction: Hex.Hex;
|
|
58
|
+
/** Transaction hash (keccak256 of the signed envelope); absent for fill intents, whose senders have not signed yet. */
|
|
59
|
+
transactionHash?: Hex.Hex | undefined;
|
|
60
|
+
};
|
|
61
|
+
export declare namespace ExternalFeePayerUrl {
|
|
62
|
+
type Options = {
|
|
63
|
+
/** Whether to allow non-HTTPS or local/private external fee payer URLs. */
|
|
64
|
+
allowUnsafe?: boolean | undefined;
|
|
65
|
+
};
|
|
66
|
+
/** Normalizes external fee-payer relay URLs before forwarding fill payloads. */
|
|
67
|
+
export function normalize(value: string, options?: Options): string;
|
|
68
|
+
export {};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=feePayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feePayer.d.ts","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/feePayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAQ,KAAK,GAAG,EAA0B,MAAM,IAAI,CAAA;AAE3D,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGrE,OAAO,KAAK,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AAItE,wBAAgB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAuNpE;AAED,8IAA8I;AAC9I,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,kBAAkB,CAAC,kBAAkB,GAAG;IAC/C,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;CACvC,KACE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,kBAAkB,GAClB,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,uBAAuB,CAAA;AAE3B,oDAAoD;AACpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAwFD,mDAAmD;AACnD,wBAAsB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO;;;;;;;;;;GA4C/C;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb,2CAA2C;QAC3C,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;QAChC,qCAAqC;QACrC,OAAO,EAAE,YAAY,CAAA;QACrB,uFAAuF;QACvF,WAAW,CAAC,EACR,CAAC,CACC,KAAK,EAAE,cAAc,KAClB,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GACpE,SAAS,CAAA;QACb,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACpC,gDAAgD;QAChD,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC7B,CAAA;CACF;AAgID,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG;IAC3B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,8EAA8E;IAC9E,MAAM,EACF,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,4BAA4B,CAAA;IAChC,0BAA0B;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,4EAA4E;IAC5E,WAAW,EAAE,GAAG,CAAC,GAAG,CAAA;IACpB,2EAA2E;IAC3E,WAAW,EAAE,GAAG,CAAC,GAAG,CAAA;IACpB,uHAAuH;IACvH,eAAe,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,yBAAiB,mBAAmB,CAAC;IACnC,KAAK,OAAO,GAAG;QACb,2EAA2E;QAC3E,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAClC,CAAA;IAED,gFAAgF;IAChF,MAAM,UAAU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,MAAM,CA4BtE;;CA0GF"}
|