@snowbridge/base-types 0.3.3 → 0.4.1-beta.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,11 @@ 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}`;
26
+ name?: string;
22
27
  evmParachainId?: number;
23
28
  assets: ERC20MetadataMap;
24
29
  precompile?: `0x${string}`;
@@ -51,11 +56,10 @@ export type Asset = {
51
56
  assetId?: string;
52
57
  foreignId?: string;
53
58
  };
54
- export interface AssetMap {
55
- [token: string]: Asset;
56
- }
57
- export type Parachain = {
58
- parachainId: number;
59
+ export type AssetMap = Record<string, Asset>;
60
+ export type Parachain = ChainId & {
61
+ kind: ParachainKind;
62
+ key: `${ParachainKind}_${number}`;
59
63
  info: ChainProperties;
60
64
  features: {
61
65
  hasPalletXcm: boolean;
@@ -75,11 +79,8 @@ export type Parachain = {
75
79
  estimatedDeliveryFeeDOT: bigint;
76
80
  xcDOT?: string;
77
81
  };
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;
82
+ export type EthereumChainMap = Record<ChainKey<EthereumKind>, EthereumChain>;
83
+ export type ParachainMap = Record<ChainKey<ParachainKind>, Parachain>;
83
84
  export type KusamaConfig = {
84
85
  assetHubParaId: number;
85
86
  bridgeHubParaId: number;
@@ -91,13 +92,11 @@ export type Environment = {
91
92
  gatewayContract: string;
92
93
  beefyContract: string;
93
94
  beaconApiUrl: string;
94
- ethereumChains: {
95
- [chainId: string]: string;
96
- };
95
+ ethereumChains: Record<string, string>;
97
96
  assetHubParaId: number;
98
97
  bridgeHubParaId: number;
99
98
  /** @deprecated Remove once V2 is fully rolled out to all parachains */
100
- v2_parachains?: number[];
99
+ v2_parachains?: readonly number[];
101
100
  relaychainUrl: string;
102
101
  parachains: {
103
102
  [paraId: string]: string;
@@ -106,9 +105,7 @@ export type Environment = {
106
105
  kusama?: {
107
106
  assetHubParaId: number;
108
107
  bridgeHubParaId: number;
109
- parachains: {
110
- [paraId: string]: string;
111
- };
108
+ parachains: Record<string, string>;
112
109
  };
113
110
  assetOverrides?: AssetOverrideMap;
114
111
  precompiles?: PrecompileMap;
@@ -120,52 +117,47 @@ export type Environment = {
120
117
  l1FeeTokenAddress: string;
121
118
  l1SwapRouterAddress: string;
122
119
  l1SwapQuoterAddress: string;
123
- l2Chains: {
124
- [l2ChainId: number]: L2ForwardMetadata;
125
- };
120
+ l2Chains: Record<number, L2ForwardMetadata>;
126
121
  };
127
122
  };
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;
123
+ export type ChainId = {
124
+ kind: ChainKind;
125
+ /** Ethereum chain id or polkadot parachain id.
126
+ */
127
+ id: number;
136
128
  };
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
- };
129
+ export type TransferRoute = {
130
+ from: ChainId;
131
+ to: ChainId;
132
+ assets: readonly string[];
147
133
  };
148
- export type TransferLocation = {
149
- id: string;
150
- name: string;
151
- key: string;
152
- type: SourceType;
134
+ export type ChainKey<T extends string> = `${T}_${number}`;
135
+ export type Source = ChainId & {
136
+ key: ChainKey<ChainKind>;
137
+ destinations: Record<ChainKey<ChainKind>, ChainId & {
138
+ key: ChainKey<ChainKind>;
139
+ assets: string[];
140
+ }>;
141
+ };
142
+ export type TransferLocation = ParachainLocation | EthereumLocation;
143
+ export type ParachainLocation = ChainId & {
144
+ kind: ParachainKind;
145
+ key: ChainKey<ParachainKind>;
146
+ parachain: Parachain;
147
+ };
148
+ export type EthereumLocation = ChainId & {
149
+ kind: EthereumKind;
150
+ key: ChainKey<EthereumKind>;
151
+ ethChain: EthereumChain;
153
152
  parachain?: Parachain;
154
- ethChain?: EthereumChain;
155
153
  };
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
+ export type AssetOverrideMap = Record<string, Asset[]>;
155
+ export type ERC20MetadataOverrideMap = Record<string, {
156
+ name?: string;
157
+ symbol?: string;
158
+ decimals?: number;
159
+ }>;
160
+ export type PrecompileMap = Record<string, `0x${string}`>;
169
161
  export type AssetRegistry = {
170
162
  timestamp: string;
171
163
  environment: string;
@@ -175,9 +167,7 @@ export type AssetRegistry = {
175
167
  bridgeHubParaId: number;
176
168
  relaychain: ChainProperties;
177
169
  bridgeHub: ChainProperties;
178
- ethereumChains: {
179
- [chainId: string]: EthereumChain;
180
- };
170
+ ethereumChains: EthereumChainMap;
181
171
  parachains: ParachainMap;
182
172
  kusama?: KusamaConfig;
183
173
  };
@@ -196,15 +186,15 @@ export type SubstrateAccount = {
196
186
  free: bigint;
197
187
  reserved: bigint;
198
188
  frozen: bigint;
189
+ transferable: bigint;
190
+ total: bigint;
199
191
  };
200
192
  };
201
- export interface PNAMap {
202
- [token: string]: {
203
- token: string;
204
- foreignId: string;
205
- ethereumlocation: any;
206
- };
207
- }
193
+ export type PNAMap = Record<string, {
194
+ token: string;
195
+ foreignId: string;
196
+ ethereumlocation: any;
197
+ }>;
208
198
  export type AssetSwapRoute = {
209
199
  inputToken: string;
210
200
  outputToken: string;
@@ -213,6 +203,17 @@ export type AssetSwapRoute = {
213
203
  export type L2ForwardMetadata = {
214
204
  adapterAddress: string;
215
205
  feeTokenAddress: string;
216
- swapRoutes: AssetSwapRoute[];
206
+ swapRoutes: readonly AssetSwapRoute[];
217
207
  };
208
+ export type FeeEstimateErrorDetails = {
209
+ type: string;
210
+ code: string;
211
+ status: number;
212
+ message: string;
213
+ id: string;
214
+ };
215
+ export declare class FeeEstimateError extends Error {
216
+ readonly details: FeeEstimateErrorDetails;
217
+ constructor(details: FeeEstimateErrorDetails);
218
+ }
218
219
  //# 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,10 @@
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);
3
+ exports.FeeEstimateError = void 0;
4
+ class FeeEstimateError extends Error {
5
+ constructor(details) {
6
+ super(details.message);
7
+ this.details = details;
8
+ }
16
9
  }
10
+ exports.FeeEstimateError = FeeEstimateError;
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-beta.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,12 @@ 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}`;
36
+ name?: string;
30
37
  evmParachainId?: number;
