@hyperlane-xyz/sdk 3.6.2 → 3.8.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.
Files changed (240) hide show
  1. package/dist/consts/chainMetadata.d.ts +3 -2
  2. package/dist/consts/chainMetadata.d.ts.map +1 -1
  3. package/dist/consts/chainMetadata.js +99 -72
  4. package/dist/consts/chainMetadata.js.map +1 -1
  5. package/dist/consts/chains.d.ts +3 -2
  6. package/dist/consts/chains.d.ts.map +1 -1
  7. package/dist/consts/chains.js +6 -4
  8. package/dist/consts/chains.js.map +1 -1
  9. package/dist/consts/environments/index.d.ts +141 -133
  10. package/dist/consts/environments/index.d.ts.map +1 -1
  11. package/dist/consts/environments/mainnet.json +20 -0
  12. package/dist/consts/environments/testnet.json +166 -178
  13. package/dist/consts/igp.d.ts +2 -0
  14. package/dist/consts/igp.d.ts.map +1 -0
  15. package/dist/consts/igp.js +5 -0
  16. package/dist/consts/igp.js.map +1 -0
  17. package/dist/consts/multisigIsm.d.ts.map +1 -1
  18. package/dist/consts/multisigIsm.js +22 -18
  19. package/dist/consts/multisigIsm.js.map +1 -1
  20. package/dist/core/CoreDeployer.hardhat-test.js +4 -2
  21. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  22. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  23. package/dist/core/HyperlaneCore.js +10 -4
  24. package/dist/core/HyperlaneCore.js.map +1 -1
  25. package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
  26. package/dist/core/HyperlaneCoreChecker.js +3 -3
  27. package/dist/core/HyperlaneCoreChecker.js.map +1 -1
  28. package/dist/core/HyperlaneCoreDeployer.d.ts +6 -2
  29. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  30. package/dist/core/HyperlaneCoreDeployer.js +24 -11
  31. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  32. package/dist/core/TestRecipientDeployer.d.ts +2 -1
  33. package/dist/core/TestRecipientDeployer.d.ts.map +1 -1
  34. package/dist/core/TestRecipientDeployer.js +2 -1
  35. package/dist/core/TestRecipientDeployer.js.map +1 -1
  36. package/dist/deploy/HyperlaneDeployer.d.ts +7 -6
  37. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  38. package/dist/deploy/HyperlaneDeployer.js +34 -13
  39. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  40. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +2 -1
  41. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -1
  42. package/dist/deploy/HyperlaneProxyFactoryDeployer.js +2 -1
  43. package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -1
  44. package/dist/deploy/types.d.ts +1 -1
  45. package/dist/deploy/types.d.ts.map +1 -1
  46. package/dist/deploy/verify/ContractVerifier.d.ts +9 -12
  47. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
  48. package/dist/deploy/verify/ContractVerifier.js +147 -121
  49. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  50. package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts +14 -0
  51. package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts.map +1 -0
  52. package/dist/deploy/verify/PostDeploymentContractVerifier.js +31 -0
  53. package/dist/deploy/verify/PostDeploymentContractVerifier.js.map +1 -0
  54. package/dist/deploy/verify/types.d.ts +60 -3
  55. package/dist/deploy/verify/types.d.ts.map +1 -1
  56. package/dist/deploy/verify/types.js +42 -0
  57. package/dist/deploy/verify/types.js.map +1 -1
  58. package/dist/gas/HyperlaneIgpChecker.d.ts +0 -2
  59. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  60. package/dist/gas/HyperlaneIgpChecker.js +8 -29
  61. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  62. package/dist/gas/HyperlaneIgpDeployer.d.ts +3 -2
  63. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  64. package/dist/gas/HyperlaneIgpDeployer.js +47 -20
  65. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  66. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts +2 -0
  67. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts.map +1 -0
  68. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +47 -0
  69. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -0
  70. package/dist/gas/oracle/types.d.ts +11 -0
  71. package/dist/gas/oracle/types.d.ts.map +1 -0
  72. package/dist/gas/oracle/types.js +30 -0
  73. package/dist/gas/oracle/types.js.map +1 -0
  74. package/dist/gas/types.d.ts +3 -4
  75. package/dist/gas/types.d.ts.map +1 -1
  76. package/dist/gas/types.js +1 -5
  77. package/dist/gas/types.js.map +1 -1
  78. package/dist/hook/HyperlaneHookDeployer.d.ts +2 -1
  79. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  80. package/dist/hook/HyperlaneHookDeployer.js +6 -4
  81. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  82. package/dist/index.d.ts +18 -7
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +52 -20
  85. package/dist/index.js.map +1 -1
  86. package/dist/ism/HyperlaneIsmFactory.d.ts +11 -10
  87. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  88. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -12
  89. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  90. package/dist/ism/HyperlaneIsmFactory.js +39 -287
  91. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  92. package/dist/ism/utils.d.ts +11 -0
  93. package/dist/ism/utils.d.ts.map +1 -0
  94. package/dist/ism/utils.js +277 -0
  95. package/dist/ism/utils.js.map +1 -0
  96. package/dist/metadata/ChainMetadataManager.d.ts +43 -21
  97. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  98. package/dist/metadata/ChainMetadataManager.js +26 -0
  99. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  100. package/dist/metadata/agentConfig.d.ts +138 -46
  101. package/dist/metadata/agentConfig.d.ts.map +1 -1
  102. package/dist/metadata/agentConfig.js +1 -1
  103. package/dist/metadata/blockExplorer.d.ts +6 -1
  104. package/dist/metadata/blockExplorer.d.ts.map +1 -1
  105. package/dist/metadata/blockExplorer.js +15 -1
  106. package/dist/metadata/blockExplorer.js.map +1 -1
  107. package/dist/metadata/chainMetadataTypes.d.ts +202 -1
  108. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  109. package/dist/metadata/chainMetadataTypes.js +18 -4
  110. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  111. package/dist/metadata/customZodTypes.d.ts +2 -0
  112. package/dist/metadata/customZodTypes.d.ts.map +1 -1
  113. package/dist/metadata/customZodTypes.js +3 -1
  114. package/dist/metadata/customZodTypes.js.map +1 -1
  115. package/dist/metadata/health.js +2 -2
  116. package/dist/metadata/health.js.map +1 -1
  117. package/dist/metadata/warpRouteConfig.d.ts +134 -0
  118. package/dist/metadata/warpRouteConfig.d.ts.map +1 -0
  119. package/dist/metadata/warpRouteConfig.js +24 -0
  120. package/dist/metadata/warpRouteConfig.js.map +1 -0
  121. package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -1
  122. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  123. package/dist/middleware/account/InterchainAccountDeployer.js +4 -2
  124. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  125. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -1
  126. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  127. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +4 -2
  128. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
  129. package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -1
  130. package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
  131. package/dist/middleware/query/InterchainQueryDeployer.js +4 -2
  132. package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
  133. package/dist/providers/MultiProtocolProvider.d.ts +10 -12
  134. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  135. package/dist/providers/MultiProtocolProvider.js +2 -7
  136. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  137. package/dist/providers/MultiProvider.d.ts +17 -17
  138. package/dist/providers/MultiProvider.d.ts.map +1 -1
  139. package/dist/providers/MultiProvider.js +12 -1
  140. package/dist/providers/MultiProvider.js.map +1 -1
  141. package/dist/providers/ProviderType.d.ts +5 -2
  142. package/dist/providers/ProviderType.d.ts.map +1 -1
  143. package/dist/providers/ProviderType.js +10 -1
  144. package/dist/providers/ProviderType.js.map +1 -1
  145. package/dist/providers/SmartProvider/SmartProvider.d.ts +2 -2
  146. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  147. package/dist/providers/SmartProvider/SmartProvider.js +3 -3
  148. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  149. package/dist/providers/providerBuilders.d.ts.map +1 -1
  150. package/dist/providers/providerBuilders.js +1 -0
  151. package/dist/providers/providerBuilders.js.map +1 -1
  152. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  153. package/dist/router/HyperlaneRouterChecker.js +2 -2
  154. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  155. package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  156. package/dist/router/HyperlaneRouterDeployer.js +2 -3
  157. package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
  158. package/dist/test/metadata-check.js +7 -39
  159. package/dist/test/metadata-check.js.map +1 -1
  160. package/dist/test/testUtils.d.ts +2 -0
  161. package/dist/test/testUtils.d.ts.map +1 -1
  162. package/dist/test/testUtils.js +19 -1
  163. package/dist/test/testUtils.js.map +1 -1
  164. package/dist/token/IToken.d.ts +147 -0
  165. package/dist/token/IToken.d.ts.map +1 -0
  166. package/dist/token/IToken.js +37 -0
  167. package/dist/token/IToken.js.map +1 -0
  168. package/dist/token/Token.d.ts +58 -0
  169. package/dist/token/Token.d.ts.map +1 -0
  170. package/dist/token/Token.js +260 -0
  171. package/dist/token/Token.js.map +1 -0
  172. package/dist/token/Token.test.d.ts +2 -0
  173. package/dist/token/Token.test.d.ts.map +1 -0
  174. package/dist/token/Token.test.js +155 -0
  175. package/dist/token/Token.test.js.map +1 -0
  176. package/dist/token/TokenAmount.d.ts +12 -0
  177. package/dist/token/TokenAmount.d.ts.map +1 -0
  178. package/dist/token/TokenAmount.js +24 -0
  179. package/dist/token/TokenAmount.js.map +1 -0
  180. package/dist/token/TokenAmount.test.d.ts +2 -0
  181. package/dist/token/TokenAmount.test.d.ts.map +1 -0
  182. package/dist/token/TokenAmount.test.js +41 -0
  183. package/dist/token/TokenAmount.test.js.map +1 -0
  184. package/dist/token/TokenConnection.d.ts +81 -0
  185. package/dist/token/TokenConnection.d.ts.map +1 -0
  186. package/dist/token/TokenConnection.js +36 -0
  187. package/dist/token/TokenConnection.js.map +1 -0
  188. package/dist/token/TokenStandard.d.ts +36 -0
  189. package/dist/token/TokenStandard.d.ts.map +1 -0
  190. package/dist/token/TokenStandard.js +118 -0
  191. package/dist/token/TokenStandard.js.map +1 -0
  192. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +29 -30
  193. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  194. package/dist/token/adapters/CosmWasmTokenAdapter.js +65 -50
  195. package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
  196. package/dist/token/adapters/CosmosTokenAdapter.d.ts +11 -9
  197. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  198. package/dist/token/adapters/CosmosTokenAdapter.js +25 -6
  199. package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
  200. package/dist/token/adapters/EvmTokenAdapter.d.ts +27 -16
  201. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  202. package/dist/token/adapters/EvmTokenAdapter.js +69 -23
  203. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  204. package/dist/token/adapters/ITokenAdapter.d.ts +16 -11
  205. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  206. package/dist/token/adapters/SealevelTokenAdapter.d.ts +15 -13
  207. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  208. package/dist/token/adapters/SealevelTokenAdapter.js +17 -15
  209. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  210. package/dist/token/deploy.d.ts +3 -2
  211. package/dist/token/deploy.d.ts.map +1 -1
  212. package/dist/token/deploy.js +4 -2
  213. package/dist/token/deploy.js.map +1 -1
  214. package/dist/types.d.ts +2 -1
  215. package/dist/types.d.ts.map +1 -1
  216. package/dist/warp/WarpCore.d.ts +76 -0
  217. package/dist/warp/WarpCore.d.ts.map +1 -0
  218. package/dist/warp/WarpCore.js +288 -0
  219. package/dist/warp/WarpCore.js.map +1 -0
  220. package/dist/warp/WarpCore.test.d.ts +2 -0
  221. package/dist/warp/WarpCore.test.d.ts.map +1 -0
  222. package/dist/warp/WarpCore.test.js +143 -0
  223. package/dist/warp/WarpCore.test.js.map +1 -0
  224. package/dist/warp/types.d.ts +274 -0
  225. package/dist/warp/types.d.ts.map +1 -0
  226. package/dist/warp/types.js +38 -0
  227. package/dist/warp/types.js.map +1 -0
  228. package/logos/black/cosmwasm.svg +1 -1
  229. package/logos/black/inevm.svg +1 -0
  230. package/logos/black/injective.svg +1 -0
  231. package/logos/black/nautilus.svg +1 -0
  232. package/logos/black/plume.svg +29 -0
  233. package/logos/color/cosmos.svg +1 -1
  234. package/logos/color/cosmwasm.svg +1 -1
  235. package/logos/color/inevm.svg +1 -0
  236. package/logos/color/injective.svg +1 -0
  237. package/logos/color/manta.svg +1 -1
  238. package/logos/color/nautilus.svg +1 -0
  239. package/logos/color/plume.svg +24 -0
  240. package/package.json +5 -4
