@mantle-rwa/sdk 0.1.0

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 (79) hide show
  1. package/dist/cjs/client.js +198 -0
  2. package/dist/cjs/client.js.map +1 -0
  3. package/dist/cjs/constants/index.js +211 -0
  4. package/dist/cjs/constants/index.js.map +1 -0
  5. package/dist/cjs/errors/index.js +218 -0
  6. package/dist/cjs/errors/index.js.map +1 -0
  7. package/dist/cjs/index.js +51 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/modules/compliance.js +202 -0
  10. package/dist/cjs/modules/compliance.js.map +1 -0
  11. package/dist/cjs/modules/index.js +18 -0
  12. package/dist/cjs/modules/index.js.map +1 -0
  13. package/dist/cjs/modules/kyc.js +278 -0
  14. package/dist/cjs/modules/kyc.js.map +1 -0
  15. package/dist/cjs/modules/token.js +365 -0
  16. package/dist/cjs/modules/token.js.map +1 -0
  17. package/dist/cjs/modules/yield.js +406 -0
  18. package/dist/cjs/modules/yield.js.map +1 -0
  19. package/dist/cjs/package.json +3 -0
  20. package/dist/cjs/types/index.js +20 -0
  21. package/dist/cjs/types/index.js.map +1 -0
  22. package/dist/cjs/utils/index.js +206 -0
  23. package/dist/cjs/utils/index.js.map +1 -0
  24. package/dist/esm/client.js +194 -0
  25. package/dist/esm/client.js.map +1 -0
  26. package/dist/esm/constants/index.js +208 -0
  27. package/dist/esm/constants/index.js.map +1 -0
  28. package/dist/esm/errors/index.js +209 -0
  29. package/dist/esm/errors/index.js.map +1 -0
  30. package/dist/esm/index.js +17 -0
  31. package/dist/esm/index.js.map +1 -0
  32. package/dist/esm/modules/compliance.js +198 -0
  33. package/dist/esm/modules/compliance.js.map +1 -0
  34. package/dist/esm/modules/index.js +8 -0
  35. package/dist/esm/modules/index.js.map +1 -0
  36. package/dist/esm/modules/kyc.js +273 -0
  37. package/dist/esm/modules/kyc.js.map +1 -0
  38. package/dist/esm/modules/token.js +360 -0
  39. package/dist/esm/modules/token.js.map +1 -0
  40. package/dist/esm/modules/yield.js +401 -0
  41. package/dist/esm/modules/yield.js.map +1 -0
  42. package/dist/esm/types/index.js +17 -0
  43. package/dist/esm/types/index.js.map +1 -0
  44. package/dist/esm/utils/index.js +188 -0
  45. package/dist/esm/utils/index.js.map +1 -0
  46. package/dist/types/client.d.ts +93 -0
  47. package/dist/types/client.d.ts.map +1 -0
  48. package/dist/types/constants/index.d.ts +83 -0
  49. package/dist/types/constants/index.d.ts.map +1 -0
  50. package/dist/types/errors/index.d.ts +83 -0
  51. package/dist/types/errors/index.d.ts.map +1 -0
  52. package/dist/types/index.d.ts +13 -0
  53. package/dist/types/index.d.ts.map +1 -0
  54. package/dist/types/modules/compliance.d.ts +29 -0
  55. package/dist/types/modules/compliance.d.ts.map +1 -0
  56. package/dist/types/modules/index.d.ts +8 -0
  57. package/dist/types/modules/index.d.ts.map +1 -0
  58. package/dist/types/modules/kyc.d.ts +131 -0
  59. package/dist/types/modules/kyc.d.ts.map +1 -0
  60. package/dist/types/modules/token.d.ts +145 -0
  61. package/dist/types/modules/token.d.ts.map +1 -0
  62. package/dist/types/modules/yield.d.ts +143 -0
  63. package/dist/types/modules/yield.d.ts.map +1 -0
  64. package/dist/types/types/index.d.ts +254 -0
  65. package/dist/types/types/index.d.ts.map +1 -0
  66. package/dist/types/utils/index.d.ts +80 -0
  67. package/dist/types/utils/index.d.ts.map +1 -0
  68. package/package.json +52 -0
  69. package/src/client.ts +258 -0
  70. package/src/constants/index.ts +226 -0
  71. package/src/errors/index.ts +291 -0
  72. package/src/index.ts +42 -0
  73. package/src/modules/compliance.ts +252 -0
  74. package/src/modules/index.ts +8 -0
  75. package/src/modules/kyc.ts +446 -0
  76. package/src/modules/token.ts +488 -0
  77. package/src/modules/yield.ts +566 -0
  78. package/src/types/index.ts +326 -0
  79. package/src/utils/index.ts +240 -0
