@recoillink/starknet-sdk 0.0.0-stage → 30.0.4

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 (223) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/clients/protocol.d.ts +26 -0
  3. package/dist/clients/protocol.d.ts.map +1 -0
  4. package/dist/clients/protocol.js +56 -0
  5. package/dist/clients/protocol.js.map +1 -0
  6. package/dist/clients/protocol.test.d.ts +2 -0
  7. package/dist/clients/protocol.test.d.ts.map +1 -0
  8. package/dist/clients/protocol.test.js +36 -0
  9. package/dist/clients/protocol.test.js.map +1 -0
  10. package/dist/clients/provider.d.ts +55 -0
  11. package/dist/clients/provider.d.ts.map +1 -0
  12. package/dist/clients/provider.js +432 -0
  13. package/dist/clients/provider.js.map +1 -0
  14. package/dist/clients/provider.test.d.ts +2 -0
  15. package/dist/clients/provider.test.d.ts.map +1 -0
  16. package/dist/clients/provider.test.js +271 -0
  17. package/dist/clients/provider.test.js.map +1 -0
  18. package/dist/clients/signer.d.ts +24 -0
  19. package/dist/clients/signer.d.ts.map +1 -0
  20. package/dist/clients/signer.js +200 -0
  21. package/dist/clients/signer.js.map +1 -0
  22. package/dist/clients/signer.test.d.ts +2 -0
  23. package/dist/clients/signer.test.d.ts.map +1 -0
  24. package/dist/clients/signer.test.js +232 -0
  25. package/dist/clients/signer.test.js.map +1 -0
  26. package/dist/contracts.d.ts +46 -0
  27. package/dist/contracts.d.ts.map +1 -0
  28. package/dist/contracts.js +334 -0
  29. package/dist/contracts.js.map +1 -0
  30. package/dist/contracts.test.d.ts +2 -0
  31. package/dist/contracts.test.d.ts.map +1 -0
  32. package/dist/contracts.test.js +80 -0
  33. package/dist/contracts.test.js.map +1 -0
  34. package/dist/hook/hook-artifact-manager.d.ts +18 -0
  35. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  36. package/dist/hook/hook-artifact-manager.js +69 -0
  37. package/dist/hook/hook-artifact-manager.js.map +1 -0
  38. package/dist/hook/hook-artifact-manager.test.d.ts +2 -0
  39. package/dist/hook/hook-artifact-manager.test.d.ts.map +1 -0
  40. package/dist/hook/hook-artifact-manager.test.js +157 -0
  41. package/dist/hook/hook-artifact-manager.test.js.map +1 -0
  42. package/dist/hook/hook-query.d.ts +7 -0
  43. package/dist/hook/hook-query.d.ts.map +1 -0
  44. package/dist/hook/hook-query.js +29 -0
  45. package/dist/hook/hook-query.js.map +1 -0
  46. package/dist/hook/hook-tx.d.ts +4 -0
  47. package/dist/hook/hook-tx.d.ts.map +1 -0
  48. package/dist/hook/hook-tx.js +19 -0
  49. package/dist/hook/hook-tx.js.map +1 -0
  50. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts +5 -0
  51. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.d.ts.map +1 -0
  52. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js +23 -0
  53. package/dist/hook/interchain-gas-paymaster-hook-artifact-manager.js.map +1 -0
  54. package/dist/hook/merkle-tree-hook-artifact-manager.d.ts +18 -0
  55. package/dist/hook/merkle-tree-hook-artifact-manager.d.ts.map +1 -0
  56. package/dist/hook/merkle-tree-hook-artifact-manager.js +41 -0
  57. package/dist/hook/merkle-tree-hook-artifact-manager.js.map +1 -0
  58. package/dist/hook/protocol-fee-hook-artifact-manager.d.ts +22 -0
  59. package/dist/hook/protocol-fee-hook-artifact-manager.d.ts.map +1 -0
  60. package/dist/hook/protocol-fee-hook-artifact-manager.js +169 -0
  61. package/dist/hook/protocol-fee-hook-artifact-manager.js.map +1 -0
  62. package/dist/hook/unknown-hook-artifact-manager.d.ts +14 -0
  63. package/dist/hook/unknown-hook-artifact-manager.d.ts.map +1 -0
  64. package/dist/hook/unknown-hook-artifact-manager.js +20 -0
  65. package/dist/hook/unknown-hook-artifact-manager.js.map +1 -0
  66. package/dist/index.d.ts +9 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +9 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/ism/aggregation-ism-artifact-reader.d.ts +14 -0
  71. package/dist/ism/aggregation-ism-artifact-reader.d.ts.map +1 -0
  72. package/dist/ism/aggregation-ism-artifact-reader.js +42 -0
  73. package/dist/ism/aggregation-ism-artifact-reader.js.map +1 -0
  74. package/dist/ism/domain-routing-ism-artifact-manager.d.ts +20 -0
  75. package/dist/ism/domain-routing-ism-artifact-manager.d.ts.map +1 -0
  76. package/dist/ism/domain-routing-ism-artifact-manager.js +130 -0
  77. package/dist/ism/domain-routing-ism-artifact-manager.js.map +1 -0
  78. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  79. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  80. package/dist/ism/ism-artifact-manager.js +53 -0
  81. package/dist/ism/ism-artifact-manager.js.map +1 -0
  82. package/dist/ism/ism-artifact-manager.test.d.ts +2 -0
  83. package/dist/ism/ism-artifact-manager.test.d.ts.map +1 -0
  84. package/dist/ism/ism-artifact-manager.test.js +77 -0
  85. package/dist/ism/ism-artifact-manager.test.js.map +1 -0
  86. package/dist/ism/ism-query.d.ts +33 -0
  87. package/dist/ism/ism-query.d.ts.map +1 -0
  88. package/dist/ism/ism-query.js +118 -0
  89. package/dist/ism/ism-query.js.map +1 -0
  90. package/dist/ism/ism-reader.test.d.ts +2 -0
  91. package/dist/ism/ism-reader.test.d.ts.map +1 -0
  92. package/dist/ism/ism-reader.test.js +121 -0
  93. package/dist/ism/ism-reader.test.js.map +1 -0
  94. package/dist/ism/ism-tx.d.ts +28 -0
  95. package/dist/ism/ism-tx.d.ts.map +1 -0
  96. package/dist/ism/ism-tx.js +56 -0
  97. package/dist/ism/ism-tx.js.map +1 -0
  98. package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts +20 -0
  99. package/dist/ism/merkle-root-multisig-ism-artifact-manager.d.ts.map +1 -0
  100. package/dist/ism/merkle-root-multisig-ism-artifact-manager.js +51 -0
  101. package/dist/ism/merkle-root-multisig-ism-artifact-manager.js.map +1 -0
  102. package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts +20 -0
  103. package/dist/ism/message-id-multisig-ism-artifact-manager.d.ts.map +1 -0
  104. package/dist/ism/message-id-multisig-ism-artifact-manager.js +51 -0
  105. package/dist/ism/message-id-multisig-ism-artifact-manager.js.map +1 -0
  106. package/dist/ism/test-ism-artifact-manager.d.ts +20 -0
  107. package/dist/ism/test-ism-artifact-manager.d.ts.map +1 -0
  108. package/dist/ism/test-ism-artifact-manager.js +46 -0
  109. package/dist/ism/test-ism-artifact-manager.js.map +1 -0
  110. package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
  111. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  112. package/dist/mailbox/mailbox-artifact-manager.js +179 -0
  113. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  114. package/dist/mailbox/mailbox-artifact-manager.test.d.ts +2 -0
  115. package/dist/mailbox/mailbox-artifact-manager.test.d.ts.map +1 -0
  116. package/dist/mailbox/mailbox-artifact-manager.test.js +100 -0
  117. package/dist/mailbox/mailbox-artifact-manager.test.js.map +1 -0
  118. package/dist/mailbox/mailbox-query.d.ts +13 -0
  119. package/dist/mailbox/mailbox-query.d.ts.map +1 -0
  120. package/dist/mailbox/mailbox-query.js +29 -0
  121. package/dist/mailbox/mailbox-query.js.map +1 -0
  122. package/dist/mailbox/mailbox-tx.d.ts +25 -0
  123. package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
  124. package/dist/mailbox/mailbox-tx.js +40 -0
  125. package/dist/mailbox/mailbox-tx.js.map +1 -0
  126. package/dist/runtime.d.ts +4 -0
  127. package/dist/runtime.d.ts.map +1 -0
  128. package/dist/runtime.js +4 -0
  129. package/dist/runtime.js.map +1 -0
  130. package/dist/testing/constants.d.ts +8 -0
  131. package/dist/testing/constants.d.ts.map +1 -0
  132. package/dist/testing/constants.js +27 -0
  133. package/dist/testing/constants.js.map +1 -0
  134. package/dist/testing/index.d.ts +4 -0
  135. package/dist/testing/index.d.ts.map +1 -0
  136. package/dist/testing/index.js +4 -0
  137. package/dist/testing/index.js.map +1 -0
  138. package/dist/testing/node.d.ts +4 -0
  139. package/dist/testing/node.d.ts.map +1 -0
  140. package/dist/testing/node.js +78 -0
  141. package/dist/testing/node.js.map +1 -0
  142. package/dist/testing/utils.d.ts +6 -0
  143. package/dist/testing/utils.d.ts.map +1 -0
  144. package/dist/testing/utils.js +15 -0
  145. package/dist/testing/utils.js.map +1 -0
  146. package/dist/tests/e2e-test.setup.d.ts +2 -0
  147. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  148. package/dist/tests/e2e-test.setup.js +24 -0
  149. package/dist/tests/e2e-test.setup.js.map +1 -0
  150. package/dist/tests/hook.e2e-test.d.ts +2 -0
  151. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  152. package/dist/tests/hook.e2e-test.js +100 -0
  153. package/dist/tests/hook.e2e-test.js.map +1 -0
  154. package/dist/tests/ism.e2e-test.d.ts +2 -0
  155. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  156. package/dist/tests/ism.e2e-test.js +123 -0
  157. package/dist/tests/ism.e2e-test.js.map +1 -0
  158. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  159. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  160. package/dist/tests/mailbox.e2e-test.js +115 -0
  161. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  162. package/dist/tests/read-warp-token.e2e-test.d.ts +2 -0
  163. package/dist/tests/read-warp-token.e2e-test.d.ts.map +1 -0
  164. package/dist/tests/read-warp-token.e2e-test.js +67 -0
  165. package/dist/tests/read-warp-token.e2e-test.js.map +1 -0
  166. package/dist/tests/validator_announce.e2e-test.d.ts +2 -0
  167. package/dist/tests/validator_announce.e2e-test.d.ts.map +1 -0
  168. package/dist/tests/validator_announce.e2e-test.js +74 -0
  169. package/dist/tests/validator_announce.e2e-test.js.map +1 -0
  170. package/dist/tests/warp_core.e2e-test.d.ts +2 -0
  171. package/dist/tests/warp_core.e2e-test.d.ts.map +1 -0
  172. package/dist/tests/warp_core.e2e-test.js +217 -0
  173. package/dist/tests/warp_core.e2e-test.js.map +1 -0
  174. package/dist/tests/warp_transfer.e2e-test.d.ts +2 -0
  175. package/dist/tests/warp_transfer.e2e-test.d.ts.map +1 -0
  176. package/dist/tests/warp_transfer.e2e-test.js +149 -0
  177. package/dist/tests/warp_transfer.e2e-test.js.map +1 -0
  178. package/dist/types.d.ts +26 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +2 -0
  181. package/dist/types.js.map +1 -0
  182. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
  183. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  184. package/dist/validator-announce/validator-announce-artifact-manager.js +125 -0
  185. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  186. package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts +2 -0
  187. package/dist/validator-announce/validator-announce-artifact-manager.test.d.ts.map +1 -0
  188. package/dist/validator-announce/validator-announce-artifact-manager.test.js +66 -0
  189. package/dist/validator-announce/validator-announce-artifact-manager.test.js.map +1 -0
  190. package/dist/validator-announce/validator-announce-tx.d.ts +3 -0
  191. package/dist/validator-announce/validator-announce-tx.d.ts.map +1 -0
  192. package/dist/validator-announce/validator-announce-tx.js +12 -0
  193. package/dist/validator-announce/validator-announce-tx.js.map +1 -0
  194. package/dist/warp/collateral-token-artifact-manager.d.ts +14 -0
  195. package/dist/warp/collateral-token-artifact-manager.d.ts.map +1 -0
  196. package/dist/warp/collateral-token-artifact-manager.js +47 -0
  197. package/dist/warp/collateral-token-artifact-manager.js.map +1 -0
  198. package/dist/warp/native-token-artifact-manager.d.ts +13 -0
  199. package/dist/warp/native-token-artifact-manager.d.ts.map +1 -0
  200. package/dist/warp/native-token-artifact-manager.js +33 -0
  201. package/dist/warp/native-token-artifact-manager.js.map +1 -0
  202. package/dist/warp/synthetic-token-artifact-manager.d.ts +15 -0
  203. package/dist/warp/synthetic-token-artifact-manager.d.ts.map +1 -0
  204. package/dist/warp/synthetic-token-artifact-manager.js +53 -0
  205. package/dist/warp/synthetic-token-artifact-manager.js.map +1 -0
  206. package/dist/warp/token-artifact-manager.d.ts +43 -0
  207. package/dist/warp/token-artifact-manager.d.ts.map +1 -0
  208. package/dist/warp/token-artifact-manager.js +233 -0
  209. package/dist/warp/token-artifact-manager.js.map +1 -0
  210. package/dist/warp/warp-artifact-manager.d.ts +14 -0
  211. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  212. package/dist/warp/warp-artifact-manager.js +54 -0
  213. package/dist/warp/warp-artifact-manager.js.map +1 -0
  214. package/dist/warp/warp-artifact-manager.test.d.ts +2 -0
  215. package/dist/warp/warp-artifact-manager.test.d.ts.map +1 -0
  216. package/dist/warp/warp-artifact-manager.test.js +93 -0
  217. package/dist/warp/warp-artifact-manager.test.js.map +1 -0
  218. package/dist/warp/warp-tx.d.ts +47 -0
  219. package/dist/warp/warp-tx.d.ts.map +1 -0
  220. package/dist/warp/warp-tx.js +110 -0
  221. package/dist/warp/warp-tx.js.map +1 -0
  222. package/package.json +63 -3
  223. package/README.md +0 -3
