@hyperlane-xyz/sdk 13.4.0 → 14.1.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.
- package/dist/contracts/contracts.d.ts +2 -0
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.hardhat-test.d.ts +2 -0
- package/dist/contracts/contracts.hardhat-test.d.ts.map +1 -0
- package/dist/contracts/contracts.hardhat-test.js +34 -0
- package/dist/contracts/contracts.hardhat-test.js.map +1 -0
- package/dist/contracts/contracts.js +7 -0
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/types.d.ts +17 -17
- package/dist/deploy/proxy.d.ts +1 -2
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +0 -6
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/gas/oracle/types.d.ts +51 -0
- package/dist/gas/oracle/types.d.ts.map +1 -1
- package/dist/gas/oracle/types.js +8 -0
- package/dist/gas/oracle/types.js.map +1 -1
- package/dist/gas/utils.d.ts +3 -2
- package/dist/gas/utils.d.ts.map +1 -1
- package/dist/gas/utils.js +4 -1
- package/dist/gas/utils.js.map +1 -1
- package/dist/ica/types.d.ts +2 -2
- package/dist/index.d.ts +4 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmReader.d.ts.map +1 -1
- package/dist/ism/EvmIsmReader.js +21 -5
- package/dist/ism/EvmIsmReader.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +1 -0
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +5 -0
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +1560 -1560
- package/dist/metadata/chainMetadataTypes.d.ts +6 -6
- package/dist/middleware/account/InterchainAccount.d.ts +3 -2
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +31 -5
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts +23 -0
- package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -0
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js +76 -0
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -0
- package/dist/providers/transactions/submitter/TxSubmitterTypes.d.ts +2 -1
- package/dist/providers/transactions/submitter/TxSubmitterTypes.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/TxSubmitterTypes.js +1 -0
- package/dist/providers/transactions/submitter/TxSubmitterTypes.js.map +1 -1
- package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts +1 -10
- package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.js +3 -20
- package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.js.map +1 -1
- package/dist/providers/transactions/submitter/builder/types.d.ts +542 -178
- package/dist/providers/transactions/submitter/builder/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/builder/types.js +59 -5
- package/dist/providers/transactions/submitter/builder/types.js.map +1 -1
- package/dist/providers/transactions/submitter/builder/types.test.d.ts.map +1 -0
- package/dist/providers/transactions/submitter/builder/types.test.js +274 -0
- package/dist/providers/transactions/submitter/builder/types.test.js.map +1 -0
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts +60 -1
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/types.js +19 -0
- package/dist/providers/transactions/submitter/ethersV5/types.js.map +1 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts +15 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts.map +1 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js +36 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js.map +1 -0
- package/dist/providers/transactions/submitter/types.d.ts +248 -2
- package/dist/providers/transactions/submitter/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/types.js +15 -18
- package/dist/providers/transactions/submitter/types.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +7 -2
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/types.d.ts +1 -1
- package/dist/token/EvmERC20WarpModule.hardhat-test.js +7 -7
- package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmERC20WarpRouteReader.d.ts +3 -1
- package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
- package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js +123 -5
- package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +1 -1
- package/dist/token/EvmERC20WarpRouteReader.js +68 -10
- package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +7 -1
- package/dist/token/Token.js.map +1 -1
- package/dist/token/adapters/StarknetTokenAdapter.d.ts +28 -6
- package/dist/token/adapters/StarknetTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/StarknetTokenAdapter.js +59 -27
- package/dist/token/adapters/StarknetTokenAdapter.js.map +1 -1
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +29 -6
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/deploy.js +6 -6
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/types.d.ts +41 -8
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +20 -6
- package/dist/token/types.js.map +1 -1
- package/dist/utils/starknet.d.ts +5 -0
- package/dist/utils/starknet.d.ts.map +1 -1
- package/dist/utils/starknet.js +21 -0
- package/dist/utils/starknet.js.map +1 -1
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +22 -0
- package/dist/warp/WarpCore.js.map +1 -1
- package/package.json +5 -5
- package/dist/providers/transactions/transformer/TxTransformerInterface.d.ts +0 -15
- package/dist/providers/transactions/transformer/TxTransformerInterface.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/TxTransformerInterface.js +0 -2
- package/dist/providers/transactions/transformer/TxTransformerInterface.js.map +0 -1
- package/dist/providers/transactions/transformer/TxTransformerTypes.d.ts +0 -4
- package/dist/providers/transactions/transformer/TxTransformerTypes.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/TxTransformerTypes.js +0 -5
- package/dist/providers/transactions/transformer/TxTransformerTypes.js.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.d.ts +0 -15
- package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.js +0 -41
- package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.js.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.d.ts +0 -5
- package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.js +0 -2
- package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.js.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/types.d.ts +0 -60
- package/dist/providers/transactions/transformer/ethersV5/types.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/types.js +0 -7
- package/dist/providers/transactions/transformer/ethersV5/types.js.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/types.test.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/ethersV5/types.test.js +0 -44
- package/dist/providers/transactions/transformer/ethersV5/types.test.js.map +0 -1
- package/dist/providers/transactions/transformer/types.d.ts +0 -50
- package/dist/providers/transactions/transformer/types.d.ts.map +0 -1
- package/dist/providers/transactions/transformer/types.js +0 -10
- package/dist/providers/transactions/transformer/types.js.map +0 -1
- /package/dist/providers/transactions/{transformer/ethersV5 → submitter/builder}/types.test.d.ts +0 -0
|
@@ -450,9 +450,6 @@ export declare const ChainMetadataSchemaObject: z.ZodObject<{
|
|
|
450
450
|
}>>;
|
|
451
451
|
}, "strip", z.ZodTypeAny, {
|
|
452
452
|
name: string;
|
|
453
|
-
chainId: string | number;
|
|
454
|
-
domainId: number;
|
|
455
|
-
protocol: ProtocolType;
|
|
456
453
|
rpcUrls: {
|
|
457
454
|
http: string;
|
|
458
455
|
concurrency?: number | undefined;
|
|
@@ -468,6 +465,9 @@ export declare const ChainMetadataSchemaObject: z.ZodObject<{
|
|
|
468
465
|
} | undefined;
|
|
469
466
|
public?: boolean | undefined;
|
|
470
467
|
}[];
|
|
468
|
+
chainId: string | number;
|
|
469
|
+
domainId: number;
|
|
470
|
+
protocol: ProtocolType;
|
|
471
471
|
availability?: {
|
|
472
472
|
status: ChainStatus.Disabled;
|
|
473
473
|
reasons: ChainDisabledReason[];
|
|
@@ -548,9 +548,6 @@ export declare const ChainMetadataSchemaObject: z.ZodObject<{
|
|
|
548
548
|
} | undefined;
|
|
549
549
|
}, {
|
|
550
550
|
name: string;
|
|
551
|
-
chainId: string | number;
|
|
552
|
-
domainId: number;
|
|
553
|
-
protocol: ProtocolType;
|
|
554
551
|
rpcUrls: {
|
|
555
552
|
http: string;
|
|
556
553
|
concurrency?: number | undefined;
|
|
@@ -566,6 +563,9 @@ export declare const ChainMetadataSchemaObject: z.ZodObject<{
|
|
|
566
563
|
} | undefined;
|
|
567
564
|
public?: boolean | undefined;
|
|
568
565
|
}[];
|
|
566
|
+
chainId: string | number;
|
|
567
|
+
domainId: number;
|
|
568
|
+
protocol: ProtocolType;
|
|
569
569
|
availability?: {
|
|
570
570
|
status: ChainStatus.Disabled;
|
|
571
571
|
reasons: ChainDisabledReason[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PopulatedTransaction } from 'ethers';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { InterchainAccountRouter } from '@hyperlane-xyz/core';
|
|
4
|
+
import { IRegistry } from '@hyperlane-xyz/registry';
|
|
4
5
|
import { Address, CallData } from '@hyperlane-xyz/utils';
|
|
5
6
|
import { HyperlaneAddressesMap, HyperlaneContracts, HyperlaneContractsMap } from '../../contracts/types.js';
|
|
6
7
|
import { MultiProvider } from '../../providers/MultiProvider.js';
|
|
@@ -20,8 +21,8 @@ export declare class InterchainAccount extends RouterApp<InterchainAccountFactor
|
|
|
20
21
|
getCallRemote({ chain, destination, innerCalls, config, hookMetadata, }: GetCallRemoteSettings): Promise<PopulatedTransaction>;
|
|
21
22
|
callRemote({ chain, destination, innerCalls, config, hookMetadata, }: GetCallRemoteSettings): Promise<void>;
|
|
22
23
|
}
|
|
23
|
-
export declare function buildInterchainAccountApp(multiProvider: MultiProvider, chain: ChainName, config: AccountConfig): InterchainAccount
|
|
24
|
-
export declare function deployInterchainAccount(multiProvider: MultiProvider, chain: ChainName, config: AccountConfig): Promise<Address>;
|
|
24
|
+
export declare function buildInterchainAccountApp(multiProvider: MultiProvider, chain: ChainName, config: AccountConfig, registry: Readonly<IRegistry>): Promise<InterchainAccount>;
|
|
25
|
+
export declare function deployInterchainAccount(multiProvider: MultiProvider, chain: ChainName, config: AccountConfig, registry: IRegistry): Promise<Address>;
|
|
25
26
|
export declare function encodeIcaCalls(calls: CallData[], salt: string): string;
|
|
26
27
|
export type RawCallData = {
|
|
27
28
|
to: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterchainAccount.d.ts","sourceRoot":"","sources":["../../../src/middleware/account/InterchainAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,oBAAoB,EAAS,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,
|
|
1
|
+
{"version":3,"file":"InterchainAccount.d.ts","sourceRoot":"","sources":["../../../src/middleware/account/InterchainAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BigNumber, utils } from 'ethers';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import {
|
|
3
|
+
import { InterchainAccountRouter__factory, } from '@hyperlane-xyz/core';
|
|
4
|
+
import { addBufferToGasLimit, addressToBytes32, arrayToObject, bytes32ToAddress, eqAddress, isZeroishAddress, objFilter, objMap, promiseObjAll, } from '@hyperlane-xyz/utils';
|
|
4
5
|
import { appFromAddressesMapHelper } from '../../contracts/contracts.js';
|
|
5
6
|
import { RouterApp } from '../../router/RouterApps.js';
|
|
6
7
|
import { interchainAccountFactories, } from './contracts.js';
|
|
@@ -93,17 +94,42 @@ export class InterchainAccount extends RouterApp {
|
|
|
93
94
|
}));
|
|
94
95
|
}
|
|
95
96
|
}
|
|
96
|
-
export function buildInterchainAccountApp(multiProvider, chain, config) {
|
|
97
|
+
export async function buildInterchainAccountApp(multiProvider, chain, config, registry) {
|
|
97
98
|
if (!config.localRouter) {
|
|
98
99
|
throw new Error('localRouter is required for account deployment');
|
|
99
100
|
}
|
|
101
|
+
let remoteIcaAddresses;
|
|
102
|
+
const localChainAddresses = await registry.getChainAddresses(chain);
|
|
103
|
+
// if the user specified a custom router address we need to retrieve the remote ica addresses
|
|
104
|
+
// configured on the user provided router, otherwise we use the ones defined in the registry
|
|
105
|
+
if (localChainAddresses?.interchainAccountRouter &&
|
|
106
|
+
eqAddress(config.localRouter, localChainAddresses.interchainAccountRouter)) {
|
|
107
|
+
const addressByChain = await registry.getAddresses();
|
|
108
|
+
remoteIcaAddresses = objMap(addressByChain, (_, chainAddresses) => ({
|
|
109
|
+
interchainAccountRouter: chainAddresses.interchainAccountRouter,
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const currentIca = InterchainAccountRouter__factory.connect(config.localRouter, multiProvider.getSigner(chain));
|
|
114
|
+
const knownDomains = await currentIca.domains();
|
|
115
|
+
remoteIcaAddresses = await promiseObjAll(objMap(arrayToObject(knownDomains.map(String)), async (domainId) => {
|
|
116
|
+
const routerAddress = await currentIca.routers(domainId);
|
|
117
|
+
return { interchainAccountRouter: bytes32ToAddress(routerAddress) };
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
// remove the undefined or 0 addresses values
|
|
121
|
+
remoteIcaAddresses = objFilter(remoteIcaAddresses, (_chainId, chainAddresses) => !!chainAddresses.interchainAccountRouter &&
|
|
122
|
+
!isZeroishAddress(chainAddresses.interchainAccountRouter));
|
|
100
123
|
const addressesMap = {
|
|
101
|
-
[chain]: {
|
|
124
|
+
[chain]: {
|
|
125
|
+
interchainAccountRouter: config.localRouter,
|
|
126
|
+
},
|
|
127
|
+
...remoteIcaAddresses,
|
|
102
128
|
};
|
|
103
129
|
return InterchainAccount.fromAddressesMap(addressesMap, multiProvider);
|
|
104
130
|
}
|
|
105
|
-
export async function deployInterchainAccount(multiProvider, chain, config) {
|
|
106
|
-
const interchainAccountApp = buildInterchainAccountApp(multiProvider, chain, config);
|
|
131
|
+
export async function deployInterchainAccount(multiProvider, chain, config, registry) {
|
|
132
|
+
const interchainAccountApp = await buildInterchainAccountApp(multiProvider, chain, config, registry);
|
|
107
133
|
return interchainAccountApp.deployAccount(chain, config);
|
|
108
134
|
}
|
|
109
135
|
export function encodeIcaCalls(calls, salt) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterchainAccount.js","sourceRoot":"","sources":["../../../src/middleware/account/InterchainAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"InterchainAccount.js","sourceRoot":"","sources":["../../../src/middleware/account/InterchainAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IRegistry } from '@hyperlane-xyz/registry';
|
|
2
|
+
import { Address, ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { InterchainAccount } from '../../../middleware/account/InterchainAccount.js';
|
|
4
|
+
import { MultiProvider } from '../../MultiProvider.js';
|
|
5
|
+
import { AnnotatedEV5Transaction, ProtocolTypedReceipt } from '../../ProviderType.js';
|
|
6
|
+
import { TxSubmitterInterface } from './TxSubmitterInterface.js';
|
|
7
|
+
import { TxSubmitterType } from './TxSubmitterTypes.js';
|
|
8
|
+
import { EvmIcaTxSubmitterProps } from './types.js';
|
|
9
|
+
type EvmIcaTxSubmitterConstructorConfig = Omit<EvmIcaTxSubmitterProps, 'internalSubmitter' | 'type'> & {
|
|
10
|
+
originInterchainAccountRouter: Address;
|
|
11
|
+
};
|
|
12
|
+
export declare class EvmIcaTxSubmitter implements TxSubmitterInterface<ProtocolType.Ethereum> {
|
|
13
|
+
protected readonly config: EvmIcaTxSubmitterConstructorConfig;
|
|
14
|
+
protected readonly submitter: TxSubmitterInterface<ProtocolType.Ethereum>;
|
|
15
|
+
protected readonly multiProvider: MultiProvider;
|
|
16
|
+
protected readonly interchainAccountApp: InterchainAccount;
|
|
17
|
+
readonly txSubmitterType: TxSubmitterType;
|
|
18
|
+
protected constructor(config: EvmIcaTxSubmitterConstructorConfig, submitter: TxSubmitterInterface<ProtocolType.Ethereum>, multiProvider: MultiProvider, interchainAccountApp: InterchainAccount);
|
|
19
|
+
static fromConfig(config: EvmIcaTxSubmitterProps, multiProvider: MultiProvider, registry: Readonly<IRegistry>): Promise<EvmIcaTxSubmitter>;
|
|
20
|
+
submit(...txs: AnnotatedEV5Transaction[]): Promise<void | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'] | ProtocolTypedReceipt<ProtocolType.Ethereum>['receipt'][]>;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=IcaTxSubmitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IcaTxSubmitter.d.ts","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/IcaTxSubmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAU,MAAM,sBAAsB,CAAC;AAErE,OAAO,EACL,iBAAiB,EAElB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,kCAAkC,GAAG,IAAI,CAC5C,sBAAsB,EACtB,mBAAmB,GAAG,MAAM,CAC7B,GAAG;IACF,6BAA6B,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,qBAAa,iBACX,YAAW,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC;IAMpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,kCAAkC;IAC7D,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC;IACzE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,iBAAiB;IAP5D,QAAQ,CAAC,eAAe,EAAE,eAAe,CACJ;IAErC,SAAS,aACY,MAAM,EAAE,kCAAkC,EAC1C,SAAS,EAAE,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,EACtD,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,iBAAiB;WAG/C,UAAU,CACrB,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IA2CvB,MAAM,CACV,GAAG,GAAG,EAAE,uBAAuB,EAAE,GAChC,OAAO,CACN,IAAI,GACJ,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GACtD,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAC3D;CAsDF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { assert } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { buildInterchainAccountApp, } from '../../../middleware/account/InterchainAccount.js';
|
|
3
|
+
import { TxSubmitterType } from './TxSubmitterTypes.js';
|
|
4
|
+
import { getSubmitter } from './submitterBuilderGetter.js';
|
|
5
|
+
export class EvmIcaTxSubmitter {
|
|
6
|
+
config;
|
|
7
|
+
submitter;
|
|
8
|
+
multiProvider;
|
|
9
|
+
interchainAccountApp;
|
|
10
|
+
txSubmitterType = TxSubmitterType.INTERCHAIN_ACCOUNT;
|
|
11
|
+
constructor(config, submitter, multiProvider, interchainAccountApp) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.submitter = submitter;
|
|
14
|
+
this.multiProvider = multiProvider;
|
|
15
|
+
this.interchainAccountApp = interchainAccountApp;
|
|
16
|
+
}
|
|
17
|
+
static async fromConfig(config, multiProvider, registry) {
|
|
18
|
+
const chainAddresses = await registry.getChainAddresses(config.chain);
|
|
19
|
+
const interchainAccountRouterAddress = config.originInterchainAccountRouter ??
|
|
20
|
+
chainAddresses?.interchainAccountRouter;
|
|
21
|
+
assert(interchainAccountRouterAddress, `Origin chain InterchainAccountRouter address not supplied and none found in the registry metadata for chain ${config.chain}`);
|
|
22
|
+
const internalSubmitter = await getSubmitter(multiProvider, config.internalSubmitter, registry);
|
|
23
|
+
const interchainAccountApp = await buildInterchainAccountApp(multiProvider, config.chain, {
|
|
24
|
+
owner: config.owner,
|
|
25
|
+
origin: config.chain,
|
|
26
|
+
localRouter: interchainAccountRouterAddress,
|
|
27
|
+
ismOverride: config.interchainSecurityModule,
|
|
28
|
+
}, registry);
|
|
29
|
+
return new EvmIcaTxSubmitter({
|
|
30
|
+
owner: config.owner,
|
|
31
|
+
chain: config.chain,
|
|
32
|
+
destinationChain: config.destinationChain,
|
|
33
|
+
originInterchainAccountRouter: interchainAccountRouterAddress,
|
|
34
|
+
}, internalSubmitter, multiProvider, interchainAccountApp);
|
|
35
|
+
}
|
|
36
|
+
async submit(...txs) {
|
|
37
|
+
if (txs.length === 0) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
const transactionChains = new Set(txs.map((tx) => tx.chainId));
|
|
41
|
+
if (transactionChains.size !== 1) {
|
|
42
|
+
throw new Error('ICA transactions should have all the same destination chain');
|
|
43
|
+
}
|
|
44
|
+
const [domainId] = transactionChains.values();
|
|
45
|
+
if (!domainId) {
|
|
46
|
+
throw new Error('Destination domain for ICA transactions should be defined');
|
|
47
|
+
}
|
|
48
|
+
const chainName = this.multiProvider.getChainName(domainId);
|
|
49
|
+
if (chainName !== this.config.destinationChain) {
|
|
50
|
+
throw new Error(`Destination chain mismatch expected ${this.config.destinationChain} but received ${chainName}`);
|
|
51
|
+
}
|
|
52
|
+
const innerCalls = txs.map(({ to, data, chainId, value }) => {
|
|
53
|
+
assert(chainId, 'Invalid PopulatedTransaction: "chainId" is required');
|
|
54
|
+
assert(to, 'Invalid PopulatedTransaction: "to" is required');
|
|
55
|
+
assert(data, 'Invalid PopulatedTransaction: "data" is required');
|
|
56
|
+
return { data, to, value: value?.toString() };
|
|
57
|
+
});
|
|
58
|
+
const icaTx = await this.interchainAccountApp.getCallRemote({
|
|
59
|
+
chain: this.config.chain,
|
|
60
|
+
destination: this.config.destinationChain,
|
|
61
|
+
innerCalls,
|
|
62
|
+
config: {
|
|
63
|
+
origin: this.config.chain,
|
|
64
|
+
owner: this.config.owner,
|
|
65
|
+
ismOverride: this.config.interchainSecurityModule,
|
|
66
|
+
routerOverride: this.config.destinationInterchainAccountRouter,
|
|
67
|
+
localRouter: this.config.originInterchainAccountRouter,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
return this.submitter.submit({
|
|
71
|
+
chainId: this.multiProvider.getDomainId(this.config.chain),
|
|
72
|
+
...icaTx,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=IcaTxSubmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IcaTxSubmitter.js","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/IcaTxSubmitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export declare enum TxSubmitterType {
|
|
|
2
2
|
JSON_RPC = "jsonRpc",
|
|
3
3
|
IMPERSONATED_ACCOUNT = "impersonatedAccount",
|
|
4
4
|
GNOSIS_SAFE = "gnosisSafe",
|
|
5
|
-
GNOSIS_TX_BUILDER = "gnosisSafeTxBuilder"
|
|
5
|
+
GNOSIS_TX_BUILDER = "gnosisSafeTxBuilder",
|
|
6
|
+
INTERCHAIN_ACCOUNT = "interchainAccount"
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=TxSubmitterTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TxSubmitterTypes.d.ts","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/TxSubmitterTypes.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,YAAY;IACpB,oBAAoB,wBAAwB;IAC5C,WAAW,eAAe;IAC1B,iBAAiB,wBAAwB;
|
|
1
|
+
{"version":3,"file":"TxSubmitterTypes.d.ts","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/TxSubmitterTypes.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,YAAY;IACpB,oBAAoB,wBAAwB;IAC5C,WAAW,eAAe;IAC1B,iBAAiB,wBAAwB;IACzC,kBAAkB,sBAAsB;CACzC"}
|
|
@@ -4,5 +4,6 @@ export var TxSubmitterType;
|
|
|
4
4
|
TxSubmitterType["IMPERSONATED_ACCOUNT"] = "impersonatedAccount";
|
|
5
5
|
TxSubmitterType["GNOSIS_SAFE"] = "gnosisSafe";
|
|
6
6
|
TxSubmitterType["GNOSIS_TX_BUILDER"] = "gnosisSafeTxBuilder";
|
|
7
|
+
TxSubmitterType["INTERCHAIN_ACCOUNT"] = "interchainAccount";
|
|
7
8
|
})(TxSubmitterType || (TxSubmitterType = {}));
|
|
8
9
|
//# sourceMappingURL=TxSubmitterTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TxSubmitterTypes.js","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/TxSubmitterTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"TxSubmitterTypes.js","sourceRoot":"","sources":["../../../../src/providers/transactions/submitter/TxSubmitterTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,uCAAoB,CAAA;IACpB,+DAA4C,CAAA;IAC5C,6CAA0B,CAAA;IAC1B,4DAAyC,CAAA;IACzC,2DAAwC,CAAA;AAC1C,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Logger } from 'pino';
|
|
2
2
|
import { Annotated, ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
3
|
import { ProtocolTypedReceipt, ProtocolTypedTransaction } from '../../../ProviderType.js';
|
|
4
|
-
import { TxTransformerInterface } from '../../transformer/TxTransformerInterface.js';
|
|
5
4
|
import { TxSubmitterInterface } from '../TxSubmitterInterface.js';
|
|
6
5
|
import { TxSubmitterType } from '../TxSubmitterTypes.js';
|
|
7
6
|
/**
|
|
@@ -11,8 +10,6 @@ import { TxSubmitterType } from '../TxSubmitterTypes.js';
|
|
|
11
10
|
* const eV5builder = new TxSubmitterBuilder<EV5Transaction, EV5TransactionReceipt>();
|
|
12
11
|
* let txReceipts = eV5builder.for(
|
|
13
12
|
* new EV5GnosisSafeTxSubmitter(chainA)
|
|
14
|
-
* ).transform(
|
|
15
|
-
* EV5InterchainAccountTxTransformer(chainB)
|
|
16
13
|
* ).submit(
|
|
17
14
|
* txs
|
|
18
15
|
* );
|
|
@@ -25,20 +22,14 @@ import { TxSubmitterType } from '../TxSubmitterTypes.js';
|
|
|
25
22
|
*/
|
|
26
23
|
export declare class TxSubmitterBuilder<TProtocol extends ProtocolType> implements TxSubmitterInterface<TProtocol> {
|
|
27
24
|
private currentSubmitter;
|
|
28
|
-
private currentTransformers;
|
|
29
25
|
readonly txSubmitterType: TxSubmitterType;
|
|
30
26
|
protected readonly logger: Logger;
|
|
31
|
-
constructor(currentSubmitter: TxSubmitterInterface<TProtocol
|
|
27
|
+
constructor(currentSubmitter: TxSubmitterInterface<TProtocol>);
|
|
32
28
|
/**
|
|
33
29
|
* Sets the current submitter for the builder.
|
|
34
30
|
* @param txSubmitterOrType The submitter to add to the builder
|
|
35
31
|
*/
|
|
36
32
|
for(txSubmitter: TxSubmitterInterface<TProtocol>): TxSubmitterBuilder<TProtocol>;
|
|
37
|
-
/**
|
|
38
|
-
* Adds a transformer for the builder.
|
|
39
|
-
* @param txTransformerOrType The transformer to add to the builder
|
|
40
|
-
*/
|
|
41
|
-
transform(...txTransformers: TxTransformerInterface<TProtocol>[]): TxSubmitterBuilder<TProtocol>;
|
|
42
33
|
/**
|
|
43
34
|
* Submits a set of transactions to the builder.
|
|
44
35
|
* @param txs The transactions to submit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TxSubmitterBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/providers/transactions/submitter/builder/TxSubmitterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TxSubmitterBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/providers/transactions/submitter/builder/TxSubmitterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB,CAAC,SAAS,SAAS,YAAY,CAC5D,YAAW,oBAAoB,CAAC,SAAS,CAAC;IAQ9B,OAAO,CAAC,gBAAgB;IANpC,SAAgB,eAAe,EAAE,eAAe,CAAC;IAEjD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;gBAEiB,gBAAgB,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAIrE;;;OAGG;IACI,GAAG,CACR,WAAW,EAAE,oBAAoB,CAAC,SAAS,CAAC,GAC3C,kBAAkB,CAAC,SAAS,CAAC;IAKhC;;;OAGG;IACU,MAAM,CACjB,GAAG,GAAG,EAAE,SAAS,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,GACtE,OAAO,CACN,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAC1C,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,GAC5C,IAAI,CACP;CAYF"}
|
|
@@ -6,8 +6,6 @@ import { rootLogger } from '@hyperlane-xyz/utils';
|
|
|
6
6
|
* const eV5builder = new TxSubmitterBuilder<EV5Transaction, EV5TransactionReceipt>();
|
|
7
7
|
* let txReceipts = eV5builder.for(
|
|
8
8
|
* new EV5GnosisSafeTxSubmitter(chainA)
|
|
9
|
-
* ).transform(
|
|
10
|
-
* EV5InterchainAccountTxTransformer(chainB)
|
|
11
9
|
* ).submit(
|
|
12
10
|
* txs
|
|
13
11
|
* );
|
|
@@ -20,14 +18,12 @@ import { rootLogger } from '@hyperlane-xyz/utils';
|
|
|
20
18
|
*/
|
|
21
19
|
export class TxSubmitterBuilder {
|
|
22
20
|
currentSubmitter;
|
|
23
|
-
currentTransformers;
|
|
24
21
|
txSubmitterType;
|
|
25
22
|
logger = rootLogger.child({
|
|
26
23
|
module: 'submitter-builder',
|
|
27
24
|
});
|
|
28
|
-
constructor(currentSubmitter
|
|
25
|
+
constructor(currentSubmitter) {
|
|
29
26
|
this.currentSubmitter = currentSubmitter;
|
|
30
|
-
this.currentTransformers = currentTransformers;
|
|
31
27
|
this.txSubmitterType = this.currentSubmitter.txSubmitterType;
|
|
32
28
|
}
|
|
33
29
|
/**
|
|
@@ -38,27 +34,14 @@ export class TxSubmitterBuilder {
|
|
|
38
34
|
this.currentSubmitter = txSubmitter;
|
|
39
35
|
return this;
|
|
40
36
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Adds a transformer for the builder.
|
|
43
|
-
* @param txTransformerOrType The transformer to add to the builder
|
|
44
|
-
*/
|
|
45
|
-
transform(...txTransformers) {
|
|
46
|
-
this.currentTransformers = txTransformers;
|
|
47
|
-
return this;
|
|
48
|
-
}
|
|
49
37
|
/**
|
|
50
38
|
* Submits a set of transactions to the builder.
|
|
51
39
|
* @param txs The transactions to submit
|
|
52
40
|
*/
|
|
53
41
|
async submit(...txs) {
|
|
54
42
|
this.logger.debug(`Submitting ${txs.length} transactions to the ${this.currentSubmitter.txSubmitterType} submitter...`);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
transformedTxs = await currentTransformer.transform(...transformedTxs);
|
|
58
|
-
this.logger.debug(`🔄 Transformed ${transformedTxs.length} transactions with the ${currentTransformer.txTransformerType} transformer...`);
|
|
59
|
-
}
|
|
60
|
-
const txReceipts = await this.currentSubmitter.submit(...transformedTxs);
|
|
61
|
-
this.logger.debug(`✅ Successfully submitted ${transformedTxs.length} transactions to the ${this.currentSubmitter.txSubmitterType} submitter.`);
|
|
43
|
+
const txReceipts = await this.currentSubmitter.submit(...txs);
|
|
44
|
+
this.logger.debug(`✅ Successfully submitted ${txs.length} transactions to the ${this.currentSubmitter.txSubmitterType} submitter.`);
|
|
62
45
|
return txReceipts;
|
|
63
46
|
}
|
|
64
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TxSubmitterBuilder.js","sourceRoot":"","sources":["../../../../../src/providers/transactions/submitter/builder/TxSubmitterBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"TxSubmitterBuilder.js","sourceRoot":"","sources":["../../../../../src/providers/transactions/submitter/builder/TxSubmitterBuilder.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAS3E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAkB;IAST;IANJ,eAAe,CAAkB;IAE9B,MAAM,GAAW,UAAU,CAAC,KAAK,CAAC;QACnD,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;IAEH,YAAoB,gBAAiD;QAAjD,qBAAgB,GAAhB,gBAAgB,CAAiC;QACnE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,GAAG,CACR,WAA4C;QAE5C,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM,CACjB,GAAG,GAAoE;QAMvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,cAAc,GAAG,CAAC,MAAM,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,eAAe,eAAe,CACrG,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,GAAG,CAAC,MAAM,wBAAwB,IAAI,CAAC,gBAAgB,CAAC,eAAe,aAAa,CACjH,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|