@@ -0,0 +1,360 @@
1
+ /**
2
+ * TokenModule - Handles RWA token deployment and interactions
3
+ */
4
+ import { ethers } from 'ethers';
5
+ import { RWA_TOKEN_ABI } from '../constants/index.js';
6
+ import { RWAError, ErrorCode, parseContractError } from '../errors/index.js';
7
+ import { isValidAddress, normalizeAddress, parseAmount, parseEvents, createTransactionResult, retry, estimateGasWithBuffer, } from '../utils/index.js';
8
+ /**
9
+ * Instance of a connected RWA token
10
+ */
11
+ export class TokenInstance {
12
+ _contract;
13
+ _retries;
14
+ _retryDelay;
15
+ /** Token contract address */
16
+ address;
17
+ constructor(address, provider, signer, retries, retryDelay) {
18
+ this.address = normalizeAddress(address);
19
+ this._retries = retries;
20
+ this._retryDelay = retryDelay;
21
+ this._contract = new ethers.Contract(this.address, RWA_TOKEN_ABI, signer || provider);
22
+ }
23
+ /*//////////////////////////////////////////////////////////////
24
+ READ FUNCTIONS
25
+ //////////////////////////////////////////////////////////////*/
26
+ /**
27
+ * Get token name
28
+ */
29
+ async name() {
30
+ return this._contract.name();
31
+ }
32
+ /**
33
+ * Get token symbol
34
+ */
35
+ async symbol() {
36
+ return this._contract.symbol();
37
+ }
38
+ /**
39
+ * Get token decimals
40
+ */
41
+ async decimals() {
42
+ return this._contract.decimals();
43
+ }
44
+ /**
45
+ * Get total supply
46
+ */
47
+ async totalSupply() {
48
+ return this._contract.totalSupply();
49
+ }
50
+ /**
51
+ * Get balance of an account
52
+ */
53
+ async balanceOf(account) {
54
+ return this._contract.balanceOf(normalizeAddress(account));
55
+ }
56
+ /**
57
+ * Check if token is paused
58
+ */
59
+ async paused() {
60
+ return this._contract.paused();
61
+ }
62
+ /**
63
+ * Get the KYC registry address
64
+ */
65
+ async kycRegistry() {
66
+ return this._contract.kycRegistry();
67
+ }
68
+ /**
69
+ * Get all compliance modules
70
+ */
71
+ async getComplianceModules() {
72
+ return this._contract.getComplianceModules();
73
+ }
74
+ /**
75
+ * Check if an address is a compliance module
76
+ */
77
+ async isComplianceModule(module) {
78
+ return this._contract.isComplianceModule(normalizeAddress(module));
79
+ }
80
+ /**
81
+ * Check if a transfer is allowed
82
+ */
83
+ async isTransferAllowed(from, to, amount) {
84
+ const [allowed, reason] = await this._contract.isTransferAllowed(normalizeAddress(from), normalizeAddress(to), parseAmount(amount));
85
+ return { allowed, reason };
86
+ }
87
+ /**
88
+ * Get token info
89
+ */
90
+ async getInfo() {
91
+ const [name, symbol, decimals, totalSupply, paused] = await Promise.all([
92
+ this.name(),
93
+ this.symbol(),
94
+ this.decimals(),
95
+ this.totalSupply(),
96
+ this.paused(),
97
+ ]);
98
+ return {
99
+ address: this.address,
100
+ name,
101
+ symbol,
102
+ decimals,
103
+ totalSupply,
104
+ paused,
105
+ };
106
+ }
107
+ /**
108
+ * Get balance at a specific snapshot
109
+ */
110
+ async balanceOfAt(account, snapshotId) {
111
+ return this._contract.balanceOfAt(normalizeAddress(account), snapshotId);
112
+ }
113
+ /**
114
+ * Get total supply at a specific snapshot
115
+ */
116
+ async totalSupplyAt(snapshotId) {
117
+ return this._contract.totalSupplyAt(snapshotId);
118
+ }
119
+ /*//////////////////////////////////////////////////////////////
120
+ WRITE FUNCTIONS
121
+ //////////////////////////////////////////////////////////////*/
122
+ /**
123
+ * Mint tokens to an address
124
+ */
125
+ async mint(to, amount, options) {
126
+ const toAddress = normalizeAddress(to);
127
+ const amountWei = parseAmount(amount);
128
+ try {
129
+ const tx = await retry(async () => {
130
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.mint.estimateGas(toAddress, amountWei));
131
+ return this._contract.mint(toAddress, amountWei, { gasLimit });
132
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
133
+ const receipt = await tx.wait();
134
+ const events = parseEvents(receipt, this._contract.interface);
135
+ return createTransactionResult(receipt, events);
136
+ }
137
+ catch (error) {
138
+ throw parseContractError(error, this.address, 'mint');
139
+ }
140
+ }
141
+ /**
142
+ * Burn tokens from an address
143
+ */
144
+ async burn(from, amount, options) {
145
+ const fromAddress = normalizeAddress(from);
146
+ const amountWei = parseAmount(amount);
147
+ try {
148
+ const tx = await retry(async () => {
149
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.burn.estimateGas(fromAddress, amountWei));
150
+ return this._contract.burn(fromAddress, amountWei, { gasLimit });
151
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
152
+ const receipt = await tx.wait();
153
+ const events = parseEvents(receipt, this._contract.interface);
154
+ return createTransactionResult(receipt, events);
155
+ }
156
+ catch (error) {
157
+ throw parseContractError(error, this.address, 'burn');
158
+ }
159
+ }
160
+ /**
161
+ * Transfer tokens
162
+ */
163
+ async transfer(to, amount, options) {
164
+ const toAddress = normalizeAddress(to);
165
+ const amountWei = parseAmount(amount);
166
+ try {
167
+ const tx = await retry(async () => {
168
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.transfer.estimateGas(toAddress, amountWei));
169
+ return this._contract.transfer(toAddress, amountWei, { gasLimit });
170
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
171
+ const receipt = await tx.wait();
172
+ const events = parseEvents(receipt, this._contract.interface);
173
+ return createTransactionResult(receipt, events);
174
+ }
175
+ catch (error) {
176
+ throw parseContractError(error, this.address, 'transfer');
177
+ }
178
+ }
179
+ /**
180
+ * Pause token transfers
181
+ */
182
+ async pause(options) {
183
+ try {
184
+ const tx = await retry(async () => {
185
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.pause.estimateGas());
186
+ return this._contract.pause({ gasLimit });
187
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
188
+ const receipt = await tx.wait();
189
+ const events = parseEvents(receipt, this._contract.interface);
190
+ return createTransactionResult(receipt, events);
191
+ }
192
+ catch (error) {
193
+ throw parseContractError(error, this.address, 'pause');
194
+ }
195
+ }
196
+ /**
197
+ * Unpause token transfers
198
+ */
199
+ async unpause(options) {
200
+ try {
201
+ const tx = await retry(async () => {
202
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.unpause.estimateGas());
203
+ return this._contract.unpause({ gasLimit });
204
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
205
+ const receipt = await tx.wait();
206
+ const events = parseEvents(receipt, this._contract.interface);
207
+ return createTransactionResult(receipt, events);
208
+ }
209
+ catch (error) {
210
+ throw parseContractError(error, this.address, 'unpause');
211
+ }
212
+ }
213
+ /**
214
+ * Create a snapshot
215
+ */
216
+ async snapshot(options) {
217
+ try {
218
+ const tx = await retry(async () => {
219
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.snapshot.estimateGas());
220
+ return this._contract.snapshot({ gasLimit });
221
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
222
+ const receipt = await tx.wait();
223
+ const events = parseEvents(receipt, this._contract.interface);
224
+ const result = createTransactionResult(receipt, events);
225
+ // Extract snapshot ID from event
226
+ const snapshotEvent = events.find((e) => e.name === 'Snapshot');
227
+ const snapshotId = snapshotEvent?.args.id || 0n;
228
+ return { result, snapshotId };
229
+ }
230
+ catch (error) {
231
+ throw parseContractError(error, this.address, 'snapshot');
232
+ }
233
+ }
234
+ /**
235
+ * Set the KYC registry
236
+ */
237
+ async setKYCRegistry(registry, options) {
238
+ const registryAddress = normalizeAddress(registry);
239
+ try {
240
+ const tx = await retry(async () => {
241
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.setKYCRegistry.estimateGas(registryAddress));
242
+ return this._contract.setKYCRegistry(registryAddress, { gasLimit });
243
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
244
+ const receipt = await tx.wait();
245
+ const events = parseEvents(receipt, this._contract.interface);
246
+ return createTransactionResult(receipt, events);
247
+ }
248
+ catch (error) {
249
+ throw parseContractError(error, this.address, 'setKYCRegistry');
250
+ }
251
+ }
252
+ /**
253
+ * Add a compliance module
254
+ */
255
+ async addComplianceModule(module, options) {
256
+ const moduleAddress = normalizeAddress(module);
257
+ try {
258
+ const tx = await retry(async () => {
259
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.addComplianceModule.estimateGas(moduleAddress));
260
+ return this._contract.addComplianceModule(moduleAddress, { gasLimit });
261
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
262
+ const receipt = await tx.wait();
263
+ const events = parseEvents(receipt, this._contract.interface);
264
+ return createTransactionResult(receipt, events);
265
+ }
266
+ catch (error) {
267
+ throw parseContractError(error, this.address, 'addComplianceModule');
268
+ }
269
+ }
270
+ /**
271
+ * Remove a compliance module
272
+ */
273
+ async removeComplianceModule(module, options) {
274
+ const moduleAddress = normalizeAddress(module);
275
+ try {
276
+ const tx = await retry(async () => {
277
+ const gasLimit = options?.gasLimit || await estimateGasWithBuffer(() => this._contract.removeComplianceModule.estimateGas(moduleAddress));
278
+ return this._contract.removeComplianceModule(moduleAddress, { gasLimit });
279
+ }, { retries: options?.retries ?? this._retries, delay: options?.retryDelay ?? this._retryDelay });
280
+ const receipt = await tx.wait();
281
+ const events = parseEvents(receipt, this._contract.interface);
282
+ return createTransactionResult(receipt, events);
283
+ }
284
+ catch (error) {
285
+ throw parseContractError(error, this.address, 'removeComplianceModule');
286
+ }
287
+ }
288
+ /*//////////////////////////////////////////////////////////////
289
+ EVENT LISTENERS
290
+ //////////////////////////////////////////////////////////////*/
291
+ /**
292
+ * Listen for Transfer events
293
+ */
294
+ onTransfer(callback) {
295
+ const listener = (from, to, amount) => {
296
+ callback(from, to, amount);
297
+ };
298
+ this._contract.on('Transfer', listener);
299
+ return () => this._contract.off('Transfer', listener);
300
+ }
301
+ /**
302
+ * Listen for TransferRestricted events
303
+ */
304
+ onTransferRestricted(callback) {
305
+ const listener = (from, to, amount, reason) => {
306
+ callback(from, to, amount, reason);
307
+ };
308
+ this._contract.on('TransferRestricted', listener);
309
+ return () => this._contract.off('TransferRestricted', listener);
310
+ }
311
+ /**
312
+ * Listen for Paused events
313
+ */
314
+ onPaused(callback) {
315
+ const listener = (by) => callback(by);
316
+ this._contract.on('TokensPaused', listener);
317
+ return () => this._contract.off('TokensPaused', listener);
318
+ }
319
+ /**
320
+ * Listen for Unpaused events
321
+ */
322
+ onUnpaused(callback) {
323
+ const listener = (by) => callback(by);
324
+ this._contract.on('TokensUnpaused', listener);
325
+ return () => this._contract.off('TokensUnpaused', listener);
326
+ }
327
+ }
328
+ /**
329
+ * Module for token operations
330
+ */
331
+ export class TokenModule {
332
+ _provider;
333
+ _signer;
334
+ _retries;
335
+ _retryDelay;
336
+ constructor(provider, signer, retries, retryDelay) {
337
+ this._provider = provider;
338
+ this._signer = signer;
339
+ this._retries = retries;
340
+ this._retryDelay = retryDelay;
341
+ }
342
+ /**
343
+ * Connect to an existing token contract
344
+ */
345
+ connect(address) {
346
+ if (!isValidAddress(address)) {
347
+ throw new RWAError(ErrorCode.INVALID_ADDRESS, `Invalid token address: ${address}`);
348
+ }
349
+ return new TokenInstance(address, this._provider, this._signer, this._retries, this._retryDelay);
350
+ }
351
+ /**
352
+ * Estimate gas for deploying a token
353
+ */
354
+ async estimateDeployGas(_config) {
355
+ // This would require the token bytecode which we don't have in the SDK
356
+ // In practice, deployment is done through the factory
357
+ throw new RWAError(ErrorCode.INVALID_CONFIGURATION, 'Direct token deployment is not supported. Use RWAClient.deployRWASystem() instead.');
358
+ }
359
+ }
360
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/modules/token.ts"],"names":[],"mappings":"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"}