@hyperlane-xyz/sdk 1.5.8 → 3.1.0-beta0
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/app/HyperlaneApp.d.ts +1 -1
- package/dist/app/HyperlaneApp.d.ts.map +1 -1
- package/dist/app/HyperlaneApp.js +1 -1
- package/dist/app/HyperlaneApp.js.map +1 -1
- package/dist/app/MultiProtocolApp.d.ts +5 -1
- package/dist/app/MultiProtocolApp.d.ts.map +1 -1
- package/dist/app/MultiProtocolApp.js +11 -1
- package/dist/app/MultiProtocolApp.js.map +1 -1
- package/dist/app/MultiProtocolApp.test.js +2 -0
- package/dist/app/MultiProtocolApp.test.js.map +1 -1
- package/dist/consts/chainMetadata.d.ts +5 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +137 -3
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +11 -6
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +15 -5
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +141 -168
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js +1 -2
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/testnet.json +181 -167
- package/dist/consts/multisigIsm.d.ts +2 -2
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +67 -48
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts +1 -1
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +8 -2
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +65 -13
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +6 -2
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +15 -3
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +2 -2
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts +7 -2
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +51 -29
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +3 -3
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/MultiProtocolCore.test.js +2 -2
- package/dist/core/MultiProtocolCore.test.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +0 -1
- package/dist/core/TestCoreApp.d.ts.map +1 -1
- package/dist/core/TestCoreDeployer.d.ts +1 -5
- package/dist/core/TestCoreDeployer.d.ts.map +1 -1
- package/dist/core/TestCoreDeployer.js +0 -20
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts +26 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.js +33 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -0
- package/dist/core/adapters/EvmCoreAdapter.d.ts +1 -1
- package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js +0 -1
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/core/adapters/types.d.ts +1 -1
- package/dist/core/adapters/types.d.ts.map +1 -1
- package/dist/core/contracts.d.ts +3 -9
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +0 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +8 -3
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/cw-types/Cw20Base.types.d.ts +198 -0
- package/dist/cw-types/Cw20Base.types.d.ts.map +1 -0
- package/dist/cw-types/Cw20Base.types.js +8 -0
- package/dist/cw-types/Cw20Base.types.js.map +1 -0
- package/dist/cw-types/Mailbox.types.d.ts +131 -0
- package/dist/cw-types/Mailbox.types.d.ts.map +1 -0
- package/dist/cw-types/Mailbox.types.js +8 -0
- package/dist/cw-types/Mailbox.types.js.map +1 -0
- package/dist/cw-types/WarpCw20.types.d.ts +192 -0
- package/dist/cw-types/WarpCw20.types.d.ts.map +1 -0
- package/dist/cw-types/WarpCw20.types.js +8 -0
- package/dist/cw-types/WarpCw20.types.js.map +1 -0
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +3 -5
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +14 -7
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +89 -70
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +10 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js +34 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -0
- package/dist/deploy/contracts.d.ts +13 -0
- package/dist/deploy/contracts.d.ts.map +1 -0
- package/dist/deploy/contracts.js +20 -0
- package/dist/deploy/contracts.js.map +1 -0
- package/dist/deploy/proxy.d.ts +1 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +8 -1
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +7 -2
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/gas/HyperlaneIgp.js +1 -1
- package/dist/gas/HyperlaneIgp.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +2 -2
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +5 -12
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts +4 -6
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +12 -43
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/contracts.d.ts +2 -4
- package/dist/gas/contracts.d.ts.map +1 -1
- package/dist/gas/contracts.js +1 -3
- package/dist/gas/contracts.js.map +1 -1
- package/dist/gas/types.d.ts +2 -6
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +28 -10
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +52 -70
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/contracts.d.ts +6 -17
- package/dist/hook/contracts.d.ts.map +1 -1
- package/dist/hook/contracts.js +6 -13
- package/dist/hook/contracts.js.map +1 -1
- package/dist/hook/types.d.ts +24 -13
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +8 -6
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -16
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +7 -5
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +3 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +62 -57
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/contracts.d.ts +4 -3
- package/dist/ism/contracts.d.ts.map +1 -1
- package/dist/ism/contracts.js +3 -2
- package/dist/ism/contracts.js.map +1 -1
- package/dist/ism/types.d.ts +12 -6
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +1 -0
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +3 -13
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +16 -27
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +782 -1545
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +62 -95
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.js +9 -9
- package/dist/metadata/agentConfig.test.js.map +1 -1
- package/dist/metadata/chainMetadata.test.js +16 -0
- package/dist/metadata/chainMetadata.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +570 -4
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +54 -8
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/deploymentArtifacts.d.ts +5 -2
- package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
- package/dist/metadata/deploymentArtifacts.js +1 -0
- package/dist/metadata/deploymentArtifacts.js.map +1 -1
- package/dist/metadata/matchingList.d.ts +13 -13
- package/dist/metadata/matchingList.d.ts.map +1 -1
- package/dist/metadata/matchingList.js +2 -6
- package/dist/metadata/matchingList.js.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -7
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +4 -9
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +8 -6
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -7
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +7 -11
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +7 -7
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -7
- package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.js +3 -4
- package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +8 -9
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.d.ts +4 -1
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +16 -20
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +7 -2
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +12 -1
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/ProviderType.d.ts +45 -8
- package/dist/providers/ProviderType.d.ts.map +1 -1
- package/dist/providers/ProviderType.js +2 -0
- package/dist/providers/ProviderType.js.map +1 -1
- package/dist/providers/providerBuilders.d.ts +3 -1
- package/dist/providers/providerBuilders.d.ts.map +1 -1
- package/dist/providers/providerBuilders.js +24 -1
- package/dist/providers/providerBuilders.js.map +1 -1
- package/dist/router/GasRouterDeployer.d.ts.map +1 -1
- package/dist/router/GasRouterDeployer.js +1 -1
- package/dist/router/GasRouterDeployer.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +6 -6
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.js +15 -18
- package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -1
- package/dist/router/MultiProtocolRouterApps.js +1 -0
- package/dist/router/MultiProtocolRouterApps.js.map +1 -1
- package/dist/router/ProxiedRouterChecker.js +1 -1
- package/dist/router/ProxiedRouterChecker.js.map +1 -1
- package/dist/router/types.d.ts +14 -12
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +7 -7
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts +1 -3
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +18 -45
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +107 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.js +273 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.test.d.ts +10 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.test.d.ts.map +1 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.test.js +74 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.test.js.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts +65 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.js +119 -0
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -0
- package/dist/token/adapters/ITokenAdapter.d.ts +30 -0
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/ITokenAdapter.js +3 -0
- package/dist/token/adapters/ITokenAdapter.js.map +1 -0
- package/dist/token/adapters/SealevelTokenAdapter.d.ts +117 -0
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/SealevelTokenAdapter.js +434 -0
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -0
- package/dist/token/adapters/serialization.d.ts +50 -0
- package/dist/token/adapters/serialization.d.ts.map +1 -0
- package/dist/token/adapters/serialization.js +117 -0
- package/dist/token/adapters/serialization.js.map +1 -0
- package/dist/token/config.d.ts +48 -0
- package/dist/token/config.d.ts.map +1 -0
- package/dist/token/config.js +34 -0
- package/dist/token/config.js.map +1 -0
- package/dist/token/contracts.d.ts +9 -0
- package/dist/token/contracts.d.ts.map +1 -0
- package/dist/token/contracts.js +3 -0
- package/dist/token/contracts.js.map +1 -0
- package/dist/token/deploy.d.ts +40 -0
- package/dist/token/deploy.d.ts.map +1 -0
- package/dist/token/deploy.js +262 -0
- package/dist/token/deploy.js.map +1 -0
- package/dist/utils/wagmi.d.ts +1 -1
- package/dist/utils/wagmi.d.ts.map +1 -1
- package/dist/utils/wagmi.js +2 -1
- package/dist/utils/wagmi.js.map +1 -1
- package/package.json +12 -7
- package/dist/consts/agentStartBlocks.d.ts +0 -3
- package/dist/consts/agentStartBlocks.d.ts.map +0 -1
- package/dist/consts/agentStartBlocks.js +0 -28
- package/dist/consts/agentStartBlocks.js.map +0 -1
- package/dist/consts/environments/test.json +0 -41
- package/dist/hook/config.d.ts +0 -4
- package/dist/hook/config.d.ts.map +0 -1
- package/dist/hook/config.js +0 -9
- package/dist/hook/config.js.map +0 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts +0 -11
- package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts.map +0 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.js +0 -39
- package/dist/ism/HyperlaneIsmFactoryDeployer.js.map +0 -1
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CwHypCollateralAdapter = exports.CwHypNativeAdapter = exports.CwHypSyntheticAdapter = exports.CwTokenAdapter = exports.CwNativeTokenAdapter = void 0;
|
|
4
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
5
|
+
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
6
|
+
// Interacts with IBC denom tokens
|
|
7
|
+
class CwNativeTokenAdapter extends MultiProtocolApp_1.BaseCosmWasmAdapter {
|
|
8
|
+
constructor(chainName, multiProvider, addresses, ibcDenom = 'untrn') {
|
|
9
|
+
super(chainName, multiProvider, addresses);
|
|
10
|
+
this.chainName = chainName;
|
|
11
|
+
this.multiProvider = multiProvider;
|
|
12
|
+
this.addresses = addresses;
|
|
13
|
+
this.ibcDenom = ibcDenom;
|
|
14
|
+
}
|
|
15
|
+
async getBalance(address) {
|
|
16
|
+
const provider = await this.getProvider();
|
|
17
|
+
const balance = await provider.getBalance(address, this.ibcDenom);
|
|
18
|
+
return balance.amount;
|
|
19
|
+
}
|
|
20
|
+
async getMetadata() {
|
|
21
|
+
throw new Error('Metadata not available to native tokens');
|
|
22
|
+
}
|
|
23
|
+
async populateApproveTx(_params) {
|
|
24
|
+
throw new Error('Approve not required for native tokens');
|
|
25
|
+
}
|
|
26
|
+
async populateTransferTx({ recipient, weiAmountOrId, }) {
|
|
27
|
+
// TODO: check if this works with execute instruction? (contract type, empty message)
|
|
28
|
+
return {
|
|
29
|
+
contractAddress: recipient,
|
|
30
|
+
msg: {},
|
|
31
|
+
funds: [
|
|
32
|
+
{
|
|
33
|
+
amount: weiAmountOrId.toString(),
|
|
34
|
+
denom: this.ibcDenom,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.CwNativeTokenAdapter = CwNativeTokenAdapter;
|
|
41
|
+
// Interacts with CW20/721 contracts
|
|
42
|
+
class CwTokenAdapter extends MultiProtocolApp_1.BaseCosmWasmAdapter {
|
|
43
|
+
constructor(chainName, multiProvider, addresses, denom = 'untrn') {
|
|
44
|
+
super(chainName, multiProvider, addresses);
|
|
45
|
+
this.chainName = chainName;
|
|
46
|
+
this.multiProvider = multiProvider;
|
|
47
|
+
this.addresses = addresses;
|
|
48
|
+
this.denom = denom;
|
|
49
|
+
}
|
|
50
|
+
async queryToken(msg) {
|
|
51
|
+
const provider = await this.getProvider();
|
|
52
|
+
const response = await provider.queryContractSmart(this.addresses.token, msg);
|
|
53
|
+
return response;
|
|
54
|
+
}
|
|
55
|
+
prepareToken(msg, funds) {
|
|
56
|
+
return {
|
|
57
|
+
contractAddress: this.addresses.token,
|
|
58
|
+
msg,
|
|
59
|
+
funds,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async getBalance(address) {
|
|
63
|
+
const resp = await this.queryToken({
|
|
64
|
+
balance: {
|
|
65
|
+
address,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return resp.balance;
|
|
69
|
+
}
|
|
70
|
+
async getMetadata() {
|
|
71
|
+
const resp = await this.queryToken({
|
|
72
|
+
token_info: {},
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
...resp,
|
|
76
|
+
totalSupply: resp.total_supply,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async populateApproveTx({ weiAmountOrId, recipient, }) {
|
|
80
|
+
// TODO: check existing allowance
|
|
81
|
+
return this.prepareToken({
|
|
82
|
+
increase_allowance: {
|
|
83
|
+
spender: recipient,
|
|
84
|
+
amount: weiAmountOrId.toString(),
|
|
85
|
+
expires: {
|
|
86
|
+
never: {},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async populateTransferTx({ weiAmountOrId, recipient, }) {
|
|
92
|
+
return this.prepareToken({
|
|
93
|
+
transfer: {
|
|
94
|
+
recipient,
|
|
95
|
+
amount: weiAmountOrId.toString(),
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.CwTokenAdapter = CwTokenAdapter;
|
|
101
|
+
class CwHypSyntheticAdapter extends CwTokenAdapter {
|
|
102
|
+
constructor(chainName, multiProvider, addresses, gasDenom = 'untrn') {
|
|
103
|
+
super(chainName, multiProvider, addresses);
|
|
104
|
+
this.chainName = chainName;
|
|
105
|
+
this.multiProvider = multiProvider;
|
|
106
|
+
this.addresses = addresses;
|
|
107
|
+
this.gasDenom = gasDenom;
|
|
108
|
+
}
|
|
109
|
+
async queryRouter(msg) {
|
|
110
|
+
const provider = await this.getProvider();
|
|
111
|
+
const response = await provider.queryContractSmart(this.addresses.warpRouter, msg);
|
|
112
|
+
return response;
|
|
113
|
+
}
|
|
114
|
+
prepareRouter(msg, funds) {
|
|
115
|
+
return {
|
|
116
|
+
contractAddress: this.addresses.warpRouter,
|
|
117
|
+
msg,
|
|
118
|
+
funds,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async tokenType() {
|
|
122
|
+
const resp = await this.queryRouter({
|
|
123
|
+
token_default: {
|
|
124
|
+
token_type: {},
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
return resp.type;
|
|
128
|
+
}
|
|
129
|
+
async interchainSecurityModule() {
|
|
130
|
+
throw new Error('Router does not support ISM config yet.');
|
|
131
|
+
}
|
|
132
|
+
async owner() {
|
|
133
|
+
const resp = await this.queryRouter({
|
|
134
|
+
ownable: {
|
|
135
|
+
get_owner: {},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
return resp.owner;
|
|
139
|
+
}
|
|
140
|
+
async getDomains() {
|
|
141
|
+
const resp = await this.queryRouter({
|
|
142
|
+
router: {
|
|
143
|
+
domains: {},
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
return resp.domains;
|
|
147
|
+
}
|
|
148
|
+
async getRouterAddress(domain) {
|
|
149
|
+
const resp = await this.queryRouter({
|
|
150
|
+
router: {
|
|
151
|
+
get_route: {
|
|
152
|
+
domain,
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
const route = resp.route.route;
|
|
157
|
+
if (!route) {
|
|
158
|
+
throw new Error(`No route found for domain ${domain}`);
|
|
159
|
+
}
|
|
160
|
+
return Buffer.from(route, 'hex');
|
|
161
|
+
}
|
|
162
|
+
async getAllRouters() {
|
|
163
|
+
const resp = await this.queryRouter({
|
|
164
|
+
router: {
|
|
165
|
+
list_routes: {},
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
return resp.routes
|
|
169
|
+
.filter((r) => r.route != null)
|
|
170
|
+
.map((r) => ({
|
|
171
|
+
domain: r.domain,
|
|
172
|
+
address: Buffer.from(r.route, 'hex'),
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
quoteGasPayment(_destination) {
|
|
176
|
+
throw new Error('Method not implemented.');
|
|
177
|
+
}
|
|
178
|
+
populateTransferRemoteTx({ destination, recipient, weiAmountOrId, txValue, }) {
|
|
179
|
+
if (!txValue) {
|
|
180
|
+
throw new Error('txValue is required for native tokens');
|
|
181
|
+
}
|
|
182
|
+
return this.prepareRouter({
|
|
183
|
+
transfer_remote: {
|
|
184
|
+
dest_domain: destination,
|
|
185
|
+
recipient: (0, utils_1.strip0x)((0, utils_1.addressToBytes32)(recipient)),
|
|
186
|
+
amount: weiAmountOrId.toString(),
|
|
187
|
+
},
|
|
188
|
+
}, [
|
|
189
|
+
{
|
|
190
|
+
amount: txValue.toString(),
|
|
191
|
+
denom: this.gasDenom,
|
|
192
|
+
},
|
|
193
|
+
]);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
exports.CwHypSyntheticAdapter = CwHypSyntheticAdapter;
|
|
197
|
+
class CwHypNativeAdapter extends CwNativeTokenAdapter {
|
|
198
|
+
constructor(chainName, multiProvider, addresses, gasDenom = 'untrn') {
|
|
199
|
+
super(chainName, multiProvider, addresses, gasDenom);
|
|
200
|
+
this.chainName = chainName;
|
|
201
|
+
this.multiProvider = multiProvider;
|
|
202
|
+
this.addresses = addresses;
|
|
203
|
+
this.gasDenom = gasDenom;
|
|
204
|
+
this.cw20adapter = new CwHypSyntheticAdapter(chainName, multiProvider, { token: '', warpRouter: addresses.warpRouter }, gasDenom);
|
|
205
|
+
}
|
|
206
|
+
async getBalance(address) {
|
|
207
|
+
const provider = await this.getProvider();
|
|
208
|
+
const denom = await this.denom();
|
|
209
|
+
const balance = await provider.getBalance(address, denom);
|
|
210
|
+
return balance.amount;
|
|
211
|
+
}
|
|
212
|
+
async interchainSecurityModule() {
|
|
213
|
+
return this.cw20adapter.interchainSecurityModule();
|
|
214
|
+
}
|
|
215
|
+
async owner() {
|
|
216
|
+
return this.cw20adapter.owner();
|
|
217
|
+
}
|
|
218
|
+
async getDomains() {
|
|
219
|
+
return this.cw20adapter.getDomains();
|
|
220
|
+
}
|
|
221
|
+
async getRouterAddress(domain) {
|
|
222
|
+
return this.cw20adapter.getRouterAddress(domain);
|
|
223
|
+
}
|
|
224
|
+
async getAllRouters() {
|
|
225
|
+
return this.cw20adapter.getAllRouters();
|
|
226
|
+
}
|
|
227
|
+
quoteGasPayment(destination) {
|
|
228
|
+
return this.cw20adapter.quoteGasPayment(destination);
|
|
229
|
+
}
|
|
230
|
+
async denom() {
|
|
231
|
+
const tokenType = await this.cw20adapter.tokenType();
|
|
232
|
+
if ('native' in tokenType) {
|
|
233
|
+
if ('fungible' in tokenType.native) {
|
|
234
|
+
return tokenType.native.fungible.denom;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
throw new Error(`Token type not supported: ${tokenType}`);
|
|
238
|
+
}
|
|
239
|
+
async populateTransferRemoteTx({ destination, recipient, weiAmountOrId, txValue, }) {
|
|
240
|
+
if (!txValue) {
|
|
241
|
+
throw new Error('txValue is required for native tokens');
|
|
242
|
+
}
|
|
243
|
+
const collateralDenom = await this.denom();
|
|
244
|
+
return this.cw20adapter.prepareRouter({
|
|
245
|
+
transfer_remote: {
|
|
246
|
+
dest_domain: destination,
|
|
247
|
+
recipient: (0, utils_1.strip0x)((0, utils_1.addressToBytes32)(recipient)),
|
|
248
|
+
amount: weiAmountOrId.toString(),
|
|
249
|
+
},
|
|
250
|
+
}, [
|
|
251
|
+
{
|
|
252
|
+
amount: weiAmountOrId.toString(),
|
|
253
|
+
denom: collateralDenom,
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
amount: txValue.toString(),
|
|
257
|
+
denom: this.gasDenom,
|
|
258
|
+
},
|
|
259
|
+
]);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.CwHypNativeAdapter = CwHypNativeAdapter;
|
|
263
|
+
class CwHypCollateralAdapter extends CwHypNativeAdapter {
|
|
264
|
+
constructor(chainName, multiProvider, addresses, gasDenom = 'untrn') {
|
|
265
|
+
super(chainName, multiProvider, addresses, gasDenom);
|
|
266
|
+
this.chainName = chainName;
|
|
267
|
+
this.multiProvider = multiProvider;
|
|
268
|
+
this.addresses = addresses;
|
|
269
|
+
this.gasDenom = gasDenom;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
exports.CwHypCollateralAdapter = CwHypCollateralAdapter;
|
|
273
|
+
//# sourceMappingURL=CosmWasmTokenAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CosmWasmTokenAdapter.js","sourceRoot":"","sources":["../../../src/token/adapters/CosmWasmTokenAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate';
|
|
2
|
+
import { SigningStargateClient } from '@cosmjs/stargate';
|
|
3
|
+
export declare function getSigningClient(): Promise<{
|
|
4
|
+
wasm: SigningCosmWasmClient;
|
|
5
|
+
stargate: SigningStargateClient;
|
|
6
|
+
signer: string;
|
|
7
|
+
signer_addr: string;
|
|
8
|
+
signer_pubkey: string;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=CosmWasmTokenAdapter.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CosmWasmTokenAdapter.test.d.ts","sourceRoot":"","sources":["../../../src/token/adapters/CosmWasmTokenAdapter.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAY,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AA8BnE,wBAAsB,gBAAgB;;;;;;GAuCrC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getSigningClient = void 0;
|
|
5
|
+
/* eslint-disable no-console */
|
|
6
|
+
const cosmwasm_stargate_1 = require("@cosmjs/cosmwasm-stargate");
|
|
7
|
+
const crypto_1 = require("@cosmjs/crypto");
|
|
8
|
+
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
9
|
+
const stargate_1 = require("@cosmjs/stargate");
|
|
10
|
+
const tendermint_rpc_1 = require("@cosmjs/tendermint-rpc");
|
|
11
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
12
|
+
const MultiProtocolProvider_1 = require("../../providers/MultiProtocolProvider");
|
|
13
|
+
const CosmWasmTokenAdapter_1 = require("./CosmWasmTokenAdapter");
|
|
14
|
+
const router = 'dual1nzkcccxw00u9egqfuuq2ue23hjj6kxmfvmc5y0r7wchk5e6nypns6768kk';
|
|
15
|
+
const dualitydevnet = {
|
|
16
|
+
name: 'dualitydevnet',
|
|
17
|
+
chainId: 'duality-devnet',
|
|
18
|
+
domainId: 33333,
|
|
19
|
+
protocol: utils_1.ProtocolType.Cosmos,
|
|
20
|
+
bech32Prefix: 'dual',
|
|
21
|
+
slip44: 118,
|
|
22
|
+
rpcUrls: [
|
|
23
|
+
{
|
|
24
|
+
http: 'http://54.149.31.83:26657',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
isTestnet: true,
|
|
28
|
+
};
|
|
29
|
+
const signer = '<PRIVATE_KEY>';
|
|
30
|
+
async function getSigningClient() {
|
|
31
|
+
const wallet = await proto_signing_1.DirectSecp256k1Wallet.fromKey(Buffer.from(signer, 'hex'), dualitydevnet.bech32Prefix);
|
|
32
|
+
const [account] = await wallet.getAccounts();
|
|
33
|
+
const clientBase = await tendermint_rpc_1.Tendermint37Client.connect(dualitydevnet.rpcUrls[0].http);
|
|
34
|
+
const gasPrice = stargate_1.GasPrice.fromString('0.025token');
|
|
35
|
+
const wasm = await cosmwasm_stargate_1.SigningCosmWasmClient.createWithSigner(clientBase, wallet, {
|
|
36
|
+
gasPrice,
|
|
37
|
+
});
|
|
38
|
+
const stargate = await stargate_1.SigningStargateClient.createWithSigner(clientBase, wallet, {
|
|
39
|
+
gasPrice,
|
|
40
|
+
});
|
|
41
|
+
const pubkey = crypto_1.Secp256k1.uncompressPubkey(account.pubkey);
|
|
42
|
+
const ethaddr = (0, crypto_1.keccak256)(pubkey.slice(1)).slice(-20);
|
|
43
|
+
return {
|
|
44
|
+
wasm,
|
|
45
|
+
stargate,
|
|
46
|
+
signer: account.address,
|
|
47
|
+
signer_addr: Buffer.from(ethaddr).toString('hex'),
|
|
48
|
+
signer_pubkey: Buffer.from(account.pubkey).toString('hex'),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
exports.getSigningClient = getSigningClient;
|
|
52
|
+
async function main() {
|
|
53
|
+
const multiProtocolProvider = new MultiProtocolProvider_1.MultiProtocolProvider({
|
|
54
|
+
dualitydevnet,
|
|
55
|
+
});
|
|
56
|
+
const gasDenom = 'token';
|
|
57
|
+
const adapter = new CosmWasmTokenAdapter_1.CwHypNativeAdapter(dualitydevnet.name, multiProtocolProvider, { warpRouter: router }, gasDenom);
|
|
58
|
+
const owner = await adapter.owner();
|
|
59
|
+
const routers = await adapter.getAllRouters();
|
|
60
|
+
const domains = await adapter.getDomains();
|
|
61
|
+
const balance = await adapter.getBalance(owner);
|
|
62
|
+
console.log({ owner, routers, domains, balance });
|
|
63
|
+
const msg = await adapter.populateTransferRemoteTx({
|
|
64
|
+
destination: domains[0],
|
|
65
|
+
recipient: '0xE000fA4E466831dB288290Dd97e66560fb3d7d28',
|
|
66
|
+
weiAmountOrId: 10,
|
|
67
|
+
txValue: '2500000',
|
|
68
|
+
});
|
|
69
|
+
const client = await getSigningClient();
|
|
70
|
+
const tx = await client.wasm.executeMultiple(client.signer, [msg], 'auto');
|
|
71
|
+
console.log({ tx });
|
|
72
|
+
}
|
|
73
|
+
main().catch(console.error);
|
|
74
|
+
//# sourceMappingURL=CosmWasmTokenAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CosmWasmTokenAdapter.test.js","sourceRoot":"","sources":["../../../src/token/adapters/CosmWasmTokenAdapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { PopulatedTransaction } from 'ethers';
|
|
3
|
+
import { ERC20, HypERC20 } from '@hyperlane-xyz/core';
|
|
4
|
+
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { BaseEvmAdapter } from '../../app/MultiProtocolApp';
|
|
6
|
+
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider';
|
|
7
|
+
import { ChainName } from '../../types';
|
|
8
|
+
import { MinimalTokenMetadata } from '../config';
|
|
9
|
+
import { IHypTokenAdapter, ITokenAdapter, TransferParams, TransferRemoteParams } from './ITokenAdapter';
|
|
10
|
+
export declare class EvmNativeTokenAdapter extends BaseEvmAdapter implements ITokenAdapter {
|
|
11
|
+
getBalance(address: Address): Promise<string>;
|
|
12
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
13
|
+
populateApproveTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
14
|
+
populateTransferTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
15
|
+
}
|
|
16
|
+
export declare class EvmTokenAdapter<T extends ERC20 = ERC20> extends EvmNativeTokenAdapter implements ITokenAdapter {
|
|
17
|
+
readonly chainName: ChainName;
|
|
18
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
19
|
+
readonly addresses: {
|
|
20
|
+
token: Address;
|
|
21
|
+
};
|
|
22
|
+
readonly contractFactory: any;
|
|
23
|
+
readonly contract: T;
|
|
24
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
25
|
+
token: Address;
|
|
26
|
+
}, contractFactory?: any);
|
|
27
|
+
getBalance(address: Address): Promise<string>;
|
|
28
|
+
getMetadata(isNft?: boolean): Promise<MinimalTokenMetadata>;
|
|
29
|
+
populateApproveTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
30
|
+
populateTransferTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
31
|
+
}
|
|
32
|
+
export declare class EvmHypSyntheticAdapter<T extends HypERC20 = HypERC20> extends EvmTokenAdapter<T> implements IHypTokenAdapter {
|
|
33
|
+
readonly chainName: ChainName;
|
|
34
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
35
|
+
readonly addresses: {
|
|
36
|
+
token: Address;
|
|
37
|
+
};
|
|
38
|
+
readonly contractFactory: any;
|
|
39
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
40
|
+
token: Address;
|
|
41
|
+
}, contractFactory?: any);
|
|
42
|
+
getDomains(): Promise<Domain[]>;
|
|
43
|
+
getRouterAddress(domain: Domain): Promise<Buffer>;
|
|
44
|
+
getAllRouters(): Promise<Array<{
|
|
45
|
+
domain: Domain;
|
|
46
|
+
address: Buffer;
|
|
47
|
+
}>>;
|
|
48
|
+
quoteGasPayment(destination: Domain): Promise<string>;
|
|
49
|
+
populateTransferRemoteTx({ weiAmountOrId, destination, recipient, txValue, }: TransferRemoteParams): Promise<PopulatedTransaction>;
|
|
50
|
+
}
|
|
51
|
+
export declare class EvmHypCollateralAdapter extends EvmHypSyntheticAdapter implements IHypTokenAdapter {
|
|
52
|
+
readonly chainName: ChainName;
|
|
53
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
54
|
+
readonly addresses: {
|
|
55
|
+
token: Address;
|
|
56
|
+
};
|
|
57
|
+
readonly contractFactory: any;
|
|
58
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
59
|
+
token: Address;
|
|
60
|
+
}, contractFactory?: any);
|
|
61
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
62
|
+
populateApproveTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
63
|
+
populateTransferTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=EvmTokenAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmTokenAdapter.d.ts","sourceRoot":"","sources":["../../../src/token/adapters/EvmTokenAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvmHypCollateralAdapter = exports.EvmHypSyntheticAdapter = exports.EvmTokenAdapter = exports.EvmNativeTokenAdapter = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
6
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
7
|
+
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
8
|
+
// Interacts with native currencies
|
|
9
|
+
class EvmNativeTokenAdapter extends MultiProtocolApp_1.BaseEvmAdapter {
|
|
10
|
+
async getBalance(address) {
|
|
11
|
+
const balance = await this.getProvider().getBalance(address);
|
|
12
|
+
return balance.toString();
|
|
13
|
+
}
|
|
14
|
+
async getMetadata() {
|
|
15
|
+
// TODO get metadata from chainMetadata config
|
|
16
|
+
throw new Error('Metadata not available to native tokens');
|
|
17
|
+
}
|
|
18
|
+
async populateApproveTx(_params) {
|
|
19
|
+
throw new Error('Approve not required for native tokens');
|
|
20
|
+
}
|
|
21
|
+
async populateTransferTx({ weiAmountOrId, recipient, }) {
|
|
22
|
+
const value = ethers_1.BigNumber.from(weiAmountOrId);
|
|
23
|
+
return { value, to: recipient };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.EvmNativeTokenAdapter = EvmNativeTokenAdapter;
|
|
27
|
+
// Interacts with ERC20/721 contracts
|
|
28
|
+
class EvmTokenAdapter extends EvmNativeTokenAdapter {
|
|
29
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.ERC20__factory) {
|
|
30
|
+
super(chainName, multiProvider, addresses);
|
|
31
|
+
this.chainName = chainName;
|
|
32
|
+
this.multiProvider = multiProvider;
|
|
33
|
+
this.addresses = addresses;
|
|
34
|
+
this.contractFactory = contractFactory;
|
|
35
|
+
this.contract = contractFactory.connect(addresses.token, this.getProvider());
|
|
36
|
+
}
|
|
37
|
+
async getBalance(address) {
|
|
38
|
+
const balance = await this.contract.balanceOf(address);
|
|
39
|
+
return balance.toString();
|
|
40
|
+
}
|
|
41
|
+
async getMetadata(isNft) {
|
|
42
|
+
const [decimals, symbol, name] = await Promise.all([
|
|
43
|
+
isNft ? 0 : this.contract.decimals(),
|
|
44
|
+
this.contract.symbol(),
|
|
45
|
+
this.contract.name(),
|
|
46
|
+
]);
|
|
47
|
+
return { decimals, symbol, name };
|
|
48
|
+
}
|
|
49
|
+
populateApproveTx({ weiAmountOrId, recipient, }) {
|
|
50
|
+
return this.contract.populateTransaction.approve(recipient, weiAmountOrId);
|
|
51
|
+
}
|
|
52
|
+
populateTransferTx({ weiAmountOrId, recipient, }) {
|
|
53
|
+
return this.contract.populateTransaction.transfer(recipient, weiAmountOrId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.EvmTokenAdapter = EvmTokenAdapter;
|
|
57
|
+
// Interacts with Hyp Synthetic token contracts (aka 'HypTokens')
|
|
58
|
+
class EvmHypSyntheticAdapter extends EvmTokenAdapter {
|
|
59
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.HypERC20__factory) {
|
|
60
|
+
super(chainName, multiProvider, addresses, contractFactory);
|
|
61
|
+
this.chainName = chainName;
|
|
62
|
+
this.multiProvider = multiProvider;
|
|
63
|
+
this.addresses = addresses;
|
|
64
|
+
this.contractFactory = contractFactory;
|
|
65
|
+
}
|
|
66
|
+
getDomains() {
|
|
67
|
+
return this.contract.domains();
|
|
68
|
+
}
|
|
69
|
+
async getRouterAddress(domain) {
|
|
70
|
+
const routerAddressesAsBytes32 = await this.contract.routers(domain);
|
|
71
|
+
// Evm addresses will be padded with 12 bytes
|
|
72
|
+
if (routerAddressesAsBytes32.startsWith('0x000000000000000000000000')) {
|
|
73
|
+
return Buffer.from((0, utils_1.strip0x)((0, utils_1.bytes32ToAddress)(routerAddressesAsBytes32)), 'hex');
|
|
74
|
+
// Otherwise leave the address unchanged
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return Buffer.from((0, utils_1.strip0x)(routerAddressesAsBytes32), 'hex');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async getAllRouters() {
|
|
81
|
+
const domains = await this.getDomains();
|
|
82
|
+
const routers = await Promise.all(domains.map((d) => this.getRouterAddress(d)));
|
|
83
|
+
return domains.map((d, i) => ({ domain: d, address: routers[i] }));
|
|
84
|
+
}
|
|
85
|
+
async quoteGasPayment(destination) {
|
|
86
|
+
const gasPayment = await this.contract.quoteGasPayment(destination);
|
|
87
|
+
return gasPayment.toString();
|
|
88
|
+
}
|
|
89
|
+
populateTransferRemoteTx({ weiAmountOrId, destination, recipient, txValue, }) {
|
|
90
|
+
const recipBytes32 = (0, utils_1.addressToBytes32)((0, utils_1.addressToByteHexString)(recipient));
|
|
91
|
+
return this.contract.populateTransaction.transferRemote(destination, recipBytes32, weiAmountOrId, {
|
|
92
|
+
// Note, typically the value is the gas payment as quoted by IGP
|
|
93
|
+
value: txValue,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.EvmHypSyntheticAdapter = EvmHypSyntheticAdapter;
|
|
98
|
+
// Interacts with HypCollateral and HypNative contracts
|
|
99
|
+
class EvmHypCollateralAdapter extends EvmHypSyntheticAdapter {
|
|
100
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.HypERC20Collateral__factory) {
|
|
101
|
+
super(chainName, multiProvider, addresses, contractFactory);
|
|
102
|
+
this.chainName = chainName;
|
|
103
|
+
this.multiProvider = multiProvider;
|
|
104
|
+
this.addresses = addresses;
|
|
105
|
+
this.contractFactory = contractFactory;
|
|
106
|
+
}
|
|
107
|
+
getMetadata() {
|
|
108
|
+
// TODO pass through metadata from wrapped token or chainMetadata config
|
|
109
|
+
throw new Error('Metadata not available for HypCollateral/HypNative contract.');
|
|
110
|
+
}
|
|
111
|
+
populateApproveTx(_params) {
|
|
112
|
+
throw new Error('Approve not applicable to HypCollateral/HypNative contract.');
|
|
113
|
+
}
|
|
114
|
+
populateTransferTx(_params) {
|
|
115
|
+
throw new Error('Local transfer not supported for HypCollateral/HypNative contract.');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.EvmHypCollateralAdapter = EvmHypCollateralAdapter;
|
|
119
|
+
//# sourceMappingURL=EvmTokenAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmTokenAdapter.js","sourceRoot":"","sources":["../../../src/token/adapters/EvmTokenAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { MinimalTokenMetadata } from '../config';
|
|
4
|
+
export interface TransferParams {
|
|
5
|
+
weiAmountOrId: string | number;
|
|
6
|
+
recipient: Address;
|
|
7
|
+
fromTokenAccount?: Address;
|
|
8
|
+
fromAccountOwner?: Address;
|
|
9
|
+
}
|
|
10
|
+
export interface TransferRemoteParams extends TransferParams {
|
|
11
|
+
destination: Domain;
|
|
12
|
+
txValue?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ITokenAdapter {
|
|
15
|
+
getBalance(address: Address): Promise<string>;
|
|
16
|
+
getMetadata(isNft?: boolean): Promise<MinimalTokenMetadata>;
|
|
17
|
+
populateApproveTx(TransferParams: TransferParams): unknown | Promise<unknown>;
|
|
18
|
+
populateTransferTx(TransferParams: TransferParams): unknown | Promise<unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface IHypTokenAdapter extends ITokenAdapter {
|
|
21
|
+
getDomains(): Promise<Domain[]>;
|
|
22
|
+
getRouterAddress(domain: Domain): Promise<Buffer>;
|
|
23
|
+
getAllRouters(): Promise<Array<{
|
|
24
|
+
domain: Domain;
|
|
25
|
+
address: Buffer;
|
|
26
|
+
}>>;
|
|
27
|
+
quoteGasPayment(destination: Domain): Promise<string>;
|
|
28
|
+
populateTransferRemoteTx(TransferParams: TransferRemoteParams): unknown | Promise<unknown>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ITokenAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITokenAdapter.d.ts","sourceRoot":"","sources":["../../../src/token/adapters/ITokenAdapter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IAInB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,kBAAkB,CAChB,cAAc,EAAE,cAAc,GAC7B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACrE,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,wBAAwB,CACtB,cAAc,EAAE,oBAAoB,GACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITokenAdapter.js","sourceRoot":"","sources":["../../../src/token/adapters/ITokenAdapter.ts"],"names":[],"mappings":""}
|