@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,125 @@
1
+ import { ArtifactState, } from '@recoillink/provider-sdk/artifact';
2
+ import { assert, isZeroishAddress, rootLogger } from '@recoillink/utils';
3
+ import { hash } from 'starknet';
4
+ import { StarknetProvider } from '../clients/provider.js';
5
+ import { StarknetSigner } from '../clients/signer.js';
6
+ import { getCreateValidatorAnnounceTx } from './validator-announce-tx.js';
7
+ import { normalizeStarknetAddressSafe, shouldFallbackStorageRead, } from '../contracts.js';
8
+ const STARKNET_STORAGE_ADDRESS_BOUND = (1n << 251n) - 256n;
9
+ const logger = rootLogger.child({
10
+ module: 'starknet-validator-announce-artifact-manager',
11
+ });
12
+ const MAILBOX_STORAGE_KEYS = ['mailbox', '_mailbox'].map((name) => hash.starknetKeccak(name) % STARKNET_STORAGE_ADDRESS_BOUND);
13
+ async function readStorageAddress(provider, contractAddress, key) {
14
+ try {
15
+ const value = await provider
16
+ .getRawProvider()
17
+ .getStorageAt(contractAddress, `0x${key.toString(16)}`);
18
+ return isZeroishAddress(value)
19
+ ? undefined
20
+ : normalizeStarknetAddressSafe(value);
21
+ }
22
+ catch (error) {
23
+ if (!shouldFallbackStorageRead(error)) {
24
+ throw error;
25
+ }
26
+ logger.warn({
27
+ contractAddress,
28
+ key: `0x${key.toString(16)}`,
29
+ error,
30
+ }, 'Falling back to lossy Starknet validator announce mailbox read after unsupported storage lookup');
31
+ return undefined;
32
+ }
33
+ }
34
+ async function readMailboxAddressFromStorage(provider, contractAddress) {
35
+ const candidates = (await Promise.all(MAILBOX_STORAGE_KEYS.map(async (key) => readStorageAddress(provider, contractAddress, key)))).filter((value) => Boolean(value));
36
+ if (candidates.length === 0)
37
+ return undefined;
38
+ const uniqueCandidates = [
39
+ ...new Set(candidates.map((value) => normalizeStarknetAddressSafe(value))),
40
+ ];
41
+ return uniqueCandidates.length === 1 ? uniqueCandidates[0] : undefined;
42
+ }
43
+ class StarknetValidatorAnnounceReader {
44
+ provider;
45
+ constructor(provider) {
46
+ this.provider = provider;
47
+ }
48
+ async read(address) {
49
+ const normalizedAddress = normalizeStarknetAddressSafe(address);
50
+ const mailboxAddress = await readMailboxAddressFromStorage(this.provider, normalizedAddress);
51
+ const config = {
52
+ mailboxAddress: mailboxAddress ?? '',
53
+ };
54
+ if (!mailboxAddress) {
55
+ logger.warn({ validatorAnnounceAddress: normalizedAddress }, 'Read Starknet validator announce without mailboxAddress; storage lookup was unavailable or ambiguous');
56
+ Object.defineProperty(config, '__mailboxAddressUnknown', {
57
+ enumerable: true,
58
+ value: true,
59
+ });
60
+ }
61
+ return {
62
+ artifactState: ArtifactState.DEPLOYED,
63
+ config,
64
+ deployed: {
65
+ address: normalizedAddress,
66
+ },
67
+ };
68
+ }
69
+ }
70
+ class StarknetValidatorAnnounceWriter extends StarknetValidatorAnnounceReader {
71
+ signer;
72
+ constructor(provider, signer) {
73
+ super(provider);
74
+ this.signer = signer;
75
+ }
76
+ async create(artifact) {
77
+ const tx = getCreateValidatorAnnounceTx(this.signer.getSignerAddress(), artifact.config.mailboxAddress);
78
+ const receipt = await this.signer.sendAndConfirmTransaction(tx);
79
+ const validatorAnnounceId = receipt.contractAddress;
80
+ assert(validatorAnnounceId, 'failed to get Starknet validator announce address');
81
+ return [
82
+ {
83
+ artifactState: ArtifactState.DEPLOYED,
84
+ config: artifact.config,
85
+ deployed: {
86
+ address: normalizeStarknetAddressSafe(validatorAnnounceId),
87
+ },
88
+ },
89
+ [receipt],
90
+ ];
91
+ }
92
+ async update(_artifact) {
93
+ return [];
94
+ }
95
+ }
96
+ export class StarknetValidatorAnnounceArtifactManager {
97
+ provider;
98
+ constructor(chainMetadata) {
99
+ this.provider = StarknetProvider.connect(chainMetadata);
100
+ }
101
+ requireStarknetSigner(signer) {
102
+ assert(signer instanceof StarknetSigner, 'Expected StarknetSigner');
103
+ return signer;
104
+ }
105
+ async readValidatorAnnounce(address) {
106
+ return this.createReader('validatorAnnounce').read(address);
107
+ }
108
+ createReader(type) {
109
+ const readers = {
110
+ validatorAnnounce: new StarknetValidatorAnnounceReader(this.provider),
111
+ };
112
+ const reader = readers[type];
113
+ assert(reader, 'Unsupported Starknet validator announce type');
114
+ return reader;
115
+ }
116
+ createWriter(type, signer) {
117
+ const writerFactories = {
118
+ validatorAnnounce: () => new StarknetValidatorAnnounceWriter(this.provider, this.requireStarknetSigner(signer)),
119
+ };
120
+ const writerFactory = writerFactories[type];
121
+ assert(writerFactory, 'Unsupported Starknet validator announce type');
122
+ return writerFactory();
123
+ }
124
+ }
125
+ //# sourceMappingURL=validator-announce-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce-artifact-manager.js","sourceRoot":"","sources":["../../src/validator-announce/validator-announce-artifact-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator-announce-artifact-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce-artifact-manager.test.d.ts","sourceRoot":"","sources":["../../src/validator-announce/validator-announce-artifact-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { expect } from 'chai';
2
+ import { RpcProvider } from 'starknet';
3
+ import { ProtocolType } from '@recoillink/provider-sdk';
4
+ import { ArtifactState } from '@recoillink/provider-sdk/artifact';
5
+ import { StarknetSigner } from '../clients/signer.js';
6
+ import { StarknetValidatorAnnounceArtifactManager } from './validator-announce-artifact-manager.js';
7
+ describe('StarknetValidatorAnnounceArtifactManager', () => {
8
+ const chainMetadata = {
9
+ name: 'starknetsepolia',
10
+ protocol: ProtocolType.Starknet,
11
+ chainId: 'SN_SEPOLIA',
12
+ domainId: 421614,
13
+ rpcUrls: [{ http: 'http://localhost:9545' }],
14
+ };
15
+ class MockStarknetSigner extends StarknetSigner {
16
+ capturedTxs = [];
17
+ constructor() {
18
+ super(new RpcProvider({ nodeUrl: 'http://localhost:9545' }), chainMetadata, ['http://localhost:9545'], '0x1', '0x1111111111111111111111111111111111111111111111111111111111111111');
19
+ }
20
+ async sendAndConfirmTransaction(tx) {
21
+ this.capturedTxs.push(tx);
22
+ return { transactionHash: '0x1', contractAddress: '0xabc' };
23
+ }
24
+ }
25
+ it('throws for unsupported reader type', () => {
26
+ const manager = new StarknetValidatorAnnounceArtifactManager(chainMetadata);
27
+ expect(() => {
28
+ // @ts-expect-error testing runtime validation for unsupported value
29
+ manager.createReader('unsupported');
30
+ }).to.throw(/Unsupported Starknet validator announce type/i);
31
+ });
32
+ it('throws for unsupported writer type', () => {
33
+ const manager = new StarknetValidatorAnnounceArtifactManager(chainMetadata);
34
+ expect(() => {
35
+ // @ts-expect-error testing runtime validation for unsupported value
36
+ manager.createWriter('unsupported', {});
37
+ }).to.throw(/Unsupported Starknet validator announce type/i);
38
+ });
39
+ it('returns validator announce deployment receipts', async () => {
40
+ const manager = new StarknetValidatorAnnounceArtifactManager(chainMetadata);
41
+ const signer = new MockStarknetSigner();
42
+ const writer = manager.createWriter('validatorAnnounce', signer);
43
+ const [, receipts] = await writer.create({
44
+ artifactState: ArtifactState.NEW,
45
+ config: { mailboxAddress: '0x123' },
46
+ });
47
+ expect(receipts).to.have.length(1);
48
+ expect(signer.capturedTxs).to.have.length(1);
49
+ expect(signer.capturedTxs[0]?.kind).to.equal('deploy');
50
+ });
51
+ it('marks mailboxAddress as unknown when storage probing is unavailable', async () => {
52
+ const manager = new StarknetValidatorAnnounceArtifactManager(chainMetadata);
53
+ const provider = Reflect.get(manager, 'provider');
54
+ provider.getRawProvider = () => ({
55
+ getStorageAt: async () => {
56
+ const error = new Error('method not found');
57
+ Reflect.set(error, 'code', -32601);
58
+ throw error;
59
+ },
60
+ });
61
+ const artifact = await manager.readValidatorAnnounce('0xabc');
62
+ expect(artifact.config.mailboxAddress).to.equal('');
63
+ expect(Reflect.get(artifact.config, '__mailboxAddressUnknown')).to.equal(true);
64
+ });
65
+ });
66
+ //# sourceMappingURL=validator-announce-artifact-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce-artifact-manager.test.js","sourceRoot":"","sources":["../../src/validator-announce/validator-announce-artifact-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type StarknetAnnotatedTx } from '../types.js';
2
+ export declare function getCreateValidatorAnnounceTx(signer: string, mailboxAddress: string): StarknetAnnotatedTx;
3
+ //# sourceMappingURL=validator-announce-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce-tx.d.ts","sourceRoot":"","sources":["../../src/validator-announce/validator-announce-tx.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,mBAAmB,CASrB"}
@@ -0,0 +1,12 @@
1
+ import { StarknetContractName, normalizeStarknetAddressSafe, } from '../contracts.js';
2
+ export function getCreateValidatorAnnounceTx(signer, mailboxAddress) {
3
+ return {
4
+ kind: 'deploy',
5
+ contractName: StarknetContractName.VALIDATOR_ANNOUNCE,
6
+ constructorArgs: [
7
+ normalizeStarknetAddressSafe(mailboxAddress),
8
+ normalizeStarknetAddressSafe(signer),
9
+ ],
10
+ };
11
+ }
12
+ //# sourceMappingURL=validator-announce-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce-tx.js","sourceRoot":"","sources":["../../src/validator-announce/validator-announce-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAGzB,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,cAAsB;IAEtB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,oBAAoB,CAAC,kBAAkB;QACrD,eAAe,EAAE;YACf,4BAA4B,CAAC,cAAc,CAAC;YAC5C,4BAA4B,CAAC,MAAM,CAAC;SACrC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type ArtifactNew } from '@recoillink/provider-sdk/artifact';
2
+ import { type RawWarpArtifactConfigs } from '@recoillink/provider-sdk/warp';
3
+ import { type StarknetRemoteRoutersOnChain, type StarknetWarpTokenOnChain, StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase } from './token-artifact-manager.js';
4
+ export declare class StarknetCollateralTokenReader extends StarknetWarpTokenReaderBase<'collateral', RawWarpArtifactConfigs['collateral']> {
5
+ protected readonly tokenType: 'collateral';
6
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['collateral'];
7
+ }
8
+ export declare class StarknetCollateralTokenWriter extends StarknetWarpTokenWriterBase<'collateral', RawWarpArtifactConfigs['collateral']> {
9
+ protected readonly tokenType: 'collateral';
10
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['collateral'];
11
+ protected createToken(artifact: ArtifactNew<RawWarpArtifactConfigs['collateral']>): Promise<import("../types.js").StarknetTxReceipt>;
12
+ protected validateUpdateConfig(current: RawWarpArtifactConfigs['collateral'], expected: RawWarpArtifactConfigs['collateral']): void;
13
+ }
14
+ //# sourceMappingURL=collateral-token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/collateral-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAIrC,qBAAa,6BAA8B,SAAQ,2BAA2B,CAC5E,YAAY,EACZ,sBAAsB,CAAC,YAAY,CAAC,CACrC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAErD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,YAAY,CAAC,CAStC;CACF;AAED,qBAAa,6BAA8B,SAAQ,2BAA2B,CAC5E,YAAY,EACZ,sBAAsB,CAAC,YAAY,CAAC,CACrC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,YAAY,CAAU;IAErD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,YAAY,CAAC,CAStC;IAED,UAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,oDAa5D;IAED,UAAmB,oBAAoB,CACrC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAC7C,QAAQ,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAC7C,IAAI,CAMN;CACF"}
@@ -0,0 +1,47 @@
1
+ import { TokenType, } from '@recoillink/provider-sdk/warp';
2
+ import { assert, eqAddressStarknet } from '@recoillink/utils';
3
+ import { normalizeStarknetAddressSafe } from '../contracts.js';
4
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
5
+ import { getCreateCollateralTokenTx } from './warp-tx.js';
6
+ import { getMailboxConfig } from '../mailbox/mailbox-query.js';
7
+ export class StarknetCollateralTokenReader extends StarknetWarpTokenReaderBase {
8
+ tokenType = 'collateral';
9
+ toConfig(token, remoteRouters) {
10
+ return {
11
+ type: TokenType.collateral,
12
+ ...this.baseConfig(token, remoteRouters),
13
+ token: normalizeStarknetAddressSafe(token.denom),
14
+ name: token.name,
15
+ symbol: token.symbol,
16
+ decimals: token.decimals,
17
+ };
18
+ }
19
+ }
20
+ export class StarknetCollateralTokenWriter extends StarknetWarpTokenWriterBase {
21
+ tokenType = 'collateral';
22
+ toConfig(token, remoteRouters) {
23
+ return {
24
+ type: TokenType.collateral,
25
+ ...this.baseConfig(token, remoteRouters),
26
+ token: normalizeStarknetAddressSafe(token.denom),
27
+ name: token.name,
28
+ symbol: token.symbol,
29
+ decimals: token.decimals,
30
+ };
31
+ }
32
+ async createToken(artifact) {
33
+ const mailbox = await getMailboxConfig(this.provider.getRawProvider(), artifact.config.mailbox);
34
+ const tx = getCreateCollateralTokenTx(this.signer.getSignerAddress(), {
35
+ mailboxAddress: artifact.config.mailbox,
36
+ collateralDenom: artifact.config.token,
37
+ defaultHook: mailbox.defaultHook,
38
+ defaultIsm: mailbox.defaultIsm,
39
+ });
40
+ return this.signer.sendAndConfirmTransaction(tx);
41
+ }
42
+ validateUpdateConfig(current, expected) {
43
+ super.validateUpdateConfig(current, expected);
44
+ assert(eqAddressStarknet(current.token, expected.token), `Cannot change Starknet collateral token from ${current.token} to ${expected.token}`);
45
+ }
46
+ }
47
+ //# sourceMappingURL=collateral-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/collateral-token-artifact-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,GAEV,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAGL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACoB,SAAS,GAAG,YAAqB,CAAC;IAE3C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACoB,SAAS,GAAG,YAAqB,CAAC;IAE3C,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;YACxC,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC;YAChD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAA2D;QAE3D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAC9B,QAAQ,CAAC,MAAM,CAAC,OAAO,CACxB,CAAC;QACF,MAAM,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE;YACpE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;YACvC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAEkB,oBAAoB,CACrC,OAA6C,EAC7C,QAA8C;QAE9C,KAAK,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CACJ,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAChD,gDAAgD,OAAO,CAAC,KAAK,OAAO,QAAQ,CAAC,KAAK,EAAE,CACrF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { type ArtifactNew } from '@recoillink/provider-sdk/artifact';
2
+ import { type RawWarpArtifactConfigs } from '@recoillink/provider-sdk/warp';
3
+ import { type StarknetRemoteRoutersOnChain, type StarknetWarpTokenOnChain, StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase } from './token-artifact-manager.js';
4
+ export declare class StarknetNativeTokenReader extends StarknetWarpTokenReaderBase<'native', RawWarpArtifactConfigs['native']> {
5
+ protected readonly tokenType: 'native';
6
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['native'];
7
+ }
8
+ export declare class StarknetNativeTokenWriter extends StarknetWarpTokenWriterBase<'native', RawWarpArtifactConfigs['native']> {
9
+ protected readonly tokenType: 'native';
10
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['native'];
11
+ protected createToken(artifact: ArtifactNew<RawWarpArtifactConfigs['native']>): Promise<import("../types.js").StarknetTxReceipt>;
12
+ }
13
+ //# sourceMappingURL=native-token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/native-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAIrC,qBAAa,yBAA0B,SAAQ,2BAA2B,CACxE,QAAQ,EACR,sBAAsB,CAAC,QAAQ,CAAC,CACjC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,QAAQ,CAAU;IAEjD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,QAAQ,CAAC,CAKlC;CACF;AAED,qBAAa,yBAA0B,SAAQ,2BAA2B,CACxE,QAAQ,EACR,sBAAsB,CAAC,QAAQ,CAAC,CACjC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,QAAQ,CAAU;IAEjD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,QAAQ,CAAC,CAKlC;IAED,UAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,oDAaxD;CACF"}
@@ -0,0 +1,33 @@
1
+ import { TokenType, } from '@recoillink/provider-sdk/warp';
2
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
3
+ import { getCreateNativeTokenTx } from './warp-tx.js';
4
+ import { getMailboxConfig } from '../mailbox/mailbox-query.js';
5
+ export class StarknetNativeTokenReader extends StarknetWarpTokenReaderBase {
6
+ tokenType = 'native';
7
+ toConfig(token, remoteRouters) {
8
+ return {
9
+ type: TokenType.native,
10
+ ...this.baseConfig(token, remoteRouters),
11
+ };
12
+ }
13
+ }
14
+ export class StarknetNativeTokenWriter extends StarknetWarpTokenWriterBase {
15
+ tokenType = 'native';
16
+ toConfig(token, remoteRouters) {
17
+ return {
18
+ type: TokenType.native,
19
+ ...this.baseConfig(token, remoteRouters),
20
+ };
21
+ }
22
+ async createToken(artifact) {
23
+ const mailbox = await getMailboxConfig(this.provider.getRawProvider(), artifact.config.mailbox);
24
+ const tx = getCreateNativeTokenTx(this.signer.getSignerAddress(), {
25
+ mailboxAddress: artifact.config.mailbox,
26
+ feeTokenAddress: this.provider.getFeeTokenAddress(),
27
+ defaultHook: mailbox.defaultHook,
28
+ defaultIsm: mailbox.defaultIsm,
29
+ });
30
+ return this.signer.sendAndConfirmTransaction(tx);
31
+ }
32
+ }
33
+ //# sourceMappingURL=native-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/native-token-artifact-manager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,GAEV,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,OAAO,yBAA0B,SAAQ,2BAG9C;IACoB,SAAS,GAAG,QAAiB,CAAC;IAEvC,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;SACzC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,2BAG9C;IACoB,SAAS,GAAG,QAAiB,CAAC;IAEvC,QAAQ,CAChB,KAA+B,EAC/B,aAA2C;QAE3C,OAAO;YACL,IAAI,EAAE,SAAS,CAAC,MAAM;YACtB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC;SACzC,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,QAAuD;QAEvD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAC9B,QAAQ,CAAC,MAAM,CAAC,OAAO,CACxB,CAAC;QACF,MAAM,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE;YAChE,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;YACvC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YACnD,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { type ArtifactNew } from '@recoillink/provider-sdk/artifact';
2
+ import { type RawWarpArtifactConfigs } from '@recoillink/provider-sdk/warp';
3
+ import { type StarknetRemoteRoutersOnChain, type StarknetWarpTokenOnChain, StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase } from './token-artifact-manager.js';
4
+ export declare class StarknetSyntheticTokenReader extends StarknetWarpTokenReaderBase<'synthetic', RawWarpArtifactConfigs['synthetic']> {
5
+ protected readonly tokenType: 'synthetic';
6
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['synthetic'];
7
+ }
8
+ export declare class StarknetSyntheticTokenWriter extends StarknetWarpTokenWriterBase<'synthetic', RawWarpArtifactConfigs['synthetic']> {
9
+ protected readonly tokenType: 'synthetic';
10
+ protected toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): RawWarpArtifactConfigs['synthetic'];
11
+ protected validateCreateConfig(config: RawWarpArtifactConfigs['synthetic']): void;
12
+ protected validateUpdateConfig(current: RawWarpArtifactConfigs['synthetic'], expected: RawWarpArtifactConfigs['synthetic']): void;
13
+ protected createToken(artifact: ArtifactNew<RawWarpArtifactConfigs['synthetic']>): Promise<import("../types.js").StarknetTxReceipt>;
14
+ }
15
+ //# sourceMappingURL=synthetic-token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/synthetic-token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AAIrC,qBAAa,4BAA6B,SAAQ,2BAA2B,CAC3E,WAAW,EACX,sBAAsB,CAAC,WAAW,CAAC,CACpC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,WAAW,CAAU;IAEpD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,WAAW,CAAC,CAQrC;CACF;AAED,qBAAa,4BAA6B,SAAQ,2BAA2B,CAC3E,WAAW,EACX,sBAAsB,CAAC,WAAW,CAAC,CACpC;IACC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAG,WAAW,CAAU;IAEpD,SAAS,CAAC,QAAQ,CAChB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,sBAAsB,CAAC,WAAW,CAAC,CAQrC;IAED,UAAmB,oBAAoB,CACrC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAC1C,IAAI,CAMN;IAED,UAAmB,oBAAoB,CACrC,OAAO,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAC5C,QAAQ,EAAE,sBAAsB,CAAC,WAAW,CAAC,GAC5C,IAAI,CAkBN;IAED,UAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,oDAe3D;CACF"}
@@ -0,0 +1,53 @@
1
+ import { TokenType, } from '@recoillink/provider-sdk/warp';
2
+ import { assert } from '@recoillink/utils';
3
+ import { StarknetWarpTokenReaderBase, StarknetWarpTokenWriterBase, } from './token-artifact-manager.js';
4
+ import { getCreateSyntheticTokenTx } from './warp-tx.js';
5
+ import { getMailboxConfig } from '../mailbox/mailbox-query.js';
6
+ export class StarknetSyntheticTokenReader extends StarknetWarpTokenReaderBase {
7
+ tokenType = 'synthetic';
8
+ toConfig(token, remoteRouters) {
9
+ return {
10
+ type: TokenType.synthetic,
11
+ ...this.baseConfig(token, remoteRouters),
12
+ name: token.name,
13
+ symbol: token.symbol,
14
+ decimals: token.decimals,
15
+ };
16
+ }
17
+ }
18
+ export class StarknetSyntheticTokenWriter extends StarknetWarpTokenWriterBase {
19
+ tokenType = 'synthetic';
20
+ toConfig(token, remoteRouters) {
21
+ return {
22
+ type: TokenType.synthetic,
23
+ ...this.baseConfig(token, remoteRouters),
24
+ name: token.name,
25
+ symbol: token.symbol,
26
+ decimals: token.decimals,
27
+ };
28
+ }
29
+ validateCreateConfig(config) {
30
+ super.validateCreateConfig(config);
31
+ assert(!config.metadataUri, 'metadataUri is unsupported for Starknet synthetic warp tokens');
32
+ }
33
+ validateUpdateConfig(current, expected) {
34
+ super.validateUpdateConfig(current, expected);
35
+ assert(current.name === expected.name, `Cannot change Starknet synthetic token name from ${current.name} to ${expected.name}`);
36
+ assert(current.symbol === expected.symbol, `Cannot change Starknet synthetic token symbol from ${current.symbol} to ${expected.symbol}`);
37
+ assert(current.decimals === expected.decimals, `Cannot change Starknet synthetic token decimals from ${current.decimals} to ${expected.decimals}`);
38
+ assert(!expected.metadataUri, 'metadataUri is unsupported for Starknet synthetic warp tokens');
39
+ }
40
+ async createToken(artifact) {
41
+ const mailbox = await getMailboxConfig(this.provider.getRawProvider(), artifact.config.mailbox);
42
+ const tx = getCreateSyntheticTokenTx(this.signer.getSignerAddress(), {
43
+ mailboxAddress: artifact.config.mailbox,
44
+ name: artifact.config.name,
45
+ denom: artifact.config.symbol,
46
+ decimals: artifact.config.decimals,
47
+ defaultHook: mailbox.defaultHook,
48
+ defaultIsm: mailbox.defaultIsm,
49
+ });
50
+ return this.signer.sendAndConfirmTransaction(tx);
51
+ }
52
+ }
53
+ //# sourceMappingURL=synthetic-token-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthetic-token-artifact-manager.js","sourceRoot":"","sources":["../../src/warp/synthetic-token-artifact-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type ArtifactDeployed, type ArtifactNew, type ArtifactReader, type ArtifactWriter } from '@recoillink/provider-sdk/artifact';
2
+ import { type AnnotatedTx, type TxReceipt } from '@recoillink/provider-sdk/module';
3
+ import { type DeployedWarpAddress, type RawWarpArtifactConfigs, type WarpType } from '@recoillink/provider-sdk/warp';
4
+ import { StarknetProvider } from '../clients/provider.js';
5
+ import { StarknetSigner } from '../clients/signer.js';
6
+ import { type StarknetTxReceipt } from '../types.js';
7
+ export type StarknetWarpTokenOnChain = Awaited<ReturnType<StarknetProvider['getToken']>>;
8
+ export type StarknetRemoteRoutersOnChain = Awaited<ReturnType<StarknetProvider['getRemoteRouters']>>;
9
+ export declare function getStarknetWarpType(tokenType: string): WarpType;
10
+ export declare abstract class StarknetWarpTokenReaderBase<T extends WarpType, C extends RawWarpArtifactConfigs[T]> implements ArtifactReader<C, DeployedWarpAddress> {
11
+ protected readonly provider: StarknetProvider;
12
+ constructor(provider: StarknetProvider);
13
+ protected abstract readonly tokenType: T;
14
+ protected abstract toConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): C;
15
+ read(address: string): Promise<ArtifactDeployed<C, DeployedWarpAddress>>;
16
+ protected baseConfig(token: StarknetWarpTokenOnChain, remoteRouters: StarknetRemoteRoutersOnChain): {
17
+ owner: string;
18
+ mailbox: string;
19
+ interchainSecurityModule: import("@recoillink/provider-sdk/artifact").ArtifactUnderived<{
20
+ address: string;
21
+ }> | undefined;
22
+ hook: import("@recoillink/provider-sdk/artifact").ArtifactUnderived<{
23
+ address: string;
24
+ }> | undefined;
25
+ remoteRouters: Record<number, {
26
+ address: string;
27
+ }>;
28
+ destinationGas: Record<number, string>;
29
+ };
30
+ }
31
+ export declare abstract class StarknetWarpTokenWriterBase<T extends WarpType, C extends RawWarpArtifactConfigs[T]> extends StarknetWarpTokenReaderBase<T, C> implements ArtifactWriter<C, DeployedWarpAddress> {
32
+ protected readonly signer: StarknetSigner;
33
+ constructor(provider: StarknetProvider, signer: StarknetSigner);
34
+ protected abstract createToken(artifact: ArtifactNew<C>): Promise<StarknetTxReceipt>;
35
+ protected validateCreateConfig(config: C): void;
36
+ protected validateUpdateConfig(current: C, expected: C): void;
37
+ create(artifact: ArtifactNew<C>): Promise<[ArtifactDeployed<C, DeployedWarpAddress>, TxReceipt[]]>;
38
+ update(artifact: ArtifactDeployed<C, DeployedWarpAddress>): Promise<AnnotatedTx[]>;
39
+ private preserveUnsetHookAndIsm;
40
+ private assertNoOrphanDestinationGas;
41
+ private applyPostCreateConfig;
42
+ }
43
+ //# sourceMappingURL=token-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/warp/token-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAGpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAS/E,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CACzC,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,UAAU,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CACjD,CAAC;AAMF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAM/D;AAED,8BAAsB,2BAA2B,CAC/C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CACnC,YAAW,cAAc,CAAC,CAAC,EAAE,mBAAmB,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAAzD,YAA+B,QAAQ,EAAE,gBAAgB,EAAI;IAE7D,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CACzB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B,GAC1C,CAAC,CAAC;IAEC,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAiBnD;IAED,SAAS,CAAC,UAAU,CAClB,KAAK,EAAE,wBAAwB,EAC/B,aAAa,EAAE,4BAA4B;;;;;;;;;;qBAEF,MAAM;;;MA0BhD;CACF;AAED,8BAAsB,2BAA2B,CAC/C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAEnC,SAAQ,2BAA2B,CAAC,CAAC,EAAE,CAAC,CACxC,YAAW,cAAc,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAI/C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAF3C,YACE,QAAQ,EAAE,gBAAgB,EACP,MAAM,EAAE,cAAc,EAG1C;IAED,SAAS,CAAC,QAAQ,CAAC,WAAW,CAC5B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE9B,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAE9C;IAED,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAM5D;IAEK,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CA8BlE;IAEK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,CAAC,GACjD,OAAO,CAAC,WAAW,EAAE,CAAC,CAiHxB;IAED,OAAO,CAAC,uBAAuB;IA+B/B,OAAO,CAAC,4BAA4B;YAStB,qBAAqB;CAwEpC"}