@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.
- package/dist/cjs/client.js +198 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/constants/index.js +211 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/errors/index.js +218 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/index.js +51 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/compliance.js +202 -0
- package/dist/cjs/modules/compliance.js.map +1 -0
- package/dist/cjs/modules/index.js +18 -0
- package/dist/cjs/modules/index.js.map +1 -0
- package/dist/cjs/modules/kyc.js +278 -0
- package/dist/cjs/modules/kyc.js.map +1 -0
- package/dist/cjs/modules/token.js +365 -0
- package/dist/cjs/modules/token.js.map +1 -0
- package/dist/cjs/modules/yield.js +406 -0
- package/dist/cjs/modules/yield.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/types/index.js +20 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/index.js +206 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/esm/client.js +194 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/constants/index.js +208 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/errors/index.js +209 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules/compliance.js +198 -0
- package/dist/esm/modules/compliance.js.map +1 -0
- package/dist/esm/modules/index.js +8 -0
- package/dist/esm/modules/index.js.map +1 -0
- package/dist/esm/modules/kyc.js +273 -0
- package/dist/esm/modules/kyc.js.map +1 -0
- package/dist/esm/modules/token.js +360 -0
- package/dist/esm/modules/token.js.map +1 -0
- package/dist/esm/modules/yield.js +401 -0
- package/dist/esm/modules/yield.js.map +1 -0
- package/dist/esm/types/index.js +17 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/index.js +188 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/types/client.d.ts +93 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/constants/index.d.ts +83 -0
- package/dist/types/constants/index.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +83 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/compliance.d.ts +29 -0
- package/dist/types/modules/compliance.d.ts.map +1 -0
- package/dist/types/modules/index.d.ts +8 -0
- package/dist/types/modules/index.d.ts.map +1 -0
- package/dist/types/modules/kyc.d.ts +131 -0
- package/dist/types/modules/kyc.d.ts.map +1 -0
- package/dist/types/modules/token.d.ts +145 -0
- package/dist/types/modules/token.d.ts.map +1 -0
- package/dist/types/modules/yield.d.ts +143 -0
- package/dist/types/modules/yield.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +254 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +80 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/package.json +52 -0
- package/src/client.ts +258 -0
- package/src/constants/index.ts +226 -0
- package/src/errors/index.ts +291 -0
- package/src/index.ts +42 -0
- package/src/modules/compliance.ts +252 -0
- package/src/modules/index.ts +8 -0
- package/src/modules/kyc.ts +446 -0
- package/src/modules/token.ts +488 -0
- package/src/modules/yield.ts +566 -0
- package/src/types/index.ts +326 -0
- 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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"}
|