@eth-optimism/actions-sdk 0.4.0 → 0.5.0

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.
Files changed (98) hide show
  1. package/dist/actions.d.ts +9 -0
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +12 -1
  4. package/dist/actions.js.map +1 -1
  5. package/dist/ens/EnsNamespace.d.ts +57 -0
  6. package/dist/ens/EnsNamespace.d.ts.map +1 -0
  7. package/dist/ens/EnsNamespace.js +158 -0
  8. package/dist/ens/EnsNamespace.js.map +1 -0
  9. package/dist/ens/EnsNamespace.spec.d.ts +2 -0
  10. package/dist/ens/EnsNamespace.spec.d.ts.map +1 -0
  11. package/dist/ens/EnsNamespace.spec.js +144 -0
  12. package/dist/ens/EnsNamespace.spec.js.map +1 -0
  13. package/dist/ens/errors.d.ts +24 -0
  14. package/dist/ens/errors.d.ts.map +1 -0
  15. package/dist/ens/errors.js +35 -0
  16. package/dist/ens/errors.js.map +1 -0
  17. package/dist/ens/index.d.ts +4 -0
  18. package/dist/ens/index.d.ts.map +1 -0
  19. package/dist/ens/index.js +4 -0
  20. package/dist/ens/index.js.map +1 -0
  21. package/dist/ens/types.d.ts +63 -0
  22. package/dist/ens/types.d.ts.map +1 -0
  23. package/dist/ens/types.js +14 -0
  24. package/dist/ens/types.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/services/ChainManager.d.ts +7 -0
  30. package/dist/services/ChainManager.d.ts.map +1 -1
  31. package/dist/services/ChainManager.js +9 -0
  32. package/dist/services/ChainManager.js.map +1 -1
  33. package/dist/services/__mocks__/MockChainManager.d.ts +1 -0
  34. package/dist/services/__mocks__/MockChainManager.d.ts.map +1 -1
  35. package/dist/services/__mocks__/MockChainManager.js +5 -0
  36. package/dist/services/__mocks__/MockChainManager.js.map +1 -1
  37. package/dist/swap/core/SwapProvider.d.ts +6 -6
  38. package/dist/swap/core/SwapProvider.d.ts.map +1 -1
  39. package/dist/swap/core/SwapProvider.js +4 -8
  40. package/dist/swap/core/SwapProvider.js.map +1 -1
  41. package/dist/swap/namespaces/BaseSwapNamespace.d.ts +3 -1
  42. package/dist/swap/namespaces/BaseSwapNamespace.d.ts.map +1 -1
  43. package/dist/swap/namespaces/BaseSwapNamespace.js +16 -11
  44. package/dist/swap/namespaces/BaseSwapNamespace.js.map +1 -1
  45. package/dist/swap/namespaces/WalletSwapNamespace.d.ts +2 -1
  46. package/dist/swap/namespaces/WalletSwapNamespace.d.ts.map +1 -1
  47. package/dist/swap/namespaces/WalletSwapNamespace.js +9 -4
  48. package/dist/swap/namespaces/WalletSwapNamespace.js.map +1 -1
  49. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js +4 -4
  50. package/dist/swap/namespaces/__tests__/BaseSwapNamespace.spec.js.map +1 -1
  51. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts +3 -2
  52. package/dist/swap/providers/uniswap/UniswapSwapProvider.d.ts.map +1 -1
  53. package/dist/swap/providers/uniswap/UniswapSwapProvider.js.map +1 -1
  54. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts +3 -2
  55. package/dist/swap/providers/velodrome/VelodromeSwapProvider.d.ts.map +1 -1
  56. package/dist/swap/providers/velodrome/VelodromeSwapProvider.js.map +1 -1
  57. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js +1 -0
  58. package/dist/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.js.map +1 -1
  59. package/dist/types/swap/base.d.ts +5 -4
  60. package/dist/types/swap/base.d.ts.map +1 -1
  61. package/dist/types/swap/base.js.map +1 -1
  62. package/dist/utils/ens.d.ts +25 -0
  63. package/dist/utils/ens.d.ts.map +1 -0
  64. package/dist/utils/ens.js +53 -0
  65. package/dist/utils/ens.js.map +1 -0
  66. package/dist/utils/ens.test.d.ts +2 -0
  67. package/dist/utils/ens.test.d.ts.map +1 -0
  68. package/dist/utils/ens.test.js +75 -0
  69. package/dist/utils/ens.test.js.map +1 -0
  70. package/dist/utils/validation.d.ts +5 -0
  71. package/dist/utils/validation.d.ts.map +1 -1
  72. package/dist/utils/validation.js +10 -0
  73. package/dist/utils/validation.js.map +1 -1
  74. package/dist/wallet/core/wallets/abstract/Wallet.d.ts.map +1 -1
  75. package/dist/wallet/core/wallets/abstract/Wallet.js +3 -1
  76. package/dist/wallet/core/wallets/abstract/Wallet.js.map +1 -1
  77. package/package.json +1 -1
  78. package/src/actions.ts +15 -0
  79. package/src/ens/EnsNamespace.spec.ts +171 -0
  80. package/src/ens/EnsNamespace.ts +210 -0
  81. package/src/ens/errors.ts +45 -0
  82. package/src/ens/index.ts +12 -0
  83. package/src/ens/types.ts +76 -0
  84. package/src/index.ts +9 -0
  85. package/src/services/ChainManager.ts +10 -0
  86. package/src/services/__mocks__/MockChainManager.ts +8 -0
  87. package/src/swap/core/SwapProvider.ts +16 -15
  88. package/src/swap/namespaces/BaseSwapNamespace.ts +43 -27
  89. package/src/swap/namespaces/WalletSwapNamespace.ts +12 -4
  90. package/src/swap/namespaces/__tests__/BaseSwapNamespace.spec.ts +4 -0
  91. package/src/swap/providers/uniswap/UniswapSwapProvider.ts +4 -2
  92. package/src/swap/providers/velodrome/VelodromeSwapProvider.ts +4 -2
  93. package/src/swap/providers/velodrome/__tests__/VelodromeSwapProvider.test.ts +1 -0
  94. package/src/types/swap/base.ts +5 -4
  95. package/src/utils/ens.test.ts +104 -0
  96. package/src/utils/ens.ts +85 -0
  97. package/src/utils/validation.ts +11 -0
  98. package/src/wallet/core/wallets/abstract/Wallet.ts +3 -0
