@hyperlane-xyz/sdk 1.5.3 → 1.5.5-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/consts/chainMetadata.d.ts +5 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +133 -5
- 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 -7
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +387 -61
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js +7 -3
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +0 -17
- package/dist/consts/environments/testnet-sealevel.json +19 -0
- 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 +61 -58
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts +2 -7
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +7 -31
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +4 -4
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +5 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +13 -0
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +3 -3
- 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 +47 -27
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +1 -0
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +0 -1
- package/dist/core/TestCoreApp.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 +3 -2
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +4 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +0 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +5 -30
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +7 -5
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +28 -25
- 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 +30 -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/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 +10 -27
- 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 +51 -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 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -21
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +5 -4
- 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 +18 -59
- 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 +6 -4
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +0 -10
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +2 -14
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +523 -1348
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +61 -94
- 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/chainMetadataTypes.d.ts +1 -1
- package/dist/metadata/chainMetadataTypes.js +4 -4
- 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 +1 -1
- package/dist/metadata/matchingList.d.ts.map +1 -1
- package/dist/metadata/matchingList.js +1 -1
- package/dist/metadata/matchingList.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +1 -4
- package/dist/middleware/account/InterchainAccount.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 +3 -5
- 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 +3 -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 +4 -9
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +6 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +11 -0
- package/dist/providers/MultiProvider.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 +2 -6
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +12 -47
- 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/ProxiedRouterChecker.js +1 -1
- package/dist/router/ProxiedRouterChecker.js.map +1 -1
- package/dist/router/RouterApps.d.ts +1 -7
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +0 -17
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/types.d.ts +14 -23
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +7 -11
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts +0 -2
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +15 -20
- package/dist/test/testUtils.js.map +1 -1
- 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 +423 -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 +45 -0
- package/dist/token/config.d.ts.map +1 -0
- package/dist/token/config.js +26 -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 +243 -0
- package/dist/token/deploy.js.map +1 -0
- package/package.json +9 -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,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":""}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AccountMeta, PublicKey, Transaction } from '@solana/web3.js';
|
|
3
|
+
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
4
|
+
import { BaseSealevelAdapter } from '../../app/MultiProtocolApp';
|
|
5
|
+
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider';
|
|
6
|
+
import { ChainName } from '../../types';
|
|
7
|
+
import { MinimalTokenMetadata } from '../config';
|
|
8
|
+
import { IHypTokenAdapter, ITokenAdapter, TransferParams, TransferRemoteParams } from './ITokenAdapter';
|
|
9
|
+
import { SealevelHyperlaneTokenData } from './serialization';
|
|
10
|
+
export declare class SealevelNativeTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter {
|
|
11
|
+
getBalance(address: Address): Promise<string>;
|
|
12
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
13
|
+
populateApproveTx(_params: TransferParams): Transaction;
|
|
14
|
+
populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, }: TransferParams): Transaction;
|
|
15
|
+
}
|
|
16
|
+
export declare class SealevelTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter {
|
|
17
|
+
readonly chainName: ChainName;
|
|
18
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
19
|
+
readonly addresses: {
|
|
20
|
+
token: Address;
|
|
21
|
+
};
|
|
22
|
+
readonly isSpl2022: boolean;
|
|
23
|
+
readonly tokenProgramPubKey: PublicKey;
|
|
24
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
25
|
+
token: Address;
|
|
26
|
+
}, isSpl2022?: boolean);
|
|
27
|
+
getBalance(owner: Address): Promise<string>;
|
|
28
|
+
getMetadata(_isNft?: boolean): Promise<MinimalTokenMetadata>;
|
|
29
|
+
populateApproveTx(_params: TransferParams): Promise<Transaction>;
|
|
30
|
+
populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, fromTokenAccount, }: TransferParams): Transaction;
|
|
31
|
+
getTokenProgramId(): PublicKey;
|
|
32
|
+
deriveAssociatedTokenAccount(owner: PublicKey): PublicKey;
|
|
33
|
+
}
|
|
34
|
+
export declare abstract class SealevelHypTokenAdapter extends SealevelTokenAdapter implements IHypTokenAdapter {
|
|
35
|
+
readonly chainName: ChainName;
|
|
36
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
37
|
+
readonly addresses: {
|
|
38
|
+
token: Address;
|
|
39
|
+
warpRouter: Address;
|
|
40
|
+
mailbox: Address;
|
|
41
|
+
};
|
|
42
|
+
readonly isSpl2022: boolean;
|
|
43
|
+
readonly warpProgramPubKey: PublicKey;
|
|
44
|
+
protected cachedTokenAccountData: SealevelHyperlaneTokenData | undefined;
|
|
45
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
46
|
+
token: Address;
|
|
47
|
+
warpRouter: Address;
|
|
48
|
+
mailbox: Address;
|
|
49
|
+
}, isSpl2022?: boolean);
|
|
50
|
+
getTokenAccountData(): Promise<SealevelHyperlaneTokenData>;
|
|
51
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
52
|
+
getDomains(): Promise<Domain[]>;
|
|
53
|
+
getRouterAddress(domain: Domain): Promise<Buffer>;
|
|
54
|
+
getAllRouters(): Promise<Array<{
|
|
55
|
+
domain: Domain;
|
|
56
|
+
address: Buffer;
|
|
57
|
+
}>>;
|
|
58
|
+
quoteGasPayment(_destination: Domain): Promise<string>;
|
|
59
|
+
populateTransferRemoteTx({ weiAmountOrId, destination, recipient, fromAccountOwner, }: TransferRemoteParams): Promise<Transaction>;
|
|
60
|
+
getIgpKeys(): Promise<{
|
|
61
|
+
programId: PublicKey;
|
|
62
|
+
igpAccount?: undefined;
|
|
63
|
+
innerIgpAccount?: undefined;
|
|
64
|
+
} | {
|
|
65
|
+
programId: PublicKey;
|
|
66
|
+
igpAccount: PublicKey;
|
|
67
|
+
innerIgpAccount: PublicKey;
|
|
68
|
+
} | undefined>;
|
|
69
|
+
getTransferInstructionKeyList({ sender, mailbox, randomWallet, igp, }: KeyListParams): Array<AccountMeta>;
|
|
70
|
+
deriveMailboxOutboxAccount(mailbox: PublicKey): PublicKey;
|
|
71
|
+
deriveMessageDispatchAuthorityAccount(): PublicKey;
|
|
72
|
+
deriveMsgStorageAccount(mailbox: PublicKey, randomWalletPubKey: PublicKey): PublicKey;
|
|
73
|
+
deriveHypTokenAccount(): PublicKey;
|
|
74
|
+
}
|
|
75
|
+
export declare class SealevelHypNativeAdapter extends SealevelHypTokenAdapter {
|
|
76
|
+
readonly chainName: ChainName;
|
|
77
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
78
|
+
readonly addresses: {
|
|
79
|
+
token: Address;
|
|
80
|
+
warpRouter: Address;
|
|
81
|
+
mailbox: Address;
|
|
82
|
+
};
|
|
83
|
+
readonly isSpl2022: boolean;
|
|
84
|
+
readonly wrappedNative: SealevelNativeTokenAdapter;
|
|
85
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
86
|
+
token: Address;
|
|
87
|
+
warpRouter: Address;
|
|
88
|
+
mailbox: Address;
|
|
89
|
+
}, isSpl2022?: boolean);
|
|
90
|
+
getBalance(owner: Address): Promise<string>;
|
|
91
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
92
|
+
getTransferInstructionKeyList(params: KeyListParams): Array<AccountMeta>;
|
|
93
|
+
deriveNativeTokenCollateralAccount(): PublicKey;
|
|
94
|
+
}
|
|
95
|
+
export declare class SealevelHypCollateralAdapter extends SealevelHypTokenAdapter {
|
|
96
|
+
getBalance(owner: Address): Promise<string>;
|
|
97
|
+
getTransferInstructionKeyList(params: KeyListParams): Array<AccountMeta>;
|
|
98
|
+
deriveEscrowAccount(): PublicKey;
|
|
99
|
+
}
|
|
100
|
+
export declare class SealevelHypSyntheticAdapter extends SealevelHypTokenAdapter {
|
|
101
|
+
getTransferInstructionKeyList(params: KeyListParams): Array<AccountMeta>;
|
|
102
|
+
getBalance(owner: Address): Promise<string>;
|
|
103
|
+
deriveMintAuthorityAccount(): PublicKey;
|
|
104
|
+
deriveAssociatedTokenAccount(owner: PublicKey): PublicKey;
|
|
105
|
+
}
|
|
106
|
+
interface KeyListParams {
|
|
107
|
+
sender: PublicKey;
|
|
108
|
+
mailbox: PublicKey;
|
|
109
|
+
randomWallet: PublicKey;
|
|
110
|
+
igp?: {
|
|
111
|
+
programId: PublicKey;
|
|
112
|
+
igpAccount?: PublicKey;
|
|
113
|
+
innerIgpAccount?: PublicKey;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export {};
|
|
117
|
+
//# sourceMappingURL=SealevelTokenAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SealevelTokenAdapter.d.ts","sourceRoot":"","sources":["../../../src/token/adapters/SealevelTokenAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SealevelHypSyntheticAdapter = exports.SealevelHypCollateralAdapter = exports.SealevelHypNativeAdapter = exports.SealevelHypTokenAdapter = exports.SealevelTokenAdapter = exports.SealevelNativeTokenAdapter = void 0;
|
|
7
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
10
|
+
const borsh_1 = require("borsh");
|
|
11
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
12
|
+
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
13
|
+
const sealevel_1 = require("../../consts/sealevel");
|
|
14
|
+
const SealevelIgpAdapter_1 = require("../../gas/adapters/SealevelIgpAdapter");
|
|
15
|
+
const serialization_1 = require("../../gas/adapters/serialization");
|
|
16
|
+
const sealevelSerialization_1 = require("../../utils/sealevelSerialization");
|
|
17
|
+
const serialization_2 = require("./serialization");
|
|
18
|
+
// author @tkporter @jmrossy
|
|
19
|
+
// Interacts with native currencies
|
|
20
|
+
class SealevelNativeTokenAdapter extends MultiProtocolApp_1.BaseSealevelAdapter {
|
|
21
|
+
async getBalance(address) {
|
|
22
|
+
const balance = await this.getProvider().getBalance(new web3_js_1.PublicKey(address));
|
|
23
|
+
return balance.toString();
|
|
24
|
+
}
|
|
25
|
+
async getMetadata() {
|
|
26
|
+
throw new Error('Metadata not available to native tokens');
|
|
27
|
+
}
|
|
28
|
+
populateApproveTx(_params) {
|
|
29
|
+
throw new Error('Approve not required for native tokens');
|
|
30
|
+
}
|
|
31
|
+
populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, }) {
|
|
32
|
+
if (!fromAccountOwner)
|
|
33
|
+
throw new Error('fromAccountOwner required for Sealevel');
|
|
34
|
+
return new web3_js_1.Transaction().add(web3_js_1.SystemProgram.transfer({
|
|
35
|
+
fromPubkey: new web3_js_1.PublicKey(fromAccountOwner),
|
|
36
|
+
toPubkey: new web3_js_1.PublicKey(recipient),
|
|
37
|
+
lamports: new bignumber_js_1.default(weiAmountOrId).toNumber(),
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.SealevelNativeTokenAdapter = SealevelNativeTokenAdapter;
|
|
42
|
+
// Interacts with SPL token programs
|
|
43
|
+
class SealevelTokenAdapter extends MultiProtocolApp_1.BaseSealevelAdapter {
|
|
44
|
+
constructor(chainName, multiProvider, addresses, isSpl2022 = false) {
|
|
45
|
+
super(chainName, multiProvider, addresses);
|
|
46
|
+
this.chainName = chainName;
|
|
47
|
+
this.multiProvider = multiProvider;
|
|
48
|
+
this.addresses = addresses;
|
|
49
|
+
this.isSpl2022 = isSpl2022;
|
|
50
|
+
this.tokenProgramPubKey = new web3_js_1.PublicKey(addresses.token);
|
|
51
|
+
}
|
|
52
|
+
async getBalance(owner) {
|
|
53
|
+
const tokenPubKey = this.deriveAssociatedTokenAccount(new web3_js_1.PublicKey(owner));
|
|
54
|
+
const response = await this.getProvider().getTokenAccountBalance(tokenPubKey);
|
|
55
|
+
return response.value.amount;
|
|
56
|
+
}
|
|
57
|
+
async getMetadata(_isNft) {
|
|
58
|
+
// TODO solana support
|
|
59
|
+
return { decimals: 9, symbol: 'SPL', name: 'SPL Token' };
|
|
60
|
+
}
|
|
61
|
+
populateApproveTx(_params) {
|
|
62
|
+
throw new Error('Approve not required for sealevel tokens');
|
|
63
|
+
}
|
|
64
|
+
populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, fromTokenAccount, }) {
|
|
65
|
+
if (!fromTokenAccount)
|
|
66
|
+
throw new Error('fromTokenAccount required for Sealevel');
|
|
67
|
+
if (!fromAccountOwner)
|
|
68
|
+
throw new Error('fromAccountOwner required for Sealevel');
|
|
69
|
+
return new web3_js_1.Transaction().add((0, spl_token_1.createTransferInstruction)(new web3_js_1.PublicKey(fromTokenAccount), new web3_js_1.PublicKey(recipient), new web3_js_1.PublicKey(fromAccountOwner), new bignumber_js_1.default(weiAmountOrId).toNumber()));
|
|
70
|
+
}
|
|
71
|
+
getTokenProgramId() {
|
|
72
|
+
return this.isSpl2022 ? spl_token_1.TOKEN_2022_PROGRAM_ID : spl_token_1.TOKEN_PROGRAM_ID;
|
|
73
|
+
}
|
|
74
|
+
deriveAssociatedTokenAccount(owner) {
|
|
75
|
+
return (0, spl_token_1.getAssociatedTokenAddressSync)(this.tokenProgramPubKey, owner, true, this.getTokenProgramId());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.SealevelTokenAdapter = SealevelTokenAdapter;
|
|
79
|
+
class SealevelHypTokenAdapter extends SealevelTokenAdapter {
|
|
80
|
+
constructor(chainName, multiProvider, addresses, isSpl2022 = false) {
|
|
81
|
+
// Pass in placeholder address to avoid errors for native token addresses (which as represented here as 0s)
|
|
82
|
+
const superTokenProgramId = (0, utils_1.isZeroishAddress)(addresses.token)
|
|
83
|
+
? web3_js_1.SystemProgram.programId.toBase58()
|
|
84
|
+
: addresses.token;
|
|
85
|
+
super(chainName, multiProvider, { token: superTokenProgramId }, isSpl2022);
|
|
86
|
+
this.chainName = chainName;
|
|
87
|
+
this.multiProvider = multiProvider;
|
|
88
|
+
this.addresses = addresses;
|
|
89
|
+
this.isSpl2022 = isSpl2022;
|
|
90
|
+
this.warpProgramPubKey = new web3_js_1.PublicKey(addresses.warpRouter);
|
|
91
|
+
}
|
|
92
|
+
async getTokenAccountData() {
|
|
93
|
+
if (!this.cachedTokenAccountData) {
|
|
94
|
+
const tokenPda = this.deriveHypTokenAccount();
|
|
95
|
+
const accountInfo = await this.getProvider().getAccountInfo(tokenPda);
|
|
96
|
+
if (!accountInfo)
|
|
97
|
+
throw new Error(`No account info found for ${tokenPda}`);
|
|
98
|
+
const wrappedData = (0, borsh_1.deserializeUnchecked)(serialization_2.SealevelHyperlaneTokenDataSchema, sealevelSerialization_1.SealevelAccountDataWrapper, accountInfo.data);
|
|
99
|
+
this.cachedTokenAccountData =
|
|
100
|
+
wrappedData.data;
|
|
101
|
+
}
|
|
102
|
+
return this.cachedTokenAccountData;
|
|
103
|
+
}
|
|
104
|
+
async getMetadata() {
|
|
105
|
+
const tokenData = await this.getTokenAccountData();
|
|
106
|
+
// TODO full token metadata support
|
|
107
|
+
return {
|
|
108
|
+
decimals: tokenData.decimals,
|
|
109
|
+
symbol: 'HYP',
|
|
110
|
+
name: 'Unknown Hyp Token',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async getDomains() {
|
|
114
|
+
const routers = await this.getAllRouters();
|
|
115
|
+
return routers.map((router) => router.domain);
|
|
116
|
+
}
|
|
117
|
+
async getRouterAddress(domain) {
|
|
118
|
+
const routers = await this.getAllRouters();
|
|
119
|
+
const addr = routers.find((router) => router.domain === domain)?.address;
|
|
120
|
+
if (!addr)
|
|
121
|
+
throw new Error(`No router found for ${domain}`);
|
|
122
|
+
return addr;
|
|
123
|
+
}
|
|
124
|
+
async getAllRouters() {
|
|
125
|
+
const tokenData = await this.getTokenAccountData();
|
|
126
|
+
const domainToPubKey = tokenData.remote_router_pubkeys;
|
|
127
|
+
return Array.from(domainToPubKey.entries()).map(([domain, pubKey]) => ({
|
|
128
|
+
domain,
|
|
129
|
+
address: pubKey.toBuffer(),
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
async quoteGasPayment(_destination) {
|
|
133
|
+
// TODO Solana support
|
|
134
|
+
return '0';
|
|
135
|
+
}
|
|
136
|
+
async populateTransferRemoteTx({ weiAmountOrId, destination, recipient, fromAccountOwner, }) {
|
|
137
|
+
if (!fromAccountOwner)
|
|
138
|
+
throw new Error('fromAccountOwner required for Sealevel');
|
|
139
|
+
const randomWallet = web3_js_1.Keypair.generate();
|
|
140
|
+
const fromWalletPubKey = new web3_js_1.PublicKey(fromAccountOwner);
|
|
141
|
+
const mailboxPubKey = new web3_js_1.PublicKey(this.addresses.mailbox);
|
|
142
|
+
const keys = this.getTransferInstructionKeyList({
|
|
143
|
+
sender: fromWalletPubKey,
|
|
144
|
+
mailbox: mailboxPubKey,
|
|
145
|
+
randomWallet: randomWallet.publicKey,
|
|
146
|
+
igp: await this.getIgpKeys(),
|
|
147
|
+
});
|
|
148
|
+
const value = new sealevelSerialization_1.SealevelInstructionWrapper({
|
|
149
|
+
instruction: serialization_2.SealevelHypTokenInstruction.TransferRemote,
|
|
150
|
+
data: new serialization_2.SealevelTransferRemoteInstruction({
|
|
151
|
+
destination_domain: destination,
|
|
152
|
+
recipient: (0, utils_1.addressToBytes)(recipient),
|
|
153
|
+
amount_or_id: new bignumber_js_1.default(weiAmountOrId).toNumber(),
|
|
154
|
+
}),
|
|
155
|
+
});
|
|
156
|
+
const serializedData = (0, borsh_1.serialize)(serialization_2.SealevelTransferRemoteSchema, value);
|
|
157
|
+
const transferRemoteInstruction = new web3_js_1.TransactionInstruction({
|
|
158
|
+
keys,
|
|
159
|
+
programId: this.warpProgramPubKey,
|
|
160
|
+
// Array of 1s is an arbitrary 8 byte "discriminator"
|
|
161
|
+
// https://github.com/hyperlane-xyz/issues/issues/462#issuecomment-1587859359
|
|
162
|
+
data: Buffer.concat([
|
|
163
|
+
Buffer.from([1, 1, 1, 1, 1, 1, 1, 1]),
|
|
164
|
+
Buffer.from(serializedData),
|
|
165
|
+
]),
|
|
166
|
+
});
|
|
167
|
+
const recentBlockhash = (await this.getProvider().getLatestBlockhash('finalized')).blockhash;
|
|
168
|
+
// @ts-ignore Workaround for bug in the web3 lib, sometimes uses recentBlockhash and sometimes uses blockhash
|
|
169
|
+
const tx = new web3_js_1.Transaction({
|
|
170
|
+
feePayer: fromWalletPubKey,
|
|
171
|
+
blockhash: recentBlockhash,
|
|
172
|
+
recentBlockhash,
|
|
173
|
+
}).add(transferRemoteInstruction);
|
|
174
|
+
tx.partialSign(randomWallet);
|
|
175
|
+
return tx;
|
|
176
|
+
}
|
|
177
|
+
async getIgpKeys() {
|
|
178
|
+
const tokenData = await this.getTokenAccountData();
|
|
179
|
+
if (!tokenData.interchain_gas_paymaster)
|
|
180
|
+
return undefined;
|
|
181
|
+
const igpConfig = tokenData.interchain_gas_paymaster;
|
|
182
|
+
if (igpConfig.type === serialization_1.SealevelInterchainGasPaymasterType.Igp) {
|
|
183
|
+
return {
|
|
184
|
+
programId: igpConfig.program_id_pubkey,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
else if (igpConfig.type === serialization_1.SealevelInterchainGasPaymasterType.OverheadIgp) {
|
|
188
|
+
if (!igpConfig.igp_account_pub_key) {
|
|
189
|
+
throw new Error('igpAccount field expected for Sealevel Overhead IGP');
|
|
190
|
+
}
|
|
191
|
+
const overheadAdapter = new SealevelIgpAdapter_1.SealevelOverheadIgpAdapter(this.chainName, this.multiProvider, { igp: igpConfig.igp_account_pub_key.toBase58() });
|
|
192
|
+
const overheadAccountInfo = await overheadAdapter.getAccountInfo();
|
|
193
|
+
return {
|
|
194
|
+
programId: igpConfig.program_id_pubkey,
|
|
195
|
+
igpAccount: igpConfig.igp_account_pub_key,
|
|
196
|
+
innerIgpAccount: overheadAccountInfo.inner_pub_key,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
throw new Error(`Unsupported IGP type ${igpConfig.type}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// Should match https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/libraries/hyperlane-sealevel-token/src/processor.rs#L257-L274
|
|
204
|
+
getTransferInstructionKeyList({ sender, mailbox, randomWallet, igp, }) {
|
|
205
|
+
let keys = [
|
|
206
|
+
// 0. [executable] The system program.
|
|
207
|
+
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
208
|
+
// 1. [executable] The spl_noop program.
|
|
209
|
+
{
|
|
210
|
+
pubkey: new web3_js_1.PublicKey(sealevel_1.SEALEVEL_SPL_NOOP_ADDRESS),
|
|
211
|
+
isSigner: false,
|
|
212
|
+
isWritable: false,
|
|
213
|
+
},
|
|
214
|
+
// 2. [] The token PDA account.
|
|
215
|
+
{
|
|
216
|
+
pubkey: this.deriveHypTokenAccount(),
|
|
217
|
+
isSigner: false,
|
|
218
|
+
isWritable: false,
|
|
219
|
+
},
|
|
220
|
+
// 3. [executable] The mailbox program.
|
|
221
|
+
{ pubkey: mailbox, isSigner: false, isWritable: false },
|
|
222
|
+
// 4. [writeable] The mailbox outbox account.
|
|
223
|
+
{
|
|
224
|
+
pubkey: this.deriveMailboxOutboxAccount(mailbox),
|
|
225
|
+
isSigner: false,
|
|
226
|
+
isWritable: true,
|
|
227
|
+
},
|
|
228
|
+
// 5. [] Message dispatch authority.
|
|
229
|
+
{
|
|
230
|
+
pubkey: this.deriveMessageDispatchAuthorityAccount(),
|
|
231
|
+
isSigner: false,
|
|
232
|
+
isWritable: false,
|
|
233
|
+
},
|
|
234
|
+
// 6. [signer] The token sender and mailbox payer.
|
|
235
|
+
{ pubkey: sender, isSigner: true, isWritable: false },
|
|
236
|
+
// 7. [signer] Unique message account.
|
|
237
|
+
{ pubkey: randomWallet, isSigner: true, isWritable: false },
|
|
238
|
+
// 8. [writeable] Message storage PDA.
|
|
239
|
+
{
|
|
240
|
+
pubkey: this.deriveMsgStorageAccount(mailbox, randomWallet),
|
|
241
|
+
isSigner: false,
|
|
242
|
+
isWritable: true,
|
|
243
|
+
},
|
|
244
|
+
];
|
|
245
|
+
if (igp) {
|
|
246
|
+
keys = [
|
|
247
|
+
...keys,
|
|
248
|
+
// 9. [executable] The IGP program.
|
|
249
|
+
{ pubkey: igp.programId, isSigner: false, isWritable: false },
|
|
250
|
+
// 10. [writeable] The IGP program data.
|
|
251
|
+
{
|
|
252
|
+
pubkey: SealevelIgpAdapter_1.SealevelOverheadIgpAdapter.deriveIgpProgramPda(igp.programId),
|
|
253
|
+
isSigner: false,
|
|
254
|
+
isWritable: true,
|
|
255
|
+
},
|
|
256
|
+
// 11. [writeable] Gas payment PDA.
|
|
257
|
+
{
|
|
258
|
+
pubkey: SealevelIgpAdapter_1.SealevelOverheadIgpAdapter.deriveGasPaymentPda(igp.programId, randomWallet),
|
|
259
|
+
isSigner: false,
|
|
260
|
+
isWritable: true,
|
|
261
|
+
},
|
|
262
|
+
];
|
|
263
|
+
if (igp.igpAccount && igp.innerIgpAccount) {
|
|
264
|
+
keys = [
|
|
265
|
+
...keys,
|
|
266
|
+
// 12. [] OPTIONAL - The Overhead IGP account, if the configured IGP is an Overhead IGP
|
|
267
|
+
{
|
|
268
|
+
pubkey: igp.igpAccount,
|
|
269
|
+
isSigner: false,
|
|
270
|
+
isWritable: false,
|
|
271
|
+
},
|
|
272
|
+
// 13. [writeable] The Overhead's inner IGP account
|
|
273
|
+
{
|
|
274
|
+
pubkey: igp.innerIgpAccount,
|
|
275
|
+
isSigner: false,
|
|
276
|
+
isWritable: true,
|
|
277
|
+
},
|
|
278
|
+
];
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
keys = [
|
|
282
|
+
...keys,
|
|
283
|
+
// 12. [writeable] The IGP account.
|
|
284
|
+
{
|
|
285
|
+
pubkey: igp.programId,
|
|
286
|
+
isSigner: false,
|
|
287
|
+
isWritable: true,
|
|
288
|
+
},
|
|
289
|
+
];
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return keys;
|
|
293
|
+
}
|
|
294
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/mailbox/src/pda_seeds.rs#L19
|
|
295
|
+
deriveMailboxOutboxAccount(mailbox) {
|
|
296
|
+
return super.derivePda(['hyperlane', '-', 'outbox'], mailbox);
|
|
297
|
+
}
|
|
298
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/mailbox/src/pda_seeds.rs#L57
|
|
299
|
+
deriveMessageDispatchAuthorityAccount() {
|
|
300
|
+
return super.derivePda(['hyperlane_dispatcher', '-', 'dispatch_authority'], this.warpProgramPubKey);
|
|
301
|
+
}
|
|
302
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/mailbox/src/pda_seeds.rs#L33-L37
|
|
303
|
+
deriveMsgStorageAccount(mailbox, randomWalletPubKey) {
|
|
304
|
+
return super.derivePda([
|
|
305
|
+
'hyperlane',
|
|
306
|
+
'-',
|
|
307
|
+
'dispatched_message',
|
|
308
|
+
'-',
|
|
309
|
+
randomWalletPubKey.toBuffer(),
|
|
310
|
+
], mailbox);
|
|
311
|
+
}
|
|
312
|
+
// Should match https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/libraries/hyperlane-sealevel-token/src/processor.rs#LL49C1-L53C30
|
|
313
|
+
deriveHypTokenAccount() {
|
|
314
|
+
return super.derivePda(['hyperlane_message_recipient', '-', 'handle', '-', 'account_metas'], this.warpProgramPubKey);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.SealevelHypTokenAdapter = SealevelHypTokenAdapter;
|
|
318
|
+
// Interacts with Hyp Native token programs
|
|
319
|
+
class SealevelHypNativeAdapter extends SealevelHypTokenAdapter {
|
|
320
|
+
constructor(chainName, multiProvider, addresses, isSpl2022 = false) {
|
|
321
|
+
super(chainName, multiProvider, addresses, isSpl2022);
|
|
322
|
+
this.chainName = chainName;
|
|
323
|
+
this.multiProvider = multiProvider;
|
|
324
|
+
this.addresses = addresses;
|
|
325
|
+
this.isSpl2022 = isSpl2022;
|
|
326
|
+
this.wrappedNative = new SealevelNativeTokenAdapter(chainName, multiProvider, {});
|
|
327
|
+
}
|
|
328
|
+
async getBalance(owner) {
|
|
329
|
+
return this.wrappedNative.getBalance(owner);
|
|
330
|
+
}
|
|
331
|
+
async getMetadata() {
|
|
332
|
+
return this.wrappedNative.getMetadata();
|
|
333
|
+
}
|
|
334
|
+
getTransferInstructionKeyList(params) {
|
|
335
|
+
return [
|
|
336
|
+
...super.getTransferInstructionKeyList(params),
|
|
337
|
+
// 9. [executable] The system program.
|
|
338
|
+
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
339
|
+
// 10. [writeable] The native token collateral PDA account.
|
|
340
|
+
{
|
|
341
|
+
pubkey: this.deriveNativeTokenCollateralAccount(),
|
|
342
|
+
isSigner: false,
|
|
343
|
+
isWritable: true,
|
|
344
|
+
},
|
|
345
|
+
];
|
|
346
|
+
}
|
|
347
|
+
// https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/programs/hyperlane-sealevel-token-native/src/plugin.rs#L26
|
|
348
|
+
deriveNativeTokenCollateralAccount() {
|
|
349
|
+
return super.derivePda(['hyperlane_token', '-', 'native_collateral'], this.warpProgramPubKey);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
exports.SealevelHypNativeAdapter = SealevelHypNativeAdapter;
|
|
353
|
+
// Interacts with Hyp Collateral token programs
|
|
354
|
+
class SealevelHypCollateralAdapter extends SealevelHypTokenAdapter {
|
|
355
|
+
async getBalance(owner) {
|
|
356
|
+
// Special case where the owner is the warp route program ID.
|
|
357
|
+
// This is because collateral warp routes don't hold escrowed collateral
|
|
358
|
+
// tokens in their associated token account - instead, they hold them in
|
|
359
|
+
// the escrow account.
|
|
360
|
+
if ((0, utils_1.eqAddress)(owner, this.addresses.warpRouter)) {
|
|
361
|
+
const collateralAccount = this.deriveEscrowAccount();
|
|
362
|
+
const response = await this.getProvider().getTokenAccountBalance(collateralAccount);
|
|
363
|
+
return response.value.amount;
|
|
364
|
+
}
|
|
365
|
+
return super.getBalance(owner);
|
|
366
|
+
}
|
|
367
|
+
getTransferInstructionKeyList(params) {
|
|
368
|
+
return [
|
|
369
|
+
...super.getTransferInstructionKeyList(params),
|
|
370
|
+
/// 9. [executable] The SPL token program for the mint.
|
|
371
|
+
{ pubkey: this.getTokenProgramId(), isSigner: false, isWritable: false },
|
|
372
|
+
/// 10. [writeable] The mint.
|
|
373
|
+
{ pubkey: this.tokenProgramPubKey, isSigner: false, isWritable: true },
|
|
374
|
+
/// 11. [writeable] The token sender's associated token account, from which tokens will be sent.
|
|
375
|
+
{
|
|
376
|
+
pubkey: this.deriveAssociatedTokenAccount(params.sender),
|
|
377
|
+
isSigner: false,
|
|
378
|
+
isWritable: true,
|
|
379
|
+
},
|
|
380
|
+
/// 12. [writeable] The escrow PDA account.
|
|
381
|
+
{ pubkey: this.deriveEscrowAccount(), isSigner: false, isWritable: true },
|
|
382
|
+
];
|
|
383
|
+
}
|
|
384
|
+
deriveEscrowAccount() {
|
|
385
|
+
return super.derivePda(['hyperlane_token', '-', 'escrow'], this.warpProgramPubKey);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
exports.SealevelHypCollateralAdapter = SealevelHypCollateralAdapter;
|
|
389
|
+
// Interacts with Hyp Synthetic token programs (aka 'HypTokens')
|
|
390
|
+
class SealevelHypSyntheticAdapter extends SealevelHypTokenAdapter {
|
|
391
|
+
getTransferInstructionKeyList(params) {
|
|
392
|
+
return [
|
|
393
|
+
...super.getTransferInstructionKeyList(params),
|
|
394
|
+
/// 9. [executable] The spl_token_2022 program.
|
|
395
|
+
{ pubkey: spl_token_1.TOKEN_2022_PROGRAM_ID, isSigner: false, isWritable: false },
|
|
396
|
+
/// 10. [writeable] The mint / mint authority PDA account.
|
|
397
|
+
{
|
|
398
|
+
pubkey: this.deriveMintAuthorityAccount(),
|
|
399
|
+
isSigner: false,
|
|
400
|
+
isWritable: true,
|
|
401
|
+
},
|
|
402
|
+
/// 11. [writeable] The token sender's associated token account, from which tokens will be burned.
|
|
403
|
+
{
|
|
404
|
+
pubkey: this.deriveAssociatedTokenAccount(params.sender),
|
|
405
|
+
isSigner: false,
|
|
406
|
+
isWritable: true,
|
|
407
|
+
},
|
|
408
|
+
];
|
|
409
|
+
}
|
|
410
|
+
async getBalance(owner) {
|
|
411
|
+
const tokenPubKey = this.deriveAssociatedTokenAccount(new web3_js_1.PublicKey(owner));
|
|
412
|
+
const response = await this.getProvider().getTokenAccountBalance(tokenPubKey);
|
|
413
|
+
return response.value.amount;
|
|
414
|
+
}
|
|
415
|
+
deriveMintAuthorityAccount() {
|
|
416
|
+
return super.derivePda(['hyperlane_token', '-', 'mint'], this.warpProgramPubKey);
|
|
417
|
+
}
|
|
418
|
+
deriveAssociatedTokenAccount(owner) {
|
|
419
|
+
return (0, spl_token_1.getAssociatedTokenAddressSync)(this.deriveMintAuthorityAccount(), new web3_js_1.PublicKey(owner), true, spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
exports.SealevelHypSyntheticAdapter = SealevelHypSyntheticAdapter;
|
|
423
|
+
//# sourceMappingURL=SealevelTokenAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SealevelTokenAdapter.js","sourceRoot":"","sources":["../../../src/token/adapters/SealevelTokenAdapter.ts"],"names":[],"mappings":"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"}
|