@hyperlane-xyz/registry 13.16.0 → 14.0.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.
@@ -0,0 +1,2 @@
1
+ import type { WarpCoreConfig } from '@hyperlane-xyz/sdk';
2
+ export declare const warpRouteConfig: WarpCoreConfig;
@@ -0,0 +1,59 @@
1
+ export const warpRouteConfig = {
2
+ "tokens": [
3
+ {
4
+ "addressOrDenom": "21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV",
5
+ "chainName": "solanamainnet",
6
+ "coinGeckoId": "wrapped-fragjto",
7
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
8
+ "connections": [
9
+ {
10
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
11
+ },
12
+ {
13
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
14
+ }
15
+ ],
16
+ "decimals": 9,
17
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
18
+ "name": "Wrapped Fragmetric Restaked JTO",
19
+ "standard": "SealevelHypCollateral",
20
+ "symbol": "wfragJTO"
21
+ },
22
+ {
23
+ "addressOrDenom": "4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD",
24
+ "chainName": "eclipsemainnet",
25
+ "collateralAddressOrDenom": "HqDHrCWhdELCf21AAzhpAYTtKLtkqVzGfHTz7fo1yNxy",
26
+ "connections": [
27
+ {
28
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
29
+ },
30
+ {
31
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
32
+ }
33
+ ],
34
+ "decimals": 9,
35
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
36
+ "name": "Wrapped Fragmetric Restaked JTO",
37
+ "standard": "SealevelHypSynthetic",
38
+ "symbol": "wfragJTO"
39
+ },
40
+ {
41
+ "addressOrDenom": "A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8",
42
+ "chainName": "soon",
43
+ "collateralAddressOrDenom": "6vrMyHTVQvmGzCjphMZxnfYV7R8C9tDWAQsWDTgCq1mE",
44
+ "connections": [
45
+ {
46
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
47
+ },
48
+ {
49
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
50
+ }
51
+ ],
52
+ "decimals": 9,
53
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
54
+ "name": "Wrapped Fragmetric Restaked JTO",
55
+ "standard": "SealevelHypSynthetic",
56
+ "symbol": "wfragJTO"
57
+ }
58
+ ]
59
+ };
@@ -0,0 +1,59 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "addressOrDenom": "21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV",
5
+ "chainName": "solanamainnet",
6
+ "coinGeckoId": "wrapped-fragjto",
7
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
8
+ "connections": [
9
+ {
10
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
11
+ },
12
+ {
13
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
14
+ }
15
+ ],
16
+ "decimals": 9,
17
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
18
+ "name": "Wrapped Fragmetric Restaked JTO",
19
+ "standard": "SealevelHypCollateral",
20
+ "symbol": "wfragJTO"
21
+ },
22
+ {
23
+ "addressOrDenom": "4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD",
24
+ "chainName": "eclipsemainnet",
25
+ "collateralAddressOrDenom": "HqDHrCWhdELCf21AAzhpAYTtKLtkqVzGfHTz7fo1yNxy",
26
+ "connections": [
27
+ {
28
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
29
+ },
30
+ {
31
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
32
+ }
33
+ ],
34
+ "decimals": 9,
35
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
36
+ "name": "Wrapped Fragmetric Restaked JTO",
37
+ "standard": "SealevelHypSynthetic",
38
+ "symbol": "wfragJTO"
39
+ },
40
+ {
41
+ "addressOrDenom": "A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8",
42
+ "chainName": "soon",
43
+ "collateralAddressOrDenom": "6vrMyHTVQvmGzCjphMZxnfYV7R8C9tDWAQsWDTgCq1mE",
44
+ "connections": [
45
+ {
46
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
47
+ },
48
+ {
49
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
50
+ }
51
+ ],
52
+ "decimals": 9,
53
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
54
+ "name": "Wrapped Fragmetric Restaked JTO",
55
+ "standard": "SealevelHypSynthetic",
56
+ "symbol": "wfragJTO"
57
+ }
58
+ ]
59
+ }
@@ -0,0 +1,36 @@
1
+ # yaml-language-server: $schema=../schema.json
2
+ tokens:
3
+ - addressOrDenom: 21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV
4
+ chainName: solanamainnet
5
+ coinGeckoId: wrapped-fragjto
6
+ collateralAddressOrDenom: WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U
7
+ connections:
8
+ - token: sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD
9
+ - token: sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8
10
+ decimals: 9
11
+ logoURI: /deployments/warp_routes/wfragJTO/logo.svg
12
+ name: Wrapped Fragmetric Restaked JTO
13
+ standard: SealevelHypCollateral
14
+ symbol: wfragJTO
15
+ - addressOrDenom: 4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD
16
+ chainName: eclipsemainnet
17
+ collateralAddressOrDenom: HqDHrCWhdELCf21AAzhpAYTtKLtkqVzGfHTz7fo1yNxy
18
+ connections:
19
+ - token: sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV
20
+ - token: sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8
21
+ decimals: 9
22
+ logoURI: /deployments/warp_routes/wfragJTO/logo.svg
23
+ name: Wrapped Fragmetric Restaked JTO
24
+ standard: SealevelHypSynthetic
25
+ symbol: wfragJTO
26
+ - addressOrDenom: A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8
27
+ chainName: soon
28
+ collateralAddressOrDenom: 6vrMyHTVQvmGzCjphMZxnfYV7R8C9tDWAQsWDTgCq1mE
29
+ connections:
30
+ - token: sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV
31
+ - token: sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD
32
+ decimals: 9
33
+ logoURI: /deployments/warp_routes/wfragJTO/logo.svg
34
+ name: Wrapped Fragmetric Restaked JTO
35
+ standard: SealevelHypSynthetic
36
+ symbol: wfragJTO
@@ -0,0 +1,2 @@
1
+ import type { WarpCoreConfig } from '@hyperlane-xyz/sdk';
2
+ export declare const warpRouteConfig: WarpCoreConfig;
@@ -0,0 +1,59 @@
1
+ export const warpRouteConfig = {
2
+ "tokens": [
3
+ {
4
+ "addressOrDenom": "22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ",
5
+ "chainName": "solanamainnet",
6
+ "coinGeckoId": "wrapped-fragsol",
7
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
8
+ "connections": [
9
+ {
10
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
11
+ },
12
+ {
13
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
14
+ }
15
+ ],
16
+ "decimals": 9,
17
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
18
+ "name": "Wrapped Fragmetric Restaked SOL",
19
+ "standard": "SealevelHypCollateral",
20
+ "symbol": "wfragSOL"
21
+ },
22
+ {
23
+ "addressOrDenom": "FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN",
24
+ "chainName": "eclipsemainnet",
25
+ "collateralAddressOrDenom": "97UNrMjduqbHhnZ5T5w3DifYnxwM2LAEpYxfoMcMjXK1",
26
+ "connections": [
27
+ {
28
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
29
+ },
30
+ {
31
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
32
+ }
33
+ ],
34
+ "decimals": 9,
35
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
36
+ "name": "Wrapped Fragmetric Restaked SOL",
37
+ "standard": "SealevelHypSynthetic",
38
+ "symbol": "wfragSOL"
39
+ },
40
+ {
41
+ "addressOrDenom": "6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc",
42
+ "chainName": "soon",
43
+ "collateralAddressOrDenom": "7T9sawCGJAV4wC49CjHpw8TGL3ZuPAbZipNq86YXGecy",
44
+ "connections": [
45
+ {
46
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
47
+ },
48
+ {
49
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
50
+ }
51
+ ],
52
+ "decimals": 9,
53
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
54
+ "name": "Wrapped Fragmetric Restaked SOL",
55
+ "standard": "SealevelHypSynthetic",
56
+ "symbol": "wfragSOL"
57
+ }
58
+ ]
59
+ };
@@ -0,0 +1,59 @@
1
+ {
2
+ "tokens": [
3
+ {
4
+ "addressOrDenom": "22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ",
5
+ "chainName": "solanamainnet",
6
+ "coinGeckoId": "wrapped-fragsol",
7
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
8
+ "connections": [
9
+ {
10
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
11
+ },
12
+ {
13
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
14
+ }
15
+ ],
16
+ "decimals": 9,
17
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
18
+ "name": "Wrapped Fragmetric Restaked SOL",
19
+ "standard": "SealevelHypCollateral",
20
+ "symbol": "wfragSOL"
21
+ },
22
+ {
23
+ "addressOrDenom": "FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN",
24
+ "chainName": "eclipsemainnet",
25
+ "collateralAddressOrDenom": "97UNrMjduqbHhnZ5T5w3DifYnxwM2LAEpYxfoMcMjXK1",
26
+ "connections": [
27
+ {
28
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
29
+ },
30
+ {
31
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
32
+ }
33
+ ],
34
+ "decimals": 9,
35
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
36
+ "name": "Wrapped Fragmetric Restaked SOL",
37
+ "standard": "SealevelHypSynthetic",
38
+ "symbol": "wfragSOL"
39
+ },
40
+ {
41
+ "addressOrDenom": "6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc",
42
+ "chainName": "soon",
43
+ "collateralAddressOrDenom": "7T9sawCGJAV4wC49CjHpw8TGL3ZuPAbZipNq86YXGecy",
44
+ "connections": [
45
+ {
46
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
47
+ },
48
+ {
49
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
50
+ }
51
+ ],
52
+ "decimals": 9,
53
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
54
+ "name": "Wrapped Fragmetric Restaked SOL",
55
+ "standard": "SealevelHypSynthetic",
56
+ "symbol": "wfragSOL"
57
+ }
58
+ ]
59
+ }
@@ -0,0 +1,36 @@
1
+ # yaml-language-server: $schema=../schema.json
2
+ tokens:
3
+ - addressOrDenom: 22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ
4
+ chainName: solanamainnet
5
+ coinGeckoId: wrapped-fragsol
6
+ collateralAddressOrDenom: WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U
7
+ connections:
8
+ - token: sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN
9
+ - token: sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc
10
+ decimals: 9
11
+ logoURI: /deployments/warp_routes/wfragSOL/logo.svg
12
+ name: Wrapped Fragmetric Restaked SOL
13
+ standard: SealevelHypCollateral
14
+ symbol: wfragSOL
15
+ - addressOrDenom: FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN
16
+ chainName: eclipsemainnet
17
+ collateralAddressOrDenom: 97UNrMjduqbHhnZ5T5w3DifYnxwM2LAEpYxfoMcMjXK1
18
+ connections:
19
+ - token: sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ
20
+ - token: sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc
21
+ decimals: 9
22
+ logoURI: /deployments/warp_routes/wfragSOL/logo.svg
23
+ name: Wrapped Fragmetric Restaked SOL
24
+ standard: SealevelHypSynthetic
25
+ symbol: wfragSOL
26
+ - addressOrDenom: 6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc
27
+ chainName: soon
28
+ collateralAddressOrDenom: 7T9sawCGJAV4wC49CjHpw8TGL3ZuPAbZipNq86YXGecy
29
+ connections:
30
+ - token: sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ
31
+ - token: sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN
32
+ decimals: 9
33
+ logoURI: /deployments/warp_routes/wfragSOL/logo.svg
34
+ name: Wrapped Fragmetric Restaked SOL
35
+ standard: SealevelHypSynthetic
36
+ symbol: wfragSOL
@@ -23,7 +23,6 @@ export declare class FileSystemRegistry extends SynchronousRegistry implements I
23
23
  getAddresses(): ChainMap<ChainAddresses>;
