@hyperlane-xyz/sdk 1.1.4 → 1.2.1

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 (183) hide show
  1. package/dist/HyperlaneApp.d.ts +7 -8
  2. package/dist/HyperlaneApp.d.ts.map +1 -1
  3. package/dist/HyperlaneApp.js +1 -4
  4. package/dist/HyperlaneApp.js.map +1 -1
  5. package/dist/consts/chainMetadata.d.ts +229 -25
  6. package/dist/consts/chainMetadata.d.ts.map +1 -1
  7. package/dist/consts/chainMetadata.js +132 -78
  8. package/dist/consts/chainMetadata.js.map +1 -1
  9. package/dist/consts/chainMetadata.test.d.ts +2 -0
  10. package/dist/consts/chainMetadata.test.d.ts.map +1 -0
  11. package/dist/consts/chainMetadata.test.js +40 -0
  12. package/dist/consts/chainMetadata.test.js.map +1 -0
  13. package/dist/consts/chains.d.ts +5 -5
  14. package/dist/consts/chains.d.ts.map +1 -1
  15. package/dist/consts/chains.js +5 -1
  16. package/dist/consts/chains.js.map +1 -1
  17. package/dist/consts/environments/index.d.ts +22 -2
  18. package/dist/consts/environments/index.d.ts.map +1 -1
  19. package/dist/consts/environments/mainnet.json +18 -9
  20. package/dist/consts/environments/test.json +25 -22
  21. package/dist/consts/environments/testnet.json +16 -8
  22. package/dist/core/HyperlaneCore.d.ts +10 -387
  23. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  24. package/dist/core/HyperlaneCore.js +7 -12
  25. package/dist/core/HyperlaneCore.js.map +1 -1
  26. package/dist/core/HyperlaneCore.test.js +2 -3
  27. package/dist/core/HyperlaneCore.test.js.map +1 -1
  28. package/dist/core/TestCoreApp.d.ts +5 -5
  29. package/dist/core/TestCoreApp.d.ts.map +1 -1
  30. package/dist/core/TestCoreApp.js +2 -4
  31. package/dist/core/TestCoreApp.js.map +1 -1
  32. package/dist/core/TestCoreDeployer.d.ts +6 -6
  33. package/dist/core/TestCoreDeployer.d.ts.map +1 -1
  34. package/dist/core/TestCoreDeployer.js +15 -6
  35. package/dist/core/TestCoreDeployer.js.map +1 -1
  36. package/dist/core/contracts.d.ts +6 -2
  37. package/dist/core/contracts.d.ts.map +1 -1
  38. package/dist/core/contracts.js +1 -0
  39. package/dist/core/contracts.js.map +1 -1
  40. package/dist/core/testHyperlaneDeploy.hardhat-test.js +8 -12
  41. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
  42. package/dist/deploy/HyperlaneAppChecker.d.ts +8 -8
  43. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  44. package/dist/deploy/HyperlaneAppChecker.js +5 -5
  45. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  46. package/dist/deploy/HyperlaneDeployer.d.ts +15 -15
  47. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  48. package/dist/deploy/HyperlaneDeployer.js +44 -39
  49. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  50. package/dist/deploy/core/HyperlaneCoreChecker.d.ts +12 -9
  51. package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -1
  52. package/dist/deploy/core/HyperlaneCoreChecker.js +72 -12
  53. package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -1
  54. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +18 -14
  55. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  56. package/dist/deploy/core/HyperlaneCoreDeployer.js +69 -27
  57. package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -1
  58. package/dist/deploy/core/types.d.ts +31 -3
  59. package/dist/deploy/core/types.d.ts.map +1 -1
  60. package/dist/deploy/core/types.js +11 -1
  61. package/dist/deploy/core/types.js.map +1 -1
  62. package/dist/deploy/middleware/LiquidityLayerApp.d.ts +17 -17
  63. package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +1 -1
  64. package/dist/deploy/middleware/LiquidityLayerApp.js +26 -35
  65. package/dist/deploy/middleware/LiquidityLayerApp.js.map +1 -1
  66. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +6 -9
  67. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  68. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +15 -21
  69. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +1 -1
  70. package/dist/deploy/middleware/deploy.d.ts +14 -17
  71. package/dist/deploy/middleware/deploy.d.ts.map +1 -1
  72. package/dist/deploy/middleware/deploy.js +25 -38
  73. package/dist/deploy/middleware/deploy.js.map +1 -1
  74. package/dist/deploy/router/GasRouterDeployer.d.ts +4 -4
  75. package/dist/deploy/router/GasRouterDeployer.d.ts.map +1 -1
  76. package/dist/deploy/router/GasRouterDeployer.js +3 -6
  77. package/dist/deploy/router/GasRouterDeployer.js.map +1 -1
  78. package/dist/deploy/router/HyperlaneRouterChecker.d.ts +6 -6
  79. package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -1
  80. package/dist/deploy/router/HyperlaneRouterChecker.js +2 -2
  81. package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -1
  82. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts +7 -7
  83. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  84. package/dist/deploy/router/HyperlaneRouterDeployer.js +18 -21
  85. package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -1
  86. package/dist/deploy/types.d.ts +3 -4
  87. package/dist/deploy/types.d.ts.map +1 -1
  88. package/dist/deploy/types.js.map +1 -1
  89. package/dist/deploy/utils.d.ts +2 -6
  90. package/dist/deploy/utils.d.ts.map +1 -1
  91. package/dist/deploy/utils.js +1 -27
  92. package/dist/deploy/utils.js.map +1 -1
  93. package/dist/deploy/verify/ContractVerifier.d.ts +7 -7
  94. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
  95. package/dist/deploy/verify/ContractVerifier.js +3 -5
  96. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  97. package/dist/deploy/verify/utils.js +1 -1
  98. package/dist/deploy/verify/utils.js.map +1 -1
  99. package/dist/events.d.ts +4 -4
  100. package/dist/events.d.ts.map +1 -1
  101. package/dist/events.js +12 -9
  102. package/dist/events.js.map +1 -1
  103. package/dist/gas/calculator.d.ts +20 -20
  104. package/dist/gas/calculator.d.ts.map +1 -1
  105. package/dist/gas/calculator.hardhat-test.js +11 -8
  106. package/dist/gas/calculator.hardhat-test.js.map +1 -1
  107. package/dist/gas/calculator.js +9 -11
  108. package/dist/gas/calculator.js.map +1 -1
  109. package/dist/gas/calculator.test.js +2 -14
  110. package/dist/gas/calculator.test.js.map +1 -1
  111. package/dist/gas/token-prices.d.ts +5 -2
  112. package/dist/gas/token-prices.d.ts.map +1 -1
  113. package/dist/gas/token-prices.js +12 -2
  114. package/dist/gas/token-prices.js.map +1 -1
  115. package/dist/index.d.ts +28 -31
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +63 -71
  118. package/dist/index.js.map +1 -1
  119. package/dist/middleware/accounts.hardhat-test.js +19 -13
  120. package/dist/middleware/accounts.hardhat-test.js.map +1 -1
  121. package/dist/middleware/liquidity-layer.hardhat-test.js +11 -10
  122. package/dist/middleware/liquidity-layer.hardhat-test.js.map +1 -1
  123. package/dist/middleware/queries.hardhat-test.js +11 -10
  124. package/dist/middleware/queries.hardhat-test.js.map +1 -1
  125. package/dist/middleware.d.ts +4 -4
  126. package/dist/middleware.d.ts.map +1 -1
  127. package/dist/middleware.js.map +1 -1
  128. package/dist/providers/MultiProvider.d.ts +204 -37
  129. package/dist/providers/MultiProvider.d.ts.map +1 -1
  130. package/dist/providers/MultiProvider.js +455 -63
  131. package/dist/providers/MultiProvider.js.map +1 -1
  132. package/dist/proxy.d.ts.map +1 -1
  133. package/dist/proxy.js +3 -1
  134. package/dist/proxy.js.map +1 -1
  135. package/dist/router.d.ts +11 -6
  136. package/dist/router.d.ts.map +1 -1
  137. package/dist/router.js +1 -2
  138. package/dist/router.js.map +1 -1
  139. package/dist/test/envSubsetDeployer/app.d.ts +12 -21
  140. package/dist/test/envSubsetDeployer/app.d.ts.map +1 -1
  141. package/dist/test/envSubsetDeployer/app.js +13 -18
  142. package/dist/test/envSubsetDeployer/app.js.map +1 -1
  143. package/dist/test/envSubsetDeployer/check-single-chain.js +1 -11
  144. package/dist/test/envSubsetDeployer/check-single-chain.js.map +1 -1
  145. package/dist/test/envSubsetDeployer/deploy-single-chain.js +3 -9
  146. package/dist/test/envSubsetDeployer/deploy-single-chain.js.map +1 -1
  147. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js +4 -3
  148. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js.map +1 -1
  149. package/dist/test/envSubsetDeployer/utils.d.ts +0 -3
  150. package/dist/test/envSubsetDeployer/utils.d.ts.map +1 -1
  151. package/dist/test/envSubsetDeployer/utils.js +2 -10
  152. package/dist/test/envSubsetDeployer/utils.js.map +1 -1
  153. package/dist/test/testUtils.d.ts +5 -1
  154. package/dist/test/testUtils.d.ts.map +1 -1
  155. package/dist/test/testUtils.js +8 -1
  156. package/dist/test/testUtils.js.map +1 -1
  157. package/dist/types.d.ts +2 -17
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/utils/MultiGeneric.d.ts +11 -12
  160. package/dist/utils/MultiGeneric.d.ts.map +1 -1
  161. package/dist/utils/MultiGeneric.js +3 -6
  162. package/dist/utils/MultiGeneric.js.map +1 -1
  163. package/dist/utils/wagmi.d.ts +1 -1
  164. package/dist/utils/wagmi.d.ts.map +1 -1
  165. package/dist/utils/wagmi.js +7 -6
  166. package/dist/utils/wagmi.js.map +1 -1
  167. package/package.json +5 -5
  168. package/dist/consts/chainConnectionConfigs.d.ts +0 -21
  169. package/dist/consts/chainConnectionConfigs.d.ts.map +0 -1
  170. package/dist/consts/chainConnectionConfigs.js +0 -35
  171. package/dist/consts/chainConnectionConfigs.js.map +0 -1
  172. package/dist/core/message.d.ts +0 -146
  173. package/dist/core/message.d.ts.map +0 -1
  174. package/dist/core/message.js +0 -285
  175. package/dist/core/message.js.map +0 -1
  176. package/dist/domains.d.ts +0 -4
  177. package/dist/domains.d.ts.map +0 -1
  178. package/dist/domains.js +0 -12
  179. package/dist/domains.js.map +0 -1
  180. package/dist/providers/ChainConnection.d.ts +0 -23
  181. package/dist/providers/ChainConnection.d.ts.map +0 -1
  182. package/dist/providers/ChainConnection.js +0 -67
  183. package/dist/providers/ChainConnection.js.map +0 -1
