@hyperlane-xyz/sdk 1.4.1 → 1.4.2-beta70

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 (86) hide show
  1. package/dist/app/HyperlaneApp.d.ts +14 -0
  2. package/dist/app/HyperlaneApp.d.ts.map +1 -0
  3. package/dist/app/HyperlaneApp.js +27 -0
  4. package/dist/app/HyperlaneApp.js.map +1 -0
  5. package/dist/app/MultiProtocolApp.d.ts +51 -0
  6. package/dist/app/MultiProtocolApp.d.ts.map +1 -0
  7. package/dist/app/MultiProtocolApp.js +80 -0
  8. package/dist/app/MultiProtocolApp.js.map +1 -0
  9. package/dist/app/MultiProtocolApp.test.d.ts +2 -0
  10. package/dist/app/MultiProtocolApp.test.d.ts.map +1 -0
  11. package/dist/app/MultiProtocolApp.test.js +19 -0
  12. package/dist/app/MultiProtocolApp.test.js.map +1 -0
  13. package/dist/consts/defaultMultisigIsm.d.ts +4 -0
  14. package/dist/consts/defaultMultisigIsm.d.ts.map +1 -0
  15. package/dist/consts/defaultMultisigIsm.js +194 -0
  16. package/dist/consts/defaultMultisigIsm.js.map +1 -0
  17. package/dist/consts/rcMultisigIsm.d.ts +4 -0
  18. package/dist/consts/rcMultisigIsm.d.ts.map +1 -0
  19. package/dist/consts/rcMultisigIsm.js +117 -0
  20. package/dist/consts/rcMultisigIsm.js.map +1 -0
  21. package/dist/contracts/contracts.d.ts +19 -0
  22. package/dist/contracts/contracts.d.ts.map +1 -0
  23. package/dist/contracts/contracts.js +80 -0
  24. package/dist/contracts/contracts.js.map +1 -0
  25. package/dist/contracts/types.d.ts +18 -0
  26. package/dist/contracts/types.d.ts.map +1 -0
  27. package/dist/contracts/types.js +3 -0
  28. package/dist/contracts/types.js.map +1 -0
  29. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  30. package/dist/ism/HyperlaneIsmFactory.js +0 -4
  31. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  32. package/dist/metadata/ChainMetadataManager.d.ts +130 -0
  33. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -0
  34. package/dist/metadata/ChainMetadataManager.js +240 -0
  35. package/dist/metadata/ChainMetadataManager.js.map +1 -0
  36. package/dist/metadata/agentConfig.d.ts +3 -3
  37. package/dist/metadata/agentConfig.test.d.ts +2 -0
  38. package/dist/metadata/agentConfig.test.d.ts.map +1 -0
  39. package/dist/metadata/agentConfig.test.js +33 -0
  40. package/dist/metadata/agentConfig.test.js.map +1 -0
  41. package/dist/metadata/deploymentArtifacts.d.ts +4 -4
  42. package/dist/providers/MultiProtocolProvider.d.ts +39 -0
  43. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -0
  44. package/dist/providers/MultiProtocolProvider.js +105 -0
  45. package/dist/providers/MultiProtocolProvider.js.map +1 -0
  46. package/dist/providers/MultiProtocolProvider.test.d.ts +2 -0
  47. package/dist/providers/MultiProtocolProvider.test.d.ts.map +1 -0
  48. package/dist/providers/MultiProtocolProvider.test.js +24 -0
  49. package/dist/providers/MultiProtocolProvider.test.js.map +1 -0
  50. package/dist/providers/ProviderType.d.ts +71 -0
  51. package/dist/providers/ProviderType.d.ts.map +1 -0
  52. package/dist/providers/ProviderType.js +11 -0
  53. package/dist/providers/ProviderType.js.map +1 -0
  54. package/dist/providers/providerBuilders.d.ts +17 -0
  55. package/dist/providers/providerBuilders.d.ts.map +1 -0
  56. package/dist/providers/providerBuilders.js +97 -0
  57. package/dist/providers/providerBuilders.js.map +1 -0
  58. package/dist/router/MultiProtocolRouterApps.d.ts +29 -0
  59. package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -0
  60. package/dist/router/MultiProtocolRouterApps.js +43 -0
  61. package/dist/router/MultiProtocolRouterApps.js.map +1 -0
  62. package/dist/router/MultiProtocolRouterApps.test.d.ts +2 -0
  63. package/dist/router/MultiProtocolRouterApps.test.d.ts.map +1 -0
  64. package/dist/router/MultiProtocolRouterApps.test.js +20 -0
  65. package/dist/router/MultiProtocolRouterApps.test.js.map +1 -0
  66. package/dist/router/adapters/EvmRouterAdapter.d.ts +25 -0
  67. package/dist/router/adapters/EvmRouterAdapter.d.ts.map +1 -0
  68. package/dist/router/adapters/EvmRouterAdapter.js +50 -0
  69. package/dist/router/adapters/EvmRouterAdapter.js.map +1 -0
  70. package/dist/router/adapters/SealevelRouterAdapter.d.ts +50 -0
  71. package/dist/router/adapters/SealevelRouterAdapter.d.ts.map +1 -0
  72. package/dist/router/adapters/SealevelRouterAdapter.js +132 -0
  73. package/dist/router/adapters/SealevelRouterAdapter.js.map +1 -0
  74. package/dist/router/adapters/SealevelRouterAdapter.test.d.ts +2 -0
  75. package/dist/router/adapters/SealevelRouterAdapter.test.d.ts.map +1 -0
  76. package/dist/router/adapters/SealevelRouterAdapter.test.js +21 -0
  77. package/dist/router/adapters/SealevelRouterAdapter.test.js.map +1 -0
  78. package/dist/router/adapters/types.d.ts +18 -0
  79. package/dist/router/adapters/types.d.ts.map +1 -0
  80. package/dist/router/adapters/types.js +3 -0
  81. package/dist/router/adapters/types.js.map +1 -0
  82. package/dist/utils/filter.d.ts +3 -0
  83. package/dist/utils/filter.d.ts.map +1 -0
  84. package/dist/utils/filter.js +13 -0
  85. package/dist/utils/filter.js.map +1 -0
  86. package/package.json +6 -5
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const chains_1 = require("../consts/chains");
5
+ const MultiProvider_1 = require("../providers/MultiProvider");
6
+ const agentConfig_1 = require("./agentConfig");
7
+ describe('Agent config', () => {
8
+ const args = [
9
+ [chains_1.Chains.ethereum],
10
+ new MultiProvider_1.MultiProvider(),
11
+ {
12
+ ethereum: {
13
+ mailbox: '0xmailbox',
14
+ interchainGasPaymaster: '0xgas',
15
+ validatorAnnounce: '0xannounce',
16
+ },
17
+ },
18
+ { ethereum: 0 },
19
+ ];
20
+ it('Should generate a deprecated agent config', () => {
21
+ const result = (0, agentConfig_1.buildAgentConfigDeprecated)(...args);
22
+ (0, chai_1.expect)(Object.keys(result)).to.deep.equal(['chains']);
23
+ });
24
+ it('Should generate a new agent config', () => {
25
+ const result = (0, agentConfig_1.buildAgentConfigNew)(...args);
26
+ (0, chai_1.expect)(Object.keys(result)).to.deep.equal([chains_1.Chains.ethereum]);
27
+ });
28
+ it('Should generate a combined agent config', () => {
29
+ const result = (0, agentConfig_1.buildAgentConfig)(...args);
30
+ (0, chai_1.expect)(Object.keys(result)).to.deep.equal([chains_1.Chains.ethereum, 'chains']);
31
+ });
32
+ });
33
+ //# sourceMappingURL=agentConfig.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentConfig.test.js","sourceRoot":"","sources":["../../src/metadata/agentConfig.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,6CAA0C;AAC1C,8DAA2D;AAE3D,+CAIuB;AAEvB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAwC;QAChD,CAAC,eAAM,CAAC,QAAQ,CAAC;QACjB,IAAI,6BAAa,EAAE;QACnB;YACE,QAAQ,EAAE;gBACR,OAAO,EAAE,WAAW;gBACpB,sBAAsB,EAAE,OAAO;gBAC/B,iBAAiB,EAAE,YAAY;aAChC;SACF;QACD,EAAE,QAAQ,EAAE,CAAC,EAAE;KAChB,CAAC;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,wCAA0B,EAAC,GAAG,IAAI,CAAC,CAAC;QACnD,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAA,iCAAmB,EAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,GAAG,IAAI,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -5,13 +5,13 @@ export declare const HyperlaneDeploymentArtifactsSchema: z.ZodObject<{
5
5
  validatorAnnounce: z.ZodString;
