@avalabs/bridge-unified 2.1.1 → 3.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.
Files changed (77) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +115 -31
  3. package/dist/index.cjs +36 -10
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +252 -84
  6. package/dist/index.d.ts +252 -84
  7. package/dist/index.js +9 -4
  8. package/dist/index.js.map +1 -1
  9. package/package.json +14 -4
  10. package/.turbo/turbo-build.log +0 -22
  11. package/.turbo/turbo-lint.log +0 -4
  12. package/.turbo/turbo-test.log +0 -26
  13. package/CHANGELOG.md +0 -37
  14. package/jest.config.js +0 -9
  15. package/src/bridges/cctp/__mocks__/asset.mock.ts +0 -15
  16. package/src/bridges/cctp/__mocks__/bridge-transfer.mock.ts +0 -48
  17. package/src/bridges/cctp/__mocks__/chain.mocks.ts +0 -33
  18. package/src/bridges/cctp/__mocks__/config.mock.ts +0 -45
  19. package/src/bridges/cctp/abis/erc20.ts +0 -117
  20. package/src/bridges/cctp/abis/message-transmitter.ts +0 -318
  21. package/src/bridges/cctp/abis/token-router.ts +0 -843
  22. package/src/bridges/cctp/factory.test.ts +0 -73
  23. package/src/bridges/cctp/factory.ts +0 -36
  24. package/src/bridges/cctp/handlers/estimate-gas.test.ts +0 -110
  25. package/src/bridges/cctp/handlers/estimate-gas.ts +0 -58
  26. package/src/bridges/cctp/handlers/get-assets.test.ts +0 -47
  27. package/src/bridges/cctp/handlers/get-assets.ts +0 -27
  28. package/src/bridges/cctp/handlers/get-fees.test.ts +0 -61
  29. package/src/bridges/cctp/handlers/get-fees.ts +0 -26
  30. package/src/bridges/cctp/handlers/track-transfer.test.ts +0 -779
  31. package/src/bridges/cctp/handlers/track-transfer.ts +0 -365
  32. package/src/bridges/cctp/handlers/transfer-asset.test.ts +0 -429
  33. package/src/bridges/cctp/handlers/transfer-asset.ts +0 -179
  34. package/src/bridges/cctp/index.ts +0 -1
  35. package/src/bridges/cctp/types/chain.ts +0 -9
  36. package/src/bridges/cctp/types/config.ts +0 -20
  37. package/src/bridges/cctp/utils/build-tx.ts +0 -30
  38. package/src/bridges/cctp/utils/config.test.ts +0 -49
  39. package/src/bridges/cctp/utils/config.ts +0 -36
  40. package/src/bridges/cctp/utils/transfer-data.test.ts +0 -83
  41. package/src/bridges/cctp/utils/transfer-data.ts +0 -48
  42. package/src/errors/bridge-error.ts +0 -11
  43. package/src/errors/bridge-initialization-error.ts +0 -9
  44. package/src/errors/bridge-unavailable-error.ts +0 -9
  45. package/src/errors/index.ts +0 -4
  46. package/src/errors/invalid-params-error.ts +0 -9
  47. package/src/index.ts +0 -3
  48. package/src/types/asset.ts +0 -26
  49. package/src/types/bridge.ts +0 -64
  50. package/src/types/chain.ts +0 -10
  51. package/src/types/config.ts +0 -10
  52. package/src/types/environment.ts +0 -4
  53. package/src/types/error.ts +0 -19
  54. package/src/types/index.ts +0 -9
  55. package/src/types/provider.ts +0 -12
  56. package/src/types/signer.ts +0 -18
  57. package/src/types/transfer.ts +0 -35
  58. package/src/unified-bridge-service.test.ts +0 -209
  59. package/src/unified-bridge-service.ts +0 -97
  60. package/src/utils/bridge-types.test.ts +0 -103
  61. package/src/utils/bridge-types.ts +0 -32
  62. package/src/utils/caip2.test.ts +0 -44
  63. package/src/utils/caip2.ts +0 -41
  64. package/src/utils/client.test.ts +0 -97
  65. package/src/utils/client.ts +0 -44
  66. package/src/utils/ensure-config.test.ts +0 -43
  67. package/src/utils/ensure-config.ts +0 -12
  68. package/src/utils/index.ts +0 -2
  69. package/src/utils/network-fee.test.ts +0 -24
  70. package/src/utils/network-fee.ts +0 -6
  71. package/src/utils/retry-promise.test.ts +0 -115
  72. package/src/utils/retry-promise.ts +0 -72
  73. package/src/utils/wait.test.ts +0 -33
  74. package/src/utils/wait.ts +0 -4
  75. package/tsconfig.jest.json +0 -7
  76. package/tsconfig.json +0 -9
  77. package/tsup.config.ts +0 -4