@@ -1,119 +1,511 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.MultiProvider = void 0;
4
- const MultiGeneric_1 = require("../utils/MultiGeneric");
13
+ const debug_1 = require("debug");
14
+ const ethers_1 = require("ethers");
15
+ const chainMetadata_1 = require("../consts/chainMetadata");
16
+ const chains_1 = require("../consts/chains");
5
17
  const objects_1 = require("../utils/objects");
6
- const ChainConnection_1 = require("./ChainConnection");
7
- class MultiProvider extends MultiGeneric_1.MultiGeneric {
8
- constructor(chainConnectionConfigs) {
9
- super((0, objects_1.objMap)(chainConnectionConfigs, (_, connection) => new ChainConnection_1.ChainConnection(connection)));
18
+ class MultiProvider {
19
+ /**
20
+ * Create a new MultiProvider with the given chainMetadata,
21
+ * or the SDK's default metadata if not provided
22
+ */
23
+ constructor(chainMetadata = chainMetadata_1.chainMetadata, options = {}) {
24
+ this.metadata = {};
25
+ this.providers = {};
26
+ this.signers = {};
27
+ this.useSharedSigner = false; // A single signer to be used for all chains
28
+ Object.values(chainMetadata).forEach((cm) => {
29
+ if (!(0, chainMetadata_1.isValidChainMetadata)(cm))
30
+ throw new Error(`Invalid chain metadata for ${cm.chainId}`);
31
+ });
32
+ this.metadata = chainMetadata;
33
+ // Ensure no two chains have overlapping names/domainIds/chainIds
34
+ const chainNames = new Set();
35
+ const chainIds = new Set();
36
+ const domainIds = new Set();
37
+ for (const chain of Object.values(chainMetadata)) {
38
+ const { name, chainId, domainId } = chain;
39
+ if (chainNames.has(name))
40
+ throw new Error(`Duplicate chain name: ${name}`);
41
+ if (chainIds.has(chainId))
42
+ throw new Error(`Duplicate chain id: ${chainId}`);
43
+ if (domainIds.has(chainId))
44
+ throw new Error(`Overlapping chain/domain id: ${chainId}`);
45
+ if (domainId && domainIds.has(domainId))
46
+ throw new Error(`Duplicate domain id: ${domainId}`);
47
+ if (domainId && chainIds.has(domainId))
48
+ throw new Error(`Overlapping chain/domain id: ${domainId}`);
49
+ chainNames.add(name);
50
+ chainIds.add(chainId);
51
+ if (domainId)
52
+ domainIds.add(domainId);
53
+ }
54
+ this.logger = (0, debug_1.debug)((options === null || options === void 0 ? void 0 : options.loggerName) || 'hyperlane:MultiProvider');
10
55
  }
11
56
  /**
12
- * Get chainConnection for a chain
13
- * @throws if chain is invalid or has not been set
57
+ * Get the metadata for a given chain name, chain id, or domain id
58
+ * @throws if chain's metadata has not been set
14
59
  */
15
- getChainConnection(chain) {
16
- return this.get(chain);
60
+ tryGetChainMetadata(chainNameOrId) {
61
+ let chainMetadata;
62
+ if (typeof chainNameOrId === 'string') {
63
+ chainMetadata = this.metadata[chainNameOrId];
64
+ }
65
+ else if (typeof chainNameOrId === 'number') {
66
+ chainMetadata = Object.values(this.metadata).find((m) => m.chainId === chainNameOrId || m.domainId === chainNameOrId);
67
+ }
68
+ return chainMetadata || null;
17
69
  }
18
70
  /**
19
- * Get chainConnection for a chain
20
- * @returns value or null if chain value has not been set
71
+ * Get the metadata for a given chain name, chain id, or domain id
72
+ * @throws if chain's metadata has not been set
21
73
  */
22
- tryGetChainConnection(chain) {
23
- return this.tryGet(chain);
74
+ getChainMetadata(chainNameOrId) {
75
+ const chainMetadata = this.tryGetChainMetadata(chainNameOrId);
76
+ if (!chainMetadata)
77
+ throw new Error(`No chain metadata set for ${chainNameOrId}`);
78
+ return chainMetadata;
24
79
  }
25
80
  /**
26
- * Set value for a chain
27
- * @throws if chain is invalid or has not been set
81
+ * Get the name for a given chain name, chain id, or domain id
28
82
  */
29
- setChainConnection(chain, chainConnectionConfig) {
30
- const connection = new ChainConnection_1.ChainConnection(chainConnectionConfig);
31
- return this.set(chain, connection);
83
+ tryGetChainName(chainNameOrId) {
84
+ var _a, _b;
85
+ return (_b = (_a = this.tryGetChainMetadata(chainNameOrId)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : null;
32
86
  }
33
87
  /**
34
- * Get provider for a chain
35
- * @throws if chain is invalid or has not been set
88
+ * Get the name for a given chain name, chain id, or domain id
89
+ * @throws if chain's metadata has not been set
36
90
  */
37
- getChainProvider(chain) {
38
- const chainConnection = this.get(chain);
39
- if (!chainConnection.provider) {
40
- throw new Error(`No provider set for chain ${chain}`);
41
- }
42
- return chainConnection.provider;
91
+ getChainName(chainNameOrId) {
92
+ return this.getChainMetadata(chainNameOrId).name;
43
93
  }
44
94
  /**
45
- * Get provider for a chain
46
- * @returns value or null if chain value has not been set
95
+ * Get the names for all chains known to this MultiProvider
47
96
  */
48
- tryGetChainProvider(chain) {
97
+ getKnownChainNames() {
98
+ return Object.keys(this.metadata);
99
+ }
100
+ /**
101
+ * Get the id for a given chain name, chain id, or domain id
102
+ */
103
+ tryGetChainId(chainNameOrId) {
49
104
  var _a, _b;
50
- return (_b = (_a = this.tryGet(chain)) === null || _a === void 0 ? void 0 : _a.provider) !== null && _b !== void 0 ? _b : null;
105
+ return (_b = (_a = this.tryGetChainMetadata(chainNameOrId)) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : null;
51
106
  }
52
107
  /**
53
- * Get signer for a chain
54
- * @throws if chain is invalid or has not been set
108
+ * Get the id for a given chain name, chain id, or domain id
109
+ * @throws if chain's metadata has not been set
55
110
  */
56
- getChainSigner(chain) {
57
- const chainConnection = this.get(chain);
58
- if (!chainConnection.signer) {
59
- throw new Error(`No signer set for chain ${chain}`);
60
- }
61
- return chainConnection.signer;
111
+ getChainId(chainNameOrId) {
112
+ return this.getChainMetadata(chainNameOrId).chainId;
62
113
  }
63
114
  /**
64
- * Get signer for a chain
65
- * @returns value or null if chain value has not been set
115
+ * Get the ids for all chains known to this MultiProvider
66
116
  */
67
- tryGetChainSigner(chain) {
117
+ getKnownChainIds() {
118
+ return Object.values(this.metadata).map((c) => c.chainId);
119
+ }
120
+ /**
121
+ * Get the domain id for a given chain name, chain id, or domain id
122
+ */
123
+ tryGetDomainId(chainNameOrId) {
68
124
  var _a, _b;
69
- return (_b = (_a = this.tryGet(chain)) === null || _a === void 0 ? void 0 : _a.signer) !== null && _b !== void 0 ? _b : null;
125
+ const metadata = this.tryGetChainMetadata(chainNameOrId);
126
+ return (_b = (_a = metadata === null || metadata === void 0 ? void 0 : metadata.domainId) !== null && _a !== void 0 ? _a : metadata === null || metadata === void 0 ? void 0 : metadata.chainId) !== null && _b !== void 0 ? _b : null;
127
+ }
128
+ /**
129
+ * Get the domain id for a given chain name, chain id, or domain id
130
+ * @throws if chain's metadata has not been set
131
+ */
132
+ getDomainId(chainNameOrId) {
133
+ var _a;
134
+ const metadata = this.getChainMetadata(chainNameOrId);
135
+ return (_a = metadata.domainId) !== null && _a !== void 0 ? _a : metadata.chainId;
136
+ }
137
+ /**
138
+ * Get the domain ids for a list of chain names, chain ids, or domain ids
139
+ * @throws if any chain's metadata has not been set
140
+ */
141
+ getDomainIds(chainNamesOrIds) {
142
+ return chainNamesOrIds.map((c) => this.getDomainId(c));
143
+ }
144
+ /**
145
+ * Get the ids for all chains known to this MultiProvider
146
+ */
147
+ getKnownDomainIds() {
148
+ return this.getKnownChainNames().map(this.getDomainId);
149
+ }
150
+ /**
151
+ * Get an Ethers provider for a given chain name, chain id, or domain id
152
+ */
153
+ tryGetProvider(chainNameOrId) {
154
+ const metadata = this.tryGetChainMetadata(chainNameOrId);
155
+ if (!metadata)
156
+ return null;
157
+ const { name, chainId: id, publicRpcUrls } = metadata;
158
+ if (this.providers[name])
159
+ return this.providers[name];
160
+ if (chains_1.TestChains.includes(name)) {
161
+ this.providers[name] = new ethers_1.providers.JsonRpcProvider('http://localhost:8545', 31337);
162
+ }
163
+ else if (publicRpcUrls.length && publicRpcUrls[0].http) {
164
+ this.providers[name] = new ethers_1.providers.JsonRpcProvider(publicRpcUrls[0].http, id);
165
+ }
166
+ else {
167
+ return null;
168
+ }
169
+ return this.providers[name];
170
+ }
171
+ /**
172
+ * Get an Ethers provider for a given chain name, chain id, or domain id
173
+ * @throws if chain's metadata has not been set
174
+ */
175
+ getProvider(chainNameOrId) {
176
+ const provider = this.tryGetProvider(chainNameOrId);
177
+ if (!provider)
178
+ throw new Error(`No chain metadata set for ${chainNameOrId}`);
179
+ return provider;
180
+ }
181
+ /**
182
+ * Sets an Ethers provider for a given chain name, chain id, or domain id
183
+ * @throws if chain's metadata has not been set
184
+ */
185
+ setProvider(chainNameOrId, provider) {
186
+ const chainName = this.getChainName(chainNameOrId);
187
+ this.providers[chainName] = provider;
188
+ return provider;
189
+ }
190
+ /**
191
+ * Sets Ethers providers for a set of chains
192
+ * @throws if chain's metadata has not been set
193
+ */
194
+ setProviders(providers) {
195
+ for (const chain of Object.keys(providers)) {
196
+ const chainName = this.getChainName(chain);
197
+ this.providers[chainName] = providers[chain];
198
+ }
199
+ }
200
+ /**
201
+ * Get an Ethers signer for a given chain name, chain id, or domain id
202
+ * If signer is not yet connected, it will be connected
203
+ */
204
+ tryGetSigner(chainNameOrId) {
205
+ const chainName = this.tryGetChainName(chainNameOrId);
206
+ if (!chainName)
207
+ return null;
208
+ // Otherwise check the chain-to-signer map
209
+ const signer = this.signers[chainName];
210
+ if (!signer)
211
+ return null;
212
+ if (signer.provider)
213
+ return signer;
214
+ // Auto-connect the signer for convenience
215
+ const provider = this.tryGetProvider(chainName);
216
+ return provider ? signer.connect(provider) : signer;
217
+ }
218
+ /**
219
+ * Get an Ethers signer for a given chain name, chain id, or domain id
220
+ * If signer is not yet connected, it will be connected
221
+ * @throws if chain's metadata or signer has not been set
222
+ */
223
+ getSigner(chainNameOrId) {
224
+ const signer = this.tryGetSigner(chainNameOrId);
225
+ if (!signer)
226
+ throw new Error(`No chain signer set for ${chainNameOrId}`);
227
+ return signer;
228
+ }
229
+ /**
230
+ * Get an Ethers signer for a given chain name, chain id, or domain id
231
+ * @throws if chain's metadata or signer has not been set
232
+ */
233
+ getSignerAddress(chainNameOrId) {
234
+ return __awaiter(this, void 0, void 0, function* () {
235
+ const signer = this.getSigner(chainNameOrId);
236
+ const address = yield signer.getAddress();
237
+ return address;
238
+ });
239
+ }
240
+ /**
241
+ * Sets an Ethers Signer for a given chain name, chain id, or domain id
242
+ * @throws if chain's metadata has not been set or shared signer has already been set
243
+ */
244
+ setSigner(chainNameOrId, signer) {
245
+ if (this.useSharedSigner) {
246
+ throw new Error('MultiProvider already set to use a shared signer');
247
+ }
248
+ const chainName = this.getChainName(chainNameOrId);
249
+ this.signers[chainName] = signer;
250
+ if (signer.provider && !this.providers[chainName]) {
251
+ this.providers[chainName] = signer.provider;
252
+ }
253
+ return signer;
254
+ }
255
+ /**
256
+ * Sets Ethers Signers for a set of chains
257
+ * @throws if chain's metadata has not been set or shared signer has already been set
258
+ */
259
+ setSigners(signers) {
260
+ if (this.useSharedSigner) {
261
+ throw new Error('MultiProvider already set to use a shared signer');
262
+ }
263
+ for (const chain of Object.keys(signers)) {
264
+ const chainName = this.getChainName(chain);
265
+ this.signers[chainName] = signers[chain];
266
+ }
267
+ }
268
+ /**
269
+ * Gets the Signer if it's been set, otherwise the provider
270
+ */
271
+ tryGetSignerOrProvider(chainNameOrId) {
272
+ return (this.tryGetSigner(chainNameOrId) || this.tryGetProvider(chainNameOrId));
70
273
  }
71
274
  /**
72
- * Get the id for a given chain name
73
- * Attempts to use SDK defaults first, otherwise queries network
74
- * @throws if chain is invalid or has not been set
275
+ * Gets the Signer if it's been set, otherwise the provider
276
+ * @throws if chain metadata has not been set
75
277
  */
76
- getChainId(chain) {
77
- return this.getChainConnection(chain).id;
278
+ getSignerOrProvider(chainNameOrId) {
279
+ return this.tryGetSigner(chainNameOrId) || this.getProvider(chainNameOrId);
78
280
  }
79
281
  /**
80
- * Create a new MultiProvider which includes the provided chain connection config
282
+ * Sets Ethers Signers to be used for all chains
283
+ * Any subsequent calls to getSigner will return given signer
284
+ * Setting sharedSigner to null clears all signers
81
285
  */
82
- extendWithChain(chain, chainConnectionConfig) {
83
- const connection = new ChainConnection_1.ChainConnection(chainConnectionConfig);
84
- return new MultiProvider(Object.assign(Object.assign({}, this.chainMap), { [chain]: connection }));
286
+ setSharedSigner(sharedSigner) {
287
+ if (!sharedSigner) {
288
+ this.useSharedSigner = false;
289
+ this.signers = {};
290
+ return null;
291
+ }
292
+ this.useSharedSigner = true;
293
+ for (const chain of this.getKnownChainNames()) {
294
+ this.signers[chain] = sharedSigner;
295
+ }
296
+ return sharedSigner;
85
297
  }
86
298
  /**
87
299
  * Create a new MultiProvider from the intersection
88
300
  * of current's chains and the provided chain list
89
301
  */
90
302
  intersect(chains, throwIfNotSubset = false) {
91
- const ownChains = this.chains();
303
+ const ownChains = this.getKnownChainNames();
92
304
  const intersection = [];
93
305
  for (const chain of chains) {
94
- // @ts-ignore
95
306
  if (ownChains.includes(chain)) {
96
- // @ts-ignore
97
307
  intersection.push(chain);
98
308
  }
99
- else {
100
- if (throwIfNotSubset) {
101
- throw new Error(`MultiProvider#intersect: chains specified ${chain}, but ownChains did not include it`);
102
- }
309
+ else if (throwIfNotSubset) {
310
+ throw new Error(`MultiProvider#intersect: chains specified ${chain}, but ownChains did not include it`);
103
311
  }
104
312
  }
105
313
  if (!intersection.length) {
106
314
  throw new Error(`No chains shared between MultiProvider and list (${ownChains} and ${chains})`);
107
315
  }
108
- const intersectionChainMap = (0, objects_1.pick)(this.chainMap, intersection);
109
- const multiProvider = new MultiProvider(Object.assign({}, intersectionChainMap));
316
+ const intersectionMetadata = (0, objects_1.pick)(this.metadata, intersection);
317
+ const intersectionProviders = (0, objects_1.pick)(this.providers, intersection);
318
+ const intersectionSigners = (0, objects_1.pick)(this.signers, intersection);
319
+ const multiProvider = new MultiProvider(intersectionMetadata);
320
+ multiProvider.setProviders(intersectionProviders);
321
+ multiProvider.setSigners(intersectionSigners);
110
322
  return { intersection, multiProvider };
111
323
  }
112
- rotateSigner(newSigner) {
113
- this.forEach((chain, dc) => {
114
- this.setChainConnection(chain, Object.assign(Object.assign({}, dc), { signer: newSigner.connect(dc.provider) }));
324
+ /**
325
+ * Get chain names excluding given chain name
326
+ */
327
+ getRemoteChains(name) {
328
+ return this.getKnownChainNames().filter((n) => n !== name);
329
+ }
330
+ /**
331
+ * Get an RPC URL for a given chain name, chain id, or domain id
332
+ * @throws if chain's metadata has not been set
333
+ */
334
+ getRpcUrl(chainNameOrId) {
335
+ const { publicRpcUrls } = this.getChainMetadata(chainNameOrId);
336
+ if (!(publicRpcUrls === null || publicRpcUrls === void 0 ? void 0 : publicRpcUrls.length) || !publicRpcUrls[0].http)
337
+ throw new Error(`No RPC URl configured for ${chainNameOrId}`);
338
+ return publicRpcUrls[0].http;
339
+ }
340
+ /**
341
+ * Get a block explorer URL for a given chain name, chain id, or domain id
342
+ */
343
+ tryGetExplorerUrl(chainNameOrId) {
344
+ var _a;
345
+ const explorers = (_a = this.tryGetChainMetadata(chainNameOrId)) === null || _a === void 0 ? void 0 : _a.blockExplorers;
346
+ if (!(explorers === null || explorers === void 0 ? void 0 : explorers.length))
347
+ return null;
348
+ return explorers[0].url;
349
+ }
350
+ /**
351
+ * Get a block explorer URL for a given chain name, chain id, or domain id
352
+ * @throws if chain's metadata or block explorer data has no been set
353
+ */
354
+ getExplorerUrl(chainNameOrId) {
355
+ const url = this.tryGetExplorerUrl(chainNameOrId);
356
+ if (!url)
357
+ throw new Error(`No explorer url set for ${chainNameOrId}`);
358
+ return url;
359
+ }
360
+ /**
361
+ * Get a block explorer's API URL for a given chain name, chain id, or domain id
362
+ */
363
+ tryGetExplorerApiUrl(chainNameOrId) {
364
+ var _a;
365
+ const explorers = (_a = this.tryGetChainMetadata(chainNameOrId)) === null || _a === void 0 ? void 0 : _a.blockExplorers;
366
+ if (!(explorers === null || explorers === void 0 ? void 0 : explorers.length) || !explorers[0].apiUrl)
367
+ return null;
368
+ const { apiUrl, apiKey } = explorers[0];
369
+ if (!apiKey)
370
+ return apiUrl;
371
+ const url = new URL(apiUrl);
372
+ url.searchParams.set('apikey', apiKey);
373
+ return url.toString();
374
+ }
375
+ /**
376
+ * Get a block explorer API URL for a given chain name, chain id, or domain id
377
+ * @throws if chain's metadata or block explorer data has no been set
378
+ */
379
+ getExplorerApiUrl(chainNameOrId) {
380
+ const url = this.tryGetExplorerApiUrl(chainNameOrId);
381
+ if (!url)
382
+ throw new Error(`No explorer api url set for ${chainNameOrId}`);
383
+ return url;
384
+ }
385
+ /**
386
+ * Get a block explorer URL for given chain's tx
387
+ */
388
+ tryGetExplorerTxUrl(chainNameOrId, response) {
389
+ const baseUrl = this.tryGetExplorerUrl(chainNameOrId);
390
+ return baseUrl ? `${baseUrl}/tx/${response.hash}` : null;
391
+ }
392
+ /**
393
+ * Get a block explorer URL for given chain's tx
394
+ * @throws if chain's metadata or block explorer data has no been set
395
+ */
396
+ getExplorerTxUrl(chainNameOrId, response) {
397
+ return `${this.getExplorerUrl(chainNameOrId)}/tx/${response.hash}`;
398
+ }
399
+ /**
400
+ * Get a block explorer URL for given chain's address
401
+ */
402
+ tryGetExplorerAddressUrl(chainNameOrId, _address) {
403
+ return __awaiter(this, void 0, void 0, function* () {
404
+ const baseUrl = this.tryGetExplorerUrl(chainNameOrId);
405
+ const signer = this.tryGetSigner(chainNameOrId);
406
+ if (!baseUrl || !signer)
407
+ return null;
408
+ const address = _address !== null && _address !== void 0 ? _address : (yield signer.getAddress());
409
+ return `${baseUrl}/${address}`;
410
+ });
411
+ }
412
+ /**
413
+ * Get a block explorer URL for given chain's address
414
+ * @throws if chain's metadata, signer, or block explorer data has no been set
415
+ */
416
+ getExplorerAddressUrl(chainNameOrId, address) {
417
+ return __awaiter(this, void 0, void 0, function* () {
418
+ const url = yield this.tryGetExplorerAddressUrl(chainNameOrId, address);
419
+ if (!url)
420
+ throw new Error(`Missing data for address url for ${chainNameOrId}`);
421
+ return url;
422
+ });
423
+ }
424
+ /**
425
+ * Get the transaction overrides for a given chain name, chain id, or domain id
426
+ * @throws if chain's metadata has not been set
427
+ */
428
+ getTransactionOverrides(chainNameOrId) {
429
+ var _a, _b;
430
+ return (_b = (_a = this.getChainMetadata(chainNameOrId)) === null || _a === void 0 ? void 0 : _a.transactionOverrides) !== null && _b !== void 0 ? _b : {};
431
+ }
432
+ /**
433
+ * Wait for given tx to be confirmed
434
+ * @throws if chain's metadata or signer has not been set or tx fails
435
+ */
436
+ handleTx(chainNameOrId, tx) {
437
+ var _a;
438
+ return __awaiter(this, void 0, void 0, function* () {
439
+ const confirmations = ((_a = this.getChainMetadata(chainNameOrId).blocks) === null || _a === void 0 ? void 0 : _a.confirmations) || 1;
440
+ const response = yield tx;
441
+ const txUrl = this.tryGetExplorerTxUrl(chainNameOrId, response);
442
+ this.logger(`Pending ${txUrl || response.hash} (waiting ${confirmations} blocks for confirmation)`);
443
+ return response.wait(confirmations);
444
+ });
445
+ }
446
+ /**
447
+ * Populate a transaction's fields using signer address and overrides
448
+ * @throws if chain's metadata has not been set or tx fails
449
+ */
450
+ prepareTx(chainNameOrId, tx, from) {
451
+ return __awaiter(this, void 0, void 0, function* () {
452
+ const txFrom = from ? from : yield this.getSignerAddress(chainNameOrId);
453
+ const overrides = this.getTransactionOverrides(chainNameOrId);
454
+ return Object.assign(Object.assign(Object.assign({}, tx), { from: txFrom }), overrides);
115
455
  });
116
456
  }
457
+ /**
458
+ * Estimate gas for given tx
459
+ * @throws if chain's metadata has not been set or tx fails
460
+ */
461
+ estimateGas(chainNameOrId, tx, from) {
462
+ return __awaiter(this, void 0, void 0, function* () {
463
+ const txReq = yield this.prepareTx(chainNameOrId, tx, from);
464
+ const provider = this.getProvider(chainNameOrId);
465
+ return provider.estimateGas(txReq);
466
+ });
467
+ }
468
+ /**
469
+ * Send a transaction and wait for confirmation
470
+ * @throws if chain's metadata or signer has not been set or tx fails
471
+ */
472
+ sendTransaction(chainNameOrId, tx) {
473
+ return __awaiter(this, void 0, void 0, function* () {
474
+ const txReq = yield this.prepareTx(chainNameOrId, tx);
475
+ const signer = this.getSigner(chainNameOrId);
476
+ const response = yield signer.sendTransaction(txReq);
477
+ this.logger(`Sent tx ${response.hash}`);
478
+ return this.handleTx(chainNameOrId, response);
479
+ });
480
+ }
481
+ /**
482
+ * Run given function on all known chains
483
+ */
484
+ mapKnownChains(fn) {
485
+ const result = {};
486
+ for (const chain of this.getKnownChainNames()) {
487
+ result[chain] = fn(chain);
488
+ }
489
+ return result;
490
+ }
491
+ /**
492
+ * Creates a MultiProvider using the given signer for all test networks
493
+ */
494
+ static createTestMultiProvider(params = {}) {
495
+ const { signer, provider } = params;
496
+ const chainMetadata = (0, objects_1.pick)(chainMetadata_1.chainMetadata, chains_1.TestChains);
497
+ const mp = new MultiProvider(chainMetadata);
498
+ if (signer) {
499
+ mp.setSharedSigner(signer);
500
+ }
501
+ const _provider = provider || (signer === null || signer === void 0 ? void 0 : signer.provider);
502
+ if (_provider) {
503
+ const providerMap = {};
504
+ chains_1.TestChains.forEach((t) => (providerMap[t] = _provider));
505
+ mp.setProviders(providerMap);
506
+ }
507
+ return mp;
508
+ }
117
509
  }
118
510
  exports.MultiProvider = MultiProvider;
119
511
  //# sourceMappingURL=MultiProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiProvider.js","sourceRoot":"","sources":["../../src/providers/MultiProvider.ts"],"names":[],"mappings":";;;AAGA,wDAAqD;AACrD,8CAAgD;AAEhD,uDAAoD;AAEpD,MAAa,aAEX,SAAQ,2BAAoC;IAC5C,YAAY,sBAAyD;QACnE,KAAK,CACH,IAAA,gBAAM,EACJ,sBAAsB,EACtB,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,iCAAe,CAAC,UAAU,CAAC,CACnD,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,KAAY;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,KAAY;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAChB,KAAY,EACZ,qBAAuC;QAEvC,MAAM,UAAU,GAAG,IAAI,iCAAe,CAAC,qBAAqB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,KAAY;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;SACvD;QACD,OAAO,eAAe,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,KAAY;;QAC9B,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,QAAQ,mCAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,KAAY;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;SACrD;QACD,OAAO,eAAe,CAAC,MAAM,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,KAAY;;QAC5B,OAAO,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,MAAM,mCAAI,IAAI,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAAY;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,eAAe,CACb,KAAU,EACV,qBAAuC;QAEvC,MAAM,UAAU,GAAG,IAAI,iCAAe,CAAC,qBAAqB,CAAC,CAAC;QAC9D,OAAO,IAAI,aAAa,iCACnB,IAAI,CAAC,QAAQ,KAChB,CAAC,KAAK,CAAC,EAAE,UAAU,IACnB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,SAAS,CACP,MAAmB,EACnB,gBAAgB,GAAG,KAAK;QAKxB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,EAAyB,CAAC;QAE/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,aAAa;YACb,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC7B,aAAa;gBACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;iBAAM;gBACL,IAAI,gBAAgB,EAAE;oBACpB,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,oCAAoC,CACvF,CAAC;iBACH;aACF;SACF;QAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,oDAAoD,SAAS,QAAQ,MAAM,GAAG,CAC/E,CAAC;SACH;QAED,MAAM,oBAAoB,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE/D,MAAM,aAAa,GAAG,IAAI,aAAa,mBAClC,oBAAoB,EACvB,CAAC;QACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,kCACxB,EAAE,KACL,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IACtC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CAMF;AA9JD,sCA8JC"}
1
+ {"version":3,"file":"MultiProvider.js","sourceRoot":"","sources":["../../src/providers/MultiProvider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,oBAAY,SAAS;IACnB,WAAW,gBAAgB;CAC5B;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,SAAS;IACpD,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,GACjB,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,CASlC;AAED,oBAAY,yBAAyB,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAE9E,qBAAa,eAAe,CAC1B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC;aAED,QAAQ,EAAE,CAAC;aAAkB,SAAS,EAAE,CAAC;gBAAzC,QAAQ,EAAE,CAAC,EAAkB,SAAS,EAAE,CAAC;IAErE,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;CAMvD"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,oBAAY,SAAS;IACnB,WAAW,gBAAgB;CAC5B;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,SAAS;IACpD,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,OAAO,GACjB,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,CAWlC;AAED,oBAAY,yBAAyB,GAAG,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAE9E,qBAAa,eAAe,CAC1B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,cAAc,CAAC,GAAG,CAAC;aAED,QAAQ,EAAE,CAAC;aAAkB,SAAS,EAAE,CAAC;gBAAzC,QAAQ,EAAE,CAAC,EAAkB,SAAS,EAAE,CAAC;IAErE,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;CAMvD"}
package/dist/proxy.js CHANGED
@@ -6,10 +6,12 @@ var ProxyKind;
6
6
  ProxyKind["Transparent"] = "Transparent";
7
7
  })(ProxyKind = exports.ProxyKind || (exports.ProxyKind = {}));
8
8
  function isProxyAddresses(addresses) {
9
+ // The presence of `implementation` is intentionally not checked
10
+ // to allow deploying new implementations by deleting the implementation
11
+ // from the artifacts
9
12
  return (addresses !== null &&
10
13
  typeof addresses === 'object' &&
11
14
  'proxy' in addresses &&
12
- 'implementation' in addresses &&
13
15
  'kind' in addresses &&
14
16
  Object.keys(ProxyKind).includes(addresses.kind));
15
17
  }
package/dist/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";;;AAMA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,wCAA2B,CAAA;AAC7B,CAAC,EAFW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAEpB;AAQD,SAAgB,gBAAgB,CAC9B,SAAkB;IAElB,OAAO,CACL,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,IAAI,SAAS;QACpB,gBAAgB,IAAI,SAAS;QAC7B,MAAM,IAAI,SAAS;QACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAE,SAAiB,CAAC,IAAI,CAAC,CACzD,CAAC;AACJ,CAAC;AAXD,4CAWC;AAID,MAAa,eAAe;IAI1B,YAA4B,QAAW,EAAkB,SAAY;QAAzC,aAAQ,GAAR,QAAQ,CAAG;QAAkB,cAAS,GAAT,SAAS,CAAG;IAAG,CAAC;IAEzE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,UAAsB;QAC5B,OAAO,IAAI,eAAe,CACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAM,EACtC,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AAhBD,0CAgBC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";;;AAMA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,wCAA2B,CAAA;AAC7B,CAAC,EAFW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAEpB;AAQD,SAAgB,gBAAgB,CAC9B,SAAkB;IAElB,gEAAgE;IAChE,wEAAwE;IACxE,qBAAqB;IACrB,OAAO,CACL,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,IAAI,SAAS;QACpB,MAAM,IAAI,SAAS;QACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAE,SAAiB,CAAC,IAAI,CAAC,CACzD,CAAC;AACJ,CAAC;AAbD,4CAaC;AAID,MAAa,eAAe;IAI1B,YAA4B,QAAW,EAAkB,SAAY;QAAzC,aAAQ,GAAR,QAAQ,CAAG;QAAkB,cAAS,GAAT,SAAS,CAAG;IAAG,CAAC;IAEzE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,UAAsB;QAC5B,OAAO,IAAI,eAAe,CACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAM,EACtC,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AAhBD,0CAgBC"}