@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,180 @@
1
+ /**
2
+ * Yallet RWA SDK - NFT Metadata Module
3
+ *
4
+ * Generates Metaplex-compatible NFT metadata for RWA assets
5
+ */
6
+ import { AssetType } from './types.js';
7
+ /**
8
+ * Get icon URL for asset type
9
+ */
10
+ function getAssetTypeIcon(assetType) {
11
+ const icons = {
12
+ [AssetType.NOTE]: 'https://yallet.app/icons/rwa-note.png',
13
+ [AssetType.INVOICE]: 'https://yallet.app/icons/rwa-invoice.png',
14
+ [AssetType.PHOTO]: 'https://yallet.app/icons/rwa-photo.png',
15
+ [AssetType.FILE]: 'https://yallet.app/icons/rwa-file.png',
16
+ [AssetType.CONTACT]: 'https://yallet.app/icons/rwa-contact.png',
17
+ };
18
+ return icons[assetType] || icons[AssetType.FILE];
19
+ }
20
+ /**
21
+ * Get default description for asset type
22
+ */
23
+ function getDefaultDescription(assetType, direction) {
24
+ const descriptions = {
25
+ [AssetType.NOTE]: 'Encrypted note',
26
+ [AssetType.INVOICE]: 'Encrypted invoice',
27
+ [AssetType.PHOTO]: 'Encrypted photo',
28
+ [AssetType.FILE]: 'Encrypted file',
29
+ [AssetType.CONTACT]: 'Encrypted contact',
30
+ };
31
+ const base = descriptions[assetType] || 'Encrypted asset';
32
+ const directionSuffix = direction === 'received' ? ' (Received)' : '';
33
+ return `${base}${directionSuffix} - Decryptable only by the owner`;
34
+ }
35
+ /**
36
+ * Generate a UUID v4
37
+ */
38
+ function generateUUID() {
39
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
40
+ return crypto.randomUUID();
41
+ }
42
+ // Fallback for environments without crypto.randomUUID
43
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
44
+ const r = (Math.random() * 16) | 0;
45
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
46
+ return v.toString(16);
47
+ });
48
+ }
49
+ /**
50
+ * Generate Metaplex-compatible NFT metadata
51
+ *
52
+ * @param params - Metadata parameters
53
+ * @returns NFT metadata object
54
+ */
55
+ export function generateNFTMetadata(params) {
56
+ const { name, description, assetType, encryptedDataUri, owner, direction = 'sent', additionalAttributes = [], externalUrl = 'https://yallet.app',
57
+ // New fields with defaults
58
+ uuid = generateUUID(), timestamp = Math.floor(Date.now() / 1000), previousToken = null, schema = null, mimeType = null, dataSize = null, } = params;
59
+ const finalDescription = description || getDefaultDescription(assetType, direction);
60
+ // Build attributes array with required and optional fields
61
+ const attributes = [
62
+ { trait_type: 'Asset Type', value: assetType },
63
+ { trait_type: 'Direction', value: direction },
64
+ { trait_type: 'Encrypted', value: 'true' },
65
+ { trait_type: 'Version', value: '1' },
66
+ { trait_type: 'UUID', value: uuid },
67
+ { trait_type: 'Timestamp', value: String(timestamp) },
68
+ ];
69
+ // Add optional attributes only if they have values
70
+ if (previousToken) {
71
+ attributes.push({ trait_type: 'Previous Token', value: previousToken });
72
+ }
73
+ if (schema) {
74
+ attributes.push({ trait_type: 'Schema', value: schema });
75
+ }
76
+ if (mimeType) {
77
+ attributes.push({ trait_type: 'MIME Type', value: mimeType });
78
+ }
79
+ if (dataSize !== null && dataSize !== undefined) {
80
+ attributes.push({ trait_type: 'Data Size', value: String(dataSize) });
81
+ }
82
+ // Add any additional custom attributes
83
+ attributes.push(...additionalAttributes);
84
+ return {
85
+ name,
86
+ symbol: 'YRWA', // Yallet RWA
87
+ description: finalDescription,
88
+ image: getAssetTypeIcon(assetType),
89
+ external_url: externalUrl,
90
+ attributes,
91
+ properties: {
92
+ files: [
93
+ {
94
+ uri: encryptedDataUri,
95
+ type: mimeType || 'application/octet-stream',
96
+ },
97
+ ],
98
+ category: 'document',
99
+ creators: [
100
+ {
101
+ address: owner,
102
+ share: 100,
103
+ },
104
+ ],
105
+ },
106
+ yallet_rwa: {
107
+ version: 1,
108
+ assetType,
109
+ direction,
110
+ encryptedDataUri,
111
+ uuid,
112
+ timestamp,
113
+ previousToken,
114
+ schema,
115
+ mimeType,
116
+ dataSize,
117
+ },
118
+ };
119
+ }
120
+ /**
121
+ * Generate invoice-specific NFT metadata
122
+ *
123
+ * @param invoiceData - Invoice data
124
+ * @param encryptedDataUri - Arweave URI
125
+ * @param owner - Owner's Solana address
126
+ * @param options - Additional options
127
+ * @returns NFT metadata
128
+ */
129
+ export function generateInvoiceMetadata(invoiceData, encryptedDataUri, owner, options = {}) {
130
+ return generateNFTMetadata({
131
+ name: `Invoice #${invoiceData.invoiceId}`,
132
+ description: invoiceData.description || `Invoice for ${invoiceData.amount} ${invoiceData.currency}`,
133
+ assetType: AssetType.INVOICE,
134
+ encryptedDataUri,
135
+ owner,
136
+ direction: 'sent',
137
+ additionalAttributes: [
138
+ { trait_type: 'Invoice ID', value: invoiceData.invoiceId },
139
+ { trait_type: 'Amount', value: `${invoiceData.amount} ${invoiceData.currency}` },
140
+ ],
141
+ mimeType: 'application/json',
142
+ schema: options.schema || 'yallet-invoice-v1',
143
+ ...options,
144
+ });
145
+ }
146
+ /**
147
+ * Parse RWA NFT metadata from on-chain data
148
+ *
149
+ * @param nftData - NFT data from DAS API
150
+ * @returns Parsed RWA metadata
151
+ */
152
+ export function parseRWAMetadata(nftData) {
153
+ const attributes = nftData.content?.metadata?.attributes || [];
154
+ const getAttr = (traitType) => {
155
+ const attr = attributes.find((a) => (a.trait_type || a.name) === traitType);
156
+ return attr?.value || null;
157
+ };
158
+ const timestampStr = getAttr('Timestamp');
159
+ const dataSizeStr = getAttr('Data Size');
160
+ return {
161
+ id: nftData.id,
162
+ name: nftData.content?.metadata?.name || 'Unnamed',
163
+ description: nftData.content?.metadata?.description || '',
164
+ assetType: getAttr('Asset Type'),
165
+ direction: getAttr('Direction'),
166
+ encrypted: getAttr('Encrypted') === 'true',
167
+ version: getAttr('Version'),
168
+ image: nftData.content?.links?.image || null,
169
+ encryptedDataUri: nftData.content?.metadata?.properties?.files?.[0]?.uri || null,
170
+ owner: nftData.ownership?.owner || null,
171
+ // New fields
172
+ uuid: getAttr('UUID'),
173
+ timestamp: timestampStr ? parseInt(timestampStr, 10) : null,
174
+ previousToken: getAttr('Previous Token'),
175
+ schema: getAttr('Schema'),
176
+ mimeType: getAttr('MIME Type') || nftData.content?.metadata?.properties?.files?.[0]?.type || null,
177
+ dataSize: dataSizeStr ? parseInt(dataSizeStr, 10) : null,
178
+ };
179
+ }
180
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Yallet RWA SDK - Minting Module
3
+ *
4
+ * Handles cNFT minting using Metaplex Bubblegum
5
+ */
6
+ import { type Keypair } from '@metaplex-foundation/umi';
7
+ import { Connection } from '@solana/web3.js';
8
+ import type { TreeConfig, MintResult, SDKConfig } from './types.js';
9
+ export declare class CNFTMinter {
10
+ private umi;
11
+ private connection;
12
+ private config;
13
+ private treeConfig;
14
+ constructor(config: SDKConfig);
15
+ /**
16
+ * Set the signer for minting transactions
17
+ *
18
+ * @param signer - Signer with publicKey and signTransaction
19
+ */
20
+ setSigner(keypair: Keypair): void;
21
+ /**
22
+ * Set the Merkle tree configuration
23
+ *
24
+ * @param treeConfig - Tree configuration
25
+ */
26
+ setTreeConfig(treeConfig: TreeConfig): void;
27
+ /**
28
+ * Get or fetch tree configuration
29
+ */
30
+ getTreeConfig(): Promise<TreeConfig | null>;
31
+ /**
32
+ * Mint a compressed NFT
33
+ *
34
+ * @param params - Minting parameters
35
+ * @returns Mint result
36
+ */
37
+ mint(params: {
38
+ metadataUri: string;
39
+ name: string;
40
+ symbol?: string;
41
+ recipient: string;
42
+ sellerFeeBasisPoints?: number;
43
+ creators?: Array<{
44
+ address: string;
45
+ share: number;
46
+ }>;
47
+ }): Promise<MintResult>;
48
+ }
49
+ /**
50
+ * Create a new CNFTMinter instance
51
+ *
52
+ * @param config - SDK configuration
53
+ * @returns CNFTMinter instance
54
+ */
55
+ export declare function createMinter(config: SDKConfig): CNFTMinter;
56
+ /**
57
+ * Estimate minting cost
58
+ *
59
+ * @param connection - Solana connection
60
+ * @returns Estimated cost in lamports
61
+ */
62
+ export declare function estimateMintCost(connection: Connection): Promise<number>;
63
+ //# sourceMappingURL=minting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minting.d.ts","sourceRoot":"","sources":["../src/minting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAML,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,UAAU,EAAgC,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EAEV,SAAS,EACV,MAAM,YAAY,CAAC;AAOpB,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,EAAE,SAAS;IAQ7B;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjC;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA6DjD;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,GAAG,OAAO,CAAC,UAAU,CAAC;CAqFxB;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE1D;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAc9E"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Yallet RWA SDK - Minting Module
3
+ *
4
+ * Handles cNFT minting using Metaplex Bubblegum
5
+ */
6
+ import { publicKey, keypairIdentity, } from '@metaplex-foundation/umi';
7
+ import { createUmi as createUmiDefaults } from '@metaplex-foundation/umi-bundle-defaults';
8
+ import { mplBubblegum, mintV1, } from '@metaplex-foundation/mpl-bubblegum';
9
+ import { Connection } from '@solana/web3.js';
10
+ // ======================================
11
+ // Minter Class
12
+ // ======================================
13
+ export class CNFTMinter {
14
+ umi;
15
+ connection;
16
+ config;
17
+ treeConfig = null;
18
+ constructor(config) {
19
+ this.config = config;
20
+ this.connection = new Connection(config.rpcEndpoint);
21
+ // Initialize Umi
22
+ this.umi = createUmiDefaults(config.rpcEndpoint).use(mplBubblegum());
23
+ }
24
+ /**
25
+ * Set the signer for minting transactions
26
+ *
27
+ * @param signer - Signer with publicKey and signTransaction
28
+ */
29
+ setSigner(keypair) {
30
+ this.umi = this.umi.use(keypairIdentity(keypair));
31
+ }
32
+ /**
33
+ * Set the Merkle tree configuration
34
+ *
35
+ * @param treeConfig - Tree configuration
36
+ */
37
+ setTreeConfig(treeConfig) {
38
+ this.treeConfig = treeConfig;
39
+ }
40
+ /**
41
+ * Get or fetch tree configuration
42
+ */
43
+ async getTreeConfig() {
44
+ if (this.treeConfig) {
45
+ return this.treeConfig;
46
+ }
47
+ // Try to fetch from configured address
48
+ if (this.config.merkleTreeAddress) {
49
+ // For now, return a basic config
50
+ // In production, you'd fetch the actual tree data
51
+ return {
52
+ treeAddress: this.config.merkleTreeAddress,
53
+ treeAuthority: this.config.merkleTreeAuthority || this.config.merkleTreeAddress,
54
+ maxDepth: 14,
55
+ capacity: 16384,
56
+ used: 0,
57
+ remaining: 16384,
58
+ usagePercent: 0,
59
+ };
60
+ }
61
+ // Try to fetch from backend API
62
+ if (this.config.backendApiUrl) {
63
+ try {
64
+ const response = await fetch(`${this.config.backendApiUrl}/api/cnft/active-tree?network=${this.config.network}`);
65
+ if (response.ok) {
66
+ const data = (await response.json());
67
+ if (data.available && data.tree) {
68
+ this.treeConfig = {
69
+ treeAddress: data.tree.address,
70
+ treeAuthority: data.tree.authority,
71
+ maxDepth: data.tree.maxDepth,
72
+ capacity: data.tree.capacity,
73
+ used: data.tree.used,
74
+ remaining: data.tree.remaining,
75
+ usagePercent: parseFloat(data.tree.usagePercent),
76
+ };
77
+ return this.treeConfig;
78
+ }
79
+ }
80
+ }
81
+ catch (err) {
82
+ console.warn('Failed to fetch tree from backend:', err);
83
+ }
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Mint a compressed NFT
89
+ *
90
+ * @param params - Minting parameters
91
+ * @returns Mint result
92
+ */
93
+ async mint(params) {
94
+ const { metadataUri, name, symbol = 'YRWA', recipient, sellerFeeBasisPoints = 0, creators = [], } = params;
95
+ // Get tree configuration
96
+ const treeConfig = await this.getTreeConfig();
97
+ if (!treeConfig) {
98
+ return {
99
+ success: false,
100
+ error: 'No Merkle tree configured. Please set a tree address or backend API.',
101
+ };
102
+ }
103
+ try {
104
+ const merkleTree = publicKey(treeConfig.treeAddress);
105
+ const leafOwner = publicKey(recipient);
106
+ // Prepare metadata args
107
+ const metadataArgs = {
108
+ name,
109
+ symbol,
110
+ uri: metadataUri,
111
+ sellerFeeBasisPoints,
112
+ primarySaleHappened: false,
113
+ isMutable: true,
114
+ editionNonce: null,
115
+ tokenStandard: null,
116
+ collection: null,
117
+ uses: null,
118
+ tokenProgramVersion: 0, // Original
119
+ creators: creators.map((c) => ({
120
+ address: publicKey(c.address),
121
+ verified: false,
122
+ share: c.share,
123
+ })),
124
+ };
125
+ // Build and send mint instruction
126
+ const { signature } = await mintV1(this.umi, {
127
+ merkleTree,
128
+ leafOwner,
129
+ metadata: metadataArgs,
130
+ }).sendAndConfirm(this.umi);
131
+ // Get the leaf index to compute asset ID
132
+ // Note: In production, you'd parse the transaction logs
133
+ const signatureStr = Buffer.from(signature).toString('base64');
134
+ // Notify backend of successful mint (if configured)
135
+ if (this.config.backendApiUrl) {
136
+ try {
137
+ await fetch(`${this.config.backendApiUrl}/api/cnft/mint-complete`, {
138
+ method: 'POST',
139
+ headers: { 'Content-Type': 'application/json' },
140
+ body: JSON.stringify({
141
+ network: this.config.network,
142
+ treeAddress: treeConfig.treeAddress,
143
+ }),
144
+ });
145
+ }
146
+ catch (err) {
147
+ console.warn('Failed to notify backend of mint:', err);
148
+ }
149
+ }
150
+ return {
151
+ success: true,
152
+ signature: signatureStr,
153
+ // Asset ID would be computed from the leaf index
154
+ // For now, we return the signature
155
+ };
156
+ }
157
+ catch (err) {
158
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
159
+ return {
160
+ success: false,
161
+ error: `Minting failed: ${errorMessage}`,
162
+ };
163
+ }
164
+ }
165
+ }
166
+ // ======================================
167
+ // Helper Functions
168
+ // ======================================
169
+ /**
170
+ * Create a new CNFTMinter instance
171
+ *
172
+ * @param config - SDK configuration
173
+ * @returns CNFTMinter instance
174
+ */
175
+ export function createMinter(config) {
176
+ return new CNFTMinter(config);
177
+ }
178
+ /**
179
+ * Estimate minting cost
180
+ *
181
+ * @param connection - Solana connection
182
+ * @returns Estimated cost in lamports
183
+ */
184
+ export async function estimateMintCost(connection) {
185
+ // cNFT minting is very cheap - typically around 0.00001 SOL
186
+ // The main cost is the priority fee
187
+ const recentPrioritizationFees = await connection.getRecentPrioritizationFees();
188
+ const avgFee = recentPrioritizationFees.reduce((sum, fee) => sum + fee.prioritizationFee, 0) / (recentPrioritizationFees.length || 1);
189
+ // Base transaction fee + priority fee
190
+ const baseFee = 5000; // 0.000005 SOL
191
+ const priorityFee = Math.ceil(avgFee);
192
+ return baseFee + priorityFee;
193
+ }
194
+ //# sourceMappingURL=minting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minting.js","sourceRoot":"","sources":["../src/minting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Yallet RWA SDK - Payload builders
3
+ *
4
+ * Build JSON payloads that match chrome-extension decryption expectations
5
+ * for invoice / statements / receipts / files / messages / pictures.
6
+ */
7
+ import type { InvoiceData, NoteData, FileData, PhotoData } from './types.js';
8
+ /** Line item shape expected by extension */
9
+ export interface ExtensionLineItem {
10
+ name: string;
11
+ price: number;
12
+ qty: number;
13
+ unit: string;
14
+ total: number;
15
+ }
16
+ /** Invoice payload bundle (extension decrypts and uses invoice + optional pdf) */
17
+ export interface InvoicePayloadBundle {
18
+ invoice: ExtensionInvoicePayload;
19
+ pdf?: string;
20
+ senderProfile?: Record<string, unknown>;
21
+ recipientProfile?: Record<string, unknown>;
22
+ }
23
+ export interface ExtensionInvoicePayload {
24
+ id?: string;
25
+ uuid?: string;
26
+ invoiceNo: string;
27
+ type?: 'sent' | 'received';
28
+ status?: string;
29
+ billTo?: string;
30
+ poNo?: string;
31
+ dueDate?: string;
32
+ lineItems: ExtensionLineItem[];
33
+ discountRate?: number;
34
+ discountAmount?: number;
35
+ taxRate?: number;
36
+ subtotal: number;
37
+ taxAmount?: number;
38
+ total: number;
39
+ currency: string;
40
+ paymentMethod?: string;
41
+ paymentTerms?: string;
42
+ notePayee?: string;
43
+ createdAt: string;
44
+ }
45
+ /** File payload (extension expects name, fileData base64, type, etc.) */
46
+ export interface ExtensionFilePayload {
47
+ id?: string;
48
+ name: string;
49
+ originalName?: string;
50
+ description?: string;
51
+ tag?: string | null;
52
+ size: number;
53
+ type: string;
54
+ fileData: string;
55
+ createdAt: string;
56
+ }
57
+ /** Note/Message payload (extension: note with title, content, type, replyTo) */
58
+ export interface ExtensionNotePayload {
59
+ id?: string;
60
+ uuid?: string;
61
+ title: string;
62
+ content: string;
63
+ tag?: string | null;
64
+ type?: 'private' | 'sent' | 'received';
65
+ recipientId?: string | null;
66
+ recipientName?: string | null;
67
+ replyTo?: string | null;
68
+ createdAt: string;
69
+ }
70
+ /** Photo payload (extension: imageData base64, mimeType, name) */
71
+ export interface ExtensionPhotoPayload {
72
+ id?: string;
73
+ name: string;
74
+ description?: string;
75
+ tag?: string | null;
76
+ imageData: string;
77
+ mimeType: string;
78
+ dataUrl?: string;
79
+ thumbnail?: string;
80
+ createdAt: string;
81
+ }
82
+ /**
83
+ * Build invoice payload bundle for minting.
84
+ * Matches chrome-extension format so the extension can decrypt and display.
85
+ */
86
+ export declare function buildInvoicePayload(invoice: InvoiceData, options?: {
87
+ id?: string;
88
+ uuid?: string;
89
+ pdfBase64?: string;
90
+ senderProfile?: Record<string, unknown>;
91
+ recipientProfile?: Record<string, unknown>;
92
+ }): InvoicePayloadBundle;
93
+ /**
94
+ * Build file payload for minting.
95
+ * Matches chrome-extension format (name, fileData base64, type, size).
96
+ */
97
+ export declare function buildFilePayload(file: FileData, options?: {
98
+ id?: string;
99
+ }): ExtensionFilePayload;
100
+ /**
101
+ * Build message/note payload for minting.
102
+ * Matches chrome-extension format (title, content, replyTo). Type is always 'sent' (institution sends to users).
103
+ */
104
+ export declare function buildMessagePayload(note: NoteData, options?: {
105
+ id?: string;
106
+ uuid?: string;
107
+ recipientId?: string | null;
108
+ recipientName?: string | null;
109
+ replyTo?: string | null;
110
+ }): ExtensionNotePayload;
111
+ /**
112
+ * Build picture/photo payload for minting.
113
+ * Matches chrome-extension format (imageData base64, mimeType, name).
114
+ */
115
+ export declare function buildPhotoPayload(photo: PhotoData, options?: {
116
+ id?: string;
117
+ thumbnail?: string;
118
+ dataUrl?: string;
119
+ }): ExtensionPhotoPayload;
120
+ //# sourceMappingURL=payloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../src/payloads.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,QAAQ,EACR,QAAQ,EACR,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,uBAAuB,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqBD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C,GACA,oBAAoB,CAmCtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACxB,oBAAoB,CAYtB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GACA,oBAAoB,CAatB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,qBAAqB,CAavB"}