pay-lobster 1.0.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 (120) hide show
  1. package/README.md +401 -0
  2. package/README.md.bak +401 -0
  3. package/dist/agent.d.ts +132 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +224 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/analytics.d.ts +120 -0
  8. package/dist/analytics.d.ts.map +1 -0
  9. package/dist/analytics.js +345 -0
  10. package/dist/analytics.js.map +1 -0
  11. package/dist/approvals.d.ts +168 -0
  12. package/dist/approvals.d.ts.map +1 -0
  13. package/dist/approvals.js +406 -0
  14. package/dist/approvals.js.map +1 -0
  15. package/dist/circle-client.d.ts +152 -0
  16. package/dist/circle-client.d.ts.map +1 -0
  17. package/dist/circle-client.js +266 -0
  18. package/dist/circle-client.js.map +1 -0
  19. package/dist/commission.d.ts +191 -0
  20. package/dist/commission.d.ts.map +1 -0
  21. package/dist/commission.js +475 -0
  22. package/dist/commission.js.map +1 -0
  23. package/dist/condition-builder.d.ts +98 -0
  24. package/dist/condition-builder.d.ts.map +1 -0
  25. package/dist/condition-builder.js +193 -0
  26. package/dist/condition-builder.js.map +1 -0
  27. package/dist/contacts.d.ts +179 -0
  28. package/dist/contacts.d.ts.map +1 -0
  29. package/dist/contacts.js +445 -0
  30. package/dist/contacts.js.map +1 -0
  31. package/dist/easy.d.ts +22 -0
  32. package/dist/easy.d.ts.map +1 -0
  33. package/dist/easy.js +40 -0
  34. package/dist/easy.js.map +1 -0
  35. package/dist/erc8004/constants.d.ts +152 -0
  36. package/dist/erc8004/constants.d.ts.map +1 -0
  37. package/dist/erc8004/constants.js +114 -0
  38. package/dist/erc8004/constants.js.map +1 -0
  39. package/dist/erc8004/discovery.d.ts +84 -0
  40. package/dist/erc8004/discovery.d.ts.map +1 -0
  41. package/dist/erc8004/discovery.js +217 -0
  42. package/dist/erc8004/discovery.js.map +1 -0
  43. package/dist/erc8004/identity.d.ts +91 -0
  44. package/dist/erc8004/identity.d.ts.map +1 -0
  45. package/dist/erc8004/identity.js +250 -0
  46. package/dist/erc8004/identity.js.map +1 -0
  47. package/dist/erc8004/index.d.ts +147 -0
  48. package/dist/erc8004/index.d.ts.map +1 -0
  49. package/dist/erc8004/index.js +225 -0
  50. package/dist/erc8004/index.js.map +1 -0
  51. package/dist/erc8004/reputation.d.ts +133 -0
  52. package/dist/erc8004/reputation.d.ts.map +1 -0
  53. package/dist/erc8004/reputation.js +277 -0
  54. package/dist/erc8004/reputation.js.map +1 -0
  55. package/dist/escrow-templates.d.ts +38 -0
  56. package/dist/escrow-templates.d.ts.map +1 -0
  57. package/dist/escrow-templates.js +419 -0
  58. package/dist/escrow-templates.js.map +1 -0
  59. package/dist/escrow.d.ts +320 -0
  60. package/dist/escrow.d.ts.map +1 -0
  61. package/dist/escrow.js +854 -0
  62. package/dist/escrow.js.map +1 -0
  63. package/dist/index.d.ts +11 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +33 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/invoices.d.ts +212 -0
  68. package/dist/invoices.d.ts.map +1 -0
  69. package/dist/invoices.js +393 -0
  70. package/dist/invoices.js.map +1 -0
  71. package/dist/notifications.d.ts +141 -0
  72. package/dist/notifications.d.ts.map +1 -0
  73. package/dist/notifications.js +350 -0
  74. package/dist/notifications.js.map +1 -0
  75. package/dist/tips.d.ts +171 -0
  76. package/dist/tips.d.ts.map +1 -0
  77. package/dist/tips.js +390 -0
  78. package/dist/tips.js.map +1 -0
  79. package/dist/types.d.ts +100 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +6 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/x402-client.d.ts +127 -0
  84. package/dist/x402-client.d.ts.map +1 -0
  85. package/dist/x402-client.js +350 -0
  86. package/dist/x402-client.js.map +1 -0
  87. package/dist/x402-server.d.ts +133 -0
  88. package/dist/x402-server.d.ts.map +1 -0
  89. package/dist/x402-server.js +330 -0
  90. package/dist/x402-server.js.map +1 -0
  91. package/lib/agent.ts +273 -0
  92. package/lib/analytics.ts +474 -0
  93. package/lib/analytics.ts.bak +474 -0
  94. package/lib/approvals.ts +585 -0
  95. package/lib/approvals.ts.bak +585 -0
  96. package/lib/circle-client.ts +376 -0
  97. package/lib/circle-client.ts.bak +376 -0
  98. package/lib/commission.ts +680 -0
  99. package/lib/commission.ts.bak +680 -0
  100. package/lib/condition-builder.ts +223 -0
  101. package/lib/condition-builder.ts.bak +223 -0
  102. package/lib/contacts.ts +615 -0
  103. package/lib/contacts.ts.bak +615 -0
  104. package/lib/easy.ts +46 -0
  105. package/lib/easy.ts.bak +352 -0
  106. package/lib/erc8004/constants.ts +175 -0
  107. package/lib/erc8004/discovery.ts +299 -0
  108. package/lib/erc8004/identity.ts +327 -0
  109. package/lib/erc8004/index.ts +285 -0
  110. package/lib/erc8004/reputation.ts +368 -0
  111. package/lib/escrow-templates.ts +462 -0
  112. package/lib/escrow.ts +1216 -0
  113. package/lib/index.ts +13 -0
  114. package/lib/invoices.ts +588 -0
  115. package/lib/notifications.ts +484 -0
  116. package/lib/tips.ts +570 -0
  117. package/lib/types.ts +108 -0
  118. package/lib/x402-client.ts +471 -0
  119. package/lib/x402-server.ts +462 -0
  120. package/package.json +58 -0
