@yallet/rwa-sdk 0.2.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 (58) hide show
  1. package/README.md +365 -0
  2. package/dist/credential-nft-server.d.ts +75 -0
  3. package/dist/credential-nft-server.d.ts.map +1 -0
  4. package/dist/credential-nft-server.js +122 -0
  5. package/dist/credential-nft-server.js.map +1 -0
  6. package/dist/credential-nft.d.ts +31 -0
  7. package/dist/credential-nft.d.ts.map +1 -0
  8. package/dist/credential-nft.js +38 -0
  9. package/dist/credential-nft.js.map +1 -0
  10. package/dist/encryption.d.ts +107 -0
  11. package/dist/encryption.d.ts.map +1 -0
  12. package/dist/encryption.js +176 -0
  13. package/dist/encryption.js.map +1 -0
  14. package/dist/index.d.ts +56 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +66 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/metadata.d.ts +161 -0
  19. package/dist/metadata.d.ts.map +1 -0
  20. package/dist/metadata.js +180 -0
  21. package/dist/metadata.js.map +1 -0
  22. package/dist/minting.d.ts +63 -0
  23. package/dist/minting.d.ts.map +1 -0
  24. package/dist/minting.js +194 -0
  25. package/dist/minting.js.map +1 -0
  26. package/dist/payloads.d.ts +120 -0
  27. package/dist/payloads.d.ts.map +1 -0
  28. package/dist/payloads.js +118 -0
  29. package/dist/payloads.js.map +1 -0
  30. package/dist/registry.d.ts +77 -0
  31. package/dist/registry.d.ts.map +1 -0
  32. package/dist/registry.js +173 -0
  33. package/dist/registry.js.map +1 -0
  34. package/dist/sdk.d.ts +158 -0
  35. package/dist/sdk.d.ts.map +1 -0
  36. package/dist/sdk.js +346 -0
  37. package/dist/sdk.js.map +1 -0
  38. package/dist/storage.d.ts +80 -0
  39. package/dist/storage.d.ts.map +1 -0
  40. package/dist/storage.js +284 -0
  41. package/dist/storage.js.map +1 -0
  42. package/dist/types.d.ts +278 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +19 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +64 -0
  47. package/src/credential-nft-server.ts +201 -0
  48. package/src/credential-nft.ts +64 -0
  49. package/src/encryption.ts +308 -0
  50. package/src/index.ts +151 -0
  51. package/src/metadata.ts +336 -0
  52. package/src/minting.ts +266 -0
  53. package/src/payloads.ts +238 -0
  54. package/src/registry.ts +236 -0
  55. package/src/sdk.ts +507 -0
  56. package/src/storage.ts +364 -0
  57. package/src/types.ts +318 -0
  58. package/wasm/README.md +33 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Yallet RWA SDK - Storage Module