package/dist/actions.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { EnsNamespace } from './ens/index.js';
1
2
  import { ActionsLendNamespace } from './lend/namespaces/ActionsLendNamespace.js';
2
3
  import { ActionsSwapNamespace } from './swap/namespaces/ActionsSwapNamespace.js';
3
4
  import type { ActionsConfig, LendProviders, SwapProviders } from './types/actions.js';
@@ -22,6 +23,7 @@ export declare class Actions<THostedWalletProviderConfigKeys extends string, THo
22
23
  }>, THostedWalletProviderType extends THostedWalletProviderConfigKeys> {
23
24
  readonly wallet: WalletNamespace<THostedWalletProviderType, THostedWalletProvidersSchema['providerToActionsOptions'], THostedWalletProvidersSchema['providerInstances'][THostedWalletProviderType], SmartWalletProvider>;
24
25
  private chainManager;
26
+ private _ens;
25
27
  private _lend?;
26
28
  private _lendProviders;
27
29
  private _swap?;
@@ -45,6 +47,13 @@ export declare class Actions<THostedWalletProviderConfigKeys extends string, THo
45
47
  * @returns Object containing configured lend providers
46
48
  */
47
49
  get lendProviders(): LendProviders;
50
+ /**
51
+ * Get ENS operations interface
52
+ * @description Access to Ethereum Name Service operations: resolve, reverseResolve, lookupText.
53
+ * Requires Ethereum mainnet (chain ID 1) to be included in your chain configuration.
54
+ * @returns EnsNamespace for ENS operations
55
+ */
56
+ get ens(): EnsNamespace;
48
57
  /**
49
58
  * Get swap operations interface
50
59
  * @description Access to swap operations like price quotes and markets.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAGhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,aAAa,EAEd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAA;AAC3H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AAIxG;;;GAGG;AACH,qBAAa,OAAO,CAClB,+BAA+B,SAAS,MAAM,EAC9C,4BAA4B,SAAS,2BAA2B,CAC9D,+BAA+B,EAC/B;KACG,CAAC,IAAI,+BAA+B,GAAG,oBAAoB,CAC1D,CAAC,EACD;SAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;KAAE,CACpD;CACF,EACD;KAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;CAAE,EACnD;KAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;CAAE,CACpD,EACD,yBAAyB,SAAS,+BAA+B;IAEjE,SAAgB,MAAM,EAAE,eAAe,CACrC,yBAAyB,EACzB,4BAA4B,CAAC,0BAA0B,CAAC,EACxD,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,yBAAyB,CAAC,EAC5E,mBAAmB,CACpB,CAAA;IACD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,KAAK,CAAC,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,4BAA4B,CAInC;gBAEC,MAAM,EAAE,aAAa,CACnB,yBAAyB,EACzB,4BAA4B,CAAC,iBAAiB,CAAC,CAChD,EACD,IAAI,EAAE;QACJ,4BAA4B,EAAE,4BAA4B,CACxD,4BAA4B,CAAC,mBAAmB,CAAC,EACjD,4BAA4B,CAAC,iBAAiB,CAAC,EAC/C,4BAA4B,CAAC,eAAe,CAAC,CAC9C,CAAA;KACF;IAiDH;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,oBAAoB,CAO/B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,oBAAoB,CAO/B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED;;;;;;OAMG;IACI,kBAAkB,IAAI,KAAK,EAAE;IAoBpC;;;;OAIG;YACW,oBAAoB;IA2DlC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;CAc9B"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAGhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,aAAa,EAEd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAA;AAC3G,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAA;AAC3H,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAA;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAA;AAIxG;;;GAGG;AACH,qBAAa,OAAO,CAClB,+BAA+B,SAAS,MAAM,EAC9C,4BAA4B,SAAS,2BAA2B,CAC9D,+BAA+B,EAC/B;KACG,CAAC,IAAI,+BAA+B,GAAG,oBAAoB,CAC1D,CAAC,EACD;SAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;KAAE,CACpD;CACF,EACD;KAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;CAAE,EACnD;KAAG,CAAC,IAAI,+BAA+B,GAAG,OAAO;CAAE,CACpD,EACD,yBAAyB,SAAS,+BAA+B;IAEjE,SAAgB,MAAM,EAAE,eAAe,CACrC,yBAAyB,EACzB,4BAA4B,CAAC,0BAA0B,CAAC,EACxD,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,yBAAyB,CAAC,EAC5E,mBAAmB,CACpB,CAAA;IACD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,KAAK,CAAC,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,4BAA4B,CAInC;gBAEC,MAAM,EAAE,aAAa,CACnB,yBAAyB,EACzB,4BAA4B,CAAC,iBAAiB,CAAC,CAChD,EACD,IAAI,EAAE;QACJ,4BAA4B,EAAE,4BAA4B,CACxD,4BAA4B,CAAC,mBAAmB,CAAC,EACjD,4BAA4B,CAAC,iBAAiB,CAAC,EAC/C,4BAA4B,CAAC,eAAe,CAAC,CAC9C,CAAA;KACF;IAoDH;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,oBAAoB,CAO/B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED;;;;;OAKG;IACH,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,oBAAoB,CAO/B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED;;;;;;OAMG;IACI,kBAAkB,IAAI,KAAK,EAAE;IAoBpC;;;;OAIG;YACW,oBAAoB;IA2DlC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;CAc9B"}
package/dist/actions.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { EnsNamespace } from './ens/index.js';
1
2
  import { AaveLendProvider, MorphoLendProvider } from './lend/index.js';
2
3
  import { ActionsLendNamespace } from './lend/namespaces/ActionsLendNamespace.js';
3
4
  import { ChainManager } from './services/ChainManager.js';
@@ -20,6 +21,7 @@ export class Actions {
20
21
  this.hostedWalletProviderRegistry = deps.hostedWalletProviderRegistry;
21
22
  this._assetsConfig = config.assets;
22
23
  validateConfigAddresses(config);
24
+ this._ens = new EnsNamespace(this.chainManager);
23
25
  if (config.lend?.morpho) {
24
26
  this._lendProviders.morpho = new MorphoLendProvider(config.lend.morpho, this.chainManager);
25
27
  }
@@ -38,7 +40,7 @@ export class Actions {
38
40
  }
39
41
  this._swapSettings = swapSettings;
40
42
  if (Object.values(this._swapProviders).some(Boolean)) {
41
- this._swap = new ActionsSwapNamespace(this._swapProviders, this._swapSettings);
43
+ this._swap = new ActionsSwapNamespace(this._swapProviders, (r) => (r ? this._ens.getAddress(r) : Promise.resolve(undefined)), this._swapSettings);
42
44
  }
43
45
  this.wallet = this.createWalletNamespace(config.wallet);
44
46
  }
@@ -62,6 +64,15 @@ export class Actions {
62
64
  get lendProviders() {
63
65
  return this._lendProviders;
64
66
  }
67
+ /**
68
+ * Get ENS operations interface
69
+ * @description Access to Ethereum Name Service operations: resolve, reverseResolve, lookupText.
70
+ * Requires Ethereum mainnet (chain ID 1) to be included in your chain configuration.
71
+ * @returns EnsNamespace for ENS operations
72
+ */
73
+ get ens() {
74
+ return this._ens;
75
+ }
65
76
  /**
66
77
  * Get swap operations interface
67
78
  * @description Access to swap operations like price quotes and markets.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type Address } from 'viem';
2
+ import type { ChainManager } from '../services/ChainManager.js';
3
+ import { type EnsInfo, type EnsName, type NameServiceProvider } from './types.js';
4
+ /**
5
+ * Namespace for human-readable name resolution on Ethereum.
6
+ * Currently backed by ENS (Ethereum Name Service) on mainnet.
7
+ *
8
+ * Implements {@link NameServiceProvider} — designed to be extensible: future
9
+ * versions could support alternative name services alongside ENS (e.g. Basename,
10
+ * Unstoppable Domains, Lens handles). The natural evolution is additional
11
+ * NameServiceProvider implementations registered under their own namespace
12
+ * (e.g. `actions.basename`).
13
+ *
14
+ * Falls back to a public mainnet RPC automatically if mainnet is not included
15
+ * in your chain configuration, so ENS works even in L2-only setups.
16
+ */
17
+ export declare class EnsNamespace implements NameServiceProvider {
18
+ private chainManager;
19
+ private readonly cacheTtlMs;
20
+ private addressCache;
21
+ private nameCache;
22
+ private infoCache;
23
+ constructor(chainManager: ChainManager, cacheTtlMs?: number);
24
+ /**
25
+ * Resolve an ENS name or hex address to a checksummed hex address.
26
+ * Hex addresses are returned as-is after format validation.
27
+ *
28
+ * If you need to resolve outside of an {@link Actions} instance (e.g. in a
29
+ * provider or script), use the lower-level `resolveAddress` utility instead.
30
+ * @param input - Hex address (0x...) or ENS name (e.g. "vitalik.eth")
31
+ * @returns Resolved hex address
32
+ * @throws {EnsResolutionError} If the name cannot be resolved
33
+ * @throws {EnsRpcError} If the RPC call fails
34
+ */
35
+ getAddress(input: Address | EnsName): Promise<Address>;
36
+ /**
37
+ * Reverse-resolve an address to its primary ENS name.
38
+ * @param address - Hex address to look up
39
+ * @returns ENS name, or null if none is set
40
+ * @throws {EnsRpcError} If the RPC call fails
41
+ */
42
+ getName(address: Address): Promise<EnsName | null>;
43
+ /**
44
+ * Fetch all standard ENS profile text record fields (ENSIP-5 / ENSIP-18)
45
+ * for an ENS name or address in a single batched call.
46
+ *
47
+ * All fields are null when not set. Returns all-null if the address has
48
+ * no primary ENS name.
49
+ * @param input - Hex address (0x...) or ENS name
50
+ * @returns EnsInfo object with all standard text record fields
51
+ * @throws {EnsResolutionError} If the name cannot be normalized
52
+ * @throws {EnsRpcError} If the RPC call fails
53
+ */
54
+ getInfo(input: Address | EnsName): Promise<EnsInfo>;
55
+ private getMainnetClient;
56
+ }
57
+ //# sourceMappingURL=EnsNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsNamespace.d.ts","sourceRoot":"","sources":["../../src/ens/EnsNamespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA4B,MAAM,MAAM,CAAA;AAI7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAI9D,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAA;AAsBnB;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,YAAW,mBAAmB;IACtD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,YAAY,CAGjB;IACH,OAAO,CAAC,SAAS,CAGd;IACH,OAAO,CAAC,SAAS,CAA2D;gBAEhE,YAAY,EAAE,YAAY,EAAE,UAAU,SAAuB;IAKzE;;;;;;;;;;OAUG;IACG,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAoBxD;;;;;;;;;;OAUG;IACG,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DzD,OAAO,CAAC,gBAAgB;CAUzB"}
@@ -0,0 +1,158 @@
1
+ import { createPublicClient, http } from 'viem';
2
+ import { mainnet } from 'viem/chains';
3
+ import { normalize } from 'viem/ens';
4
+ import { resolveAddress } from '../utils/ens.js';
5
+ import { EnsResolutionError, EnsRpcError } from './errors.js';
6
+ import { isEnsName, } from './types.js';
7
+ /** Default TTL for cached ENS lookups — 5 minutes */
8
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
9
+ /** Public mainnet RPC used as fallback when mainnet is not in chain config */
10
+ const FALLBACK_MAINNET_RPC = 'https://cloudflare-eth.com';
11
+ /** ENSIP-5 / ENSIP-18 standard text record keys mapped to EnsInfo field names */
12
+ const ENS_TEXT_KEYS = {
13
+ avatar: 'avatar',
14
+ display: 'display',
15
+ description: 'description',
16
+ url: 'url',
17
+ email: 'email',
18
+ keywords: 'keywords',
19
+ twitter: 'com.twitter',
20
+ github: 'com.github',
21
+ discord: 'com.discord',
22
+ reddit: 'org.reddit',
23
+ };
24
+ /**
25
+ * Namespace for human-readable name resolution on Ethereum.
26
+ * Currently backed by ENS (Ethereum Name Service) on mainnet.
27
+ *
28
+ * Implements {@link NameServiceProvider} — designed to be extensible: future
29
+ * versions could support alternative name services alongside ENS (e.g. Basename,
30
+ * Unstoppable Domains, Lens handles). The natural evolution is additional
31
+ * NameServiceProvider implementations registered under their own namespace
32
+ * (e.g. `actions.basename`).
33
+ *
34
+ * Falls back to a public mainnet RPC automatically if mainnet is not included
35
+ * in your chain configuration, so ENS works even in L2-only setups.
36
+ */
37
+ export class EnsNamespace {
38
+ constructor(chainManager, cacheTtlMs = DEFAULT_CACHE_TTL_MS) {
39
+ this.addressCache = new Map();
40
+ this.nameCache = new Map();
41
+ this.infoCache = new Map();
42
+ this.chainManager = chainManager;
43
+ this.cacheTtlMs = cacheTtlMs;
44
+ }
45
+ /**
46
+ * Resolve an ENS name or hex address to a checksummed hex address.
47
+ * Hex addresses are returned as-is after format validation.
48
+ *
49
+ * If you need to resolve outside of an {@link Actions} instance (e.g. in a
50
+ * provider or script), use the lower-level `resolveAddress` utility instead.
51
+ * @param input - Hex address (0x...) or ENS name (e.g. "vitalik.eth")
52
+ * @returns Resolved hex address
53
+ * @throws {EnsResolutionError} If the name cannot be resolved
54
+ * @throws {EnsRpcError} If the RPC call fails
55
+ */
56
+ async getAddress(input) {
57
+ const cached = this.addressCache.get(input);
58
+ if (cached && Date.now() < cached.expiresAt)
59
+ return cached.value;
60
+ const value = await resolveAddress(input, this.getMainnetClient());
61
+ this.addressCache.set(input, {
62
+ value,
63
+ expiresAt: Date.now() + this.cacheTtlMs,
64
+ });
65
+ return value;
66
+ }
67
+ /**
68
+ * Reverse-resolve an address to its primary ENS name.
69
+ * @param address - Hex address to look up
70
+ * @returns ENS name, or null if none is set
71
+ * @throws {EnsRpcError} If the RPC call fails
72
+ */
73
+ async getName(address) {
74
+ const cached = this.nameCache.get(address);
75
+ if (cached && Date.now() < cached.expiresAt)
76
+ return cached.value;
77
+ const name = await this.getMainnetClient()
78
+ .getEnsName({ address })
79
+ .catch((cause) => {
80
+ throw new EnsRpcError(`ENS reverse resolution failed for "${address}": RPC error`, address, { cause });
81
+ });
82
+ const value = name && isEnsName(name) ? name : null;
83
+ this.nameCache.set(address, {
84
+ value,
85
+ expiresAt: Date.now() + this.cacheTtlMs,
86
+ });
87
+ return value;
88
+ }
89
+ /**
90
+ * Fetch all standard ENS profile text record fields (ENSIP-5 / ENSIP-18)
91
+ * for an ENS name or address in a single batched call.
92
+ *
93
+ * All fields are null when not set. Returns all-null if the address has
94
+ * no primary ENS name.
95
+ * @param input - Hex address (0x...) or ENS name
96
+ * @returns EnsInfo object with all standard text record fields
97
+ * @throws {EnsResolutionError} If the name cannot be normalized
98
+ * @throws {EnsRpcError} If the RPC call fails
99
+ */
100
+ async getInfo(input) {
101
+ const name = isEnsName(input) ? input : await this.getName(input);
102
+ if (!name)
103
+ return nullInfo();
104
+ const cached = this.infoCache.get(name);
105
+ if (cached && Date.now() < cached.expiresAt)
106
+ return cached.value;
107
+ const normalized = (() => {
108
+ try {
109
+ return normalize(name);
110
+ }
111
+ catch (cause) {
112
+ throw new EnsResolutionError(`ENS name "${name}" is invalid and cannot be normalized`, name, { cause });
113
+ }
114
+ })();
115
+ const client = this.getMainnetClient();
116
+ const fetchKey = (key) => client.getEnsText({ name: normalized, key }).catch((cause) => {
117
+ throw new EnsRpcError(`ENS text record lookup failed for "${name}" key "${key}": RPC error`, name, { cause });
118
+ });
119
+ const [avatar, display, description, url, email, keywords, twitter, github, discord, reddit,] = await Promise.all(Object.values(ENS_TEXT_KEYS).map(fetchKey));
120
+ const value = {
121
+ avatar: avatar ?? null,
122
+ display: display ?? null,
123
+ description: description ?? null,
124
+ url: url ?? null,
125
+ email: email ?? null,
126
+ keywords: keywords ?? null,
127
+ twitter: twitter ?? null,
128
+ github: github ?? null,
129
+ discord: discord ?? null,
130
+ reddit: reddit ?? null,
131
+ };
132
+ this.infoCache.set(name, { value, expiresAt: Date.now() + this.cacheTtlMs });
133
+ return value;
134
+ }
135
+ getMainnetClient() {
136
+ return (this.chainManager.tryGetPublicClient(mainnet.id) ??
137
+ createPublicClient({
138
+ chain: mainnet,
139
+ transport: http(FALLBACK_MAINNET_RPC),
140
+ batch: { multicall: true },
141
+ }));
142
+ }
143
+ }
144
+ function nullInfo() {
145
+ return {
146
+ avatar: null,
147
+ display: null,
148
+ description: null,
149
+ url: null,
150
+ email: null,
151
+ keywords: null,
152
+ twitter: null,
153
+ github: null,
154
+ discord: null,
155
+ reddit: null,
156
+ };
157
+ }
158
+ //# sourceMappingURL=EnsNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsNamespace.js","sourceRoot":"","sources":["../../src/ens/EnsNamespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EnsNamespace.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsNamespace.spec.d.ts","sourceRoot":"","sources":["../../src/ens/EnsNamespace.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { EnsNamespace } from './EnsNamespace.js';
3
+ import { EnsResolutionError, EnsRpcError } from './errors.js';
4
+ const REAL_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
5
+ const ENS_NAME = 'vitalik.eth';
6
+ function mockChainManager(client) {
7
+ const tryGetPublicClient = client
8
+ ? vi.fn().mockReturnValue(client)
9
+ : vi.fn().mockReturnValue(undefined);
10
+ return { tryGetPublicClient };
11
+ }
12
+ function mockClient(overrides = {}) {
13
+ return {
14
+ getEnsAddress: vi.fn().mockResolvedValue(REAL_ADDRESS),
15
+ getEnsName: vi.fn().mockResolvedValue(ENS_NAME),
16
+ getEnsText: vi.fn().mockResolvedValue(null),
17
+ ...overrides,
18
+ };
19
+ }
20
+ describe('EnsNamespace', () => {
21
+ describe('getAddress', () => {
22
+ it('resolves a hex address directly', async () => {
23
+ const ens = new EnsNamespace(mockChainManager());
24
+ expect(await ens.getAddress(REAL_ADDRESS)).toBe(REAL_ADDRESS);
25
+ });
26
+ it('resolves an ENS name via mainnet client', async () => {
27
+ const client = mockClient();
28
+ const ens = new EnsNamespace(mockChainManager(client));
29
+ expect(await ens.getAddress(ENS_NAME)).toBe(REAL_ADDRESS);
30
+ expect(client.getEnsAddress).toHaveBeenCalledWith({ name: ENS_NAME });
31
+ });
32
+ it('caches resolved addresses on subsequent calls', async () => {
33
+ const client = mockClient();
34
+ const ens = new EnsNamespace(mockChainManager(client));
35
+ await ens.getAddress(ENS_NAME);
36
+ await ens.getAddress(ENS_NAME);
37
+ expect(client.getEnsAddress).toHaveBeenCalledTimes(1);
38
+ });
39
+ });
40
+ describe('getName', () => {
41
+ it('returns ENS name for a known address', async () => {
42
+ const client = mockClient();
43
+ const ens = new EnsNamespace(mockChainManager(client));
44
+ expect(await ens.getName(REAL_ADDRESS)).toBe(ENS_NAME);
45
+ expect(client.getEnsName).toHaveBeenCalledWith({ address: REAL_ADDRESS });
46
+ });
47
+ it('returns null when no primary name is set', async () => {
48
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) });
49
+ const ens = new EnsNamespace(mockChainManager(client));
50
+ expect(await ens.getName(REAL_ADDRESS)).toBeNull();
51
+ });
52
+ it('throws EnsRpcError on RPC failure', async () => {
53
+ const client = mockClient({
54
+ getEnsName: vi.fn().mockRejectedValue(new Error('rpc down')),
55
+ });
56
+ const ens = new EnsNamespace(mockChainManager(client));
57
+ await expect(ens.getName(REAL_ADDRESS)).rejects.toThrow(EnsRpcError);
58
+ });
59
+ it('caches results on subsequent calls', async () => {
60
+ const client = mockClient();
61
+ const ens = new EnsNamespace(mockChainManager(client));
62
+ await ens.getName(REAL_ADDRESS);
63
+ await ens.getName(REAL_ADDRESS);
64
+ expect(client.getEnsName).toHaveBeenCalledTimes(1);
65
+ });
66
+ it('caches null results', async () => {
67
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) });
68
+ const ens = new EnsNamespace(mockChainManager(client));
69
+ await ens.getName(REAL_ADDRESS);
70
+ await ens.getName(REAL_ADDRESS);
71
+ expect(client.getEnsName).toHaveBeenCalledTimes(1);
72
+ });
73
+ });
74
+ describe('getInfo', () => {
75
+ it('returns all-null EnsInfo when address has no primary name', async () => {
76
+ const client = mockClient({ getEnsName: vi.fn().mockResolvedValue(null) });
77
+ const ens = new EnsNamespace(mockChainManager(client));
78
+ const info = await ens.getInfo(REAL_ADDRESS);
79
+ expect(info).toEqual({
80
+ avatar: null,
81
+ display: null,
82
+ description: null,
83
+ url: null,
84
+ email: null,
85
+ keywords: null,
86
+ twitter: null,
87
+ github: null,
88
+ discord: null,
89
+ reddit: null,
90
+ });
91
+ });
92
+ it('returns all text record fields when name is given', async () => {
93
+ const client = mockClient({
94
+ getEnsText: vi.fn().mockResolvedValue('test-value'),
95
+ });
96
+ const ens = new EnsNamespace(mockChainManager(client));
97
+ const info = await ens.getInfo(ENS_NAME);
98
+ expect(info.avatar).toBe('test-value');
99
+ expect(info.twitter).toBe('test-value');
100
+ expect(info.github).toBe('test-value');
101
+ });
102
+ it('returns null fields when text records are not set', async () => {
103
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) });
104
+ const ens = new EnsNamespace(mockChainManager(client));
105
+ const info = await ens.getInfo(ENS_NAME);
106
+ expect(info.avatar).toBeNull();
107
+ expect(info.twitter).toBeNull();
108
+ });
109
+ it('fetches all 10 standard keys in parallel', async () => {
110
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) });
111
+ const ens = new EnsNamespace(mockChainManager(client));
112
+ await ens.getInfo(ENS_NAME);
113
+ expect(client.getEnsText).toHaveBeenCalledTimes(10);
114
+ });
115
+ it('throws EnsRpcError on text lookup RPC failure', async () => {
116
+ const client = mockClient({
117
+ getEnsText: vi.fn().mockRejectedValue(new Error('rpc down')),
118
+ });
119
+ const ens = new EnsNamespace(mockChainManager(client));
120
+ await expect(ens.getInfo(ENS_NAME)).rejects.toThrow(EnsRpcError);
121
+ });
122
+ it('throws EnsResolutionError when the resolved name fails normalization', async () => {
123
+ const client = mockClient({
124
+ getEnsName: vi.fn().mockResolvedValue('not!valid.eth'),
125
+ });
126
+ const ens = new EnsNamespace(mockChainManager(client));
127
+ await expect(ens.getInfo(REAL_ADDRESS)).rejects.toThrow(EnsResolutionError);
128
+ });
129
+ it('skips reverse resolution when input is already an EnsName', async () => {
130
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) });
131
+ const ens = new EnsNamespace(mockChainManager(client));
132
+ await ens.getInfo(ENS_NAME);
133
+ expect(client.getEnsName).not.toHaveBeenCalled();
134
+ });
135
+ it('caches results on subsequent calls', async () => {
136
+ const client = mockClient({ getEnsText: vi.fn().mockResolvedValue(null) });
137
+ const ens = new EnsNamespace(mockChainManager(client));
138
+ await ens.getInfo(ENS_NAME);
139
+ await ens.getInfo(ENS_NAME);
140
+ expect(client.getEnsText).toHaveBeenCalledTimes(10);
141
+ });
142
+ });
143
+ });
144
+ //# sourceMappingURL=EnsNamespace.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnsNamespace.spec.js","sourceRoot":"","sources":["../../src/ens/EnsNamespace.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Thrown when an ENS operation is attempted but the required chain is not
3
+ * included in the Actions chain configuration.
4
+ */
5
+ export declare class EnsNotConfiguredError extends Error {
6
+ chainId: number;
7
+ constructor(chainId?: 1);
8
+ }
9
+ /**
10
+ * Thrown when an ENS name cannot be resolved to an address — e.g. the name
11
+ * is unregistered, resolves to the zero address, or fails normalization.
12
+ */
13
+ export declare class EnsResolutionError extends Error {
14
+ input: string;
15
+ constructor(message: string, input: string, options?: ErrorOptions);
16
+ }
17
+ /**
18
+ * Thrown when an ENS RPC call fails due to a network or provider error.
19
+ */
20
+ export declare class EnsRpcError extends Error {
21
+ input: string;
22
+ constructor(message: string, input: string, options?: ErrorOptions);
23
+ }
24
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/ens/errors.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,OAAO,EAAE,MAAM,CAAA;gBAEH,OAAO,IAAa;CAQjC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,KAAK,EAAE,MAAM,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKnE;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,KAAK,EAAE,MAAM,CAAA;gBAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKnE"}
@@ -0,0 +1,35 @@
1
+ import { mainnet } from 'viem/chains';
2
+ /**
3
+ * Thrown when an ENS operation is attempted but the required chain is not
4
+ * included in the Actions chain configuration.
5
+ */
6
+ export class EnsNotConfiguredError extends Error {
7
+ constructor(chainId = mainnet.id) {
8
+ super(`ENS operations require Ethereum mainnet. ` +
9
+ `Add chain ID ${chainId} to your chain configuration.`);
10
+ this.name = 'EnsNotConfiguredError';
11
+ this.chainId = chainId;
12
+ }
13
+ }
14
+ /**
15
+ * Thrown when an ENS name cannot be resolved to an address — e.g. the name
16
+ * is unregistered, resolves to the zero address, or fails normalization.
17
+ */
18
+ export class EnsResolutionError extends Error {
19
+ constructor(message, input, options) {
20
+ super(message, options);
21
+ this.name = 'EnsResolutionError';
22
+ this.input = input;
23
+ }
24
+ }
25
+ /**
26
+ * Thrown when an ENS RPC call fails due to a network or provider error.
27
+ */
28
+ export class EnsRpcError extends Error {
29
+ constructor(message, input, options) {
30
+ super(message, options);
31
+ this.name = 'EnsRpcError';
32
+ this.input = input;
33
+ }
34
+ }
35
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/ens/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAG9C,YAAY,OAAO,GAAG,OAAO,CAAC,EAAE;QAC9B,KAAK,CACH,2CAA2C;YACzC,gBAAgB,OAAO,+BAA+B,CACzD,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAG3C,YAAY,OAAe,EAAE,KAAa,EAAE,OAAsB;QAChE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGpC,YAAY,OAAe,EAAE,KAAa,EAAE,OAAsB;QAChE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { EnsNamespace } from './EnsNamespace.js';
2
+ export { EnsNotConfiguredError, EnsResolutionError, EnsRpcError, } from './errors.js';
3
+ export { type EnsInfo, type EnsName, isEnsName, type NameServiceProvider, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,SAAS,EACT,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { EnsNamespace } from './EnsNamespace.js';
2
+ export { EnsNotConfiguredError, EnsResolutionError, EnsRpcError, } from './errors.js';
3
+ export { isEnsName, } from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ens/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAGL,SAAS,GAEV,MAAM,YAAY,CAAA"}