package/dist/index.d.cts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Address } from 'viem';
2
+ import { z } from 'zod';
2
3
 
3
4
  type Chain = {
4
5
  chainName: string;
@@ -7,55 +8,135 @@ type Chain = {
7
8
  utilityAddresses?: {
8
9
  multicall: Address;
9
10
  };
10
- networkToken: Asset;
11
+ networkToken: NativeAsset;
11
12
  };
12
-
13
- declare enum ChainDomain {
14
- Ethereum = 0,
15
- Avalanche = 1
13
+ declare enum AvalancheChainIds {
14
+ FUJI = "eip155:43113",
15
+ MAINNET = "eip155:43114"
16
16
  }
17
-
18
- type Token = {
19
- address: Address;
20
- name: string;
21
- symbol: string;
22
- decimals: number;
23
- };
24
- type ChainData = {
25
- chainId: string;
26
- domain: ChainDomain;
27
- tokenRouterAddress: Address;
28
- messageTransmitterAddress: Address;
29
- tokens: Token[];
30
- minimumConfirmations: number;
31
- };
32
- type Config = ChainData[];
17
+ declare enum EthereumChainIds {
18
+ MAINNET = "eip155:1",
19
+ SEPOLIA = "eip155:11155111"
20
+ }
21
+ declare enum BitcoinChainIds {
22
+ MAINNET = "bip122:000000000019d6689c085ae165831e93",
23
+ TESTNET = "bip122:000000000933ea01ad0ee984209779ba"
24
+ }
25
+ declare const AVALANCHE_FUJI_CHAIN: Chain;
26
+ declare const AVALANCHE_MAINNET_CHAIN: Chain;
27
+ declare const ETHEREUM_SEPOLIA_CHAIN: Chain;
28
+ declare const ETHEREUM_MAINNET_CHAIN: Chain;
29
+ declare const BITCOIN_TESTNET_CHAIN: Chain;
30
+ declare const BITCOIN_MAINNET_CHAIN: Chain;
33
31
 
34
32
  declare enum Environment {
33
+ DEV = "dev",
35
34
  PROD = "production",
35
+ STAGING = "staging",
36
36
  TEST = "test"
37
37
  }
38
38
 
39
- type BridgeServiceConfig = {
40
- environment: Environment;
41
- disabledBridgeTypes?: BridgeType[];
42
- };
43
- type BridgeConfig = Config;
39
+ /**
40
+ * Custom Bitcoin UTXO interface.
41
+ */
44
42
 
45
- type RequestArguments = {
46
- method: string;
47
- params?: unknown[] | Record<string | number, unknown>;
48
- };
49
- type Provider = {
50
- /**
51
- * EIP-1193 compatible request method
52
- * https://eips.ethereum.org/EIPS/eip-1193#request-1
53
- */
54
- request: (args: RequestArguments) => Promise<unknown>;
55
- };
43
+ declare const BitcoinInputUTXO: z.ZodObject<{
44
+ txHash: z.ZodString;
45
+ txHex: z.ZodOptional<z.ZodString>;
46
+ index: z.ZodNumber;
47
+ value: z.ZodNumber;
48
+ script: z.ZodString;
49
+ blockHeight: z.ZodNumber;
50
+ confirmations: z.ZodNumber;
51
+ }, "strip", z.ZodTypeAny, {
52
+ txHash: string;
53
+ value: number;
54
+ index: number;
55
+ script: string;
56
+ blockHeight: number;
57
+ confirmations: number;
58
+ txHex?: string | undefined;
59
+ }, {
60
+ txHash: string;
61
+ value: number;
62
+ index: number;
63
+ script: string;
64
+ blockHeight: number;
65
+ confirmations: number;
66
+ txHex?: string | undefined;
67
+ }>;
68
+ type BitcoinInputUTXO = typeof BitcoinInputUTXO._output;
69
+ declare const BitcoinInputUTXOWithOptionalScript: z.ZodObject<z.objectUtil.extendShape<{
70
+ txHash: z.ZodString;
71
+ txHex: z.ZodOptional<z.ZodString>;
72
+ index: z.ZodNumber;
73
+ value: z.ZodNumber;
74
+ script: z.ZodString;
75
+ blockHeight: z.ZodNumber;
76
+ confirmations: z.ZodNumber;
77
+ }, {
78
+ script: z.ZodOptional<z.ZodString>;
79
+ }>, "strip", z.ZodTypeAny, {
80
+ txHash: string;
81
+ value: number;
82
+ index: number;
83
+ blockHeight: number;
84
+ confirmations: number;
85
+ txHex?: string | undefined;
86
+ script?: string | undefined;
87
+ }, {
88
+ txHash: string;
89
+ value: number;
90
+ index: number;
91
+ blockHeight: number;
92
+ confirmations: number;
93
+ txHex?: string | undefined;
94
+ script?: string | undefined;
95
+ }>;
96
+ type BitcoinInputUTXOWithOptionalScript = typeof BitcoinInputUTXOWithOptionalScript._output;
97
+ /**
98
+ * Used for defining outputs when creating a transaction.
99
+ */
100
+ declare const BitcoinOutputUTXO: z.ZodObject<{
101
+ address: z.ZodString;
102
+ value: z.ZodNumber;
103
+ }, "strip", z.ZodTypeAny, {
104
+ value: number;
105
+ address: string;
106
+ }, {
107
+ value: number;
108
+ address: string;
109
+ }>;
110
+ type BitcoinOutputUTXO = typeof BitcoinOutputUTXO._output;
111
+ interface BitcoinTx {
112
+ hash: string;
113
+ fees: number;
114
+ block: number;
115
+ amount: number;
116
+ confirmations: number;
117
+ blockTime: number;
118
+ addresses: string[];
119
+ inputs: {
120
+ txid: string;
121
+ vout: number;
122
+ sequence: number;
123
+ n: number;
124
+ addresses: string[];
125
+ isAddress: boolean;
126
+ value: number;
127
+ }[];
128
+ outputs: {
129
+ addresses: string[];
130
+ value: number;
131
+ n: number;
132
+ spent: boolean;
133
+ hex: string;
134
+ isAddress: boolean;
135
+ }[];
136
+ }
56
137
 
57
138
  type Hex = `0x${string}`;
58
- type TransactionRequest = {
139
+ type EvmTransactionRequest = {
59
140
  type?: number | null;
60
141
  data?: Hex | null;
61
142
  from: Hex;
@@ -68,8 +149,20 @@ type TransactionRequest = {
68
149
  maxPriorityFeePerGas?: bigint | null;
69
150
  maxFeePerGas?: bigint | null;
70
151
  };
71
- type Dispatch = (signedTxHash: Hex) => Promise<Hex>;
72
- type Signer = (data: TransactionRequest, dispatch: Dispatch) => Promise<Hex>;
152
+ type EvmDispatch = (signedTxHash: Hex) => Promise<Hex>;
153
+ type EvmSign = (data: EvmTransactionRequest, dispatch: EvmDispatch) => Promise<Hex>;
154
+ type EvmSigner = {
155
+ sign: EvmSign;
156
+ };
157
+ type BtcTransactionRequest = {
158
+ inputs: BitcoinInputUTXO[];
159
+ outputs: BitcoinOutputUTXO[];
160
+ };
161
+ type BtcDispatch = (signedTxHash: string) => Promise<string>;
162
+ type BtcSign = (data: BtcTransactionRequest, dispatch: BtcDispatch) => Promise<string>;
163
+ type BtcSigner = {
164
+ sign: BtcSign;
165
+ };
73
166
 
74
167
  declare enum ErrorCode {
75
168
  BRIDGE_NOT_AVAILABLE = 5001,
@@ -79,15 +172,23 @@ declare enum ErrorCode {
79
172
  TRANSACTION_REVERTED = 5005
80
173
  }
81
174
  declare enum ErrorReason {
82
- UNKNOWN = "UNKNOWN",
175
+ ASSET_NOT_SUPPORTED = "ASSET_NOT_SUPPORTED",
176
+ CHAIN_NOT_SUPPORTED = "CHAIN_NOT_SUPPORTED",
83
177
  CONFIG_NOT_AVAILABLE = "CONFIG_NOT_AVAILABLE",
84
- INVALID_PARAMS = "INVALID_PARAMS",
178
+ CONFIRMATION_COUNT_UNKNOWN = "CONFIRMATION_COUNT_UNKNOWN",
179
+ ENVIRONMENT_NOT_SUPPORTED = "ENVIRONMENT_NOT_SUPPORTED",
85
180
  IDENTICAL_CHAINS_PROVIDED = "IDENTICAL_CHAINS_PROVIDED",
86
- INCORRECT_AMOUNT_PROVIDED = "INCORRECT_AMOUNT_PROVIDED",
87
181
  INCORRECT_ADDRESS_PROVIDED = "INCORRECT_ADDRESS_PROVIDED",
88
- CHAIN_NOT_SUPPORTED = "CHAIN_NOT_SUPPORTED",
89
- ASSET_NOT_SUPPORTED = "ASSET_NOT_SUPPORTED",
90
- CONFIRMATION_COUNT_UNKNOWN = "CONFIRMATION_COUNT_UNKNOWN"
182
+ INCORRECT_AMOUNT_PROVIDED = "INCORRECT_AMOUNT_PROVIDED",
183
+ INCORRECT_HASH_PROVIDED = "INCORRECT_HASH_PROVIDED",
184
+ INCORRECT_PROVIDER_PROVIDED = "INCORRECT_PROVIDER_PROVIDED",
185
+ INCORRECT_SIGNER_PROVIDED = "INCORRECT_SIGNER_PROVIDED",
186
+ INCORRECT_TXHASH_PROVIDED = "INCORRECT_TXHASH_PROVIDED",
187
+ INVALID_PARAMS = "INVALID_PARAMS",
188
+ UNKNOWN = "UNKNOWN",
189
+ VULNERABLE_TOKEN_APPROVAL_ADDRESS = "VULNERABLE_TOKEN_APPROVAL_ADDRESS",
190
+ WARDEN_CONFIG_MISMATCH = "WARDEN_CONFIG_MISMATCH",
191
+ WARDEN_CONFIG_MISSING_NETWORK = "WARDEN_CONFIG_MISSING_NETWORK"
91
192
  }
92
193
 
93
194
  type BridgeTransfer = {
@@ -96,8 +197,7 @@ type BridgeTransfer = {
96
197
  fromAddress: string;
97
198
  toAddress: string;
98
199
  amount: bigint;
99
- amountDecimals: number;
100
- symbol: string;
200
+ asset: BridgeAsset;
101
201
  completedAt?: number;
102
202
  errorCode?: ErrorCode;
103
203
  bridgeFee: bigint;
@@ -106,30 +206,75 @@ type BridgeTransfer = {
106
206
  sourceTxHash: string;
107
207
  sourceNetworkFee?: bigint;
108
208
  sourceConfirmationCount: number;
109
- requiredSourceConfirmationCount: number;
209
+ sourceRequiredConfirmationCount: number;
110
210
  targetChain: Chain;
111
211
  targetStartedAt?: number;
112
212
  targetTxHash?: string;
113
213
  targetNetworkFee?: bigint;
114
214
  targetConfirmationCount: number;
115
- requiredTargetConfirmationCount: number;
116
- startBlockNumber?: bigint;
215
+ targetRequiredConfirmationCount: number;
216
+ targetStartBlockNumber?: bigint;
117
217
  metadata?: Record<string, unknown>;
118
218
  };
119
219
 
220
+ interface BitcoinFunctions {
221
+ getChainHeight: () => Promise<number>;
222
+ getUTXOs: (address: string, withScripts?: boolean) => Promise<{
223
+ confirmed: BitcoinInputUTXOWithOptionalScript[];
224
+ unconfirmed: BitcoinInputUTXOWithOptionalScript[];
225
+ }>;
226
+ getTransaction: (hash: string) => Promise<BitcoinTx>;
227
+ getFeeRates: () => Promise<{
228
+ low: number;
229
+ medium: number;
230
+ high: number;
231
+ }>;
232
+ getUtxoBalance: (address: string, withScripts?: boolean) => Promise<{
233
+ utxos: BitcoinInputUTXOWithOptionalScript[];
234
+ utxosUnconfirmed: BitcoinInputUTXOWithOptionalScript[];
235
+ }>;
236
+ getScriptsForUtxos: (utxos: BitcoinInputUTXOWithOptionalScript[]) => Promise<BitcoinInputUTXO[]>;
237
+ issueRawTx: (tx: string) => Promise<string>;
238
+ }
239
+
120
240
  declare enum BridgeType {
121
- CCTP = "cctp"
241
+ AVALANCHE_EVM = "avalanche-evm",
242
+ AVALANCHE_BTC_AVA = "avalanche-btc-ava",
243
+ AVALANCHE_AVA_BTC = "avalanche-ava-btc",
244
+ CCTP = "cctp",
245
+ ICTT_ERC20_ERC20 = "ictt-erc20-erc20"
122
246
  }
247
+ declare const BTC_BRIDGE_TYPES: readonly [BridgeType.AVALANCHE_AVA_BTC, BridgeType.AVALANCHE_BTC_AVA];
248
+ declare const EVM_BRIDGE_TYPES: readonly [BridgeType.AVALANCHE_EVM, BridgeType.CCTP, BridgeType.ICTT_ERC20_ERC20];
249
+ type ArrayElement<A> = A extends readonly (infer T)[] ? T : never;
250
+ type EvmBridgeInitializer = {
251
+ type: ArrayElement<typeof EVM_BRIDGE_TYPES>;
252
+ signer: EvmSigner;
253
+ };
254
+ type AvaToBtcBridgeInitializer = {
255
+ type: BridgeType.AVALANCHE_AVA_BTC;
256
+ signer: EvmSigner;
257
+ bitcoinFunctions: BitcoinFunctions;
258
+ };
259
+ type BtcToAvaBridgeInitializer = {
260
+ type: BridgeType.AVALANCHE_BTC_AVA;
261
+ signer: BtcSigner;
262
+ bitcoinFunctions: BitcoinFunctions;
263
+ };
264
+ type BridgeInitializer = EvmBridgeInitializer | AvaToBtcBridgeInitializer | BtcToAvaBridgeInitializer;
265
+ declare const isEvmBridgeInitializer: (initializer: BridgeInitializer) => initializer is EvmBridgeInitializer;
266
+ declare const isAvaToBtcBridgeInitializer: (initializer: BridgeInitializer) => initializer is AvaToBtcBridgeInitializer;
267
+ declare const isBtcToAvaBridgeInitializer: (initializer: BridgeInitializer) => initializer is BtcToAvaBridgeInitializer;
123
268
  type FeeParams = {
124
269
  asset: BridgeAsset;
125
270
  amount: bigint;
126
271
  sourceChain: Chain;
127
272
  targetChain: Chain;
128
- provider?: Provider;
129
273
  };
130
274
  declare enum BridgeSignatureReason {
131
275
  AllowanceApproval = "allowance-approval",
132
- TokensTransfer = "tokens-transfer"
276
+ TokensTransfer = "tokens-transfer",
277
+ WrapToken = "wrap-token"
133
278
  }
134
279
  type BridgeStepDetails = {
135
280
  currentSignature: number;
@@ -140,70 +285,91 @@ type TransferParams = {
140
285
  asset: BridgeAsset;
141
286
  amount: bigint;
142
287
  fromAddress: string;
143
- toAddress?: string;
288
+ toAddress: string;
144
289
  sourceChain: Chain;
145
290
  targetChain: Chain;
146
- sourceProvider?: Provider;
147
- targetProvider?: Provider;
148
291
  onStepChange?: (stepDetails: BridgeStepDetails) => void;
149
- sign?: Signer;
150
292
  };
293
+ type GasEstimationParams = Omit<TransferParams, 'onStepChange' | 'toAddress'>;
151
294
  type TrackingParams = {
152
295
  bridgeTransfer: BridgeTransfer;
153
- sourceProvider?: Provider;
154
- targetProvider?: Provider;
155
296
  updateListener: (transfer: BridgeTransfer) => void;
156
297
  };
298
+ type AnalyzeTxParams = {
299
+ chainId: string;
300
+ from: string;
301
+ to: string;
302
+ tokenTransfers: {
303
+ from?: string;
304
+ to?: string;
305
+ symbol: string;
306
+ }[];
307
+ };
308
+ type AnalyzeTxResult = {
309
+ isBridgeTx: true;
310
+ bridgeType: BridgeType;
311
+ sourceChainId?: string;
312
+ targetChainId?: string;
313
+ } | {
314
+ isBridgeTx: false;
315
+ };
157
316
  type BridgeService = {
158
317
  type: BridgeType;
159
- config: BridgeConfig | null;
160
- ensureHasConfig: () => Promise<void>;
161
- updateConfig: () => Promise<void>;
162
- estimateGas: (params: TransferParams) => Promise<bigint>;
163
- getAssets: () => Promise<ChainAssetMap>;
164
- getFees: (params: FeeParams) => Promise<AssetFeeMap>;
318
+ analyzeTx: (params: AnalyzeTxParams) => AnalyzeTxResult;
319
+ estimateGas: (params: GasEstimationParams) => Promise<bigint>;
320
+ estimateReceiveAmount: (params: GasEstimationParams) => Promise<{
321
+ asset: Asset;
322
+ amount: bigint;
323
+ }>;
165
324
  transferAsset: (params: TransferParams) => Promise<BridgeTransfer>;
166
325
  trackTransfer: (transfer: TrackingParams) => {
167
326
  cancel: () => void;
168
327
  result: Promise<BridgeTransfer>;
169
328
  };
329
+ getAssets: () => ChainAssetMap;
330
+ getFees: (params: FeeParams) => Promise<AssetFeeMap>;
331
+ getMinimumTransferAmount: (params: FeeParams) => Promise<bigint>;
170
332
  };
171
- type BridgeServiceFactory = (environment: Environment) => BridgeService;
333
+ type BridgeServiceFactory = (environment: Environment) => Promise<BridgeService>;
172
334
 
173
335
  declare enum TokenType {
174
336
  NATIVE = "native",
175
337
  ERC20 = "erc20"
176
338
  }
177
- type Asset = {
178
- type: TokenType;
179
- address?: Address;
339
+ type BaseAsset = {
180
340
  name: string;
181
341
  symbol: string;
182
342
  decimals: number;
183
343
  };
344
+ type Erc20Asset = BaseAsset & {
345
+ type: TokenType.ERC20;
346
+ address: Address;
347
+ };
348
+ type NativeAsset = BaseAsset & {
349
+ type: TokenType.NATIVE;
350
+ };
351
+ declare const isErc20Asset: (asset: Asset) => asset is Erc20Asset;
352
+ declare const isNativeAsset: (asset: Asset) => asset is NativeAsset;
353
+ type Asset = Erc20Asset | NativeAsset;
184
354
  type DestinationInfo = Record<string, BridgeType[]>;
185
355
  type BridgeAsset = Asset & {
186
356
  destinations: DestinationInfo;
187
357
  };
188
358
  type ChainAssetMap = Record<string, BridgeAsset[]>;
189
- type AssetFeeMap = Record<Address, bigint>;
359
+ type AssetFeeMap = Partial<Record<Address | 'NATIVE', bigint>>;
190
360
 
191
- declare const createUnifiedBridgeService: ({ environment, disabledBridgeTypes }: BridgeServiceConfig) => {
361
+ type BridgeServicesMap = Map<BridgeType, BridgeService>;
362
+ type BridgeServiceConfig = {
192
363
  environment: Environment;
193
- bridges: Map<BridgeType, BridgeService>;
194
- init: () => Promise<void>;
195
- updateConfigs: () => Promise<void>;
196
- getAssets: () => Promise<ChainAssetMap>;
197
- getFees: (params: FeeParams) => Promise<AssetFeeMap>;
198
- estimateGas: (params: TransferParams) => Promise<bigint>;
364
+ enabledBridgeServices: BridgeServicesMap;
365
+ };
366
+ type UnifiedBridgeService = Omit<BridgeService, 'type'> & {
199
367
  canTransferAsset: (asset: BridgeAsset, targetChainId: string) => boolean;
200
- transferAsset: (params: TransferParams) => Promise<BridgeTransfer>;
201
- trackTransfer: (params: TrackingParams) => {
202
- cancel: () => void;
203
- result: Promise<BridgeTransfer>;
204
- };
368
+ environment: Environment;
205
369
  };
206
370
 
371
+ declare const createUnifiedBridgeService: ({ environment, enabledBridgeServices }: BridgeServiceConfig) => UnifiedBridgeService;
372
+
207
373
  type Caip2ChainId = {
208
374
  namespace: string;
209
375
  reference: string;
@@ -213,4 +379,6 @@ declare const _default: {
213
379
  toString: ({ namespace, reference }: Caip2ChainId) => string;
214
380
  };
215
381
 
216
- export { Asset, AssetFeeMap, BridgeAsset, BridgeConfig, BridgeService, BridgeServiceConfig, BridgeServiceFactory, BridgeSignatureReason, BridgeStepDetails, BridgeTransfer, BridgeType, Chain, ChainAssetMap, DestinationInfo, Dispatch, Environment, ErrorCode, ErrorReason, FeeParams, Hex, Provider, Signer, TokenType, TrackingParams, TransactionRequest, TransferParams, _default as caip2, createUnifiedBridgeService };
382
+ declare const getEnabledBridgeServices: (environment: Environment, enabledBridgeInitializers: BridgeInitializer[]) => Promise<BridgeServicesMap>;
383
+
384
+ export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AnalyzeTxParams, AnalyzeTxResult, ArrayElement, Asset, AssetFeeMap, AvaToBtcBridgeInitializer, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_BRIDGE_TYPES, BitcoinChainIds, BitcoinFunctions, BitcoinInputUTXO, BitcoinInputUTXOWithOptionalScript, BitcoinTx, BridgeAsset, BridgeInitializer, BridgeService, BridgeServiceConfig, BridgeServiceFactory, BridgeServicesMap, BridgeSignatureReason, BridgeStepDetails, BridgeTransfer, BridgeType, BtcDispatch, BtcSign, BtcSigner, BtcToAvaBridgeInitializer, BtcTransactionRequest, Chain, ChainAssetMap, DestinationInfo, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_BRIDGE_TYPES, Environment, Erc20Asset, ErrorCode, ErrorReason, EthereumChainIds, EvmBridgeInitializer, EvmDispatch, EvmSign, EvmSigner, EvmTransactionRequest, FeeParams, GasEstimationParams, Hex, NativeAsset, TokenType, TrackingParams, TransferParams, UnifiedBridgeService, _default as caip2, createUnifiedBridgeService, getEnabledBridgeServices, isAvaToBtcBridgeInitializer, isBtcToAvaBridgeInitializer, isErc20Asset, isEvmBridgeInitializer, isNativeAsset };