@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.
Files changed (225) hide show
  1. package/dist/consts/chainMetadata.d.ts +5 -0
  2. package/dist/consts/chainMetadata.d.ts.map +1 -1
  3. package/dist/consts/chainMetadata.js +133 -5
  4. package/dist/consts/chainMetadata.js.map +1 -1
  5. package/dist/consts/chains.d.ts +11 -6
  6. package/dist/consts/chains.d.ts.map +1 -1
  7. package/dist/consts/chains.js +15 -7
  8. package/dist/consts/chains.js.map +1 -1
  9. package/dist/consts/environments/index.d.ts +387 -61
  10. package/dist/consts/environments/index.d.ts.map +1 -1
  11. package/dist/consts/environments/index.js +7 -3
  12. package/dist/consts/environments/index.js.map +1 -1
  13. package/dist/consts/environments/mainnet.json +0 -17
  14. package/dist/consts/environments/testnet-sealevel.json +19 -0
  15. package/dist/consts/environments/testnet.json +181 -167
  16. package/dist/consts/multisigIsm.d.ts +2 -2
  17. package/dist/consts/multisigIsm.d.ts.map +1 -1
  18. package/dist/consts/multisigIsm.js +61 -58
  19. package/dist/consts/multisigIsm.js.map +1 -1
  20. package/dist/contracts/contracts.d.ts +2 -7
  21. package/dist/contracts/contracts.d.ts.map +1 -1
  22. package/dist/contracts/contracts.js +7 -31
  23. package/dist/contracts/contracts.js.map +1 -1
  24. package/dist/core/CoreDeployer.hardhat-test.js +4 -4
  25. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  26. package/dist/core/HyperlaneCore.d.ts +5 -1
  27. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  28. package/dist/core/HyperlaneCore.js +13 -0
  29. package/dist/core/HyperlaneCore.js.map +1 -1
  30. package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
  31. package/dist/core/HyperlaneCoreChecker.js +3 -3
  32. package/dist/core/HyperlaneCoreChecker.js.map +1 -1
  33. package/dist/core/HyperlaneCoreDeployer.d.ts +7 -2
  34. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  35. package/dist/core/HyperlaneCoreDeployer.js +47 -27
  36. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  37. package/dist/core/MultiProtocolCore.d.ts.map +1 -1
  38. package/dist/core/MultiProtocolCore.js +1 -0
  39. package/dist/core/MultiProtocolCore.js.map +1 -1
  40. package/dist/core/TestCoreApp.d.ts +0 -1
  41. package/dist/core/TestCoreApp.d.ts.map +1 -1
  42. package/dist/core/contracts.d.ts +3 -9
  43. package/dist/core/contracts.d.ts.map +1 -1
  44. package/dist/core/contracts.js +0 -1
  45. package/dist/core/contracts.js.map +1 -1
  46. package/dist/core/testHyperlaneDeploy.hardhat-test.js +3 -2
  47. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
  48. package/dist/core/types.d.ts +4 -1
  49. package/dist/core/types.d.ts.map +1 -1
  50. package/dist/core/types.js.map +1 -1
  51. package/dist/deploy/HyperlaneAppChecker.d.ts +0 -1
  52. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  53. package/dist/deploy/HyperlaneAppChecker.js +5 -30
  54. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  55. package/dist/deploy/HyperlaneDeployer.d.ts +7 -5
  56. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  57. package/dist/deploy/HyperlaneDeployer.js +28 -25
  58. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  59. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +10 -0
  60. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -0
  61. package/dist/deploy/HyperlaneProxyFactoryDeployer.js +30 -0
  62. package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -0
  63. package/dist/deploy/contracts.d.ts +13 -0
  64. package/dist/deploy/contracts.d.ts.map +1 -0
  65. package/dist/deploy/contracts.js +20 -0
  66. package/dist/deploy/contracts.js.map +1 -0
  67. package/dist/gas/HyperlaneIgp.js +1 -1
  68. package/dist/gas/HyperlaneIgp.js.map +1 -1
  69. package/dist/gas/HyperlaneIgpChecker.d.ts +2 -2
  70. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  71. package/dist/gas/HyperlaneIgpChecker.js +10 -27
  72. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  73. package/dist/gas/HyperlaneIgpDeployer.d.ts +4 -6
  74. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  75. package/dist/gas/HyperlaneIgpDeployer.js +12 -43
  76. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  77. package/dist/gas/contracts.d.ts +2 -4
  78. package/dist/gas/contracts.d.ts.map +1 -1
  79. package/dist/gas/contracts.js +1 -3
  80. package/dist/gas/contracts.js.map +1 -1
  81. package/dist/gas/types.d.ts +2 -6
  82. package/dist/gas/types.d.ts.map +1 -1
  83. package/dist/gas/types.js.map +1 -1
  84. package/dist/hook/HyperlaneHookDeployer.d.ts +28 -10
  85. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  86. package/dist/hook/HyperlaneHookDeployer.js +51 -70
  87. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  88. package/dist/hook/contracts.d.ts +6 -17
  89. package/dist/hook/contracts.d.ts.map +1 -1
  90. package/dist/hook/contracts.js +6 -13
  91. package/dist/hook/contracts.js.map +1 -1
  92. package/dist/hook/types.d.ts +24 -13
  93. package/dist/hook/types.d.ts.map +1 -1
  94. package/dist/hook/types.js +8 -6
  95. package/dist/hook/types.js.map +1 -1
  96. package/dist/index.d.ts +18 -12
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +37 -21
  99. package/dist/index.js.map +1 -1
  100. package/dist/ism/HyperlaneIsmFactory.d.ts +5 -4
  101. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  102. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +3 -3
  103. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  104. package/dist/ism/HyperlaneIsmFactory.js +18 -59
  105. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  106. package/dist/ism/contracts.d.ts +4 -3
  107. package/dist/ism/contracts.d.ts.map +1 -1
  108. package/dist/ism/contracts.js +3 -2
  109. package/dist/ism/contracts.js.map +1 -1
  110. package/dist/ism/types.d.ts +6 -4
  111. package/dist/ism/types.d.ts.map +1 -1
  112. package/dist/ism/types.js.map +1 -1
  113. package/dist/metadata/ChainMetadataManager.d.ts +0 -10
  114. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  115. package/dist/metadata/ChainMetadataManager.js +2 -14
  116. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  117. package/dist/metadata/agentConfig.d.ts +523 -1348
  118. package/dist/metadata/agentConfig.d.ts.map +1 -1
  119. package/dist/metadata/agentConfig.js +61 -94
  120. package/dist/metadata/agentConfig.js.map +1 -1
  121. package/dist/metadata/agentConfig.test.js +9 -9
  122. package/dist/metadata/agentConfig.test.js.map +1 -1
  123. package/dist/metadata/chainMetadataTypes.d.ts +1 -1
  124. package/dist/metadata/chainMetadataTypes.js +4 -4
  125. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  126. package/dist/metadata/deploymentArtifacts.d.ts +5 -2
  127. package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
  128. package/dist/metadata/deploymentArtifacts.js +1 -0
  129. package/dist/metadata/deploymentArtifacts.js.map +1 -1
  130. package/dist/metadata/matchingList.d.ts +1 -1
  131. package/dist/metadata/matchingList.d.ts.map +1 -1
  132. package/dist/metadata/matchingList.js +1 -1
  133. package/dist/metadata/matchingList.js.map +1 -1
  134. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  135. package/dist/middleware/account/InterchainAccount.js +1 -4
  136. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  137. package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -7
  138. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  139. package/dist/middleware/account/InterchainAccountDeployer.js +4 -9
  140. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  141. package/dist/middleware/account/accounts.hardhat-test.js +3 -5
  142. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  143. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -7
  144. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  145. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +7 -11
  146. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
  147. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +3 -7
  148. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
  149. package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -7
  150. package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
  151. package/dist/middleware/query/InterchainQueryDeployer.js +3 -4
  152. package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
  153. package/dist/middleware/query/queries.hardhat-test.js +4 -9
  154. package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
  155. package/dist/providers/MultiProvider.d.ts +6 -1
  156. package/dist/providers/MultiProvider.d.ts.map +1 -1
  157. package/dist/providers/MultiProvider.js +11 -0
  158. package/dist/providers/MultiProvider.js.map +1 -1
  159. package/dist/router/GasRouterDeployer.d.ts.map +1 -1
  160. package/dist/router/GasRouterDeployer.js +1 -1
  161. package/dist/router/GasRouterDeployer.js.map +1 -1
  162. package/dist/router/HyperlaneRouterChecker.d.ts +2 -6
  163. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  164. package/dist/router/HyperlaneRouterChecker.js +12 -47
  165. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  166. package/dist/router/HyperlaneRouterDeployer.d.ts +1 -1
  167. package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  168. package/dist/router/HyperlaneRouterDeployer.js +15 -18
  169. package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
  170. package/dist/router/ProxiedRouterChecker.js +1 -1
  171. package/dist/router/ProxiedRouterChecker.js.map +1 -1
  172. package/dist/router/RouterApps.d.ts +1 -7
  173. package/dist/router/RouterApps.d.ts.map +1 -1
  174. package/dist/router/RouterApps.js +0 -17
  175. package/dist/router/RouterApps.js.map +1 -1
  176. package/dist/router/types.d.ts +14 -23
  177. package/dist/router/types.d.ts.map +1 -1
  178. package/dist/router/types.js +7 -11
  179. package/dist/router/types.js.map +1 -1
  180. package/dist/test/testUtils.d.ts +0 -2
  181. package/dist/test/testUtils.d.ts.map +1 -1
  182. package/dist/test/testUtils.js +15 -20
  183. package/dist/test/testUtils.js.map +1 -1
  184. package/dist/token/adapters/EvmTokenAdapter.d.ts +65 -0
  185. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -0
  186. package/dist/token/adapters/EvmTokenAdapter.js +119 -0
  187. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -0
  188. package/dist/token/adapters/ITokenAdapter.d.ts +30 -0
  189. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -0
  190. package/dist/token/adapters/ITokenAdapter.js +3 -0
  191. package/dist/token/adapters/ITokenAdapter.js.map +1 -0
  192. package/dist/token/adapters/SealevelTokenAdapter.d.ts +117 -0
  193. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -0
  194. package/dist/token/adapters/SealevelTokenAdapter.js +423 -0
  195. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -0
  196. package/dist/token/adapters/serialization.d.ts +50 -0
  197. package/dist/token/adapters/serialization.d.ts.map +1 -0
  198. package/dist/token/adapters/serialization.js +117 -0
  199. package/dist/token/adapters/serialization.js.map +1 -0
  200. package/dist/token/config.d.ts +45 -0
  201. package/dist/token/config.d.ts.map +1 -0
  202. package/dist/token/config.js +26 -0
  203. package/dist/token/config.js.map +1 -0
  204. package/dist/token/contracts.d.ts +9 -0
  205. package/dist/token/contracts.d.ts.map +1 -0
  206. package/dist/token/contracts.js +3 -0
  207. package/dist/token/contracts.js.map +1 -0
  208. package/dist/token/deploy.d.ts +40 -0
  209. package/dist/token/deploy.d.ts.map +1 -0
  210. package/dist/token/deploy.js +243 -0
  211. package/dist/token/deploy.js.map +1 -0
  212. package/package.json +9 -7
  213. package/dist/consts/agentStartBlocks.d.ts +0 -3
  214. package/dist/consts/agentStartBlocks.d.ts.map +0 -1
  215. package/dist/consts/agentStartBlocks.js +0 -28
  216. package/dist/consts/agentStartBlocks.js.map +0 -1
  217. package/dist/consts/environments/test.json +0 -41
  218. package/dist/hook/config.d.ts +0 -4
  219. package/dist/hook/config.d.ts.map +0 -1
  220. package/dist/hook/config.js +0 -9
  221. package/dist/hook/config.js.map +0 -1
  222. package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts +0 -11
  223. package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts.map +0 -1
  224. package/dist/ism/HyperlaneIsmFactoryDeployer.js +0 -39
  225. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITokenAdapter.js.map
@@ -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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"}