@@ -0,0 +1,475 @@
1
+ "use strict";
2
+ /**
3
+ * Commission Splitter Module
4
+ *
5
+ * Auto-distribute USDC commissions between multiple parties:
6
+ * agents, brokers, referral partners, team members.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CommissionSplitter = void 0;
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ const promises_1 = __importDefault(require("fs/promises"));
15
+ const path_1 = __importDefault(require("path"));
16
+ const DATA_DIR = process.env.USDC_DATA_DIR || './data';
17
+ /**
18
+ * Commission Splitter
19
+ */
20
+ class CommissionSplitter {
21
+ constructor(dataDir = DATA_DIR) {
22
+ this.splitsPath = path_1.default.join(dataDir, 'commission-splits.json');
23
+ this.templatesPath = path_1.default.join(dataDir, 'split-templates.json');
24
+ }
25
+ async loadSplits() {
26
+ try {
27
+ const data = await promises_1.default.readFile(this.splitsPath, 'utf-8');
28
+ return JSON.parse(data);
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ async saveSplits(splits) {
35
+ await promises_1.default.mkdir(path_1.default.dirname(this.splitsPath), { recursive: true });
36
+ await promises_1.default.writeFile(this.splitsPath, JSON.stringify(splits, null, 2));
37
+ }
38
+ async loadTemplates() {
39
+ try {
40
+ const data = await promises_1.default.readFile(this.templatesPath, 'utf-8');
41
+ return JSON.parse(data);
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }
47
+ async saveTemplates(templates) {
48
+ await promises_1.default.mkdir(path_1.default.dirname(this.templatesPath), { recursive: true });
49
+ await promises_1.default.writeFile(this.templatesPath, JSON.stringify(templates, null, 2));
50
+ }
51
+ // ============ Split Creation ============
52
+ /**
53
+ * Create a commission split
54
+ */
55
+ async createSplit(params) {
56
+ const splits = await this.loadSplits();
57
+ // Validate splits add up correctly
58
+ const validation = this.validateSplits(params.totalCommission, params.recipients);
59
+ if (!validation.valid) {
60
+ throw new Error(validation.error);
61
+ }
62
+ const split = {
63
+ id: `CS-${Date.now().toString(36).toUpperCase()}`,
64
+ name: params.name,
65
+ totalCommission: params.totalCommission,
66
+ chain: params.chain,
67
+ sourceWalletId: params.sourceWalletId,
68
+ propertyAddress: params.propertyAddress,
69
+ mlsNumber: params.mlsNumber,
70
+ closingDate: params.closingDate,
71
+ salePrice: params.salePrice,
72
+ recipients: params.recipients.map(r => ({
73
+ ...r,
74
+ id: crypto_1.default.randomUUID(),
75
+ })),
76
+ payouts: [],
77
+ status: 'draft',
78
+ executeAt: params.executeAt,
79
+ notes: params.notes,
80
+ createdAt: new Date().toISOString(),
81
+ updatedAt: new Date().toISOString(),
82
+ };
83
+ // Calculate payouts
84
+ split.payouts = this.calculatePayouts(split);
85
+ split.status = 'ready';
86
+ splits.push(split);
87
+ await this.saveSplits(splits);
88
+ return split;
89
+ }
90
+ /**
91
+ * Create split from template
92
+ */
93
+ async createFromTemplate(templateId, params) {
94
+ const templates = await this.loadTemplates();
95
+ const template = templates.find(t => t.id === templateId);
96
+ if (!template) {
97
+ throw new Error('Template not found');
98
+ }
99
+ // Map template roles to actual recipients
100
+ const recipients = template.recipients.map(tr => {
101
+ const actual = params.recipientAddresses.find(ra => ra.role === tr.role);
102
+ if (!actual) {
103
+ throw new Error(`No address provided for role: ${tr.role}`);
104
+ }
105
+ return {
106
+ name: actual.name,
107
+ role: tr.role,
108
+ walletAddress: actual.address,
109
+ splitType: tr.splitType,
110
+ splitValue: tr.splitValue,
111
+ tier: tr.tier,
112
+ };
113
+ });
114
+ // Update template usage
115
+ template.usageCount++;
116
+ template.lastUsedAt = new Date().toISOString();
117
+ await this.saveTemplates(templates);
118
+ return this.createSplit({
119
+ name: `${template.name} - ${params.propertyAddress || new Date().toLocaleDateString()}`,
120
+ totalCommission: params.totalCommission,
121
+ chain: params.chain,
122
+ sourceWalletId: params.sourceWalletId,
123
+ recipients,
124
+ propertyAddress: params.propertyAddress,
125
+ closingDate: params.closingDate,
126
+ salePrice: params.salePrice,
127
+ });
128
+ }
129
+ /**
130
+ * Quick split for common scenarios
131
+ */
132
+ async quickSplit(params) {
133
+ const recipients = [];
134
+ // Default splits based on scenario
135
+ const defaultSplits = {
136
+ listing_side: { agent: '70', broker: '30' },
137
+ buyer_side: { agent: '70', broker: '30' },
138
+ both_sides: { agent: '70', broker: '30' },
139
+ referral: { agent: '50', broker: '25', referral: '25' },
140
+ };
141
+ const splits = defaultSplits[params.scenario];
142
+ // Agent
143
+ recipients.push({
144
+ name: params.agent.name,
145
+ role: params.scenario === 'buyer_side' ? 'buyer_agent' : 'listing_agent',
146
+ walletAddress: params.agent.address,
147
+ splitType: 'percentage',
148
+ splitValue: params.agent.split || splits.agent,
149
+ });
150
+ // Broker
151
+ recipients.push({
152
+ name: params.broker.name,
153
+ role: 'broker',
154
+ walletAddress: params.broker.address,
155
+ splitType: 'percentage',
156
+ splitValue: params.broker.split || splits.broker,
157
+ });
158
+ // Referral (if applicable)
159
+ if (params.referral && params.scenario === 'referral') {
160
+ recipients.push({
161
+ name: params.referral.name,
162
+ role: 'referral',
163
+ walletAddress: params.referral.address,
164
+ splitType: 'percentage',
165
+ splitValue: params.referral.split || splits.referral || '25',
166
+ });
167
+ }
168
+ return this.createSplit({
169
+ name: `Commission - ${params.propertyAddress || 'Quick Split'}`,
170
+ totalCommission: params.totalCommission,
171
+ chain: params.chain,
172
+ sourceWalletId: params.sourceWalletId,
173
+ recipients,
174
+ propertyAddress: params.propertyAddress,
175
+ });
176
+ }
177
+ // ============ Payout Calculation ============
178
+ /**
179
+ * Calculate payouts for all recipients
180
+ */
181
+ calculatePayouts(split) {
182
+ const total = parseFloat(split.totalCommission);
183
+ const payouts = [];
184
+ let remaining = total;
185
+ // Sort by tier (lower tier = paid first)
186
+ const sortedRecipients = [...split.recipients].sort((a, b) => (a.tier || 0) - (b.tier || 0));
187
+ for (const recipient of sortedRecipients) {
188
+ let amount;
189
+ if (recipient.splitType === 'percentage') {
190
+ amount = total * (parseFloat(recipient.splitValue) / 100);
191
+ }
192
+ else {
193
+ amount = parseFloat(recipient.splitValue);
194
+ }
195
+ // Apply min/max caps
196
+ if (recipient.minAmount && amount < parseFloat(recipient.minAmount)) {
197
+ amount = parseFloat(recipient.minAmount);
198
+ }
199
+ if (recipient.maxAmount && amount > parseFloat(recipient.maxAmount)) {
200
+ amount = parseFloat(recipient.maxAmount);
201
+ }
202
+ // Don't exceed remaining
203
+ if (amount > remaining) {
204
+ amount = remaining;
205
+ }
206
+ remaining -= amount;
207
+ payouts.push({
208
+ recipientId: recipient.id,
209
+ amount: amount.toFixed(2),
210
+ status: 'pending',
211
+ });
212
+ }
213
+ return payouts;
214
+ }
215
+ /**
216
+ * Validate splits add up correctly
217
+ */
218
+ validateSplits(total, recipients) {
219
+ const totalAmount = parseFloat(total);
220
+ let percentageSum = 0;
221
+ let fixedSum = 0;
222
+ for (const r of recipients) {
223
+ if (r.splitType === 'percentage') {
224
+ percentageSum += parseFloat(r.splitValue);
225
+ }
226
+ else {
227
+ fixedSum += parseFloat(r.splitValue);
228
+ }
229
+ }
230
+ // Check percentages
231
+ if (percentageSum > 100) {
232
+ return { valid: false, error: `Percentages sum to ${percentageSum}%, exceeds 100%` };
233
+ }
234
+ // Check fixed amounts
235
+ const percentageAmount = totalAmount * (percentageSum / 100);
236
+ if (fixedSum + percentageAmount > totalAmount) {
237
+ return { valid: false, error: 'Fixed amounts + percentages exceed total commission' };
238
+ }
239
+ return { valid: true };
240
+ }
241
+ // ============ Execution ============
242
+ /**
243
+ * Execute a split (send all payouts)
244
+ * Returns the split with updated payout statuses
245
+ */
246
+ async execute(splitId, sendFn) {
247
+ const splits = await this.loadSplits();
248
+ const split = splits.find(s => s.id === splitId);
249
+ if (!split || split.status !== 'ready') {
250
+ return null;
251
+ }
252
+ split.status = 'processing';
253
+ await this.saveSplits(splits);
254
+ let successCount = 0;
255
+ let failCount = 0;
256
+ for (const payout of split.payouts) {
257
+ const recipient = split.recipients.find(r => r.id === payout.recipientId);
258
+ if (!recipient)
259
+ continue;
260
+ payout.status = 'processing';
261
+ try {
262
+ const result = await sendFn(recipient.walletAddress, payout.amount, split.chain);
263
+ payout.status = 'sent';
264
+ payout.txHash = result.txHash;
265
+ payout.sentAt = new Date().toISOString();
266
+ successCount++;
267
+ }
268
+ catch (err) {
269
+ payout.status = 'failed';
270
+ payout.error = err.message;
271
+ failCount++;
272
+ }
273
+ await this.saveSplits(splits);
274
+ }
275
+ // Update overall status
276
+ if (failCount === 0) {
277
+ split.status = 'completed';
278
+ }
279
+ else if (successCount === 0) {
280
+ split.status = 'failed';
281
+ }
282
+ else {
283
+ split.status = 'partial';
284
+ }
285
+ split.executedAt = new Date().toISOString();
286
+ split.updatedAt = new Date().toISOString();
287
+ await this.saveSplits(splits);
288
+ return split;
289
+ }
290
+ /**
291
+ * Retry failed payouts
292
+ */
293
+ async retryFailed(splitId, sendFn) {
294
+ const splits = await this.loadSplits();
295
+ const split = splits.find(s => s.id === splitId);
296
+ if (!split)
297
+ return null;
298
+ const failedPayouts = split.payouts.filter(p => p.status === 'failed');
299
+ for (const payout of failedPayouts) {
300
+ const recipient = split.recipients.find(r => r.id === payout.recipientId);
301
+ if (!recipient)
302
+ continue;
303
+ try {
304
+ const result = await sendFn(recipient.walletAddress, payout.amount, split.chain);
305
+ payout.status = 'sent';
306
+ payout.txHash = result.txHash;
307
+ payout.sentAt = new Date().toISOString();
308
+ payout.error = undefined;
309
+ }
310
+ catch (err) {
311
+ payout.error = err.message;
312
+ }
313
+ }
314
+ // Recalculate status
315
+ const statuses = split.payouts.map(p => p.status);
316
+ if (statuses.every(s => s === 'sent')) {
317
+ split.status = 'completed';
318
+ }
319
+ else if (statuses.some(s => s === 'sent')) {
320
+ split.status = 'partial';
321
+ }
322
+ split.updatedAt = new Date().toISOString();
323
+ await this.saveSplits(splits);
324
+ return split;
325
+ }
326
+ // ============ Templates ============
327
+ /**
328
+ * Create a split template
329
+ */
330
+ async createTemplate(params) {
331
+ const templates = await this.loadTemplates();
332
+ const template = {
333
+ id: crypto_1.default.randomUUID(),
334
+ name: params.name,
335
+ description: params.description,
336
+ recipients: params.recipients,
337
+ usageCount: 0,
338
+ createdAt: new Date().toISOString(),
339
+ };
340
+ templates.push(template);
341
+ await this.saveTemplates(templates);
342
+ return template;
343
+ }
344
+ /**
345
+ * List templates
346
+ */
347
+ async listTemplates() {
348
+ return this.loadTemplates();
349
+ }
350
+ /**
351
+ * Get common RE templates
352
+ */
353
+ async getDefaultTemplates() {
354
+ return [
355
+ {
356
+ id: 'default-70-30',
357
+ name: 'Standard 70/30 Split',
358
+ description: 'Agent gets 70%, broker gets 30%',
359
+ recipients: [
360
+ { role: 'listing_agent', splitType: 'percentage', splitValue: '70' },
361
+ { role: 'broker', splitType: 'percentage', splitValue: '30' },
362
+ ],
363
+ usageCount: 0,
364
+ createdAt: new Date().toISOString(),
365
+ },
366
+ {
367
+ id: 'default-80-20',
368
+ name: 'Senior Agent 80/20',
369
+ description: 'Senior agent split - 80% agent, 20% broker',
370
+ recipients: [
371
+ { role: 'listing_agent', splitType: 'percentage', splitValue: '80' },
372
+ { role: 'broker', splitType: 'percentage', splitValue: '20' },
373
+ ],
374
+ usageCount: 0,
375
+ createdAt: new Date().toISOString(),
376
+ },
377
+ {
378
+ id: 'default-referral',
379
+ name: 'Referral Split',
380
+ description: '25% to referral agent, remaining split 70/30',
381
+ recipients: [
382
+ { role: 'referral', splitType: 'percentage', splitValue: '25', tier: 1 },
383
+ { role: 'listing_agent', splitType: 'percentage', splitValue: '52.5', tier: 2 },
384
+ { role: 'broker', splitType: 'percentage', splitValue: '22.5', tier: 2 },
385
+ ],
386
+ usageCount: 0,
387
+ createdAt: new Date().toISOString(),
388
+ },
389
+ {
390
+ id: 'default-team',
391
+ name: 'Team Split',
392
+ description: 'Team lead, agent, broker, team fee',
393
+ recipients: [
394
+ { role: 'company', splitType: 'fixed', splitValue: '500', tier: 1 }, // Team fee
395
+ { role: 'listing_agent', splitType: 'percentage', splitValue: '50', tier: 2 },
396
+ { role: 'team_member', splitType: 'percentage', splitValue: '20', tier: 2 },
397
+ { role: 'broker', splitType: 'percentage', splitValue: '30', tier: 2 },
398
+ ],
399
+ usageCount: 0,
400
+ createdAt: new Date().toISOString(),
401
+ },
402
+ ];
403
+ }
404
+ // ============ Queries ============
405
+ /**
406
+ * Get split by ID
407
+ */
408
+ async get(id) {
409
+ const splits = await this.loadSplits();
410
+ return splits.find(s => s.id === id) || null;
411
+ }
412
+ /**
413
+ * List splits with filters
414
+ */
415
+ async list(filters) {
416
+ let splits = await this.loadSplits();
417
+ if (filters?.status) {
418
+ splits = splits.filter(s => s.status === filters.status);
419
+ }
420
+ if (filters?.recipientAddress) {
421
+ splits = splits.filter(s => s.recipients.some(r => r.walletAddress.toLowerCase() === filters.recipientAddress.toLowerCase()));
422
+ }
423
+ if (filters?.fromDate) {
424
+ splits = splits.filter(s => s.createdAt >= filters.fromDate);
425
+ }
426
+ if (filters?.toDate) {
427
+ splits = splits.filter(s => s.createdAt <= filters.toDate);
428
+ }
429
+ return splits.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
430
+ }
431
+ /**
432
+ * Get pending splits (ready but not executed)
433
+ */
434
+ async getPending() {
435
+ return this.list({ status: 'ready' });
436
+ }
437
+ /**
438
+ * Get splits due for execution
439
+ */
440
+ async getDue() {
441
+ const splits = await this.list({ status: 'ready' });
442
+ const now = new Date().toISOString();
443
+ return splits.filter(s => !s.executeAt || s.executeAt <= now);
444
+ }
445
+ // ============ Formatting ============
446
+ /**
447
+ * Format split summary
448
+ */
449
+ formatSplitSummary(split) {
450
+ const statusEmoji = {
451
+ draft: '📝',
452
+ ready: '✅',
453
+ processing: '⏳',
454
+ completed: '✓',
455
+ partial: '⚠️',
456
+ failed: '❌',
457
+ }[split.status];
458
+ let summary = `${statusEmoji} **Commission Split ${split.id}**\n\n`;
459
+ if (split.propertyAddress) {
460
+ summary += `📍 ${split.propertyAddress}\n`;
461
+ }
462
+ summary += `💵 Total: **$${split.totalCommission} USDC**\n`;
463
+ summary += `Status: ${split.status.toUpperCase()}\n\n`;
464
+ summary += `**Payouts:**\n`;
465
+ for (const payout of split.payouts) {
466
+ const recipient = split.recipients.find(r => r.id === payout.recipientId);
467
+ const payoutEmoji = payout.status === 'sent' ? '✓' : payout.status === 'failed' ? '✗' : '○';
468
+ summary += `${payoutEmoji} ${recipient?.name} (${recipient?.role}): $${payout.amount}\n`;
469
+ }
470
+ return summary;
471
+ }
472
+ }
473
+ exports.CommissionSplitter = CommissionSplitter;
474
+ exports.default = CommissionSplitter;
475
+ //# sourceMappingURL=commission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commission.js","sourceRoot":"","sources":["../lib/commission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Condition Builder
3
+ *
4
+ * Fluent API for building custom escrow release conditions.
5
+ */
6
+ export type ConditionType = 'inspection' | 'financing' | 'appraisal' | 'title' | 'closing' | 'move_out' | 'milestone' | 'delivery' | 'approval' | 'revision' | 'shipping' | 'receipt' | 'verification' | 'document' | 'deadline' | 'custom';
7
+ export interface BuiltCondition {
8
+ id: string;
9
+ description: string;
10
+ type: ConditionType;
11
+ status: 'pending' | 'satisfied' | 'waived' | 'failed';
12
+ deadline?: string;
13
+ releaseAmount?: string;
14
+ releasePercentage?: string;
15
+ metadata?: Record<string, any>;
16
+ }
17
+ /**
18
+ * Fluent builder for escrow conditions
19
+ */
20
+ export declare class ConditionBuilder {
21
+ /**
22
+ * Create a milestone condition (with optional partial release)
23
+ *
24
+ * @example
25
+ * ConditionBuilder.milestone('Design approved', 25)
26
+ * // Releases 25% when satisfied
27
+ */
28
+ static milestone(description: string, releasePercent?: number): BuiltCondition;
29
+ /**
30
+ * Create an approval condition (requires specific party approval)
31
+ *
32
+ * @example
33
+ * ConditionBuilder.approval('client')
34
+ */
35
+ static approval(fromRole: string, description?: string): BuiltCondition;
36
+ /**
37
+ * Create a deadline condition
38
+ *
39
+ * @example
40
+ * ConditionBuilder.deadline(new Date('2026-03-01'), 'Project completion deadline')
41
+ */
42
+ static deadline(date: Date, description?: string): BuiltCondition;
43
+ /**
44
+ * Create a document requirement condition
45
+ *
46
+ * @example
47
+ * ConditionBuilder.document('Signed contract', 'Contract must be signed and uploaded')
48
+ */
49
+ static document(requiredDoc: string, description?: string): BuiltCondition;
50
+ /**
51
+ * Create a delivery condition
52
+ *
53
+ * @example
54
+ * ConditionBuilder.delivery('Final deliverables submitted')
55
+ */
56
+ static delivery(description: string, releasePercent?: number): BuiltCondition;
57
+ /**
58
+ * Create a shipping condition
59
+ *
60
+ * @example
61
+ * ConditionBuilder.shipping('Item shipped with tracking')
62
+ */
63
+ static shipping(description: string): BuiltCondition;
64
+ /**
65
+ * Create a receipt/confirmation condition
66
+ *
67
+ * @example
68
+ * ConditionBuilder.receipt('Buyer confirms receipt of goods')
69
+ */
70
+ static receipt(description: string): BuiltCondition;
71
+ /**
72
+ * Create a verification condition
73
+ *
74
+ * @example
75
+ * ConditionBuilder.verification('Both parties confirm deposit')
76
+ */
77
+ static verification(description: string): BuiltCondition;
78
+ /**
79
+ * Create a custom condition
80
+ *
81
+ * @example
82
+ * ConditionBuilder.custom('SLA requirements met', { slaLevel: 'premium' })
83
+ */
84
+ static custom(description: string, metadata?: Record<string, any>): BuiltCondition;
85
+ /**
86
+ * Create a real estate inspection condition
87
+ */
88
+ static inspection(description: string, deadlineDays?: number): BuiltCondition;
89
+ /**
90
+ * Create a financing condition
91
+ */
92
+ static financing(description: string, deadlineDays?: number): BuiltCondition;
93
+ /**
94
+ * Create a title condition
95
+ */
96
+ static title(description: string): BuiltCondition;
97
+ }
98
+ //# sourceMappingURL=condition-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-builder.d.ts","sourceRoot":"","sources":["../lib/condition-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,MAAM,aAAa,GAErB,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAE3E,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAElD,UAAU,GAAG,SAAS,GAAG,cAAc,GAEvC,UAAU,GAAG,UAAU,GAEvB,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc;IAU9E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc;IAUvE;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc;IAUjE;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc;IAU1E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc;IAU7E;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IASpD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IASnD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IASxD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,cAAc;IAUlF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc;IAc7E;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc;IAc5E;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;CAQlD"}