@@ -0,0 +1,432 @@
1
+ import { BlockTag, CairoOption, CairoOptionVariant, RpcProvider, shortString, } from 'starknet';
2
+ import { AltVM } from '@recoillink/provider-sdk';
3
+ import { composeWarpDeployGas, } from '@recoillink/provider-sdk/warp';
4
+ import { ContractType, getContractClassHash, } from '@recoillink/starknet-core/runtime';
5
+ import { addressToBytes32, assert, ensure0x, isNullish, } from '@recoillink/utils';
6
+ import { StarknetContractName, callContract, getFeeTokenAddress, getOnChainStarknetContract, getStarknetContract, isProbeMiss, normalizeRoutersAddress, normalizeStarknetAddressSafe, populateInvokeTx, toBigInt, toNumber, } from '../contracts.js';
7
+ import { isMessageDelivered } from '../mailbox/mailbox-query.js';
8
+ let tokenTypeByClassHash;
9
+ function getRpcSpecVersion(rpcUrl) {
10
+ return /\/rpc\/v0_8(?:\/|$)/i.test(new URL(rpcUrl).pathname)
11
+ ? '0.8.1'
12
+ : '0.9.0';
13
+ }
14
+ function getTokenTypeByClassHash() {
15
+ if (tokenTypeByClassHash) {
16
+ return tokenTypeByClassHash;
17
+ }
18
+ const entries = [
19
+ [
20
+ getContractClassHash(StarknetContractName.HYP_ERC20, ContractType.TOKEN),
21
+ AltVM.TokenType.synthetic,
22
+ ],
23
+ [
24
+ getContractClassHash(StarknetContractName.HYP_ERC20_COLLATERAL, ContractType.TOKEN),
25
+ AltVM.TokenType.collateral,
26
+ ],
27
+ [
28
+ getContractClassHash(StarknetContractName.HYP_NATIVE, ContractType.TOKEN),
29
+ AltVM.TokenType.native,
30
+ ],
31
+ ];
32
+ tokenTypeByClassHash = new Map(entries.map(([classHash, tokenType]) => [
33
+ BigInt(classHash).toString(),
34
+ tokenType,
35
+ ]));
36
+ return tokenTypeByClassHash;
37
+ }
38
+ // Warp-deploy cost breakdown for Starknet. Composed additively in
39
+ // getMinGasForWarpDeploy() based on the WarpConfig shape. Values are native
40
+ // denom (fri, 18 decimals).
41
+ //
42
+ // The base is a devnet-observed base-router deploy floor with safety margin;
43
+ // mainnet gas prices differ, so treat it as a lower-bound advisory. Per-feature
44
+ // deltas stay 0n pending measured feature-heavy deploys.
45
+ const WARP_DEPLOY_BASE_FRI = 10000000000000000000n; // 10 STRK base router deploy
46
+ const WARP_DEPLOY_CROSS_COLLATERAL_EXTRA_FRI = 0n; // + crossCollateral router extras
47
+ const WARP_DEPLOY_FEE_PROGRAM_FRI = 0n; // + fee program (config.fee object)
48
+ const WARP_DEPLOY_CUSTOM_ISM_FRI = 0n; // + custom ISM (config.interchainSecurityModule object)
49
+ const WARP_DEPLOY_CUSTOM_HOOK_FRI = 0n; // + custom hook / IGP (config.hook object)
50
+ export class StarknetProvider {
51
+ provider;
52
+ metadata;
53
+ rpcUrls;
54
+ static connect(metadata) {
55
+ const rpcUrls = (metadata.rpcUrls ?? []).map(({ http }) => http);
56
+ const rpcUrl = rpcUrls[0];
57
+ assert(rpcUrl, 'at least one rpc url is required');
58
+ const blockTime = metadata.blocks?.estimateBlockTime;
59
+ const transactionRetryIntervalFallback = !isNullish(blockTime) && blockTime <= 1 ? 1000 : undefined;
60
+ const provider = new RpcProvider({
61
+ nodeUrl: rpcUrl,
62
+ // starknet.js v8 defaults to RPC 0.9, whose receipt parser does not
63
+ // recognize the REJECTED finality status returned by RPC 0.8 endpoints.
64
+ specVersion: getRpcSpecVersion(rpcUrl),
65
+ transactionRetryIntervalFallback,
66
+ // Default reads to the latest accepted block instead of starknet.js's
67
+ // `pending` default. Some RPC providers reject `block_id: "pending"`
68
+ // (-32602 Invalid block id), and reading already-finalized state at
69
+ // `latest` is both universally supported and semantically correct.
70
+ blockIdentifier: BlockTag.LATEST,
71
+ });
72
+ return new StarknetProvider(provider, metadata, rpcUrls);
73
+ }
74
+ constructor(provider, metadata, rpcUrls) {
75
+ this.provider = provider;
76
+ this.metadata = metadata;
77
+ this.rpcUrls = rpcUrls;
78
+ }
79
+ async getMinGasForWarpDeploy(warpConfig) {
80
+ return composeWarpDeployGas(warpConfig, {
81
+ base: WARP_DEPLOY_BASE_FRI,
82
+ crossCollateralExtra: WARP_DEPLOY_CROSS_COLLATERAL_EXTRA_FRI,
83
+ feeProgram: WARP_DEPLOY_FEE_PROGRAM_FRI,
84
+ customIsm: WARP_DEPLOY_CUSTOM_ISM_FRI,
85
+ customHook: WARP_DEPLOY_CUSTOM_HOOK_FRI,
86
+ });
87
+ }
88
+ getRawProvider() {
89
+ return this.provider;
90
+ }
91
+ withContract(name, address, providerOrAccount, contractType) {
92
+ return getStarknetContract(name, address, providerOrAccount ?? this.provider, contractType);
93
+ }
94
+ get accountAddress() {
95
+ throw new Error('StarknetProvider has no signer account');
96
+ }
97
+ get feeTokenAddress() {
98
+ return getFeeTokenAddress({
99
+ chainName: this.metadata.name,
100
+ nativeDenom: this.metadata.nativeToken?.denom,
101
+ });
102
+ }
103
+ getFeeTokenAddress() {
104
+ return this.feeTokenAddress;
105
+ }
106
+ parseString(value) {
107
+ if (typeof value === 'string')
108
+ return value;
109
+ if (typeof value === 'number' || typeof value === 'bigint') {
110
+ try {
111
+ // oxlint-disable-next-line typescript/no-deprecated -- starknet.js v8 deprecates this but ships no public utility replacement.
112
+ return shortString.decodeShortString(ensure0x(BigInt(value).toString(16)));
113
+ }
114
+ catch {
115
+ return value.toString();
116
+ }
117
+ }
118
+ if (value && typeof value === 'object') {
119
+ if ('value' in value)
120
+ return this.parseString(value.value);
121
+ const toStringFn = Reflect.get(value, 'toString');
122
+ if (typeof toStringFn === 'function' &&
123
+ toStringFn !== Object.prototype.toString) {
124
+ const parsed = Reflect.apply(toStringFn, value, []);
125
+ if (typeof parsed === 'string' && parsed !== '[object Object]') {
126
+ return parsed;
127
+ }
128
+ }
129
+ }
130
+ return '';
131
+ }
132
+ async populateInvokeCall(contract, method, args = []) {
133
+ const tx = await populateInvokeTx(contract, method, args);
134
+ assert(tx.kind === 'invoke', 'Expected invoke Starknet transaction');
135
+ return {
136
+ contractAddress: normalizeStarknetAddressSafe(tx.contractAddress),
137
+ entrypoint: tx.entrypoint,
138
+ calldata: tx.calldata,
139
+ };
140
+ }
141
+ unwrapBalance(value) {
142
+ if (value && typeof value === 'object' && 'balance' in value) {
143
+ return value.balance;
144
+ }
145
+ return value;
146
+ }
147
+ async determineTokenType(tokenAddress) {
148
+ const address = normalizeStarknetAddressSafe(tokenAddress);
149
+ const classHash = await this.provider.getClassHashAt(address);
150
+ const tokenType = getTokenTypeByClassHash().get(BigInt(classHash).toString());
151
+ if (tokenType)
152
+ return tokenType;
153
+ try {
154
+ const collateral = this.withContract(StarknetContractName.HYP_ERC20_COLLATERAL, address, this.provider, ContractType.TOKEN);
155
+ await callContract(collateral, 'get_wrapped_token');
156
+ return AltVM.TokenType.collateral;
157
+ }
158
+ catch (error) {
159
+ if (!isProbeMiss(error))
160
+ throw error;
161
+ }
162
+ try {
163
+ const native = this.withContract(StarknetContractName.HYP_NATIVE, address, this.provider, ContractType.TOKEN);
164
+ await callContract(native, 'native_token');
165
+ return AltVM.TokenType.native;
166
+ }
167
+ catch (error) {
168
+ if (!isProbeMiss(error))
169
+ throw error;
170
+ }
171
+ return AltVM.TokenType.synthetic;
172
+ }
173
+ /**
174
+ * Reads ERC20 metadata by fetching the contract's own ABI from chain,
175
+ * so starknet.js parses responses correctly regardless of whether
176
+ * the contract uses felt252 (Cairo 0) or ByteArray (Cairo 1).
177
+ */
178
+ async getTokenMetadata(tokenAddress) {
179
+ const nativeToken = this.metadata.nativeToken;
180
+ if (nativeToken?.denom &&
181
+ normalizeStarknetAddressSafe(tokenAddress) ===
182
+ normalizeStarknetAddressSafe(nativeToken.denom)) {
183
+ return {
184
+ name: nativeToken.name,
185
+ symbol: nativeToken.symbol,
186
+ decimals: nativeToken.decimals ?? 18,
187
+ };
188
+ }
189
+ const address = normalizeStarknetAddressSafe(tokenAddress);
190
+ const token = await getOnChainStarknetContract(this.provider, address);
191
+ const [name, symbol, decimals] = await Promise.all([
192
+ callContract(token, 'name'),
193
+ callContract(token, 'symbol'),
194
+ callContract(token, 'decimals'),
195
+ ]);
196
+ return {
197
+ name: this.parseString(name),
198
+ symbol: this.parseString(symbol),
199
+ decimals: toNumber(decimals),
200
+ };
201
+ }
202
+ parseHookVariant(variant) {
203
+ const upper = variant.toUpperCase();
204
+ if (upper.includes('MERKLE_TREE'))
205
+ return AltVM.HookType.MERKLE_TREE;
206
+ if (upper.includes('PROTOCOL_FEE'))
207
+ return AltVM.HookType.PROTOCOL_FEE;
208
+ if (upper.includes('INTERCHAIN_GAS_PAYMASTER')) {
209
+ return AltVM.HookType.INTERCHAIN_GAS_PAYMASTER;
210
+ }
211
+ return AltVM.HookType.CUSTOM;
212
+ }
213
+ parseIsmVariant(variant) {
214
+ const upper = variant.toUpperCase();
215
+ if (upper.includes('TEST') ||
216
+ upper.includes('NOOP') ||
217
+ upper.includes('NULL') ||
218
+ upper.includes('UNUSED')) {
219
+ return AltVM.IsmType.TEST_ISM;
220
+ }
221
+ if (upper.includes('MERKLE_ROOT_MULTISIG')) {
222
+ return AltVM.IsmType.MERKLE_ROOT_MULTISIG;
223
+ }
224
+ if (upper.includes('MESSAGE_ID_MULTISIG')) {
225
+ return AltVM.IsmType.MESSAGE_ID_MULTISIG;
226
+ }
227
+ if (upper.includes('ROUTING')) {
228
+ return AltVM.IsmType.ROUTING;
229
+ }
230
+ return AltVM.IsmType.CUSTOM;
231
+ }
232
+ // ### QUERY BASE ###
233
+ async isHealthy() {
234
+ try {
235
+ await this.provider.getBlockNumber();
236
+ return true;
237
+ }
238
+ catch {
239
+ return false;
240
+ }
241
+ }
242
+ getRpcUrls() {
243
+ return this.rpcUrls;
244
+ }
245
+ async getHeight() {
246
+ return this.provider.getBlockNumber();
247
+ }
248
+ async getBalance(req) {
249
+ const tokenAddress = req.denom
250
+ ? normalizeStarknetAddressSafe(req.denom)
251
+ : this.feeTokenAddress;
252
+ const token = this.withContract(StarknetContractName.ETHER, tokenAddress, this.provider, ContractType.TOKEN);
253
+ let balance;
254
+ try {
255
+ balance = await callContract(token, 'balanceOf', [
256
+ normalizeStarknetAddressSafe(req.address),
257
+ ]);
258
+ }
259
+ catch (error) {
260
+ if (!isProbeMiss(error))
261
+ throw error;
262
+ balance = await callContract(token, 'balance_of', [
263
+ normalizeStarknetAddressSafe(req.address),
264
+ ]);
265
+ }
266
+ return toBigInt(this.unwrapBalance(balance));
267
+ }
268
+ async getTotalSupply(req) {
269
+ const tokenAddress = req.denom
270
+ ? normalizeStarknetAddressSafe(req.denom)
271
+ : this.feeTokenAddress;
272
+ const token = this.withContract(StarknetContractName.ETHER, tokenAddress, this.provider, ContractType.TOKEN);
273
+ return toBigInt(await callContract(token, 'total_supply'));
274
+ }
275
+ async estimateTransactionFee(_req) {
276
+ throw new Error('Starknet transaction fee estimation is unsupported without an account-backed signer');
277
+ }
278
+ async isMessageDelivered(req) {
279
+ return isMessageDelivered(this.provider, req.mailboxAddress, req.messageId);
280
+ }
281
+ // ### QUERY WARP ###
282
+ async getToken(req) {
283
+ const tokenAddress = normalizeStarknetAddressSafe(req.tokenAddress);
284
+ const token = this.withContract(StarknetContractName.HYP_ERC20, tokenAddress, this.provider, ContractType.TOKEN);
285
+ const tokenType = await this.determineTokenType(tokenAddress);
286
+ const [owner, mailboxAddress, ismAddress, hookAddress] = await Promise.all([
287
+ callContract(token, 'owner'),
288
+ callContract(token, 'mailbox'),
289
+ callContract(token, 'interchain_security_module'),
290
+ callContract(token, 'get_hook'),
291
+ ]);
292
+ let denom = tokenAddress;
293
+ let name = '';
294
+ let symbol = '';
295
+ let decimals = this.metadata.nativeToken?.decimals ?? 18;
296
+ try {
297
+ const metadata = await this.getTokenMetadata(tokenAddress);
298
+ name = metadata.name;
299
+ symbol = metadata.symbol;
300
+ decimals = metadata.decimals;
301
+ }
302
+ catch (error) {
303
+ if (!isProbeMiss(error))
304
+ throw error;
305
+ }
306
+ if (tokenType === AltVM.TokenType.collateral) {
307
+ const collateral = this.withContract(StarknetContractName.HYP_ERC20_COLLATERAL, tokenAddress, this.provider, ContractType.TOKEN);
308
+ const wrapped = await callContract(collateral, 'get_wrapped_token');
309
+ denom = normalizeStarknetAddressSafe(wrapped);
310
+ try {
311
+ const wrappedMeta = await this.getTokenMetadata(denom);
312
+ name = wrappedMeta.name;
313
+ symbol = wrappedMeta.symbol;
314
+ decimals = wrappedMeta.decimals;
315
+ }
316
+ catch (error) {
317
+ if (!isProbeMiss(error))
318
+ throw error;
319
+ }
320
+ }
321
+ else if (tokenType === AltVM.TokenType.native) {
322
+ const native = this.withContract(StarknetContractName.HYP_NATIVE, tokenAddress, this.provider, ContractType.TOKEN);
323
+ try {
324
+ const nativeTokenAddress = await callContract(native, 'native_token');
325
+ denom = normalizeStarknetAddressSafe(nativeTokenAddress);
326
+ }
327
+ catch (error) {
328
+ if (!isProbeMiss(error))
329
+ throw error;
330
+ denom = this.metadata.nativeToken?.denom ?? this.feeTokenAddress;
331
+ }
332
+ name = this.metadata.nativeToken?.name ?? name;
333
+ symbol = this.metadata.nativeToken?.symbol ?? symbol;
334
+ decimals = this.metadata.nativeToken?.decimals ?? decimals;
335
+ }
336
+ return {
337
+ address: tokenAddress,
338
+ owner: normalizeStarknetAddressSafe(owner),
339
+ tokenType,
340
+ mailboxAddress: normalizeStarknetAddressSafe(mailboxAddress),
341
+ ismAddress: normalizeStarknetAddressSafe(ismAddress),
342
+ hookAddress: normalizeStarknetAddressSafe(hookAddress),
343
+ denom,
344
+ name,
345
+ symbol,
346
+ decimals,
347
+ };
348
+ }
349
+ async getRemoteRouters(req) {
350
+ const token = this.withContract(StarknetContractName.HYP_ERC20, req.tokenAddress, this.provider, ContractType.TOKEN);
351
+ const domains = await callContract(token, 'domains');
352
+ assert(Array.isArray(domains), 'Expected Starknet token domains array');
353
+ const remoteRouters = await Promise.all(domains.map(async (domainId) => {
354
+ const domain = toNumber(domainId);
355
+ const [routerAddress, gas] = await Promise.all([
356
+ callContract(token, 'routers', [domainId]),
357
+ callContract(token, 'destination_gas', [domainId]).catch(() => 0),
358
+ ]);
359
+ return {
360
+ receiverDomainId: domain,
361
+ receiverAddress: normalizeRoutersAddress(routerAddress),
362
+ gas: toBigInt(gas).toString(),
363
+ };
364
+ }));
365
+ return {
366
+ address: normalizeStarknetAddressSafe(req.tokenAddress),
367
+ remoteRouters,
368
+ };
369
+ }
370
+ async getBridgedSupply(req) {
371
+ const tokenInfo = await this.getToken({ tokenAddress: req.tokenAddress });
372
+ const token = this.withContract(StarknetContractName.HYP_ERC20, req.tokenAddress, this.provider, ContractType.TOKEN);
373
+ if (tokenInfo.tokenType === AltVM.TokenType.synthetic) {
374
+ return toBigInt(await callContract(token, 'total_supply'));
375
+ }
376
+ return this.getBalance({
377
+ address: req.tokenAddress,
378
+ denom: tokenInfo.denom,
379
+ });
380
+ }
381
+ async quoteRemoteTransfer(req) {
382
+ const token = this.withContract(StarknetContractName.HYP_ERC20, req.tokenAddress, this.provider, ContractType.TOKEN);
383
+ const quote = await callContract(token, 'quote_gas_payment', [
384
+ req.destinationDomainId,
385
+ ]);
386
+ return {
387
+ denom: this.feeTokenAddress,
388
+ amount: toBigInt(quote),
389
+ };
390
+ }
391
+ // ### TRANSFER TXS ###
392
+ async getTransferTransaction(req) {
393
+ const denom = req.denom
394
+ ? normalizeStarknetAddressSafe(req.denom)
395
+ : this.feeTokenAddress;
396
+ const token = this.withContract(StarknetContractName.ETHER, denom, this.provider, ContractType.TOKEN);
397
+ return populateInvokeTx(token, 'transfer', [
398
+ normalizeStarknetAddressSafe(req.recipient),
399
+ req.amount,
400
+ ]);
401
+ }
402
+ async getRemoteTransferTransaction(req) {
403
+ return this.buildRemoteTransferTransaction(req);
404
+ }
405
+ async buildRemoteTransferTransaction(req, tokenInfo) {
406
+ if (req.customHookAddress || req.customHookMetadata) {
407
+ throw new Error('Custom hook metadata/addresses are unsupported for Starknet transfer_remote in provider-sdk');
408
+ }
409
+ const tokenType = tokenInfo?.tokenType ?? (await this.determineTokenType(req.tokenAddress));
410
+ const token = this.withContract(StarknetContractName.HYP_ERC20, req.tokenAddress, this.provider, ContractType.TOKEN);
411
+ const noneOption = new CairoOption(CairoOptionVariant.None);
412
+ let value;
413
+ if (tokenType === AltVM.TokenType.native) {
414
+ value = toBigInt(req.amount) + toBigInt(req.maxFee.amount);
415
+ }
416
+ else if (tokenType === AltVM.TokenType.collateral) {
417
+ value = toBigInt(req.maxFee.amount);
418
+ }
419
+ else {
420
+ value = toBigInt(req.maxFee.amount);
421
+ }
422
+ return populateInvokeTx(token, 'transfer_remote', [
423
+ req.destinationDomainId,
424
+ addressToBytes32(req.recipient),
425
+ req.amount,
426
+ value,
427
+ noneOption,
428
+ noneOption,
429
+ ]);
430
+ }
431
+ }
432
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/clients/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.test.d.ts","sourceRoot":"","sources":["../../src/clients/provider.test.ts"],"names":[],"mappings":""}