@snowbridge/base-types 0.3.3 → 0.4.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.
@@ -1,5 +1,4 @@
1
-  WARN  Issue while reading "/home/runner/work/snowbridge/snowbridge/web/.npmrc". Failed to replace env in config: ${NPM_AUTH_TOKEN}
2
1
 
3
- > @snowbridge/base-types@0.3.0 build /home/runner/work/snowbridge/snowbridge/web/packages/base-types
2
+ > @snowbridge/base-types@0.4.0 build /home/runner/work/snowbridge/snowbridge/web/packages/base-types
4
3
  > tsc --build --force
5
4
 
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
+ export type BridgeInfo = {
2
+ environment: Environment;
3
+ routes: readonly TransferRoute[];
4
+ registry: AssetRegistry;
5
+ };
1
6
  export type AccountType = "AccountId20" | "AccountId32";
2
7
  export type XcmVersion = "v4" | "v5";
3
- export interface XC20TokenMap {
4
- [xc20: string]: string;
5
- }
8
+ export type EthereumKind = "ethereum" | "ethereum_l2";
9
+ export type ParachainKind = "polkadot" | "kusama";
10
+ export type ChainKind = EthereumKind | ParachainKind;
11
+ export type XC20TokenMap = Record<string, string>;
6
12
  export type ERC20Metadata = {
7
13
  token: string;
8
14
  name: string;
@@ -13,12 +19,10 @@ export type ERC20Metadata = {
13
19
  swapTokenAddress?: string;
14
20
  swapFee?: number;
15
21
  };
16
- export interface ERC20MetadataMap {
17
- [token: string]: ERC20Metadata;
18
- }
19
- export type EthereumChain = {
20
- chainId: number;
21
- id: string;
22
+ export type ERC20MetadataMap = Record<string, ERC20Metadata>;
23
+ export type EthereumChain = ChainId & {
24
+ kind: EthereumKind;
25
+ key: `${EthereumKind}_${number}`;
22
26
  evmParachainId?: number;
23
27
  assets: ERC20MetadataMap;
24
28
  precompile?: `0x${string}`;
@@ -51,11 +55,10 @@ export type Asset = {
51
55
  assetId?: string;
52
56
  foreignId?: string;
53
57
  };
54
- export interface AssetMap {
55
- [token: string]: Asset;
56
- }
57
- export type Parachain = {
58
- parachainId: number;
58
+ export type AssetMap = Record<string, Asset>;
59
+ export type Parachain = ChainId & {
60
+ kind: ParachainKind;
61
+ key: `${ParachainKind}_${number}`;
59
62
  info: ChainProperties;
60
63
  features: {
61
64
  hasPalletXcm: boolean;
@@ -75,11 +78,8 @@ export type Parachain = {
75
78
  estimatedDeliveryFeeDOT: bigint;
76
79
  xcDOT?: string;
77
80
  };
78
- export interface ParachainMap {
79
- [paraId: string]: Parachain;
80
- }
81
- export declare function supportsEthereumToPolkadotV2(parachain: Parachain): boolean;
82
- export declare function supportsPolkadotToEthereumV2(parachain: Parachain): boolean;
81
+ export type EthereumChainMap = Record<ChainKey<EthereumKind>, EthereumChain>;
82
+ export type ParachainMap = Record<ChainKey<ParachainKind>, Parachain>;
83
83
  export type KusamaConfig = {
84
84
  assetHubParaId: number;
85
85
  bridgeHubParaId: number;
@@ -91,13 +91,11 @@ export type Environment = {
91
91
  gatewayContract: string;
92
92
  beefyContract: string;
93
93
  beaconApiUrl: string;
94
- ethereumChains: {
95
- [chainId: string]: string;
96
- };
94
+ ethereumChains: Record<string, string>;
97
95
  assetHubParaId: number;
98
96
  bridgeHubParaId: number;
99
97
  /** @deprecated Remove once V2 is fully rolled out to all parachains */
100
- v2_parachains?: number[];
98
+ v2_parachains?: readonly number[];
101
99
  relaychainUrl: string;
102
100
  parachains: {
103
101
  [paraId: string]: string;
@@ -106,9 +104,7 @@ export type Environment = {
106
104
  kusama?: {
107
105
  assetHubParaId: number;
108
106
  bridgeHubParaId: number;
109
- parachains: {
110
- [paraId: string]: string;
111
- };
107
+ parachains: Record<string, string>;
112
108
  };
113
109
  assetOverrides?: AssetOverrideMap;
114
110
  precompiles?: PrecompileMap;
@@ -120,52 +116,49 @@ export type Environment = {
120
116
  l1FeeTokenAddress: string;
121
117
  l1SwapRouterAddress: string;
122
118
  l1SwapQuoterAddress: string;
123
- l2Chains: {
124
- [l2ChainId: number]: L2ForwardMetadata;
125
- };
119
+ l2Chains: Record<number, L2ForwardMetadata>;
126
120
  };
127
121
  };
128
- export type SourceType = "substrate" | "ethereum";
129
- export type Path = {
130
- type: SourceType;
131
- id: string;
132
- source: number;
133
- destinationType: SourceType;
134
- destination: number;
135
- asset: string;
136
- };
137
- export type Source = {
138
- type: SourceType;
139
- id: string;
140
- key: string;
141
- destinations: {
142
- [destination: string]: {
143
- type: SourceType;
144
- assets: string[];
145
- };
146
- };
122
+ export type ChainId = {
123
+ kind: ChainKind;
124
+ /** Ethereum chain id or polkadot parachain id.
125
+ */
126
+ id: number;
127
+ };
128
+ export type TransferRoute = {
129
+ from: ChainId;
130
+ to: ChainId;
131
+ assets: readonly string[];
132
+ };
133
+ export type ChainKey<T extends string> = `${T}_${number}`;
134
+ export type Source = ChainId & {
135
+ key: ChainKey<ChainKind>;
136
+ destinations: Record<ChainKey<ChainKind>, ChainId & {
137
+ key: ChainKey<ChainKind>;
138
+ assets: string[];
139
+ }>;
140
+ };
141
+ export type TransferLocation = ParachainLocation | EthereumLocation;
142
+ export type ParachainLocation = ChainId & {
143
+ name: string;
144
+ kind: ParachainKind;
145
+ key: ChainKey<ParachainKind>;
146
+ parachain: Parachain;
147
147
  };
148
- export type TransferLocation = {
149
- id: string;
148
+ export type EthereumLocation = ChainId & {
150
149
  name: string;
151
- key: string;
152
- type: SourceType;
150
+ kind: EthereumKind;
151
+ key: ChainKey<EthereumKind>;
152
+ ethChain: EthereumChain;
153
153
  parachain?: Parachain;
154
- ethChain?: EthereumChain;
155
- };
156
- export interface AssetOverrideMap {
157
- [paraId: string]: Asset[];
158
- }
159
- export interface ERC20MetadataOverrideMap {
160
- [token: string]: {
161
- name?: string;
162
- symbol?: string;
163
- decimals?: number;
164
- };
165
- }
166
- export interface PrecompileMap {
167
- [chainId: string]: `0x${string}`;
168
- }
154
+ };
155
+ export type AssetOverrideMap = Record<string, Asset[]>;
156
+ export type ERC20MetadataOverrideMap = Record<string, {
157
+ name?: string;
158
+ symbol?: string;
159
+ decimals?: number;
160
+ }>;
161
+ export type PrecompileMap = Record<string, `0x${string}`>;
169
162
  export type AssetRegistry = {
170
163
  timestamp: string;
171
164
  environment: string;
@@ -175,9 +168,7 @@ export type AssetRegistry = {
175
168
  bridgeHubParaId: number;
176
169
  relaychain: ChainProperties;
177
170
  bridgeHub: ChainProperties;
178
- ethereumChains: {
179
- [chainId: string]: EthereumChain;
180
- };
171
+ ethereumChains: EthereumChainMap;
181
172
  parachains: ParachainMap;
182
173
  kusama?: KusamaConfig;
183
174
  };
@@ -198,13 +189,11 @@ export type SubstrateAccount = {
198
189
  frozen: bigint;
199
190
  };
200
191
  };
201
- export interface PNAMap {
202
- [token: string]: {
203
- token: string;
204
- foreignId: string;
205
- ethereumlocation: any;
206
- };
207
- }
192
+ export type PNAMap = Record<string, {
193
+ token: string;
194
+ foreignId: string;
195
+ ethereumlocation: any;
196
+ }>;
208
197
  export type AssetSwapRoute = {
209
198
  inputToken: string;
210
199
  outputToken: string;
@@ -213,6 +202,6 @@ export type AssetSwapRoute = {
213
202
  export type L2ForwardMetadata = {
214
203
  adapterAddress: string;
215
204
  feeTokenAddress: string;
216
- swapRoutes: AssetSwapRoute[];
205
+ swapRoutes: readonly AssetSwapRoute[];
217
206
  };
218
207
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,16 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supportsEthereumToPolkadotV2 = supportsEthereumToPolkadotV2;
4
- exports.supportsPolkadotToEthereumV2 = supportsPolkadotToEthereumV2;
5
- function supportsEthereumToPolkadotV2(parachain) {
6
- return (parachain.features.hasXcmPaymentApi &&
7
- parachain.features.xcmVersion === "v5" &&
8
- parachain.features.supportsV2);
9
- }
10
- function supportsPolkadotToEthereumV2(parachain) {
11
- return (parachain.features.hasEthBalance &&
12
- parachain.features.hasXcmPaymentApi &&
13
- parachain.features.supportsAliasOrigin &&
14
- parachain.features.xcmVersion === "v5" &&
15
- parachain.features.supportsV2);
16
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snowbridge/base-types",
3
- "version": "0.3.3",
3
+ "version": "0.4.1",
4
4
  "description": "Snowbridge Base Types",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/index.ts CHANGED
@@ -1,10 +1,18 @@
1
+ export type BridgeInfo = {
2
+ environment: Environment;
3
+ routes: readonly TransferRoute[];
4
+ registry: AssetRegistry;
5
+ };
6
+
1
7
  export type AccountType = "AccountId20" | "AccountId32";
2
8
 
3
9
  export type XcmVersion = "v4" | "v5";
4
10
 
5
- export interface XC20TokenMap {
6
- [xc20: string]: string;
7
- }
11
+ export type EthereumKind = "ethereum" | "ethereum_l2";
12
+ export type ParachainKind = "polkadot" | "kusama";
13
+ export type ChainKind = EthereumKind | ParachainKind;
14
+
15
+ export type XC20TokenMap = Record<string, string>;
8
16
 
9
17
  export type ERC20Metadata = {
10
18
  token: string;
@@ -20,13 +28,11 @@ export type ERC20Metadata = {
20
28
  swapFee?: number;
21
29
  };
22
30
 
23
- export interface ERC20MetadataMap {
24
- [token: string]: ERC20Metadata;
25
- }
31
+ export type ERC20MetadataMap = Record<string, ERC20Metadata>;
26
32
 
27
- export type EthereumChain = {
28
- chainId: number;
29
- id: string;
33
+ export type EthereumChain = ChainId & {
34
+ kind: EthereumKind;
35
+ key: `${EthereumKind}_${number}`;
30
36
  evmParachainId?: number;
31
37
  assets: ERC20MetadataMap;
32
38
  precompile?: `0x${string}`;
@@ -70,12 +76,11 @@ export type Asset = {
70
76
  foreignId?: string;
71
77
  };
72
78
 
73
- export interface AssetMap {
74
- [token: string]: Asset;
75
- }
79
+ export type AssetMap = Record<string, Asset>;
76
80
 
77
- export type Parachain = {
78
- parachainId: number;
81
+ export type Parachain = ChainId & {
82
+ kind: ParachainKind;
83
+ key: `${ParachainKind}_${number}`;
79
84
  info: ChainProperties;
80
85
  features: {
81
86
  hasPalletXcm: boolean;
@@ -96,27 +101,8 @@ export type Parachain = {
96
101
  xcDOT?: string;
97
102
  };
98
103
 
99
- export interface ParachainMap {
100
- [paraId: string]: Parachain;
101
- }
102
-
103
- export function supportsEthereumToPolkadotV2(parachain: Parachain): boolean {
104
- return (
105
- parachain.features.hasXcmPaymentApi &&
106
- parachain.features.xcmVersion === "v5" &&
107
- parachain.features.supportsV2
108
- );
109
- }
110
-
111
- export function supportsPolkadotToEthereumV2(parachain: Parachain): boolean {
112
- return (
113
- parachain.features.hasEthBalance &&
114
- parachain.features.hasXcmPaymentApi &&
115
- parachain.features.supportsAliasOrigin &&
116
- parachain.features.xcmVersion === "v5" &&
117
- parachain.features.supportsV2
118
- );
119
- }
104
+ export type EthereumChainMap = Record<ChainKey<EthereumKind>, EthereumChain>;
105
+ export type ParachainMap = Record<ChainKey<ParachainKind>, Parachain>;
120
106
 
121
107
  export type KusamaConfig = {
122
108
  assetHubParaId: number;
@@ -131,14 +117,12 @@ export type Environment = {
131
117
  gatewayContract: string;
132
118
  beefyContract: string;
133
119
  beaconApiUrl: string;
134
- ethereumChains: {
135
- [chainId: string]: string;
136
- };
120
+ ethereumChains: Record<string, string>;
137
121
  // Substrate
138
122
  assetHubParaId: number;
139
123
  bridgeHubParaId: number;
140
124
  /** @deprecated Remove once V2 is fully rolled out to all parachains */
141
- v2_parachains?: number[];
125
+ v2_parachains?: readonly number[];
142
126
  relaychainUrl: string;
143
127
  parachains: {
144
128
  [paraId: string]: string;
@@ -148,7 +132,7 @@ export type Environment = {
148
132
  kusama?: {
149
133
  assetHubParaId: number;
150
134
  bridgeHubParaId: number;
151
- parachains: { [paraId: string]: string };
135
+ parachains: Record<string, string>;
152
136
  };
153
137
  // Assets
154
138
  assetOverrides?: AssetOverrideMap;
@@ -162,53 +146,65 @@ export type Environment = {
162
146
  l1FeeTokenAddress: string;
163
147
  l1SwapRouterAddress: string;
164
148
  l1SwapQuoterAddress: string;
165
- l2Chains: { [l2ChainId: number]: L2ForwardMetadata };
149
+ l2Chains: Record<number, L2ForwardMetadata>;
166
150
  };
167
151
  };
168
152
 
169
- export type SourceType = "substrate" | "ethereum";
153
+ export type ChainId = {
154
+ kind: ChainKind;
155
+ /** Ethereum chain id or polkadot parachain id.
156
+ */
157
+ id: number;
158
+ };
170
159
 
171
- export type Path = {
172
- type: SourceType;
173
- id: string;
174
- source: number;
175
- destinationType: SourceType;
176
- destination: number;
177
- asset: string;
160
+ export type TransferRoute = {
161
+ from: ChainId;
162
+ to: ChainId;
163
+ assets: readonly string[];
178
164
  };
179
165
 
180
- export type Source = {
181
- type: SourceType;
182
- id: string;
183
- key: string;
184
- destinations: {
185
- [destination: string]: { type: SourceType; assets: string[] };
186
- };
166
+ export type ChainKey<T extends string> = `${T}_${number}`;
167
+
168
+ export type Source = ChainId & {
169
+ key: ChainKey<ChainKind>;
170
+ destinations: Record<
171
+ ChainKey<ChainKind>,
172
+ ChainId & {
173
+ key: ChainKey<ChainKind>;
174
+ assets: string[];
175
+ }
176
+ >;
187
177
  };
188
178
 
189
- export type TransferLocation = {
190
- id: string;
179
+ export type TransferLocation = ParachainLocation | EthereumLocation;
180
+
181
+ export type ParachainLocation = ChainId & {
182
+ name: string;
183
+ kind: ParachainKind;
184
+ key: ChainKey<ParachainKind>;
185
+ parachain: Parachain;
186
+ };
187
+
188
+ export type EthereumLocation = ChainId & {
191
189
  name: string;
192
- key: string;
193
- type: SourceType;
190
+ kind: EthereumKind;
191
+ key: ChainKey<EthereumKind>;
192
+ ethChain: EthereumChain;
194
193
  parachain?: Parachain;
195
- ethChain?: EthereumChain;
196
194
  };
197
- export interface AssetOverrideMap {
198
- [paraId: string]: Asset[];
199
- }
200
195
 
201
- export interface ERC20MetadataOverrideMap {
202
- [token: string]: {
196
+ export type AssetOverrideMap = Record<string, Asset[]>;
197
+
198
+ export type ERC20MetadataOverrideMap = Record<
199
+ string,
200
+ {
203
201
  name?: string;
204
202
  symbol?: string;
205
203
  decimals?: number;
206
- };
207
- }
204
+ }
205
+ >;
208
206
 
209
- export interface PrecompileMap {
210
- [chainId: string]: `0x${string}`;
211
- }
207
+ export type PrecompileMap = Record<string, `0x${string}`>;
212
208
 
213
209
  export type AssetRegistry = {
214
210
  timestamp: string;
@@ -219,9 +215,7 @@ export type AssetRegistry = {
219
215
  bridgeHubParaId: number;
220
216
  relaychain: ChainProperties;
221
217
  bridgeHub: ChainProperties;
222
- ethereumChains: {
223
- [chainId: string]: EthereumChain;
224
- };
218
+ ethereumChains: EthereumChainMap;
225
219
  parachains: ParachainMap;
226
220
  kusama?: KusamaConfig;
227
221
  };
@@ -245,13 +239,14 @@ export type SubstrateAccount = {
245
239
  };
246
240
  };
247
241
 
248
- export interface PNAMap {
249
- [token: string]: {
242
+ export type PNAMap = Record<
243
+ string,
244
+ {
250
245
  token: string;
251
246
  foreignId: string;
252
247
  ethereumlocation: any;
253
- };
254
- }
248
+ }
249
+ >;
255
250
 
256
251
  export type AssetSwapRoute = {
257
252
  inputToken: string;
@@ -262,5 +257,5 @@ export type AssetSwapRoute = {
262
257
  export type L2ForwardMetadata = {
263
258
  adapterAddress: string;
264
259
  feeTokenAddress: string;
265
- swapRoutes: AssetSwapRoute[];
260
+ swapRoutes: readonly AssetSwapRoute[];
266
261
  };