31
38
  assets: ERC20MetadataMap;
32
39
  precompile?: `0x${string}`;
@@ -70,12 +77,11 @@ export type Asset = {
70
77
  foreignId?: string;
71
78
  };
72
79
 
73
- export interface AssetMap {
74
- [token: string]: Asset;
75
- }
80
+ export type AssetMap = Record<string, Asset>;
76
81
 
77
- export type Parachain = {
78
- parachainId: number;
82
+ export type Parachain = ChainId & {
83
+ kind: ParachainKind;
84
+ key: `${ParachainKind}_${number}`;
79
85
  info: ChainProperties;
80
86
  features: {
81
87
  hasPalletXcm: boolean;
@@ -96,27 +102,8 @@ export type Parachain = {
96
102
  xcDOT?: string;
97
103
  };
98
104
 
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
- }
105
+ export type EthereumChainMap = Record<ChainKey<EthereumKind>, EthereumChain>;
106
+ export type ParachainMap = Record<ChainKey<ParachainKind>, Parachain>;
120
107
 
121
108
  export type KusamaConfig = {
122
109
  assetHubParaId: number;
@@ -131,14 +118,12 @@ export type Environment = {
131
118
  gatewayContract: string;
132
119
  beefyContract: string;
133
120
  beaconApiUrl: string;
134
- ethereumChains: {
135
- [chainId: string]: string;
136
- };
121
+ ethereumChains: Record<string, string>;
137
122
  // Substrate
138
123
  assetHubParaId: number;
139
124
  bridgeHubParaId: number;
140
125
  /** @deprecated Remove once V2 is fully rolled out to all parachains */
141
- v2_parachains?: number[];
126
+ v2_parachains?: readonly number[];
142
127
  relaychainUrl: string;
143
128
  parachains: {
144
129
  [paraId: string]: string;
@@ -148,7 +133,7 @@ export type Environment = {
148
133
  kusama?: {
149
134
  assetHubParaId: number;
150
135
  bridgeHubParaId: number;
151
- parachains: { [paraId: string]: string };
136
+ parachains: Record<string, string>;
152
137
  };
153
138
  // Assets
154
139
  assetOverrides?: AssetOverrideMap;
@@ -162,53 +147,63 @@ export type Environment = {
162
147
  l1FeeTokenAddress: string;
163
148
  l1SwapRouterAddress: string;
164
149
  l1SwapQuoterAddress: string;
165
- l2Chains: { [l2ChainId: number]: L2ForwardMetadata };
150
+ l2Chains: Record<number, L2ForwardMetadata>;
166
151
  };
167
152
  };
168
153
 
169
- export type SourceType = "substrate" | "ethereum";
154
+ export type ChainId = {
155
+ kind: ChainKind;
156
+ /** Ethereum chain id or polkadot parachain id.
157
+ */
158
+ id: number;
159
+ };
170
160
 
171
- export type Path = {
172
- type: SourceType;
173
- id: string;
174
- source: number;
175
- destinationType: SourceType;
176
- destination: number;
177
- asset: string;
161
+ export type TransferRoute = {
162
+ from: ChainId;
163
+ to: ChainId;
164
+ assets: readonly string[];
178
165
  };
179
166
 
180
- export type Source = {
181
- type: SourceType;
182
- id: string;
183
- key: string;
184
- destinations: {
185
- [destination: string]: { type: SourceType; assets: string[] };
186
- };
167
+ export type ChainKey<T extends string> = `${T}_${number}`;
168
+
169
+ export type Source = ChainId & {
170
+ key: ChainKey<ChainKind>;
171
+ destinations: Record<
172
+ ChainKey<ChainKind>,
173
+ ChainId & {
174
+ key: ChainKey<ChainKind>;
175
+ assets: string[];
176
+ }
177
+ >;
187
178
  };
188
179
 
189
- export type TransferLocation = {
190
- id: string;
191
- name: string;
192
- key: string;
193
- type: SourceType;
180
+ export type TransferLocation = ParachainLocation | EthereumLocation;
181
+
182
+ export type ParachainLocation = ChainId & {
183
+ kind: ParachainKind;
184
+ key: ChainKey<ParachainKind>;
185
+ parachain: Parachain;
186
+ };
187
+
188
+ export type EthereumLocation = ChainId & {
189
+ kind: EthereumKind;
190
+ key: ChainKey<EthereumKind>;
191
+ ethChain: EthereumChain;
194
192
  parachain?: Parachain;
195
- ethChain?: EthereumChain;
196
193
  };
197
- export interface AssetOverrideMap {
198
- [paraId: string]: Asset[];
199
- }
200
194
 
201
- export interface ERC20MetadataOverrideMap {
202
- [token: string]: {
195
+ export type AssetOverrideMap = Record<string, Asset[]>;
196
+
197
+ export type ERC20MetadataOverrideMap = Record<
198
+ string,
199
+ {
203
200
  name?: string;
204
201
  symbol?: string;
205
202
  decimals?: number;
206
- };
207
- }
203
+ }
204
+ >;
208
205
 
209
- export interface PrecompileMap {
210
- [chainId: string]: `0x${string}`;
211
- }
206
+ export type PrecompileMap = Record<string, `0x${string}`>;
212
207
 
213
208
  export type AssetRegistry = {
214
209
  timestamp: string;
@@ -219,9 +214,7 @@ export type AssetRegistry = {
219
214
  bridgeHubParaId: number;
220
215
  relaychain: ChainProperties;
221
216
  bridgeHub: ChainProperties;
222
- ethereumChains: {
223
- [chainId: string]: EthereumChain;
224
- };
217
+ ethereumChains: EthereumChainMap;
225
218
  parachains: ParachainMap;
226
219
  kusama?: KusamaConfig;
227
220
  };
@@ -242,16 +235,19 @@ export type SubstrateAccount = {
242
235
  free: bigint;
243
236
  reserved: bigint;
244
237
  frozen: bigint;
238
+ transferable: bigint;
239
+ total: bigint;
245
240
  };
246
241
  };
247
242
 
248
- export interface PNAMap {
249
- [token: string]: {
243
+ export type PNAMap = Record<
244
+ string,
245
+ {
250
246
  token: string;
251
247
  foreignId: string;
252
248
  ethereumlocation: any;
253
- };
254
- }
249
+ }
250
+ >;
255
251
 
256
252
  export type AssetSwapRoute = {
257
253
  inputToken: string;
@@ -262,5 +258,20 @@ export type AssetSwapRoute = {
262
258
  export type L2ForwardMetadata = {
263
259
  adapterAddress: string;
264
260
  feeTokenAddress: string;
265
- swapRoutes: AssetSwapRoute[];
261
+ swapRoutes: readonly AssetSwapRoute[];
266
262
  };
263
+
264
+ export type FeeEstimateErrorDetails = {
265
+ type: string;
266
+ code: string;
267
+ status: number;
268
+ message: string;
269
+ id: string;
270
+ };
271
+ export class FeeEstimateError extends Error {
272
+ readonly details: FeeEstimateErrorDetails;
273
+ constructor(details: FeeEstimateErrorDetails) {
274
+ super(details.message);
275
+ this.details = details;
276
+ }
277
+ }