6
6
  interchainSecurityModule: z.ZodOptional<z.ZodString>;
7
7
  }, "strip", z.ZodTypeAny, {
8
- interchainGasPaymaster: string;
9
8
  mailbox: string;
9
+ interchainGasPaymaster: string;
10
10
  validatorAnnounce: string;
11
11
  interchainSecurityModule?: string | undefined;
12
12
  }, {
13
- interchainGasPaymaster: string;
14
13
  mailbox: string;
14
+ interchainGasPaymaster: string;
15
15
  validatorAnnounce: string;
16
16
  interchainSecurityModule?: string | undefined;
17
17
  }>;
@@ -132,8 +132,8 @@ export declare const ChainMetadataWithArtifactsSchema: z.ZodObject<{
132
132
  name: string;
133
133
  chainId: number;
134
134
  protocol: import("./chainMetadataTypes").ProtocolType;
135
- interchainGasPaymaster: string;
136
135
  mailbox: string;
136
+ interchainGasPaymaster: string;
137
137
  rpcUrls: [{
138
138
  http: string;
139
139
  webSocket?: string | undefined;
@@ -190,8 +190,8 @@ export declare const ChainMetadataWithArtifactsSchema: z.ZodObject<{
190
190
  name: string;
191
191
  chainId: number;
192
192
  protocol: import("./chainMetadataTypes").ProtocolType;
193
- interchainGasPaymaster: string;
194
193
  mailbox: string;
194
+ interchainGasPaymaster: string;
195
195
  rpcUrls: [{
196
196
  http: string;
197
197
  webSocket?: string | undefined;
@@ -0,0 +1,39 @@
1
+ import { Debugger } from 'debug';
2
+ import { ChainMetadataManager } from '../metadata/ChainMetadataManager';
3
+ import type { ChainMetadata } from '../metadata/chainMetadataTypes';
4
+ import type { ChainMap, ChainName } from '../types';
5
+ import type { MultiProvider } from './MultiProvider';
6
+ import { EthersV5Provider, ProviderMap, ProviderType, SolanaWeb3Provider, TypedProvider, ViemProvider } from './ProviderType';
7
+ import { ProviderBuilderMap } from './providerBuilders';
8
+ export interface MultiProtocolProviderOptions {
9
+ loggerName?: string;
10
+ providerBuilders?: Partial<ProviderBuilderMap>;
11
+ }
12
+ /**
13
+ * A version of MultiProvider that can support different
14
+ * provider types across different protocol types.
15
+ *
16
+ * This uses a different interface for provider/signer related methods
17
+ * so it isn't strictly backwards compatible with MultiProvider.
18
+ *
19
+ * Unlike MultiProvider, this class does not support signer/signing methods (yet).
20
+ * @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses)
21
+ */
22
+ export declare class MultiProtocolProvider<MetaExt = {}> extends ChainMetadataManager<MetaExt> {
23
+ protected readonly options: MultiProtocolProviderOptions;
24
+ protected readonly providers: ChainMap<ProviderMap<TypedProvider>>;
25
+ protected signers: ChainMap<ProviderMap<never>>;
26
+ protected readonly logger: Debugger;
27
+ protected readonly providerBuilders: Partial<ProviderBuilderMap>;
28
+ constructor(chainMetadata?: ChainMap<ChainMetadata<MetaExt>>, options?: MultiProtocolProviderOptions);
29
+ static fromMultiProvider<MetaExt = {}>(mp: MultiProvider<MetaExt>, options?: MultiProtocolProviderOptions): MultiProtocolProvider<MetaExt>;
30
+ extendChainMetadata<NewExt = {}>(additionalMetadata: ChainMap<NewExt>): MultiProtocolProvider<MetaExt & NewExt>;
31
+ tryGetProvider(chainNameOrId: ChainName | number, type: ProviderType): TypedProvider | null;
32
+ getProvider(chainNameOrId: ChainName | number, type: ProviderType): TypedProvider;
33
+ getEthersV5Provider(chainNameOrId: ChainName | number): EthersV5Provider['provider'];
34
+ getViemProvider(chainNameOrId: ChainName | number): ViemProvider['provider'];
35
+ getSolanaWeb3Provider(chainNameOrId: ChainName | number): SolanaWeb3Provider['provider'];
36
+ setProvider(chainNameOrId: ChainName | number, provider: TypedProvider): TypedProvider;
37
+ setProviders(providers: ChainMap<TypedProvider>): void;
38
+ }
39
+ //# sourceMappingURL=MultiProtocolProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,OAAO,CAAC;AAKxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAEnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAqB,CAChC,OAAO,GAAG,EAAE,CACZ,SAAQ,oBAAoB,CAAC,OAAO,CAAC;IAUnC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,4BAA4B;IAT1D,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAM;IACxE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAM;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAG/D,aAAa,GAAE,QAAQ,CACrB,aAAa,CAAC,OAAO,CAAC,CACoC,EACzC,OAAO,GAAE,4BAAiC;IAU/D,MAAM,CAAC,iBAAiB,CAAC,OAAO,GAAG,EAAE,EACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,EAC1B,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAAC,OAAO,CAAC;IAUxB,mBAAmB,CAAC,MAAM,GAAG,EAAE,EACtC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACnC,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC;IAK1C,cAAc,CACZ,aAAa,EAAE,SAAS,GAAG,MAAM,EACjC,IAAI,EAAE,YAAY,GACjB,aAAa,GAAG,IAAI;IAgBvB,WAAW,CACT,aAAa,EAAE,SAAS,GAAG,MAAM,EACjC,IAAI,EAAE,YAAY,GACjB,aAAa;IAOhB,mBAAmB,CACjB,aAAa,EAAE,SAAS,GAAG,MAAM,GAChC,gBAAgB,CAAC,UAAU,CAAC;IAgB/B,eAAe,CAAC,aAAa,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;IAO5E,qBAAqB,CACnB,aAAa,EAAE,SAAS,GAAG,MAAM,GAChC,kBAAkB,CAAC,UAAU,CAAC;IAOjC,WAAW,CACT,aAAa,EAAE,SAAS,GAAG,MAAM,EACjC,QAAQ,EAAE,aAAa,GACtB,aAAa;IAOhB,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI;CAKvD"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiProtocolProvider = void 0;
4
+ const debug_1 = require("debug");
5
+ const utils_1 = require("@hyperlane-xyz/utils");
6
+ const chainMetadata_1 = require("../consts/chainMetadata");
7
+ const ChainMetadataManager_1 = require("../metadata/ChainMetadataManager");
8
+ const ProviderType_1 = require("./ProviderType");
9
+ const providerBuilders_1 = require("./providerBuilders");
10
+ /**
11
+ * A version of MultiProvider that can support different
12
+ * provider types across different protocol types.
13
+ *
14
+ * This uses a different interface for provider/signer related methods
15
+ * so it isn't strictly backwards compatible with MultiProvider.
16
+ *
17
+ * Unlike MultiProvider, this class does not support signer/signing methods (yet).
18
+ * @typeParam MetaExt - Extra metadata fields for chains (such as contract addresses)
19
+ */
20
+ class MultiProtocolProvider extends ChainMetadataManager_1.ChainMetadataManager {
21
+ constructor(chainMetadata = chainMetadata_1.chainMetadata, options = {}) {
22
+ super(chainMetadata, options);
23
+ this.options = options;
24
+ this.providers = {};
25
+ this.signers = {}; // TODO signer support
26
+ this.logger = (0, debug_1.debug)(options?.loggerName || 'hyperlane:MultiProtocolProvider');
27
+ this.providerBuilders =
28
+ options.providerBuilders || providerBuilders_1.defaultProviderBuilderMap;
29
+ }
30
+ static fromMultiProvider(mp, options = {}) {
31
+ const newMp = new MultiProtocolProvider(mp.metadata, options);
32
+ const typedProviders = (0, utils_1.objMap)(mp.providers, (_, provider) => ({
33
+ type: ProviderType_1.ProviderType.EthersV5,
34
+ provider,
35
+ }));
36
+ newMp.setProviders(typedProviders);
37
+ return newMp;
38
+ }
39
+ extendChainMetadata(additionalMetadata) {
40
+ const newMetadata = super.extendChainMetadata(additionalMetadata).metadata;
41
+ return new MultiProtocolProvider(newMetadata, this.options);
42
+ }
43
+ tryGetProvider(chainNameOrId, type) {
44
+ var _a;
45
+ const metadata = this.tryGetChainMetadata(chainNameOrId);
46
+ if (!metadata)
47
+ return null;
48
+ const { name, chainId, rpcUrls } = metadata;
49
+ if (this.providers[name]?.[type])
50
+ return this.providers[name][type];
51
+ const builder = this.providerBuilders[type];
52
+ if (!rpcUrls.length || !builder)
53
+ return null;
54
+ const provider = builder(rpcUrls, chainId);
55
+ (_a = this.providers)[name] || (_a[name] = {});
56
+ this.providers[name][type] = provider;
57
+ return provider;
58
+ }
59
+ getProvider(chainNameOrId, type) {
60
+ const provider = this.tryGetProvider(chainNameOrId, type);
61
+ if (!provider)
62
+ throw new Error(`No provider available for ${chainNameOrId}`);
63
+ return provider;
64
+ }
65
+ getEthersV5Provider(chainNameOrId) {
66
+ const provider = this.getProvider(chainNameOrId, ProviderType_1.ProviderType.EthersV5);
67
+ if (provider.type !== ProviderType_1.ProviderType.EthersV5)
68
+ throw new Error('Invalid provider type');
69
+ return provider.provider;
70
+ }
71
+ // getEthersV6Provider(
72
+ // chainNameOrId: ChainName | number,
73
+ // ): EthersV6Provider['provider'] {
74
+ // const provider = this.getProvider(chainNameOrId, ProviderType.EthersV5);
75
+ // if (provider.type !== ProviderType.EthersV6)
76
+ // throw new Error('Invalid provider type');
77
+ // return provider.provider;
78
+ // }
79
+ getViemProvider(chainNameOrId) {
80
+ const provider = this.getProvider(chainNameOrId, ProviderType_1.ProviderType.EthersV5);
81
+ if (provider.type !== ProviderType_1.ProviderType.Viem)
82
+ throw new Error('Invalid provider type');
83
+ return provider.provider;
84
+ }
85
+ getSolanaWeb3Provider(chainNameOrId) {
86
+ const provider = this.getProvider(chainNameOrId, ProviderType_1.ProviderType.EthersV5);
87
+ if (provider.type !== ProviderType_1.ProviderType.SolanaWeb3)
88
+ throw new Error('Invalid provider type');
89
+ return provider.provider;
90
+ }
91
+ setProvider(chainNameOrId, provider) {
92
+ var _a;
93
+ const chainName = this.getChainName(chainNameOrId);
94
+ (_a = this.providers)[chainName] || (_a[chainName] = {});
95
+ this.providers[chainName][provider.type] = provider;
96
+ return provider;
97
+ }
98
+ setProviders(providers) {
99
+ for (const chain of Object.keys(providers)) {
100
+ this.setProvider(chain, providers[chain]);
101
+ }
102
+ }
103
+ }
104
+ exports.MultiProtocolProvider = MultiProtocolProvider;
105
+ //# sourceMappingURL=MultiProtocolProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolProvider.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MultiProtocolProvider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolProvider.test.d.ts","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const chainMetadata_1 = require("../consts/chainMetadata");
5
+ const chains_1 = require("../consts/chains");
6
+ const MultiProtocolProvider_1 = require("../providers/MultiProtocolProvider");
7
+ describe('MultiProtocolProvider', () => {
8
+ describe('constructs', () => {
9
+ it('creates a multi protocol provider without type extension', async () => {
10
+ const multiProvider = new MultiProtocolProvider_1.MultiProtocolProvider();
11
+ const ethMetadata = multiProvider.getChainMetadata(chains_1.Chains.ethereum);
12
+ (0, chai_1.expect)(ethMetadata.name).to.equal(chains_1.Chains.ethereum);
13
+ });
14
+ it('creates a multi protocol provider with type extension', async () => {
15
+ const multiProvider = new MultiProtocolProvider_1.MultiProtocolProvider({
16
+ [chains_1.Chains.ethereum]: { ...chainMetadata_1.ethereum, foo: '0x123', bar: 1 },
17
+ });
18
+ const ethMetadata = multiProvider.getChainMetadata(chains_1.Chains.ethereum);
19
+ (0, chai_1.expect)(ethMetadata.foo).to.equal('0x123');
20
+ (0, chai_1.expect)(ethMetadata.bar).to.equal(1);
21
+ });
22
+ });
23
+ });
24
+ //# sourceMappingURL=MultiProtocolProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolProvider.test.js","sourceRoot":"","sources":["../../src/providers/MultiProtocolProvider.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,2DAAmD;AACnD,6CAA0C;AAC1C,8EAA2E;AAE3E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,aAAa,GAAG,IAAI,6CAAqB,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,aAAa,CAAC,gBAAgB,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAA,aAAM,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,aAAa,GAAG,IAAI,6CAAqB,CAG5C;gBACD,CAAC,eAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,wBAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;aACzD,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,aAAa,CAAC,gBAAgB,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAA,aAAM,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAA,aAAM,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { Connection, Transaction as SolTransaction } from '@solana/web3.js';
2
+ import type { Contract as EV5Contract, providers as EV5Providers, PopulatedTransaction as EV5Transaction } from 'ethers';
3
+ import type { GetContractReturnType, PublicClient, Transaction as VTransaction } from 'viem';
4
+ export declare enum ProviderType {
5
+ EthersV5 = "ethers-v5",
6
+ Viem = "viem",
7
+ SolanaWeb3 = "solana-web3"
8
+ }
9
+ export type ProviderMap<Value> = Partial<Record<ProviderType, Value>>;
10
+ /**
11
+ * Providers with discriminated union of type
12
+ */
13
+ interface TypedProviderBase<T> {
14
+ type: ProviderType;
15
+ provider: T;
16
+ }
17
+ export interface EthersV5Provider extends TypedProviderBase<EV5Providers.Provider> {
18
+ type: ProviderType.EthersV5;
19
+ provider: EV5Providers.Provider;
20
+ }
21
+ export interface ViemProvider extends TypedProviderBase<PublicClient> {
22
+ type: ProviderType.Viem;
23
+ provider: PublicClient;
24
+ }
25
+ export interface SolanaWeb3Provider extends TypedProviderBase<Connection> {
26
+ type: ProviderType.SolanaWeb3;
27
+ provider: Connection;
28
+ }
29
+ export type TypedProvider = EthersV5Provider | ViemProvider | SolanaWeb3Provider;
30
+ /**
31
+ * Contracts with discriminated union of provider type
32
+ */
33
+ interface TypedContractBase<T> {
34
+ type: ProviderType;
35
+ contract: T;
36
+ }
37
+ export interface EthersV5Contract extends TypedContractBase<EV5Contract> {
38
+ type: ProviderType.EthersV5;
39
+ transaction: EV5Contract;
40
+ }
41
+ export interface ViemContract extends TypedContractBase<GetContractReturnType> {
42
+ type: ProviderType.Viem;
43
+ transaction: GetContractReturnType;
44
+ }
45
+ export interface SolanaWeb3Contract extends TypedContractBase<never> {
46
+ type: ProviderType.SolanaWeb3;
47
+ transaction: never;
48
+ }
49
+ export type TypedContract = EthersV5Contract | ViemContract | SolanaWeb3Contract;
50
+ /**
51
+ * Transactions with discriminated union of provider type
52
+ */
53
+ interface TypedTransactionBase<T> {
54
+ type: ProviderType;
55
+ transaction: T;
56
+ }
57
+ export interface EthersV5Transaction extends TypedTransactionBase<EV5Transaction> {
58
+ type: ProviderType.EthersV5;
59
+ transaction: EV5Transaction;
60
+ }
61
+ export interface ViemTransaction extends TypedTransactionBase<VTransaction> {
62
+ type: ProviderType.Viem;
63
+ transaction: VTransaction;
64
+ }
65
+ export interface SolanaWeb3Transaction extends TypedTransactionBase<SolTransaction> {
66
+ type: ProviderType.SolanaWeb3;
67
+ transaction: SolTransaction;
68
+ }
69
+ export type TypedTransaction = EthersV5Transaction | ViemTransaction | SolanaWeb3Transaction;
70
+ export {};
71
+ //# sourceMappingURL=ProviderType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderType.d.ts","sourceRoot":"","sources":["../../src/providers/ProviderType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,IAAI,cAAc,EAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,QAAQ,IAAI,WAAW,EACvB,SAAS,IAAI,YAAY,EACzB,oBAAoB,IAAI,cAAc,EACvC,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,WAAW,IAAI,YAAY,EAC5B,MAAM,MAAM,CAAC;AAEd,oBAAY,YAAY;IACtB,QAAQ,cAAc;IAEtB,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtE;;GAEG;AAEH,UAAU,iBAAiB,CAAC,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,MAAM,WAAW,gBACf,SAAQ,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC;IAChD,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;CACjC;AAOD,MAAM,WAAW,YAAa,SAAQ,iBAAiB,CAAC,YAAY,CAAC;IACnE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IACvE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC;IAC9B,QAAQ,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAEhB,YAAY,GACZ,kBAAkB,CAAC;AAEvB;;GAEG;AAEH,UAAU,iBAAiB,CAAC,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IACtE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAOD,MAAM,WAAW,YAAa,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;IAC5E,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,WAAW,EAAE,qBAAqB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,KAAK,CAAC;IAClE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC;IAE9B,WAAW,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAEhB,YAAY,GACZ,kBAAkB,CAAC;AAEvB;;GAEG;AAEH,UAAU,oBAAoB,CAAC,CAAC;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,mBACf,SAAQ,oBAAoB,CAAC,cAAc,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;IAC5B,WAAW,EAAE,cAAc,CAAC;CAC7B;AAOD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB,CAAC,YAAY,CAAC;IACzE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,WAAW,EAAE,YAAY,CAAC;CAC3B;AAED,MAAM,WAAW,qBACf,SAAQ,oBAAoB,CAAC,cAAc,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC;IAE9B,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB,mBAAmB,GAEnB,eAAe,GACf,qBAAqB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderType = void 0;
4
+ var ProviderType;
5
+ (function (ProviderType) {
6
+ ProviderType["EthersV5"] = "ethers-v5";
7
+ // EthersV6 = 'ethers-v6', Disabled for now to simplify build tooling
8
+ ProviderType["Viem"] = "viem";
9
+ ProviderType["SolanaWeb3"] = "solana-web3";
10
+ })(ProviderType || (exports.ProviderType = ProviderType = {}));
11
+ //# sourceMappingURL=ProviderType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderType.js","sourceRoot":"","sources":["../../src/providers/ProviderType.ts"],"names":[],"mappings":";;;AAgBA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,sCAAsB,CAAA;IACtB,qEAAqE;IACrE,6BAAa,CAAA;IACb,0CAA0B,CAAA;AAC5B,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"}
@@ -0,0 +1,17 @@
1
+ import { providers } from 'ethers';
2
+ import { ProtocolType } from '@hyperlane-xyz/utils';
3
+ import { ChainMetadata } from '../metadata/chainMetadataTypes';
4
+ import { EthersV5Provider, ProviderType, SolanaWeb3Provider, TypedProvider, ViemProvider } from './ProviderType';
5
+ import { RetryProviderOptions } from './RetryProvider';
6
+ export type ProviderBuilderFn<P> = (rpcUrls: ChainMetadata['rpcUrls'], network: number | string, retryOverride?: RetryProviderOptions) => P;
7
+ export type TypedProviderBuilderFn = ProviderBuilderFn<TypedProvider>;
8
+ export declare const DEFAULT_RETRY_OPTIONS: RetryProviderOptions;
9
+ export declare function defaultEthersV5ProviderBuilder(rpcUrls: ChainMetadata['rpcUrls'], network: number | string, retryOverride?: RetryProviderOptions): EthersV5Provider;
10
+ export declare function defaultViemProviderBuilder(rpcUrls: ChainMetadata['rpcUrls'], network: number | string): ViemProvider;
11
+ export declare function defaultSolProviderBuilder(rpcUrls: ChainMetadata['rpcUrls'], _network: number | string): SolanaWeb3Provider;
12
+ export declare function defaultFuelProviderBuilder(rpcUrls: ChainMetadata['rpcUrls'], _network: number | string): EthersV5Provider;
13
+ export declare function defaultProviderBuilder(rpcUrls: ChainMetadata['rpcUrls'], _network: number | string): providers.Provider;
14
+ export type ProviderBuilderMap = Record<ProviderType, ProviderBuilderFn<TypedProvider>>;
15
+ export declare const defaultProviderBuilderMap: ProviderBuilderMap;
16
+ export declare const protocolToDefaultProviderBuilder: Record<ProtocolType, ProviderBuilderFn<TypedProvider>>;
17
+ //# sourceMappingURL=providerBuilders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerBuilders.d.ts","sourceRoot":"","sources":["../../src/providers/providerBuilders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CACjC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,aAAa,CAAC,EAAE,oBAAoB,KACjC,CAAC,CAAC;AACP,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB,EAAE,oBAGnC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,aAAa,CAAC,EAAE,oBAAoB,GACnC,gBAAgB,CAgBlB;AAcD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,YAAY,CAiBd;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,kBAAkB,CAMpB;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,gBAAgB,CAGlB;AAGD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EACjC,QAAQ,EAAE,MAAM,GAAG,MAAM,GACxB,SAAS,CAAC,QAAQ,CAEpB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC,YAAY,EACZ,iBAAiB,CAAC,aAAa,CAAC,CACjC,CAAC;AACF,eAAO,MAAM,yBAAyB,EAAE,kBAKvC,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,YAAY,EACZ,iBAAiB,CAAC,aAAa,CAAC,CAKjC,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.protocolToDefaultProviderBuilder = exports.defaultProviderBuilderMap = exports.defaultProviderBuilder = exports.defaultFuelProviderBuilder = exports.defaultSolProviderBuilder = exports.defaultViemProviderBuilder = exports.defaultEthersV5ProviderBuilder = exports.DEFAULT_RETRY_OPTIONS = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const ethers_1 = require("ethers");
6
+ const viem_1 = require("viem");
7
+ const utils_1 = require("@hyperlane-xyz/utils");
8
+ const ProviderType_1 = require("./ProviderType");
9
+ const RetryProvider_1 = require("./RetryProvider");
10
+ exports.DEFAULT_RETRY_OPTIONS = {
11
+ maxRequests: 3,
12
+ baseRetryMs: 250,
13
+ };
14
+ function defaultEthersV5ProviderBuilder(rpcUrls, network, retryOverride) {
15
+ const createProvider = (r) => {
16
+ const retry = r.retry || retryOverride;
17
+ return retry
18
+ ? new RetryProvider_1.RetryJsonRpcProvider(retry, r.http, network)
19
+ : new ethers_1.providers.StaticJsonRpcProvider(r.http, network);
20
+ };
21
+ let provider;
22
+ if (rpcUrls.length > 1) {
23
+ provider = new ethers_1.providers.FallbackProvider(rpcUrls.map(createProvider), 1);
24
+ }
25
+ else if (rpcUrls.length === 1) {
26
+ provider = createProvider(rpcUrls[0]);
27
+ }
28
+ else {
29
+ throw new Error('No RPC URLs provided');
30
+ }
31
+ return { type: ProviderType_1.ProviderType.EthersV5, provider };
32
+ }
33
+ exports.defaultEthersV5ProviderBuilder = defaultEthersV5ProviderBuilder;
34
+ // export function defaultEthersV6ProviderBuilder(
35
+ // rpcUrls: ChainMetadata['rpcUrls'],
36
+ // network: number | string,
37
+ // ): EthersV6Provider {
38
+ // // TODO add support for retry providers here
39
+ // if (!rpcUrls.length) throw new Error('No RPC URLs provided');
40
+ // return {
41
+ // type: ProviderType.EthersV6,
42
+ // provider: new Ev6JsonRpcProvider(rpcUrls[0].http, network),
43
+ // };
44
+ // }
45
+ function defaultViemProviderBuilder(rpcUrls, network) {
46
+ if (!rpcUrls.length)
47
+ throw new Error('No RPC URLs provided');
48
+ if (!(0, utils_1.isNumeric)(network))
49
+ throw new Error('Viem requires a numeric network');
50
+ const id = parseInt(network.toString(), 10);
51
+ const name = network.toString(); // TODO get more descriptive name
52
+ const url = rpcUrls[0].http;
53
+ const client = (0, viem_1.createPublicClient)({
54
+ chain: {
55
+ id,
56
+ name,
57
+ network: name,
58
+ nativeCurrency: { name: '', symbol: '', decimals: 0 },
59
+ rpcUrls: { default: { http: [url] }, public: { http: [url] } },
60
+ },
61
+ transport: (0, viem_1.http)(rpcUrls[0].http),
62
+ });
63
+ return { type: ProviderType_1.ProviderType.Viem, provider: client };
64
+ }
65
+ exports.defaultViemProviderBuilder = defaultViemProviderBuilder;
66
+ function defaultSolProviderBuilder(rpcUrls, _network) {
67
+ if (!rpcUrls.length)
68
+ throw new Error('No RPC URLs provided');
69
+ return {
70
+ type: ProviderType_1.ProviderType.SolanaWeb3,
71
+ provider: new web3_js_1.Connection(rpcUrls[0].http, 'confirmed'),
72
+ };
73
+ }
74
+ exports.defaultSolProviderBuilder = defaultSolProviderBuilder;
75
+ function defaultFuelProviderBuilder(rpcUrls, _network) {
76
+ if (!rpcUrls.length)
77
+ throw new Error('No RPC URLs provided');
78
+ throw new Error('TODO fuel support');
79
+ }
80
+ exports.defaultFuelProviderBuilder = defaultFuelProviderBuilder;
81
+ // Kept for backwards compatibility
82
+ function defaultProviderBuilder(rpcUrls, _network) {
83
+ return defaultEthersV5ProviderBuilder(rpcUrls, _network).provider;
84
+ }
85
+ exports.defaultProviderBuilder = defaultProviderBuilder;
86
+ exports.defaultProviderBuilderMap = {
87
+ [ProviderType_1.ProviderType.EthersV5]: defaultEthersV5ProviderBuilder,
88
+ // [ProviderType.EthersV6]: defaultEthersV6ProviderBuilder,
89
+ [ProviderType_1.ProviderType.Viem]: defaultViemProviderBuilder,
90
+ [ProviderType_1.ProviderType.SolanaWeb3]: defaultSolProviderBuilder,
91
+ };
92
+ exports.protocolToDefaultProviderBuilder = {
93
+ [utils_1.ProtocolType.Ethereum]: defaultEthersV5ProviderBuilder,
94
+ [utils_1.ProtocolType.Sealevel]: defaultSolProviderBuilder,
95
+ [utils_1.ProtocolType.Fuel]: defaultFuelProviderBuilder,
96
+ };
97
+ //# sourceMappingURL=providerBuilders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerBuilders.js","sourceRoot":"","sources":["../../src/providers/providerBuilders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Address, Domain } from '@hyperlane-xyz/utils';
2
+ import { MultiProtocolApp } from '../app/MultiProtocolApp';
3
+ import { ChainMap, ChainName } from '../types';
4
+ import { EvmGasRouterAdapter, EvmRouterAdapter } from './adapters/EvmRouterAdapter';
5
+ import { SealevelGasRouterAdapter, SealevelRouterAdapter } from './adapters/SealevelRouterAdapter';
6
+ import { IGasRouterAdapter, IRouterAdapter } from './adapters/types';
7
+ import { RouterAddress } from './types';
8
+ export { Router } from '@hyperlane-xyz/core';
9
+ export declare class MultiProtocolRouterApp<ContractAddrs extends RouterAddress = RouterAddress, IAdapterApi extends IRouterAdapter = IRouterAdapter> extends MultiProtocolApp<ContractAddrs, IAdapterApi> {
10
+ readonly protocolToAdapter: {
11
+ ethereum: typeof EvmRouterAdapter;
12
+ sealevel: typeof SealevelRouterAdapter;
13
+ };
14
+ router(chain: ChainName): Address;
15
+ interchainSecurityModules(): Promise<ChainMap<Address>>;
16
+ owners(): Promise<ChainMap<Address>>;
17
+ remoteRouters(origin: ChainName): Promise<Array<{
18
+ domain: Domain;
19
+ address: Address;
20
+ }>>;
21
+ }
22
+ export declare class MultiProtocolGasRouterApp<ContractAddrs extends RouterAddress = RouterAddress, IAdapterApi extends IGasRouterAdapter = IGasRouterAdapter> extends MultiProtocolRouterApp<ContractAddrs, IAdapterApi> {
23
+ readonly protocolToAdapter: {
24
+ ethereum: typeof EvmGasRouterAdapter;
25
+ sealevel: typeof SealevelGasRouterAdapter;
26
+ };
27
+ quoteGasPayment(origin: ChainName, destination: ChainName): Promise<string>;
28
+ }
29
+ //# sourceMappingURL=MultiProtocolRouterApps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolRouterApps.d.ts","sourceRoot":"","sources":["../../src/router/MultiProtocolRouterApps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,sBAAsB,CACjC,aAAa,SAAS,aAAa,GAAG,aAAa,EACnD,WAAW,SAAS,cAAc,GAAG,cAAc,CACnD,SAAQ,gBAAgB,CAAC,aAAa,EAAE,WAAW,CAAC;IACpD,SAAyB,iBAAiB;;;MAGxC;IAEF,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIjC,yBAAyB,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAMvD,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAIpC,aAAa,CACX,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAGxD;AAED,qBAAa,yBAAyB,CACpC,aAAa,SAAS,aAAa,GAAG,aAAa,EACnD,WAAW,SAAS,iBAAiB,GAAG,iBAAiB,CACzD,SAAQ,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC;IAC1D,SAAyB,iBAAiB;;;MAGxC;IAEI,eAAe,CACnB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,GACrB,OAAO,CAAC,MAAM,CAAC;CAGnB"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiProtocolGasRouterApp = exports.MultiProtocolRouterApp = void 0;
4
+ const utils_1 = require("@hyperlane-xyz/utils");
5
+ const MultiProtocolApp_1 = require("../app/MultiProtocolApp");
6
+ const EvmRouterAdapter_1 = require("./adapters/EvmRouterAdapter");
7
+ const SealevelRouterAdapter_1 = require("./adapters/SealevelRouterAdapter");
8
+ class MultiProtocolRouterApp extends MultiProtocolApp_1.MultiProtocolApp {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.protocolToAdapter = {
12
+ [utils_1.ProtocolType.Ethereum]: EvmRouterAdapter_1.EvmRouterAdapter,
13
+ [utils_1.ProtocolType.Sealevel]: SealevelRouterAdapter_1.SealevelRouterAdapter,
14
+ };
15
+ }
16
+ router(chain) {
17
+ return this.metadata(chain).router;
18
+ }
19
+ interchainSecurityModules() {
20
+ return this.adapterMap((chain, adapter) => adapter.interchainSecurityModule(chain));
21
+ }
22
+ owners() {
23
+ return this.adapterMap((chain, adapter) => adapter.owner(chain));
24
+ }
25
+ remoteRouters(origin) {
26
+ return this.adapter(origin).remoteRouters(origin);
27
+ }
28
+ }
29
+ exports.MultiProtocolRouterApp = MultiProtocolRouterApp;
30
+ class MultiProtocolGasRouterApp extends MultiProtocolRouterApp {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.protocolToAdapter = {
34
+ [utils_1.ProtocolType.Ethereum]: EvmRouterAdapter_1.EvmGasRouterAdapter,
35
+ [utils_1.ProtocolType.Sealevel]: SealevelRouterAdapter_1.SealevelGasRouterAdapter,
36
+ };
37
+ }
38
+ async quoteGasPayment(origin, destination) {
39
+ return this.adapter(origin).quoteGasPayment(origin, destination);
40
+ }
41
+ }
42
+ exports.MultiProtocolGasRouterApp = MultiProtocolGasRouterApp;
43
+ //# sourceMappingURL=MultiProtocolRouterApps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolRouterApps.js","sourceRoot":"","sources":["../../src/router/MultiProtocolRouterApps.ts"],"names":[],"mappings":";;;AAAA,gDAAqE;AAErE,8DAA2D;AAG3D,kEAGqC;AACrC,4EAG0C;AAM1C,MAAa,sBAGX,SAAQ,mCAA4C;IAHtD;;QAI2B,sBAAiB,GAAG;YAC3C,CAAC,oBAAY,CAAC,QAAQ,CAAC,EAAE,mCAAgB;YACzC,CAAC,oBAAY,CAAC,QAAQ,CAAC,EAAE,6CAAqB;SAC/C,CAAC;IAqBJ,CAAC;IAnBC,MAAM,CAAC,KAAgB;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,yBAAyB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACxC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,CACxC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,aAAa,CACX,MAAiB;QAEjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;CACF;AA5BD,wDA4BC;AAED,MAAa,yBAGX,SAAQ,sBAAkD;IAH5D;;QAI2B,sBAAiB,GAAG;YAC3C,CAAC,oBAAY,CAAC,QAAQ,CAAC,EAAE,sCAAmB;YAC5C,CAAC,oBAAY,CAAC,QAAQ,CAAC,EAAE,gDAAwB;SAClD,CAAC;IAQJ,CAAC;IANC,KAAK,CAAC,eAAe,CACnB,MAAiB,EACjB,WAAsB;QAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;CACF;AAfD,8DAeC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MultiProtocolRouterApps.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolRouterApps.test.d.ts","sourceRoot":"","sources":["../../src/router/MultiProtocolRouterApps.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const chains_1 = require("../consts/chains");
5
+ const MultiProtocolProvider_1 = require("../providers/MultiProtocolProvider");
6
+ const MultiProtocolRouterApps_1 = require("./MultiProtocolRouterApps");
7
+ const EvmRouterAdapter_1 = require("./adapters/EvmRouterAdapter");
8
+ describe('MultiProtocolRouterApp', () => {
9
+ describe('constructs', () => {
10
+ const multiProvider = new MultiProtocolProvider_1.MultiProtocolProvider();
11
+ it('creates an app class', async () => {
12
+ const app = new MultiProtocolRouterApps_1.MultiProtocolRouterApp(multiProvider);
13
+ (0, chai_1.expect)(app).to.be.instanceOf(MultiProtocolRouterApps_1.MultiProtocolRouterApp);
14
+ const ethAdapter = app.adapter(chains_1.Chains.ethereum);
15
+ (0, chai_1.expect)(ethAdapter).to.be.instanceOf(EvmRouterAdapter_1.EvmRouterAdapter);
16
+ (0, chai_1.expect)(!!ethAdapter.remoteRouter).to.be.true;
17
+ });
18
+ });
19
+ });
20
+ //# sourceMappingURL=MultiProtocolRouterApps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiProtocolRouterApps.test.js","sourceRoot":"","sources":["../../src/router/MultiProtocolRouterApps.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAI9B,6CAA0C;AAC1C,8EAA2E;AAE3E,uEAAmE;AACnE,kEAA+D;AAE/D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,MAAM,aAAa,GAAG,IAAI,6CAAqB,EAAuB,CAAC;QACvE,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,gDAAsB,CAAC,aAAa,CAAC,CAAC;YACtD,IAAA,aAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,gDAAsB,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,mCAAgB,CAAC,CAAC;YACtD,IAAA,aAAM,EAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}