@@ -0,0 +1,147 @@
1
+ import { z } from 'zod';
2
+ import { Address, Numberish, ProtocolType } from '@hyperlane-xyz/utils';
3
+ import type { MultiProtocolProvider } from '../providers/MultiProtocolProvider';
4
+ import type { ChainName } from '../types';
5
+ import type { TokenAmount } from './TokenAmount';
6
+ import { type TokenConnection } from './TokenConnection';
7
+ import { TokenStandard } from './TokenStandard';
8
+ import type { IHypTokenAdapter, ITokenAdapter } from './adapters/ITokenAdapter';
9
+ export declare const TokenConfigSchema: z.ZodObject<{
10
+ chainName: z.ZodString;
11
+ standard: z.ZodNativeEnum<typeof TokenStandard>;
12
+ decimals: z.ZodNumber;
13
+ symbol: z.ZodString;
14
+ name: z.ZodString;
15
+ addressOrDenom: z.ZodUnion<[z.ZodString, z.ZodNull]>;
16
+ collateralAddressOrDenom: z.ZodOptional<z.ZodString>;
17
+ igpTokenAddressOrDenom: z.ZodOptional<z.ZodString>;
18
+ logoURI: z.ZodOptional<z.ZodString>;
19
+ connections: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
20
+ type: z.ZodOptional<z.ZodLiteral<import("./TokenConnection").TokenConnectionType.Hyperlane>>;
21
+ token: z.ZodString;
22
+ }, "strip", z.ZodTypeAny, {
23
+ token: string;
24
+ type?: import("./TokenConnection").TokenConnectionType.Hyperlane | undefined;
25
+ }, {
26
+ token: string;
27
+ type?: import("./TokenConnection").TokenConnectionType.Hyperlane | undefined;
28
+ }>, z.ZodObject<{
29
+ type: z.ZodLiteral<import("./TokenConnection").TokenConnectionType.Ibc>;
30
+ token: z.ZodString;
31
+ sourcePort: z.ZodString;
32
+ sourceChannel: z.ZodString;
33
+ }, "strip", z.ZodTypeAny, {
34
+ type: import("./TokenConnection").TokenConnectionType.Ibc;
35
+ token: string;
36
+ sourcePort: string;
37
+ sourceChannel: string;
38
+ }, {
39
+ type: import("./TokenConnection").TokenConnectionType.Ibc;
40
+ token: string;
41
+ sourcePort: string;
42
+ sourceChannel: string;
43
+ }>]>, z.ZodObject<{
44
+ type: z.ZodLiteral<import("./TokenConnection").TokenConnectionType.IbcHyperlane>;
45
+ token: z.ZodString;
46
+ sourcePort: z.ZodString;
47
+ sourceChannel: z.ZodString;
48
+ intermediateChainName: z.ZodString;
49
+ intermediateIbcDenom: z.ZodString;
50
+ intermediateRouterAddress: z.ZodString;
51
+ }, "strip", z.ZodTypeAny, {
52
+ type: import("./TokenConnection").TokenConnectionType.IbcHyperlane;
53
+ token: string;
54
+ sourcePort: string;
55
+ sourceChannel: string;
56
+ intermediateChainName: string;
57
+ intermediateIbcDenom: string;
58
+ intermediateRouterAddress: string;
59
+ }, {
60
+ type: import("./TokenConnection").TokenConnectionType.IbcHyperlane;
61
+ token: string;
62
+ sourcePort: string;
63
+ sourceChannel: string;
64
+ intermediateChainName: string;
65
+ intermediateIbcDenom: string;
66
+ intermediateRouterAddress: string;
67
+ }>]>, "many">>;
68
+ }, "strip", z.ZodTypeAny, {
69
+ symbol: string;
70
+ name: string;
71
+ decimals: number;
72
+ chainName: string;
73
+ standard: TokenStandard;
74
+ addressOrDenom: string | null;
75
+ collateralAddressOrDenom?: string | undefined;
76
+ igpTokenAddressOrDenom?: string | undefined;
77
+ logoURI?: string | undefined;
78
+ connections?: ({
79
+ token: string;
80
+ type?: import("./TokenConnection").TokenConnectionType.Hyperlane | undefined;
81
+ } | {
82
+ type: import("./TokenConnection").TokenConnectionType.Ibc;
83
+ token: string;
84
+ sourcePort: string;
85
+ sourceChannel: string;
86
+ } | {
87
+ type: import("./TokenConnection").TokenConnectionType.IbcHyperlane;
88
+ token: string;
89
+ sourcePort: string;
90
+ sourceChannel: string;
91
+ intermediateChainName: string;
92
+ intermediateIbcDenom: string;
93
+ intermediateRouterAddress: string;
94
+ })[] | undefined;
95
+ }, {
96
+ symbol: string;
97
+ name: string;
98
+ decimals: number;
99
+ chainName: string;
100
+ standard: TokenStandard;
101
+ addressOrDenom: string | null;
102
+ collateralAddressOrDenom?: string | undefined;
103
+ igpTokenAddressOrDenom?: string | undefined;
104
+ logoURI?: string | undefined;
105
+ connections?: ({
106
+ token: string;
107
+ type?: import("./TokenConnection").TokenConnectionType.Hyperlane | undefined;
108
+ } | {
109
+ type: import("./TokenConnection").TokenConnectionType.Ibc;
110
+ token: string;
111
+ sourcePort: string;
112
+ sourceChannel: string;
113
+ } | {
114
+ type: import("./TokenConnection").TokenConnectionType.IbcHyperlane;
115
+ token: string;
116
+ sourcePort: string;
117
+ sourceChannel: string;
118
+ intermediateChainName: string;
119
+ intermediateIbcDenom: string;
120
+ intermediateRouterAddress: string;
121
+ })[] | undefined;
122
+ }>;
123
+ export type TokenArgs = Omit<z.infer<typeof TokenConfigSchema>, 'addressOrDenom' | 'connections'> & {
124
+ addressOrDenom: Address | string;
125
+ connections?: Array<TokenConnection>;
126
+ };
127
+ export interface IToken extends TokenArgs {
128
+ protocol: ProtocolType;
129
+ getAdapter(multiProvider: MultiProtocolProvider): ITokenAdapter<unknown>;
130
+ getHypAdapter(multiProvider: MultiProtocolProvider<{
131
+ mailbox?: Address;
132
+ }>, destination?: ChainName): IHypTokenAdapter<unknown>;
133
+ getBalance(multiProvider: MultiProtocolProvider, address: Address): Promise<TokenAmount>;
134
+ amount(amount: Numberish): TokenAmount;
135
+ isNft(): boolean;
136
+ isNative(): boolean;
137
+ isHypToken(): boolean;
138
+ isIbcToken(): boolean;
139
+ isMultiChainToken(): boolean;
140
+ getConnections(): TokenConnection[];
141
+ getConnectionForChain(chain: ChainName): TokenConnection | undefined;
142
+ addConnection(connection: TokenConnection): IToken;
143
+ removeConnection(token: IToken): IToken;
144
+ equals(token: IToken): boolean;
145
+ collateralizes(token: IToken): boolean;
146
+ }
147
+ //# sourceMappingURL=IToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IToken.d.ts","sourceRoot":"","sources":["../../src/token/IToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B5B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,IAAI,CAC1B,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,EACjC,gBAAgB,GAAG,aAAa,CACjC,GAAG;IACF,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,MAAO,SAAQ,SAAS;IACvC,QAAQ,EAAE,YAAY,CAAC;IAEvB,UAAU,CAAC,aAAa,EAAE,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzE,aAAa,CACX,aAAa,EAAE,qBAAqB,CAAC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,EAC3D,WAAW,CAAC,EAAE,SAAS,GACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE7B,UAAU,CACR,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAEvC,KAAK,IAAI,OAAO,CAAC;IACjB,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,OAAO,CAAC;IACtB,UAAU,IAAI,OAAO,CAAC;IACtB,iBAAiB,IAAI,OAAO,CAAC;IAE7B,cAAc,IAAI,eAAe,EAAE,CAAC;IAEpC,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;IACrE,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,CAAC;IACnD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAExC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACxC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenConfigSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const customZodTypes_1 = require("../metadata/customZodTypes");
6
+ const TokenConnection_1 = require("./TokenConnection");
7
+ const TokenStandard_1 = require("./TokenStandard");
8
+ exports.TokenConfigSchema = zod_1.z.object({
9
+ chainName: customZodTypes_1.ZChainName.describe('The name of the chain, must correspond to a chain in the multiProvider chainMetadata'),
10
+ standard: zod_1.z
11
+ .nativeEnum(TokenStandard_1.TokenStandard)
12
+ .describe('The type of token. See TokenStandard for valid values.'),
13
+ decimals: customZodTypes_1.ZUint.lt(256).describe('The decimals value (e.g. 18 for Eth)'),
14
+ symbol: zod_1.z.string().min(1).describe('The symbol of the token'),
15
+ name: zod_1.z.string().min(1).describe('The name of the token'),
16
+ addressOrDenom: zod_1.z
17
+ .string()
18
+ .min(1)
19
+ .or(zod_1.z.null())
20
+ .describe('The address or denom, or null for native tokens'),
21
+ collateralAddressOrDenom: zod_1.z
22
+ .string()
23
+ .min(1)
24
+ .optional()
25
+ .describe('The address or denom of the collateralized token'),
26
+ igpTokenAddressOrDenom: zod_1.z
27
+ .string()
28
+ .min(1)
29
+ .optional()
30
+ .describe('The address or denom of the token for IGP payments'),
31
+ logoURI: zod_1.z.string().optional().describe('The URI of the token logo'),
32
+ connections: zod_1.z
33
+ .array(TokenConnection_1.TokenConnectionConfigSchema)
34
+ .optional()
35
+ .describe('The list of token connections (e.g. warp or IBC)'),
36
+ });
37
+ //# sourceMappingURL=IToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IToken.js","sourceRoot":"","sources":["../../src/token/IToken.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAIxB,+DAA+D;AAK/D,uDAG2B;AAC3B,mDAAgD;AAGnC,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,2BAAU,CAAC,QAAQ,CAC5B,sFAAsF,CACvF;IACD,QAAQ,EAAE,OAAC;SACR,UAAU,CAAC,6BAAa,CAAC;SACzB,QAAQ,CAAC,wDAAwD,CAAC;IACrE,QAAQ,EAAE,sBAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACxE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC7D,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACzD,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,EAAE,CAAC,OAAC,CAAC,IAAI,EAAE,CAAC;SACZ,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,wBAAwB,EAAE,OAAC;SACxB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,sBAAsB,EAAE,OAAC;SACtB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACpE,WAAW,EAAE,OAAC;SACX,KAAK,CAAC,6CAA2B,CAAC;SAClC,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;CAChE,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { MsgTransferEncodeObject } from '@cosmjs/stargate';
2
+ import { Address, Numberish, ProtocolType } from '@hyperlane-xyz/utils';
3
+ import { ChainMetadata } from '../metadata/chainMetadataTypes';
4
+ import { MultiProtocolProvider } from '../providers/MultiProtocolProvider';
5
+ import { ChainName } from '../types';
6
+ import type { IToken, TokenArgs } from './IToken';
7
+ import { TokenAmount } from './TokenAmount';
8
+ import { TokenConnection } from './TokenConnection';
9
+ import type { IHypTokenAdapter, ITokenAdapter } from './adapters/ITokenAdapter';
10
+ export interface Token extends TokenArgs {
11
+ }
12
+ export declare class Token implements IToken {
13
+ readonly protocol: ProtocolType;
14
+ constructor(args: TokenArgs);
15
+ static FromChainMetadataNativeToken(chainMetadata: ChainMetadata): Token;
16
+ /**
17
+ * Returns a TokenAdapter for the token and multiProvider
18
+ * @throws If multiProvider does not contain this token's chain.
19
+ * @throws If token is an NFT (TODO NFT Adapter support)
20
+ */
21
+ getAdapter(multiProvider: MultiProtocolProvider): ITokenAdapter<unknown>;
22
+ /**
23
+ * Returns a HypTokenAdapter for the token and multiProvider
24
+ * @throws If not applicable to this token's standard.
25
+ * @throws If multiProvider does not contain this token's chain.
26
+ * @throws If token is an NFT (TODO NFT Adapter support)
27
+ */
28
+ getHypAdapter(multiProvider: MultiProtocolProvider<{
29
+ mailbox?: Address;
30
+ }>, destination?: ChainName): IHypTokenAdapter<unknown>;
31
+ protected getIbcAdapter(multiProvider: MultiProtocolProvider, connection: TokenConnection): IHypTokenAdapter<MsgTransferEncodeObject>;
32
+ /**
33
+ * Convenience method to create an adapter and return an account balance
34
+ */
35
+ getBalance(multiProvider: MultiProtocolProvider, address: Address): Promise<TokenAmount>;
36
+ amount(amount: Numberish): TokenAmount;
37
+ isNft(): boolean;
38
+ isNative(): boolean;
39
+ isHypToken(): boolean;
40
+ isIbcToken(): boolean;
41
+ isMultiChainToken(): boolean;
42
+ getConnections(): TokenConnection[];
43
+ getConnectionForChain(chain: ChainName): TokenConnection | undefined;
44
+ addConnection(connection: TokenConnection): Token;
45
+ removeConnection(token: Token): Token;
46
+ /**
47
+ * Returns true if tokens refer to the same asset
48
+ */
49
+ equals(token: Token): boolean;
50
+ /**
51
+ * Checks if this token is both:
52
+ * 1) Of a TokenStandard that uses other tokens as collateral (eg. EvmHypCollateral)
53
+ * 2) Has a collateralAddressOrDenom address that matches the given token
54
+ * E.g. ERC20 Token ABC, EvmHypCollateral DEF that wraps ABC, DEF.collateralizes(ABC) === true
55
+ */
56
+ collateralizes(token: Token): boolean;
57
+ }
58
+ //# sourceMappingURL=Token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/token/Token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,YAAY,EAGb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAuB,MAAM,mBAAmB,CAAC;AA6BzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAWhF,MAAM,WAAW,KAAM,SAAQ,SAAS;CAAG;AAE3C,qBAAa,KAAM,YAAW,MAAM;IAClC,SAAgB,QAAQ,EAAE,YAAY,CAAC;gBAE3B,IAAI,EAAE,SAAS;IAK3B,MAAM,CAAC,4BAA4B,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK;IAkBxE;;;;OAIG;IACH,UAAU,CAAC,aAAa,EAAE,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC;IAmExE;;;;;OAKG;IACH,aAAa,CACX,aAAa,EAAE,qBAAqB,CAAC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,EAC3D,WAAW,CAAC,EAAE,SAAS,GACtB,gBAAgB,CAAC,OAAO,CAAC;IAmG5B,SAAS,CAAC,aAAa,CACrB,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,eAAe,GAC1B,gBAAgB,CAAC,uBAAuB,CAAC;IAsC5C;;OAEG;IACG,UAAU,CACd,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,CAAC;IAMvB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW;IAItC,KAAK,IAAI,OAAO;IAIhB,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,OAAO;IAIrB,UAAU,IAAI,OAAO;IAIrB,iBAAiB,IAAI,OAAO;IAI5B,cAAc,IAAI,eAAe,EAAE;IAInC,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS;IAKpE,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,KAAK;IAKjD,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAMrC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAa7B;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAStC"}
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Token = void 0;
4
+ const utils_1 = require("@hyperlane-xyz/utils");
5
+ const TokenAmount_1 = require("./TokenAmount");
6
+ const TokenConnection_1 = require("./TokenConnection");
7
+ const TokenStandard_1 = require("./TokenStandard");
8
+ const CosmWasmTokenAdapter_1 = require("./adapters/CosmWasmTokenAdapter");
9
+ const CosmosTokenAdapter_1 = require("./adapters/CosmosTokenAdapter");
10
+ const EvmTokenAdapter_1 = require("./adapters/EvmTokenAdapter");
11
+ const SealevelTokenAdapter_1 = require("./adapters/SealevelTokenAdapter");
12
+ class Token {
13
+ constructor(args) {
14
+ Object.assign(this, args);
15
+ this.protocol = TokenStandard_1.TOKEN_STANDARD_TO_PROTOCOL[this.standard];
16
+ }
17
+ static FromChainMetadataNativeToken(chainMetadata) {
18
+ const { protocol, name: chainName, nativeToken, logoURI } = chainMetadata;
19
+ (0, utils_1.assert)(nativeToken, `ChainMetadata for ${chainMetadata.name} missing nativeToken`);
20
+ return new Token({
21
+ chainName,
22
+ standard: TokenStandard_1.PROTOCOL_TO_NATIVE_STANDARD[protocol],
23
+ addressOrDenom: nativeToken.denom ?? '',
24
+ decimals: nativeToken.decimals,
25
+ symbol: nativeToken.symbol,
26
+ name: nativeToken.name,
27
+ logoURI,
28
+ });
29
+ }
30
+ /**
31
+ * Returns a TokenAdapter for the token and multiProvider
32
+ * @throws If multiProvider does not contain this token's chain.
33
+ * @throws If token is an NFT (TODO NFT Adapter support)
34
+ */
35
+ getAdapter(multiProvider) {
36
+ const { standard, chainName, addressOrDenom } = this;
37
+ (0, utils_1.assert)(!this.isNft(), 'NFT adapters not yet supported');
38
+ (0, utils_1.assert)(multiProvider.tryGetChainMetadata(chainName), `Token chain ${chainName} not found in multiProvider`);
39
+ if (standard === TokenStandard_1.TokenStandard.ERC20) {
40
+ return new EvmTokenAdapter_1.EvmTokenAdapter(chainName, multiProvider, {
41
+ token: addressOrDenom,
42
+ });
43
+ }
44
+ else if (standard === TokenStandard_1.TokenStandard.EvmNative) {
45
+ return new EvmTokenAdapter_1.EvmNativeTokenAdapter(chainName, multiProvider, {});
46
+ }
47
+ else if (standard === TokenStandard_1.TokenStandard.SealevelSpl) {
48
+ return new SealevelTokenAdapter_1.SealevelTokenAdapter(chainName, multiProvider, { token: addressOrDenom }, false);
49
+ }
50
+ else if (standard === TokenStandard_1.TokenStandard.SealevelSpl2022) {
51
+ return new SealevelTokenAdapter_1.SealevelTokenAdapter(chainName, multiProvider, { token: addressOrDenom }, true);
52
+ }
53
+ else if (standard === TokenStandard_1.TokenStandard.SealevelNative) {
54
+ return new SealevelTokenAdapter_1.SealevelNativeTokenAdapter(chainName, multiProvider, {});
55
+ }
56
+ else if (standard === TokenStandard_1.TokenStandard.CosmosIcs20) {
57
+ throw new Error('Cosmos ICS20 token adapter not yet supported');
58
+ }
59
+ else if (standard === TokenStandard_1.TokenStandard.CosmosNative) {
60
+ return new CosmosTokenAdapter_1.CosmNativeTokenAdapter(chainName, multiProvider, {}, { ibcDenom: addressOrDenom });
61
+ }
62
+ else if (standard === TokenStandard_1.TokenStandard.CW20) {
63
+ return new CosmWasmTokenAdapter_1.CwTokenAdapter(chainName, multiProvider, {
64
+ token: addressOrDenom,
65
+ });
66
+ }
67
+ else if (standard === TokenStandard_1.TokenStandard.CWNative) {
68
+ return new CosmWasmTokenAdapter_1.CwNativeTokenAdapter(chainName, multiProvider, {}, addressOrDenom);
69
+ }
70
+ else if (this.isHypToken()) {
71
+ return this.getHypAdapter(multiProvider);
72
+ }
73
+ else if (this.isIbcToken()) {
74
+ // Passing in a stub connection here because it's not required
75
+ // for an IBC adapter to fulfill the ITokenAdapter interface
76
+ return this.getIbcAdapter(multiProvider, {
77
+ token: this,
78
+ sourcePort: 'transfer',
79
+ sourceChannel: 'channel-0',
80
+ type: TokenConnection_1.TokenConnectionType.Ibc,
81
+ });
82
+ }
83
+ else {
84
+ throw new Error(`No adapter found for token standard: ${standard}`);
85
+ }
86
+ }
87
+ /**
88
+ * Returns a HypTokenAdapter for the token and multiProvider
89
+ * @throws If not applicable to this token's standard.
90
+ * @throws If multiProvider does not contain this token's chain.
91
+ * @throws If token is an NFT (TODO NFT Adapter support)
92
+ */
93
+ getHypAdapter(multiProvider, destination) {
94
+ const { protocol, standard, chainName, addressOrDenom, collateralAddressOrDenom, } = this;
95
+ const chainMetadata = multiProvider.tryGetChainMetadata(chainName);
96
+ const mailbox = chainMetadata?.mailbox;
97
+ (0, utils_1.assert)(this.isMultiChainToken(), `Token standard ${standard} not applicable to hyp adapter`);
98
+ (0, utils_1.assert)(!this.isNft(), 'NFT adapters not yet supported');
99
+ (0, utils_1.assert)(chainMetadata, `Token chain ${chainName} not found in multiProvider`);
100
+ let sealevelAddresses;
101
+ if (protocol === utils_1.ProtocolType.Sealevel) {
102
+ (0, utils_1.assert)(mailbox, `Mailbox required for Sealevel hyp tokens`);
103
+ (0, utils_1.assert)(collateralAddressOrDenom, `collateralAddressOrDenom required for Sealevel hyp tokens`);
104
+ sealevelAddresses = {
105
+ warpRouter: addressOrDenom,
106
+ token: collateralAddressOrDenom,
107
+ mailbox,
108
+ };
109
+ }
110
+ if (standard === TokenStandard_1.TokenStandard.EvmHypNative) {
111
+ return new EvmTokenAdapter_1.EvmHypNativeAdapter(chainName, multiProvider, {
112
+ token: addressOrDenom,
113
+ });
114
+ }
115
+ else if (standard === TokenStandard_1.TokenStandard.EvmHypCollateral) {
116
+ return new EvmTokenAdapter_1.EvmHypCollateralAdapter(chainName, multiProvider, {
117
+ token: addressOrDenom,
118
+ });
119
+ }
120
+ else if (standard === TokenStandard_1.TokenStandard.EvmHypSynthetic) {
121
+ return new EvmTokenAdapter_1.EvmHypSyntheticAdapter(chainName, multiProvider, {
122
+ token: addressOrDenom,
123
+ });
124
+ }
125
+ else if (standard === TokenStandard_1.TokenStandard.SealevelHypNative) {
126
+ return new SealevelTokenAdapter_1.SealevelHypNativeAdapter(chainName, multiProvider, sealevelAddresses, false);
127
+ }
128
+ else if (standard === TokenStandard_1.TokenStandard.SealevelHypCollateral) {
129
+ return new SealevelTokenAdapter_1.SealevelHypCollateralAdapter(chainName, multiProvider, sealevelAddresses, false);
130
+ }
131
+ else if (standard === TokenStandard_1.TokenStandard.SealevelHypSynthetic) {
132
+ return new SealevelTokenAdapter_1.SealevelHypSyntheticAdapter(chainName, multiProvider, sealevelAddresses, false);
133
+ }
134
+ else if (standard === TokenStandard_1.TokenStandard.CwHypNative) {
135
+ return new CosmWasmTokenAdapter_1.CwHypNativeAdapter(chainName, multiProvider, {
136
+ warpRouter: addressOrDenom,
137
+ });
138
+ }
139
+ else if (standard === TokenStandard_1.TokenStandard.CwHypCollateral) {
140
+ (0, utils_1.assert)(collateralAddressOrDenom, 'collateralAddressOrDenom required for CwHypCollateral');
141
+ return new CosmWasmTokenAdapter_1.CwHypCollateralAdapter(chainName, multiProvider, {
142
+ warpRouter: addressOrDenom,
143
+ token: collateralAddressOrDenom,
144
+ });
145
+ }
146
+ else if (standard === TokenStandard_1.TokenStandard.CwHypSynthetic) {
147
+ (0, utils_1.assert)(collateralAddressOrDenom, 'collateralAddressOrDenom required for CwHypSyntheticAdapter');
148
+ return new CosmWasmTokenAdapter_1.CwHypSyntheticAdapter(chainName, multiProvider, {
149
+ warpRouter: addressOrDenom,
150
+ token: collateralAddressOrDenom,
151
+ });
152
+ }
153
+ else if (standard === TokenStandard_1.TokenStandard.CosmosIbc) {
154
+ (0, utils_1.assert)(destination, 'destination required for IBC token adapters');
155
+ const connection = this.getConnectionForChain(destination);
156
+ (0, utils_1.assert)(connection, `No connection found for chain ${destination}`);
157
+ return this.getIbcAdapter(multiProvider, connection);
158
+ }
159
+ else {
160
+ throw new Error(`No hyp adapter found for token standard: ${standard}`);
161
+ }
162
+ }
163
+ getIbcAdapter(multiProvider, connection) {
164
+ if (connection.type === TokenConnection_1.TokenConnectionType.Ibc) {
165
+ const { sourcePort, sourceChannel } = connection;
166
+ return new CosmosTokenAdapter_1.CosmIbcTokenAdapter(this.chainName, multiProvider, {}, { ibcDenom: this.addressOrDenom, sourcePort, sourceChannel });
167
+ }
168
+ else if (connection.type === TokenConnection_1.TokenConnectionType.IbcHyperlane) {
169
+ const { sourcePort, sourceChannel, intermediateChainName, intermediateIbcDenom, intermediateRouterAddress, } = connection;
170
+ const destinationRouterAddress = connection.token.addressOrDenom;
171
+ return new CosmosTokenAdapter_1.CosmIbcToWarpTokenAdapter(this.chainName, multiProvider, {
172
+ intermediateRouterAddress,
173
+ destinationRouterAddress,
174
+ }, {
175
+ ibcDenom: this.addressOrDenom,
176
+ sourcePort,
177
+ sourceChannel,
178
+ intermediateIbcDenom,
179
+ intermediateChainName,
180
+ });
181
+ }
182
+ else {
183
+ throw new Error(`Unsupported IBC connection type: ${connection.type}`);
184
+ }
185
+ }
186
+ /**
187
+ * Convenience method to create an adapter and return an account balance
188
+ */
189
+ async getBalance(multiProvider, address) {
190
+ const adapter = this.getAdapter(multiProvider);
191
+ const balance = await adapter.getBalance(address);
192
+ return new TokenAmount_1.TokenAmount(balance, this);
193
+ }
194
+ amount(amount) {
195
+ return new TokenAmount_1.TokenAmount(amount, this);
196
+ }
197
+ isNft() {
198
+ return TokenStandard_1.TOKEN_NFT_STANDARDS.includes(this.standard);
199
+ }
200
+ isNative() {
201
+ return Object.values(TokenStandard_1.PROTOCOL_TO_NATIVE_STANDARD).includes(this.standard);
202
+ }
203
+ isHypToken() {
204
+ return TokenStandard_1.TOKEN_HYP_STANDARDS.includes(this.standard);
205
+ }
206
+ isIbcToken() {
207
+ return this.standard === TokenStandard_1.TokenStandard.CosmosIbc;
208
+ }
209
+ isMultiChainToken() {
210
+ return TokenStandard_1.TOKEN_MULTI_CHAIN_STANDARDS.includes(this.standard);
211
+ }
212
+ getConnections() {
213
+ return this.connections || [];
214
+ }
215
+ getConnectionForChain(chain) {
216
+ // A token cannot have > 1 connected token for the same chain
217
+ return this.getConnections().filter((t) => t.token.chainName === chain)[0];
218
+ }
219
+ addConnection(connection) {
220
+ this.connections = [...(this.connections || []), connection];
221
+ return this;
222
+ }
223
+ removeConnection(token) {
224
+ const index = this.connections?.findIndex((t) => t.token.equals(token));
225
+ if (index && index >= 0)
226
+ this.connections?.splice(index, 1);
227
+ return this;
228
+ }
229
+ /**
230
+ * Returns true if tokens refer to the same asset
231
+ */
232
+ equals(token) {
233
+ return (this.protocol === token.protocol &&
234
+ this.chainName === token.chainName &&
235
+ this.standard === token.standard &&
236
+ this.decimals === token.decimals &&
237
+ this.addressOrDenom.toLowerCase() ===
238
+ token.addressOrDenom.toLowerCase() &&
239
+ this.collateralAddressOrDenom?.toLowerCase() ===
240
+ token.collateralAddressOrDenom?.toLowerCase());
241
+ }
242
+ /**
243
+ * Checks if this token is both:
244
+ * 1) Of a TokenStandard that uses other tokens as collateral (eg. EvmHypCollateral)
245
+ * 2) Has a collateralAddressOrDenom address that matches the given token
246
+ * E.g. ERC20 Token ABC, EvmHypCollateral DEF that wraps ABC, DEF.collateralizes(ABC) === true
247
+ */
248
+ collateralizes(token) {
249
+ if (token.chainName !== this.chainName)
250
+ return false;
251
+ if (!TokenStandard_1.TOKEN_COLLATERALIZED_STANDARDS.includes(this.standard))
252
+ return false;
253
+ const isCollateralWrapper = this.collateralAddressOrDenom &&
254
+ (0, utils_1.eqAddress)(this.collateralAddressOrDenom, token.addressOrDenom);
255
+ const isNativeWrapper = !this.collateralAddressOrDenom && token.isNative();
256
+ return isCollateralWrapper || isNativeWrapper;
257
+ }
258
+ }
259
+ exports.Token = Token;
260
+ //# sourceMappingURL=Token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Token.js","sourceRoot":"","sources":["../../src/token/Token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Token.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Token.test.d.ts","sourceRoot":"","sources":["../../src/token/Token.test.ts"],"names":[],"mappings":""}