24
24
  removeChain(chainName: ChainName): void;
25
25
  addWarpRoute(config: WarpCoreConfig, options?: AddWarpRouteOptions): void;
26
- addWarpRouteConfig(warpConfig: WarpRouteDeployConfig, fileName: string): void;
27
26
  addWarpRouteConfig(warpConfig: WarpRouteDeployConfig, options: AddWarpRouteConfigOptions): void;
28
27
  protected listFiles(dirPath: string): string[];
29
28
  protected createOrUpdateChain(chain: UpdateChainParams): void;
@@ -94,15 +94,12 @@ export class FileSystemRegistry extends SynchronousRegistry {
94
94
  data: toYamlString(config, SCHEMA_REF),
95
95
  });
96
96
  }
97
- addWarpRouteConfig(warpConfig, fileNameOrOptions) {
98
- let filePath;
99
- if (typeof fileNameOrOptions === 'string') {
100
- filePath = path.join(this.uri, this.getWarpRoutesPath(), fileNameOrOptions);
101
- }
102
- else {
103
- filePath = this.getWarpRouteDeployConfigPath(warpConfig, fileNameOrOptions);
104
- }
105
- this.createFile({ filePath, data: toYamlString(warpConfig) });
97
+ addWarpRouteConfig(warpConfig, options) {
98
+ const filePath = path.join(this.uri, this.getWarpRouteDeployConfigPath(warpConfig, options));
99
+ this.createFile({
100
+ filePath,
101
+ data: toYamlString(warpConfig),
102
+ });
106
103
  }
107
104
  listFiles(dirPath) {
108
105
  if (!fs.existsSync(dirPath))
@@ -34,6 +34,7 @@ export declare abstract class BaseRegistry implements IRegistry {
34
34
  abstract getWarpRoute(routeId: string): MaybePromise<WarpCoreConfig | null>;
35
35
  abstract getWarpRoutes(filter?: WarpRouteFilterParams): MaybePromise<WarpRouteConfigMap>;
36
36
  abstract addWarpRoute(config: WarpCoreConfig): MaybePromise<void>;
37
+ abstract addWarpRouteConfig(warpConfig: WarpRouteDeployConfig, options: AddWarpRouteConfigOptions): MaybePromise<void>;
37
38
  abstract getWarpDeployConfig(routeId: string): MaybePromise<WarpRouteDeployConfig | null>;
38
39
  abstract getWarpDeployConfigs(filter?: WarpRouteFilterParams): MaybePromise<WarpDeployConfigMap>;
39
40
  merge(otherRegistry: IRegistry): IRegistry;
@@ -2,7 +2,7 @@ import type { Logger } from 'pino';
2
2
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
3
3
  import { ChainAddresses, WarpDeployConfigMap, WarpRouteConfigMap } from '../types.js';
4
4
  import { BaseRegistry } from './BaseRegistry.js';
5
- import { ChainFiles, IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
5
+ import { AddWarpRouteConfigOptions, ChainFiles, IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
6
6
  export interface GithubRegistryOptions {
7
7
  uri?: string;
8
8
  proxyUrl?: string;
@@ -53,6 +53,7 @@ export declare class GithubRegistry extends BaseRegistry implements IRegistry {
53
53
  getWarpDeployConfigs(filter?: WarpRouteFilterParams): Promise<WarpDeployConfigMap>;
54
54
  protected readConfigs<ConfigMap>(routeIds: string[], routeConfigUrls: string[]): Promise<Record<string, ConfigMap>>;
55
55
  addWarpRoute(_config: WarpCoreConfig): Promise<void>;
56
+ addWarpRouteConfig(_config: WarpRouteDeployConfig, _options: AddWarpRouteConfigOptions): Promise<void>;
56
57
  getApiUrl(): Promise<string>;
57
58
  getApiRateLimit(): Promise<GithubRateResponse['resources']['core']>;
58
59
  protected getRawContentUrl(path: string): string;
@@ -149,6 +149,9 @@ export class GithubRegistry extends BaseRegistry {
149
149
  async addWarpRoute(_config) {
150
150
  throw new Error('TODO: Implement');
151
151
  }
152
+ async addWarpRouteConfig(_config, _options) {
153
+ throw new Error('TODO: Implement');
154
+ }
152
155
  async getApiUrl() {
153
156
  const { remaining, reset } = await this.getApiRateLimit();
154
157
  let apiHost = GITHUB_API_URL;
@@ -52,6 +52,7 @@ export interface IRegistry {
52
52
  getWarpRoute(routeId: string): MaybePromise<WarpCoreConfig | null>;
53
53
  getWarpRoutes(filter?: WarpRouteFilterParams): MaybePromise<WarpRouteConfigMap>;
54
54
  addWarpRoute(config: WarpCoreConfig, options?: AddWarpRouteOptions): MaybePromise<void>;
55
+ addWarpRouteConfig(config: WarpRouteDeployConfig, options: AddWarpRouteConfigOptions): MaybePromise<void>;
55
56
  getWarpDeployConfig(routeId: string): MaybePromise<WarpRouteDeployConfig | null>;
56
57
  getWarpDeployConfigs(filter?: WarpRouteFilterParams): MaybePromise<WarpDeployConfigMap>;
57
58
  merge(otherRegistry: IRegistry): IRegistry;
@@ -1,7 +1,7 @@
1
1
  import type { Logger } from 'pino';
2
2
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
3
3
  import { ChainAddresses, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId } from '../types.js';
4
- import { AddWarpRouteOptions, IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
4
+ import { AddWarpRouteConfigOptions, AddWarpRouteOptions, IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
5
5
  export interface MergedRegistryOptions {
6
6
  registries: Array<IRegistry>;
7
7
  logger?: Logger;
@@ -34,6 +34,7 @@ export declare class MergedRegistry implements IRegistry {
34
34
  getWarpRoutes(filter?: WarpRouteFilterParams): Promise<WarpRouteConfigMap>;
35
35
  getWarpDeployConfigs(filter?: WarpRouteFilterParams): Promise<WarpDeployConfigMap>;
36
36
  addWarpRoute(config: WarpCoreConfig, options?: AddWarpRouteOptions): Promise<void>;
37
+ addWarpRouteConfig(config: WarpRouteDeployConfig, options: AddWarpRouteConfigOptions): Promise<void>;
37
38
  protected multiRegistryRead<R>(readFn: (registry: IRegistry) => Promise<R> | R): Promise<(Awaited<R> | Awaited<R>)[]>;
38
39
  protected multiRegistryWrite(writeFn: (registry: IRegistry) => Promise<void>, logMsg: string): Promise<void>;
39
40
  merge(otherRegistry: IRegistry): IRegistry;
@@ -27,7 +27,7 @@ export class MergedRegistry {
27
27
  chains: {},
28
28
  deployments: {
29
29
  warpRoutes: {},
30
- warpDeployConfig: {}
30
+ warpDeployConfig: {},
31
31
  },
32
32
  });
33
33
  }
@@ -80,6 +80,9 @@ export class MergedRegistry {
80
80
  async addWarpRoute(config, options) {
81
81
  return this.multiRegistryWrite(async (registry) => await registry.addWarpRoute(config, options), 'adding warp route');
82
82
  }
83
+ async addWarpRouteConfig(config, options) {
84
+ return this.multiRegistryWrite(async (registry) => await registry.addWarpRouteConfig(config, options), 'adding warp route deploy config');
85
+ }
83
86
  multiRegistryRead(readFn) {
84
87
  return Promise.all(this.registries.map(readFn));
85
88
  }
@@ -1,7 +1,7 @@
1
1
  import type { Logger } from 'pino';
2
2
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
3
3
  import { ChainAddresses, DeepPartial, WarpRouteId } from '../types.js';
4
- import { IRegistry, RegistryContent, RegistryType } from './IRegistry.js';
4
+ import { AddWarpRouteConfigOptions, IRegistry, RegistryContent, RegistryType } from './IRegistry.js';
5
5
  import { SynchronousRegistry } from './SynchronousRegistry.js';
6
6
  /**
7
7
  * A registry that accepts partial data, such as incomplete chain metadata or addresses.
@@ -20,12 +20,13 @@ export declare class PartialRegistry extends SynchronousRegistry implements IReg
20
20
  chainAddresses: ChainMap<DeepPartial<ChainAddresses>>;
21
21
  warpRoutes: Array<DeepPartial<WarpCoreConfig>>;
22
22
  warpDeployConfigs: Array<DeepPartial<WarpRouteDeployConfig>>;
23
- constructor({ chainMetadata, chainAddresses, warpRoutes, warpDeployConfigs, logger }: PartialRegistryOptions);
23
+ constructor({ chainMetadata, chainAddresses, warpRoutes, warpDeployConfigs, logger, }: PartialRegistryOptions);
24
24
  listRegistryContent(): RegistryContent;
25
25
  getMetadata(): ChainMap<ChainMetadata>;
26
26
  getAddresses(): ChainMap<ChainAddresses>;
27
27
  removeChain(chainName: ChainName): void;
28
28
  addWarpRoute(_config: WarpCoreConfig): void;
29
+ addWarpRouteConfig(_config: WarpRouteDeployConfig, _options: AddWarpRouteConfigOptions): void;
29
30
  protected getWarpRoutesForIds(ids: WarpRouteId[]): WarpCoreConfig[];
30
31
  protected getWarpDeployConfigForIds(_ids: WarpRouteId[]): WarpRouteDeployConfig[];
31
32
  protected createOrUpdateChain(chain: {
@@ -1,4 +1,4 @@
1
- import { RegistryType } from './IRegistry.js';
1
+ import { RegistryType, } from './IRegistry.js';
2
2
  import { SynchronousRegistry } from './SynchronousRegistry.js';
3
3
  import { warpRouteConfigToId } from './warp-utils.js';
4
4
  const PARTIAL_URI_PLACEHOLDER = '__partial_registry__';
@@ -8,7 +8,7 @@ export class PartialRegistry extends SynchronousRegistry {
8
8
  chainAddresses;
9
9
  warpRoutes;
10
10
  warpDeployConfigs;
11
- constructor({ chainMetadata, chainAddresses, warpRoutes, warpDeployConfigs, logger }) {
11
+ constructor({ chainMetadata, chainAddresses, warpRoutes, warpDeployConfigs, logger, }) {
12
12
  super({ uri: PARTIAL_URI_PLACEHOLDER, logger });
13
13
  this.chainMetadata = chainMetadata || {};
14
14
  this.chainAddresses = chainAddresses || {};
@@ -35,7 +35,7 @@ export class PartialRegistry extends SynchronousRegistry {
35
35
  chains,
36
36
  deployments: {
37
37
  warpRoutes,
38
- warpDeployConfig: {} // TODO: This cannot be implemented without deriving the token symbol from config.token
38
+ warpDeployConfig: {}, // TODO: This cannot be implemented without deriving the token symbol from config.token
39
39
  },
40
40
  };
41
41
  }
@@ -55,6 +55,9 @@ export class PartialRegistry extends SynchronousRegistry {
55
55
  addWarpRoute(_config) {
56
56
  throw new Error('Method not implemented.');
57
57
  }
58
+ addWarpRouteConfig(_config, _options) {
59
+ throw new Error('Method not implemented.');
60
+ }
58
61
  getWarpRoutesForIds(ids) {
59
62
  return this.warpRoutes.filter((r) => {
60
63
  const id = warpRouteConfigToId(r);
@@ -12106,5 +12106,123 @@ export const warpRouteConfigs = {
12106
12106
  "symbol": "weETHs"
12107
12107
  }
12108
12108
  ]
12109
+ },
12110
+ "wfragJTO/eclipsemainnet-solanamainnet-soon": {
12111
+ "tokens": [
12112
+ {
12113
+ "addressOrDenom": "21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV",
12114
+ "chainName": "solanamainnet",
12115
+ "coinGeckoId": "wrapped-fragjto",
12116
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
12117
+ "connections": [
12118
+ {
12119
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
12120
+ },
12121
+ {
12122
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
12123
+ }
12124
+ ],
12125
+ "decimals": 9,
12126
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
12127
+ "name": "Wrapped Fragmetric Restaked JTO",
12128
+ "standard": "SealevelHypCollateral",
12129
+ "symbol": "wfragJTO"
12130
+ },
12131
+ {
12132
+ "addressOrDenom": "4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD",
12133
+ "chainName": "eclipsemainnet",
12134
+ "collateralAddressOrDenom": "HqDHrCWhdELCf21AAzhpAYTtKLtkqVzGfHTz7fo1yNxy",
12135
+ "connections": [
12136
+ {
12137
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
12138
+ },
12139
+ {
12140
+ "token": "sealevel|soon|A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8"
12141
+ }
12142
+ ],
12143
+ "decimals": 9,
12144
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
12145
+ "name": "Wrapped Fragmetric Restaked JTO",
12146
+ "standard": "SealevelHypSynthetic",
12147
+ "symbol": "wfragJTO"
12148
+ },
12149
+ {
12150
+ "addressOrDenom": "A4UxZkWrEtfmhdtBE3VSS6n4E7Tnj7EMs5PA3hLgmFL8",
12151
+ "chainName": "soon",
12152
+ "collateralAddressOrDenom": "6vrMyHTVQvmGzCjphMZxnfYV7R8C9tDWAQsWDTgCq1mE",
12153
+ "connections": [
12154
+ {
12155
+ "token": "sealevel|solanamainnet|21dbSbBdoEqUtJcvBkvhjpEiqb3LTrUFGQxKHWjY3WwV"
12156
+ },
12157
+ {
12158
+ "token": "sealevel|eclipsemainnet|4dLFhsXeK6QPxV2HEbXsF6eSTZdTFaGcGY5eEj5c8CbD"
12159
+ }
12160
+ ],
12161
+ "decimals": 9,
12162
+ "logoURI": "/deployments/warp_routes/wfragJTO/logo.svg",
12163
+ "name": "Wrapped Fragmetric Restaked JTO",
12164
+ "standard": "SealevelHypSynthetic",
12165
+ "symbol": "wfragJTO"
12166
+ }
12167
+ ]
12168
+ },
12169
+ "wfragSOL/eclipsemainnet-solanamainnet-soon": {
12170
+ "tokens": [
12171
+ {
12172
+ "addressOrDenom": "22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ",
12173
+ "chainName": "solanamainnet",
12174
+ "coinGeckoId": "wrapped-fragsol",
12175
+ "collateralAddressOrDenom": "WFRGSWjaz8tbAxsJitmbfRuFV2mSNwy7BMWcCwaA28U",
12176
+ "connections": [
12177
+ {
12178
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
12179
+ },
12180
+ {
12181
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
12182
+ }
12183
+ ],
12184
+ "decimals": 9,
12185
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
12186
+ "name": "Wrapped Fragmetric Restaked SOL",
12187
+ "standard": "SealevelHypCollateral",
12188
+ "symbol": "wfragSOL"
12189
+ },
12190
+ {
12191
+ "addressOrDenom": "FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN",
12192
+ "chainName": "eclipsemainnet",
12193
+ "collateralAddressOrDenom": "97UNrMjduqbHhnZ5T5w3DifYnxwM2LAEpYxfoMcMjXK1",
12194
+ "connections": [
12195
+ {
12196
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
12197
+ },
12198
+ {
12199
+ "token": "sealevel|soon|6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc"
12200
+ }
12201
+ ],
12202
+ "decimals": 9,
12203
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
12204
+ "name": "Wrapped Fragmetric Restaked SOL",
12205
+ "standard": "SealevelHypSynthetic",
12206
+ "symbol": "wfragSOL"
12207
+ },
12208
+ {
12209
+ "addressOrDenom": "6trL4uE7KANMqrPT5rw4uiN6TSTw7c5Ssv4GdAkhTzVc",
12210
+ "chainName": "soon",
12211
+ "collateralAddressOrDenom": "7T9sawCGJAV4wC49CjHpw8TGL3ZuPAbZipNq86YXGecy",
12212
+ "connections": [
12213
+ {
12214
+ "token": "sealevel|solanamainnet|22z73A4E7QjwjTsHGJptnALgBGuovEabCcQtPdBaQPpJ"
12215
+ },
12216
+ {
12217
+ "token": "sealevel|eclipsemainnet|FF6PWPjiY1hwy3Kt5qTDoqhZ3PbmaXKYPzADEjZbK9iN"
12218
+ }
12219
+ ],
12220
+ "decimals": 9,
12221
+ "logoURI": "/deployments/warp_routes/wfragSOL/logo.svg",
12222
+ "name": "Wrapped Fragmetric Restaked SOL",
12223
+ "standard": "SealevelHypSynthetic",
12224
+ "symbol": "wfragSOL"
12225
+ }
12226
+ ]
12109
12227
  }
12110
12228
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/registry",
3
3
  "description": "A collection of configs, artifacts, and schemas for Hyperlane",
4
- "version": "13.16.0",
4
+ "version": "14.0.0",
5
5
  "dependencies": {
6
6
  "yaml": "2.4.5",
7
7
  "zod": "^3.21.2"