3
+ *
4
+ * Handles uploading encrypted data to Arweave via ArDrive Turbo
5
+ */
6
+ // ======================================
7
+ // Configuration
8
+ // ======================================
9
+ const ARWEAVE_GATEWAY = 'https://arweave.net';
10
+ const ARWEAVE_FALLBACK_GATEWAYS = ['https://arweave.net', 'https://ar-io.net', 'https://turbo-gateway.com'];
11
+ const ARWEAVE_TX_ID_RE = /^[A-Za-z0-9_-]{43}$/;
12
+ const ARWEAVE_TXISH_RE = /^[A-Za-z0-9_-]{3,128}$/;
13
+ /** Yallet backend upload API (proxy-api forwards to backend-api/ArDrive Turbo) */
14
+ const YALLET_ARWEAVE_UPLOAD_URL = 'https://api.yallet.xyz/api/v1/storage/arweave/upload';
15
+ const ARWEAVE_ENDPOINTS = {
16
+ mainnet: 'https://turbo.irys.xyz',
17
+ devnet: 'https://devnet.irys.xyz',
18
+ };
19
+ /** Uint8Array to base64 (chunked for large payloads) */
20
+ function toBase64(bytes) {
21
+ const chunkSize = 32768;
22
+ let binary = '';
23
+ for (let i = 0; i < bytes.length; i += chunkSize) {
24
+ const chunk = bytes.subarray(i, Math.min(i + chunkSize, bytes.length));
25
+ binary += String.fromCharCode.apply(null, chunk);
26
+ }
27
+ return btoa(binary);
28
+ }
29
+ function extractArweaveTxId(input) {
30
+ const raw = String(input || '').trim();
31
+ if (!raw)
32
+ return null;
33
+ if (raw.startsWith('ar://')) {
34
+ const tx = raw.substring(5).split('/')[0] || '';
35
+ if (ARWEAVE_TX_ID_RE.test(tx))
36
+ return tx;
37
+ return ARWEAVE_TXISH_RE.test(tx) ? tx : null;
38
+ }
39
+ if (ARWEAVE_TX_ID_RE.test(raw)) {
40
+ return raw;
41
+ }
42
+ if (ARWEAVE_TXISH_RE.test(raw) && !raw.includes('/')) {
43
+ return raw;
44
+ }
45
+ try {
46
+ const u = new URL(raw);
47
+ const host = u.hostname.toLowerCase();
48
+ const [pathFirst = '', pathSecond = ''] = u.pathname.replace(/^\/+/, '').split('/');
49
+ if (ARWEAVE_TX_ID_RE.test(pathFirst))
50
+ return pathFirst;
51
+ if (ARWEAVE_TX_ID_RE.test(pathSecond))
52
+ return pathSecond;
53
+ if (ARWEAVE_TXISH_RE.test(pathFirst))
54
+ return pathFirst;
55
+ if (ARWEAVE_TXISH_RE.test(pathSecond))
56
+ return pathSecond;
57
+ const subdomainMatch = host.match(/^([a-z0-9_-]{43})\.arweave\.net$/i);
58
+ if (subdomainMatch && ARWEAVE_TX_ID_RE.test(subdomainMatch[1])) {
59
+ return subdomainMatch[1];
60
+ }
61
+ }
62
+ catch (_) {
63
+ return null;
64
+ }
65
+ return null;
66
+ }
67
+ function buildArweaveFetchUrls(input) {
68
+ const out = [];
69
+ const push = (u) => {
70
+ if (!u)
71
+ return;
72
+ const v = String(u).trim();
73
+ if (!v)
74
+ return;
75
+ if (!out.includes(v))
76
+ out.push(v);
77
+ };
78
+ const raw = String(input || '').trim();
79
+ if (!raw)
80
+ return out;
81
+ // Keep original URL first when caller passes full URL.
82
+ if (raw.startsWith('http://') || raw.startsWith('https://')) {
83
+ push(raw);
84
+ }
85
+ const txId = extractArweaveTxId(raw);
86
+ if (txId) {
87
+ for (const gw of ARWEAVE_FALLBACK_GATEWAYS) {
88
+ push(`${gw}/${txId}`);
89
+ }
90
+ }
91
+ return out;
92
+ }
93
+ /**
94
+ * Upload data to Arweave.
95
+ * Default: POST to Yallet backend (api.yallet.xyz → backend ArDrive Turbo).
96
+ * If options.endpoint is set to an Irys URL (e.g. turbo.irys.xyz), uses direct Irys /tx instead.
97
+ *
98
+ * @param data - Data to upload (string or Uint8Array)
99
+ * @param options - Upload options
100
+ * @returns Upload result with transaction ID
101
+ */
102
+ export async function uploadToArweave(data, options = {}) {
103
+ const { apiKey, network = 'mainnet', endpoint = YALLET_ARWEAVE_UPLOAD_URL, contentType = 'application/octet-stream', tags = {}, } = options;
104
+ const dataBytes = typeof data === 'string'
105
+ ? new TextEncoder().encode(data)
106
+ : data;
107
+ const allTags = {
108
+ 'Content-Type': contentType,
109
+ 'App-Name': 'Yallet-RWA-SDK',
110
+ 'App-Version': '0.1.0',
111
+ ...tags,
112
+ };
113
+ const useYalletApi = !endpoint ||
114
+ endpoint === YALLET_ARWEAVE_UPLOAD_URL ||
115
+ endpoint.includes('api.yallet.xyz');
116
+ if (useYalletApi) {
117
+ const response = await fetch(endpoint, {
118
+ method: 'POST',
119
+ headers: { 'Content-Type': 'application/json' },
120
+ body: JSON.stringify({
121
+ data: toBase64(dataBytes),
122
+ contentType,
123
+ tags: allTags,
124
+ }),
125
+ });
126
+ const result = await response.json().catch(() => ({}));
127
+ if (!response.ok) {
128
+ const msg = result.message ?? response.statusText;
129
+ throw new Error(`Upload failed: ${response.status} - ${msg}`);
130
+ }
131
+ if (result.success !== true) {
132
+ const msg = result.message ?? 'Upload failed';
133
+ throw new Error(msg);
134
+ }
135
+ const rawId = result.id;
136
+ const rawUrl = result.url;
137
+ const id = extractArweaveTxId(rawId) || extractArweaveTxId(rawUrl);
138
+ if (!id)
139
+ throw new Error('Upload response missing valid Arweave tx id');
140
+ const url = `${ARWEAVE_GATEWAY}/${id}`;
141
+ return {
142
+ id,
143
+ url,
144
+ arweaveUri: `ar://${id}`,
145
+ timestamp: Date.now(),
146
+ };
147
+ }
148
+ // Legacy: direct Irys/Turbo
149
+ const headers = { 'Content-Type': contentType };
150
+ if (apiKey)
151
+ headers['Authorization'] = `Bearer ${apiKey}`;
152
+ const irysEndpoint = endpoint || ARWEAVE_ENDPOINTS[network];
153
+ const response = await fetch(`${irysEndpoint}/tx`, {
154
+ method: 'POST',
155
+ headers,
156
+ body: dataBytes,
157
+ });
158
+ if (!response.ok) {
159
+ const errorText = await response.text();
160
+ throw new Error(`Upload failed: ${response.status} - ${errorText}`);
161
+ }
162
+ const result = await response.json();
163
+ const txId = extractArweaveTxId(result.id) || extractArweaveTxId(result.url);
164
+ if (!txId)
165
+ throw new Error('Upload response missing valid Arweave tx id');
166
+ return {
167
+ id: txId,
168
+ url: `${ARWEAVE_GATEWAY}/${txId}`,
169
+ arweaveUri: `ar://${txId}`,
170
+ timestamp: Date.now(),
171
+ };
172
+ }
173
+ /**
174
+ * Upload encrypted asset to Arweave
175
+ *
176
+ * @param encryptedPayload - Encrypted asset data (with extended fields)
177
+ * @param metadata - Additional metadata
178
+ * @param options - Upload options
179
+ * @returns Upload result
180
+ */
181
+ export async function uploadEncryptedAsset(encryptedPayload, metadata, options = {}) {
182
+ const payload = {
183
+ encrypted: {
184
+ ephemeral_pub: encryptedPayload.ephemeral_pub,
185
+ encrypted_aes_key: encryptedPayload.encrypted_aes_key,
186
+ iv: encryptedPayload.iv,
187
+ encrypted_data: encryptedPayload.encrypted_data,
188
+ },
189
+ metadata: {
190
+ ...metadata,
191
+ version: encryptedPayload.version,
192
+ uuid: encryptedPayload.uuid,
193
+ timestamp: encryptedPayload.timestamp,
194
+ dataSize: encryptedPayload.dataSize,
195
+ uploadedAt: Date.now(),
196
+ },
197
+ };
198
+ const jsonString = JSON.stringify(payload);
199
+ return uploadToArweave(jsonString, {
200
+ ...options,
201
+ contentType: 'application/json',
202
+ tags: {
203
+ 'Yallet-Type': 'encrypted-asset',
204
+ 'Asset-Type': metadata.assetType,
205
+ 'Direction': metadata.direction || 'sent',
206
+ 'Network': metadata.network || options.network || 'mainnet',
207
+ ...(encryptedPayload.uuid ? { 'UUID': encryptedPayload.uuid } : {}),
208
+ ...options.tags,
209
+ },
210
+ });
211
+ }
212
+ /**
213
+ * Upload NFT metadata to Arweave
214
+ *
215
+ * @param metadata - NFT metadata object
216
+ * @param options - Upload options
217
+ * @returns Upload result
218
+ */
219
+ export async function uploadMetadata(metadata, options = {}) {
220
+ const jsonString = JSON.stringify(metadata);
221
+ return uploadToArweave(jsonString, {
222
+ ...options,
223
+ contentType: 'application/json',
224
+ tags: {
225
+ 'Content-Type': 'application/json',
226
+ 'Type': 'nft-metadata',
227
+ ...options.tags,
228
+ },
229
+ });
230
+ }
231
+ /**
232
+ * Download data from Arweave
233
+ *
234
+ * @param txIdOrUri - Transaction ID or ar:// URI
235
+ * @returns Fetched data
236
+ */
237
+ export async function downloadFromArweave(txIdOrUri) {
238
+ const urls = buildArweaveFetchUrls(txIdOrUri);
239
+ if (urls.length === 0) {
240
+ throw new Error('Invalid Arweave tx id or URI');
241
+ }
242
+ let lastError = null;
243
+ for (const url of urls) {
244
+ const controller = new AbortController();
245
+ const timeoutId = setTimeout(() => controller.abort(), 30000);
246
+ try {
247
+ const response = await fetch(url, { signal: controller.signal });
248
+ if (!response) {
249
+ if (!lastError) {
250
+ lastError = new Error('Download failed: empty response');
251
+ }
252
+ continue;
253
+ }
254
+ if (!response.ok) {
255
+ lastError = new Error(`Download failed: ${response.status}`);
256
+ continue;
257
+ }
258
+ return response;
259
+ }
260
+ catch (err) {
261
+ if (err instanceof Error && err.name === 'AbortError') {
262
+ lastError = new Error('Download timeout');
263
+ }
264
+ else {
265
+ lastError = err instanceof Error ? err : new Error(String(err));
266
+ }
267
+ }
268
+ finally {
269
+ clearTimeout(timeoutId);
270
+ }
271
+ }
272
+ throw lastError || new Error('Download failed');
273
+ }
274
+ /**
275
+ * Download and parse JSON from Arweave
276
+ *
277
+ * @param txIdOrUri - Transaction ID or ar:// URI
278
+ * @returns Parsed JSON
279
+ */
280
+ export async function downloadJsonFromArweave(txIdOrUri) {
281
+ const response = await downloadFromArweave(txIdOrUri);
282
+ return response.json();
283
+ }
284
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Yallet RWA SDK - Type Definitions
3
+ */
4
+ /**
5
+ * Supported RWA asset types
6
+ * Matches chrome-extension RWA_ASSET_TYPES for compatibility (no statement/receipt in extension).
7
+ */
8
+ export declare enum AssetType {
9
+ NOTE = "note",
10
+ INVOICE = "invoice",
11
+ PHOTO = "photo",
12
+ FILE = "file",
13
+ CONTACT = "contact"
14
+ }
15
+ /**
16
+ * Invoice data structure
17
+ * Aligns with chrome-extension invoice format for decrypt compatibility.
18
+ */
19
+ export interface InvoiceData {
20
+ /** Unique invoice ID/number (extension: invoiceNo) */
21
+ invoiceId: string;
22
+ /** Invoice amount / total */
23
+ amount: number;
24
+ /** Currency code (e.g., 'USD', 'EUR') */
25
+ currency: string;
26
+ /** Invoice date (ISO string) */
27
+ date: string;
28
+ /** Due date (ISO string) (extension: dueDate) */
29
+ dueDate?: string;
30
+ /** Invoice description */
31
+ description?: string;
32
+ /** Line items (extension: lineItems with name, price, qty, unit, total) */
33
+ items?: InvoiceItem[];
34
+ /** Additional notes (extension: notePayee) */
35
+ notes?: string;
36
+ /** Custom metadata */
37
+ metadata?: Record<string, unknown>;
38
+ /** Extension-compat: billTo contact id */
39
+ billTo?: string;
40
+ /** Extension-compat: PO number */
41
+ poNo?: string;
42
+ /** Extension-compat: discount rate 0-100 */
43
+ discountRate?: number;
44
+ /** Extension-compat: discount amount */
45
+ discountAmount?: number;
46
+ /** Extension-compat: tax rate 0-100 */
47
+ taxRate?: number;
48
+ /** Extension-compat: subtotal */
49
+ subtotal?: number;
50
+ /** Extension-compat: tax amount */
51
+ taxAmount?: number;
52
+ /** Extension-compat: total (same as amount) */
53
+ total?: number;
54
+ /** Extension-compat: payment method 'bank' | 'crypto' */
55
+ paymentMethod?: string;
56
+ /** Extension-compat: payment terms */
57
+ paymentTerms?: string;
58
+ /** Extension-compat: note to payee */
59
+ notePayee?: string;
60
+ }
61
+ export interface InvoiceItem {
62
+ description: string;
63
+ quantity: number;
64
+ unitPrice: number;
65
+ amount: number;
66
+ /** Extension-compat: line item name (same as description) */
67
+ name?: string;
68
+ /** Extension-compat: unit e.g. 'units' | 'hours' */
69
+ unit?: string;
70
+ /** Extension-compat: qty (same as quantity) */
71
+ qty?: number;
72
+ /** Extension-compat: total (same as amount) */
73
+ total?: number;
74
+ }
75
+ /**
76
+ * Note data structure
77
+ */
78
+ export interface NoteData {
79
+ title: string;
80
+ content: string;
81
+ tags?: string[];
82
+ metadata?: Record<string, unknown>;
83
+ }
84
+ /**
85
+ * Contact data structure
86
+ */
87
+ export interface ContactData {
88
+ name: string;
89
+ email?: string;
90
+ phone?: string;
91
+ company?: string;
92
+ address?: string;
93
+ notes?: string;
94
+ metadata?: Record<string, unknown>;
95
+ }
96
+ /**
97
+ * File data structure
98
+ */
99
+ export interface FileData {
100
+ filename: string;
101
+ mimeType: string;
102
+ /** Base64 encoded file content */
103
+ content: string;
104
+ size: number;
105
+ metadata?: Record<string, unknown>;
106
+ }
107
+ /**
108
+ * Photo data structure
109
+ */
110
+ export interface PhotoData {
111
+ filename: string;
112
+ mimeType: string;
113
+ /** Base64 encoded image content */
114
+ content: string;
115
+ width?: number;
116
+ height?: number;
117
+ metadata?: Record<string, unknown>;
118
+ }
119
+ /**
120
+ * Encrypted payload structure (ECIES)
121
+ */
122
+ export interface EncryptedPayload {
123
+ /** Ephemeral public key (base64) */
124
+ ephemeral_pub: string;
125
+ /** Encrypted AES key (base64) */
126
+ encrypted_aes_key: string;
127
+ /** Initialization vector (base64) */
128
+ iv: string;
129
+ /** Encrypted data (base64) */
130
+ encrypted_data: string;
131
+ }
132
+ /**
133
+ * Asset envelope for encryption
134
+ */
135
+ export interface AssetEnvelope {
136
+ version: number;
137
+ type: AssetType;
138
+ timestamp: number;
139
+ uuid: string;
140
+ schema?: string;
141
+ previousToken?: string;
142
+ data: unknown;
143
+ }
144
+ /**
145
+ * Encrypt function signature (compatible with WASM)
146
+ */
147
+ export type EncryptFunction = (recipientXidentityB64: string, plaintext: Uint8Array) => string;
148
+ /**
149
+ * Registered user with xidentity
150
+ */
151
+ export interface RegisteredUser {
152
+ /** User's Solana wallet address */
153
+ solanaAddress: string;
154
+ /** User's xidentity public key (base64) */
155
+ xidentity: string;
156
+ /** Optional display name */
157
+ name?: string;
158
+ /** Optional email */
159
+ email?: string;
160
+ /** Registration timestamp */
161
+ registeredAt: number;
162
+ /** Additional metadata */
163
+ metadata?: Record<string, unknown>;
164
+ }
165
+ /**
166
+ * User registry interface
167
+ */
168
+ export interface UserRegistry {
169
+ /** Get user by Solana address */
170
+ getUser(solanaAddress: string): Promise<RegisteredUser | null>;
171
+ /** Register a new user */
172
+ registerUser(user: RegisteredUser): Promise<void>;
173
+ /** Update user */
174
+ updateUser(solanaAddress: string, updates: Partial<RegisteredUser>): Promise<void>;
175
+ /** Delete user */
176
+ deleteUser(solanaAddress: string): Promise<void>;
177
+ /** List all users */
178
+ listUsers(): Promise<RegisteredUser[]>;
179
+ }
180
+ /**
181
+ * Mint request parameters
182
+ */
183
+ export interface MintRequest {
184
+ /** Asset type */
185
+ assetType: AssetType;
186
+ /** Asset data (InvoiceData, NoteData, ContactData, FileData, PhotoData) */
187
+ assetData: InvoiceData | NoteData | ContactData | FileData | PhotoData;
188
+ /** Recipient's Solana address */
189
+ recipientAddress: string;
190
+ /** NFT name */
191
+ name: string;
192
+ /** NFT description */
193
+ description?: string;
194
+ /** Additional NFT attributes */
195
+ attributes?: Array<{
196
+ trait_type: string;
197
+ value: string;
198
+ }>;
199
+ /** Unique identifier for tracking (auto-generated if not provided) */
200
+ uuid?: string;
201
+ /** Previous token address for version chain (null for first version) */
202
+ previousToken?: string;
203
+ /** Schema identifier for data format validation */
204
+ schema?: string;
205
+ /** MIME type of the asset content */
206
+ mimeType?: string;
207
+ /** Size of the encrypted data in bytes */
208
+ dataSize?: number;
209
+ }
210
+ /**
211
+ * Mint result
212
+ */
213
+ export interface MintResult {
214
+ /** Whether minting was successful */
215
+ success: boolean;
216
+ /** Asset ID (Solana address of the NFT) */
217
+ assetId?: string;
218
+ /** Transaction signature */
219
+ signature?: string;
220
+ /** Arweave transaction ID for encrypted data */
221
+ arweaveTxId?: string;
222
+ /** Arweave transaction ID for metadata */
223
+ metadataArweaveTxId?: string;
224
+ /** UUID used for this mint */
225
+ uuid?: string;
226
+ /** Error message if failed */
227
+ error?: string;
228
+ }
229
+ /**
230
+ * Merkle tree configuration
231
+ */
232
+ export interface TreeConfig {
233
+ /** Tree address (Solana pubkey) */
234
+ treeAddress: string;
235
+ /** Tree authority address */
236
+ treeAuthority: string;
237
+ /** Maximum depth */
238
+ maxDepth: number;
239
+ /** Total capacity */
240
+ capacity: number;
241
+ /** Current usage */
242
+ used: number;
243
+ /** Remaining slots */
244
+ remaining: number;
245
+ /** Usage percentage */
246
+ usagePercent: number;
247
+ }
248
+ /**
249
+ * SDK configuration options
250
+ */
251
+ export interface SDKConfig {
252
+ /** Solana RPC endpoint */
253
+ rpcEndpoint: string;
254
+ /** Network: 'mainnet' or 'devnet' */
255
+ network: 'mainnet' | 'devnet';
256
+ /** Merkle tree address (optional, will use backend if not provided) */
257
+ merkleTreeAddress?: string;
258
+ /** Merkle tree authority */
259
+ merkleTreeAuthority?: string;
260
+ /** Arweave upload endpoint */
261
+ arweaveEndpoint?: string;
262
+ /** Arweave API key for uploads (ArDrive Turbo) */
263
+ arweaveApiKey?: string;
264
+ /** Backend API URL for tree management */
265
+ backendApiUrl?: string;
266
+ }
267
+ /**
268
+ * Signer interface for transaction signing
269
+ */
270
+ export interface Signer {
271
+ /** Solana public key (base58) */
272
+ publicKey: string;
273
+ /** Sign transaction */
274
+ signTransaction(tx: Uint8Array): Promise<Uint8Array>;
275
+ /** Sign message */
276
+ signMessage(message: Uint8Array): Promise<Uint8Array>;
277
+ }
278
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Yallet RWA SDK - Type Definitions
3
+ */
4
+ // ======================================
5
+ // Asset Types
6
+ // ======================================
7
+ /**
8
+ * Supported RWA asset types
9
+ * Matches chrome-extension RWA_ASSET_TYPES for compatibility (no statement/receipt in extension).
10
+ */
11
+ export var AssetType;
12
+ (function (AssetType) {
13
+ AssetType["NOTE"] = "note";
14
+ AssetType["INVOICE"] = "invoice";
15
+ AssetType["PHOTO"] = "photo";
16
+ AssetType["FILE"] = "file";
17
+ AssetType["CONTACT"] = "contact";
18
+ })(AssetType || (AssetType = {}));
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yCAAyC;AACzC,eAAe;AACf,yCAAyC;AAEzC;;;GAGG;AACH,MAAM,CAAN,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,gCAAmB,CAAA;IACnB,4BAAe,CAAA;IACf,0BAAa,CAAA;IACb,gCAAmB,CAAA;AACrB,CAAC,EANW,SAAS,KAAT,SAAS,QAMpB"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@yallet/rwa-sdk",
3
+ "version": "0.2.0",
4
+ "description": "Yallet RWA SDK - Mint encrypted invoices and assets as Solana cNFTs",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "src",
18
+ "wasm"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "tsc --watch",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "test:coverage": "vitest run --coverage",
26
+ "lint": "eslint src --ext .ts",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "keywords": [
30
+ "yallet",
31
+ "rwa",
32
+ "nft",
33
+ "cnft",
34
+ "solana",
35
+ "invoice",
36
+ "encrypted",
37
+ "bubblegum",
38
+ "metaplex"
39
+ ],
40
+ "author": "Yallet",
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/nicewaymarket/yallet-chrome"
45
+ },
46
+ "dependencies": {
47
+ "@metaplex-foundation/mpl-bubblegum": "^4.3.1",
48
+ "@metaplex-foundation/umi": "^0.9.2",
49
+ "@metaplex-foundation/umi-bundle-defaults": "^0.9.2",
50
+ "@solana/web3.js": "^1.98.0"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "^22.13.0",
54
+ "@vitest/coverage-v8": "^3.0.4",
55
+ "typescript": "^5.7.3",
56
+ "vitest": "^3.2.4"
57
+ },
58
+ "engines": {
59
+ "node": ">=18.0.0"
60
+ },
61
+ "publishConfig": {
62
+ "access": "public"
63
+ }
64
+ }