@powerhousedao/contributor-billing 0.1.10 → 0.1.12

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 (31) hide show
  1. package/dist/editors/contributor-billing/components/InvoiceTable/HeaderStats.d.ts.map +1 -1
  2. package/dist/editors/contributor-billing/components/InvoiceTable/HeaderStats.js +2 -1
  3. package/dist/editors/contributor-billing/hooks/useTransformedNodes.d.ts +1 -2
  4. package/dist/editors/contributor-billing/hooks/useTransformedNodes.d.ts.map +1 -1
  5. package/dist/editors/invoice/components/currencyForm.d.ts.map +1 -1
  6. package/dist/editors/invoice/components/currencyForm.js +1 -0
  7. package/dist/editors/invoice/ingestPDF.d.ts.map +1 -1
  8. package/dist/editors/invoice/ingestPDF.js +34 -6
  9. package/dist/editors/invoice/invoiceToGnosis.js +1 -1
  10. package/dist/editors/invoice/requestFinance.js +1 -1
  11. package/dist/editors/invoice/uploadPdfChunked.js +1 -1
  12. package/dist/reducers/general.d.ts +8 -0
  13. package/dist/reducers/general.d.ts.map +1 -0
  14. package/dist/reducers/general.js +73 -0
  15. package/dist/reducers/items.d.ts +8 -0
  16. package/dist/reducers/items.d.ts.map +1 -0
  17. package/dist/reducers/items.js +195 -0
  18. package/dist/reducers/parties.d.ts +8 -0
  19. package/dist/reducers/parties.d.ts.map +1 -0
  20. package/dist/reducers/parties.js +266 -0
  21. package/dist/reducers/transitions.d.ts +8 -0
  22. package/dist/reducers/transitions.d.ts.map +1 -0
  23. package/dist/reducers/transitions.js +162 -0
  24. package/dist/scripts/invoice/pdfToClaudeAI.d.ts +4 -0
  25. package/dist/scripts/invoice/pdfToClaudeAI.d.ts.map +1 -0
  26. package/dist/scripts/invoice/pdfToClaudeAI.js +339 -0
  27. package/dist/style.css +26 -65
  28. package/dist/subgraphs/invoice/customResolvers.d.ts +18 -6
  29. package/dist/subgraphs/invoice/customResolvers.d.ts.map +1 -1
  30. package/dist/subgraphs/invoice/customResolvers.js +30 -9
  31. package/package.json +1 -2
@@ -0,0 +1,339 @@
1
+ import { generateId } from 'document-model';
2
+ export async function uploadPdfAndGetJsonClaude(inputDoc) {
3
+ try {
4
+ console.log("Starting PDF upload and processing with Claude AI");
5
+ const apiKey = process.env.CLAUDE_API_KEY;
6
+ if (!apiKey) {
7
+ throw new Error("CLAUDE_API_KEY environment variable is not set");
8
+ }
9
+ console.log("Preparing Claude API request with PDF...");
10
+ // Create the prompt for Claude to extract invoice data from PDF
11
+ const prompt = `
12
+ Please analyze this PDF invoice document and extract the following information in JSON format:
13
+
14
+ {
15
+ "status": "status of invoice (DRAFT, ISSUED, CANCELLED, ACCEPTED, REJECTED, PAYMENTSCHEDULED, PAYMENTSENT, PAYMENTISSUE, PAYMENTRECEIVED, PAYMENTCLOSED)",
16
+ "invoiceNo": "invoice number",
17
+ "dateIssued": "invoice date in YYYY-MM-DD format",
18
+ "dateDue": "due date in YYYY-MM-DD format",
19
+ "dateDelivered": "delivery date in YYYY-MM-DD format (if specified)",
20
+ "currency": "currency code crypto or fiat (USD, EUR, DAI, USDC, USDT, etc.)",
21
+ "notes": "any notes or additional information on the invoice",
22
+ "payAfter": "earliest payment date in ISO format (if specified)",
23
+ "invoiceTags": [
24
+ {
25
+ "dimension": "tag category (e.g. xero-expense-account, accounting-period)",
26
+ "value": "tag value (e.g. 627, 2025/05)",
27
+ "label": "human readable label (e.g. Marketing, May 2025)"
28
+ }
29
+ ],
30
+ "issuer": {
31
+ "name": "supplier/issuer company name",
32
+ "address": {
33
+ "streetAddress": "street address",
34
+ "extendedAddress": "apartment/suite (if any)",
35
+ "city": "city",
36
+ "postalCode": "postal/zip code",
37
+ "stateProvince": "state/province",
38
+ "country": "country"
39
+ },
40
+ "contactInfo": {
41
+ "email": "email address",
42
+ "tel": "phone number"
43
+ },
44
+ "country": "issuer country",
45
+ "id": {
46
+ "taxId": "tax ID number"
47
+ },
48
+ "paymentRouting": {
49
+ "bank": {
50
+ "name": "bank name",
51
+ "accountNum": "account number or IBAN",
52
+ "ABA": "ABA routing number",
53
+ "BIC": "BIC/SWIFT code",
54
+ "SWIFT": "SWIFT code",
55
+ "accountType": "CHECKING or SAVINGS",
56
+ "beneficiary": "beneficiary name",
57
+ "memo": "payment memo",
58
+ "address": {
59
+ "streetAddress": "bank street address",
60
+ "city": "bank city",
61
+ "stateProvince": "bank state/province",
62
+ "postalCode": "bank postal code",
63
+ "country": "bank country",
64
+ "extendedAddress": "bank extended address"
65
+ },
66
+ "intermediaryBank": {
67
+ "name": "intermediary bank name (if any)",
68
+ "address": "intermediary bank address",
69
+ "ABA": "intermediary ABA",
70
+ "BIC": "intermediary BIC",
71
+ "SWIFT": "intermediary SWIFT",
72
+ "accountNum": "intermediary account",
73
+ "accountType": "intermediary account type",
74
+ "beneficiary": "intermediary beneficiary",
75
+ "memo": "intermediary memo"
76
+ }
77
+ },
78
+ "wallet": {
79
+ "address": "crypto wallet address",
80
+ "chainId": "blockchain chain ID",
81
+ "chainName": "blockchain name (e.g., Base, Ethereum)",
82
+ "rpc": "RPC endpoint"
83
+ }
84
+ }
85
+ },
86
+ "payer": {
87
+ "name": "payer/receiver company name",
88
+ "address": {
89
+ "streetAddress": "payer street address",
90
+ "extendedAddress": "payer apartment/suite",
91
+ "city": "payer city",
92
+ "postalCode": "payer postal code",
93
+ "stateProvince": "payer state/province",
94
+ "country": "payer country"
95
+ },
96
+ "contactInfo": {
97
+ "email": "payer email",
98
+ "tel": "payer phone"
99
+ },
100
+ "country": "payer country",
101
+ "id": {
102
+ "taxId": "payer tax ID"
103
+ },
104
+ "paymentRouting": {
105
+ "bank": {
106
+ "name": "payer bank name (if specified)",
107
+ "accountNum": "payer account number",
108
+ "ABA": "payer ABA",
109
+ "BIC": "payer BIC",
110
+ "SWIFT": "payer SWIFT",
111
+ "accountType": "payer account type",
112
+ "beneficiary": "payer beneficiary",
113
+ "memo": "payer memo"
114
+ },
115
+ "wallet": {
116
+ "address": "payer wallet address (if specified)",
117
+ "chainId": "payer chain ID",
118
+ "chainName": "payer chain name",
119
+ "rpc": "payer RPC"
120
+ }
121
+ }
122
+ },
123
+ "lineItems": [
124
+ {
125
+ "description": "item description",
126
+ "quantity": numeric_quantity,
127
+ "unitPriceTaxExcl": numeric_unit_price,
128
+ "unitPriceTaxIncl": numeric_unit_price_with_tax,
129
+ "totalPriceTaxExcl": numeric_total_price,
130
+ "totalPriceTaxIncl": numeric_total_price_with_tax,
131
+ "taxPercent": numeric_tax_percentage,
132
+ "currency": "currency_code",
133
+ "lineItemTag": [
134
+ {
135
+ "dimension": "tag category (e.g. xero-expense-account)",
136
+ "value": "tag value (e.g. 627)",
137
+ "label": "human readable label (e.g. Marketing)"
138
+ }
139
+ ]
140
+ }
141
+ ],
142
+ "totalPriceTaxExcl": numeric_total_amount,
143
+ "totalPriceTaxIncl": numeric_total_amount_with_tax,
144
+ "rejections": [
145
+ {
146
+ "reason": "rejection reason (if any)",
147
+ "final": boolean_if_final_rejection
148
+ }
149
+ ],
150
+ "payments": [
151
+ {
152
+ "processorRef": "payment processor reference",
153
+ "paymentDate": "payment date in ISO format",
154
+ "txnRef": "transaction reference",
155
+ "confirmed": boolean_if_confirmed,
156
+ "issue": "payment issue description",
157
+ "amount": numeric_payment_amount
158
+ }
159
+ ],
160
+ "exported": {
161
+ "timestamp": "export timestamp in ISO format",
162
+ "exportedLineItems": [["CSV formatted line items"]]
163
+ },
164
+ "closureReason": "UNDERPAID, OVERPAID, or CANCELLED (if applicable)"
165
+ }
166
+
167
+ Extract only the data that is clearly visible in the PDF. If a field is not present, use null. Be very careful with numbers - preserve the exact values without modification. For dates, convert to YYYY-MM-DD format. For currencies, use standard 3-letter codes (USD, EUR, GBP, etc.).
168
+ `;
169
+ const requestBody = {
170
+ model: "claude-haiku-4-5-20251001",
171
+ max_tokens: 4000,
172
+ messages: [
173
+ {
174
+ role: "user",
175
+ content: [
176
+ {
177
+ type: "text",
178
+ text: prompt
179
+ },
180
+ {
181
+ type: "document",
182
+ source: {
183
+ type: "base64",
184
+ media_type: "application/pdf",
185
+ data: inputDoc
186
+ }
187
+ }
188
+ ]
189
+ }
190
+ ]
191
+ };
192
+ console.log("Sending request to Claude API...");
193
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
194
+ method: 'POST',
195
+ headers: {
196
+ 'Content-Type': 'application/json',
197
+ 'x-api-key': apiKey,
198
+ 'anthropic-version': '2023-06-01'
199
+ },
200
+ body: JSON.stringify(requestBody)
201
+ });
202
+ if (!response.ok) {
203
+ const errorText = await response.text();
204
+ throw new Error(`Claude API error: ${response.status} - ${errorText}`);
205
+ }
206
+ const result = await response.json();
207
+ console.log("PDF processed successfully with Claude AI");
208
+ // Extract JSON from Claude's response
209
+ const responseText = result.content[0]?.text;
210
+ if (!responseText) {
211
+ throw new Error("No response text from Claude API");
212
+ }
213
+ // Try to extract JSON from the response
214
+ let invoiceData;
215
+ try {
216
+ // Look for JSON block in the response
217
+ const jsonMatch = responseText.match(/```json\s*([\s\S]*?)\s*```/) ||
218
+ responseText.match(/\{[\s\S]*\}/);
219
+ if (jsonMatch) {
220
+ const jsonString = jsonMatch[1] || jsonMatch[0];
221
+ invoiceData = JSON.parse(jsonString);
222
+ }
223
+ else {
224
+ // Fallback: try to parse the entire response as JSON
225
+ invoiceData = JSON.parse(responseText);
226
+ }
227
+ }
228
+ catch (parseError) {
229
+ console.error("Failed to parse Claude response as JSON:", parseError);
230
+ console.error("Response text:", responseText);
231
+ throw new Error("Failed to parse Claude response as valid JSON");
232
+ }
233
+ // Process the invoice data to ensure it matches our expected format
234
+ const processedInvoiceData = processClaudeInvoiceData(invoiceData);
235
+ return { invoiceData: processedInvoiceData };
236
+ }
237
+ catch (error) {
238
+ console.error("Error in uploadPdfAndGetJsonClaude:", error);
239
+ throw error;
240
+ }
241
+ }
242
+ function processClaudeInvoiceData(rawData) {
243
+ const invoiceData = {
244
+ lineItems: [],
245
+ rejections: [],
246
+ payments: [],
247
+ invoiceTags: []
248
+ };
249
+ // Basic invoice fields
250
+ if (rawData.status)
251
+ invoiceData.status = rawData.status;
252
+ if (rawData.invoiceNo)
253
+ invoiceData.invoiceNo = rawData.invoiceNo;
254
+ if (rawData.dateIssued)
255
+ invoiceData.dateIssued = rawData.dateIssued;
256
+ if (rawData.dateDue)
257
+ invoiceData.dateDue = rawData.dateDue;
258
+ if (rawData.dateDelivered)
259
+ invoiceData.dateDelivered = rawData.dateDelivered;
260
+ if (rawData.currency)
261
+ invoiceData.currency = rawData.currency;
262
+ if (rawData.notes)
263
+ invoiceData.notes = rawData.notes;
264
+ if (rawData.payAfter)
265
+ invoiceData.payAfter = rawData.payAfter;
266
+ if (rawData.closureReason)
267
+ invoiceData.closureReason = rawData.closureReason;
268
+ if (rawData.totalPriceTaxExcl)
269
+ invoiceData.totalPriceTaxExcl = parseFloat(rawData.totalPriceTaxExcl);
270
+ if (rawData.totalPriceTaxIncl)
271
+ invoiceData.totalPriceTaxIncl = parseFloat(rawData.totalPriceTaxIncl);
272
+ // Tags
273
+ if (rawData.invoiceTags && Array.isArray(rawData.invoiceTags)) {
274
+ invoiceData.invoiceTags = rawData.invoiceTags;
275
+ }
276
+ // Exported data
277
+ if (rawData.exported) {
278
+ invoiceData.exported = rawData.exported;
279
+ }
280
+ // Process issuer data
281
+ if (rawData.issuer) {
282
+ invoiceData.issuer = {
283
+ name: rawData.issuer.name || null,
284
+ address: rawData.issuer.address || null,
285
+ contactInfo: rawData.issuer.contactInfo || { email: null, tel: null },
286
+ country: rawData.issuer.address?.country || null,
287
+ id: rawData.issuer.id || null,
288
+ paymentRouting: rawData.issuer.paymentRouting || null
289
+ };
290
+ }
291
+ // Process payer data
292
+ if (rawData.payer) {
293
+ invoiceData.payer = {
294
+ name: rawData.payer.name || null,
295
+ address: rawData.payer.address || null,
296
+ contactInfo: rawData.payer.contactInfo || { email: null, tel: null },
297
+ country: rawData.payer.address?.country || null,
298
+ id: rawData.payer.id || null,
299
+ paymentRouting: rawData.payer.paymentRouting || null
300
+ };
301
+ }
302
+ // Process rejections
303
+ if (rawData.rejections && Array.isArray(rawData.rejections)) {
304
+ invoiceData.rejections = rawData.rejections.map((rejection) => ({
305
+ id: generateId(),
306
+ reason: rejection.reason || '',
307
+ final: Boolean(rejection.final)
308
+ }));
309
+ }
310
+ // Process payments
311
+ if (rawData.payments && Array.isArray(rawData.payments)) {
312
+ invoiceData.payments = rawData.payments.map((payment) => ({
313
+ id: generateId(),
314
+ processorRef: payment.processorRef || null,
315
+ paymentDate: payment.paymentDate || null,
316
+ txnRef: payment.txnRef || null,
317
+ confirmed: Boolean(payment.confirmed),
318
+ issue: payment.issue || null,
319
+ amount: payment.amount ? parseFloat(payment.amount) : null
320
+ }));
321
+ }
322
+ // Process line items
323
+ if (rawData.lineItems && Array.isArray(rawData.lineItems)) {
324
+ invoiceData.lineItems = rawData.lineItems.map((item) => ({
325
+ lineItemTag: item.lineItemTag && Array.isArray(item.lineItemTag) ? item.lineItemTag : [],
326
+ description: item.description || '',
327
+ quantity: parseFloat(item.quantity) || 0,
328
+ unitPriceTaxExcl: parseFloat(item.unitPriceTaxExcl) || 0,
329
+ unitPriceTaxIncl: parseFloat(item.unitPriceTaxIncl) || parseFloat(item.unitPriceTaxExcl) || 0,
330
+ totalPriceTaxExcl: parseFloat(item.totalPriceTaxExcl) || 0,
331
+ totalPriceTaxIncl: parseFloat(item.totalPriceTaxIncl) || parseFloat(item.totalPriceTaxExcl) || 0,
332
+ currency: item.currency || rawData.currency || 'USD',
333
+ id: generateId(),
334
+ taxPercent: parseFloat(item.taxPercent) || 0
335
+ }));
336
+ }
337
+ console.log("Processed Claude invoice data:", JSON.stringify(invoiceData, null, 2));
338
+ return invoiceData;
339
+ }
package/dist/style.css CHANGED
@@ -446,9 +446,6 @@
446
446
  width: calc(var(--spacing) * 4);
447
447
  height: calc(var(--spacing) * 4);
448
448
  }
449
- .h-2\.5 {
450
- height: calc(var(--spacing) * 2.5);
451
- }
452
449
  .h-4 {
453
450
  height: calc(var(--spacing) * 4);
454
451
  }
@@ -1175,16 +1172,9 @@
1175
1172
  .text-yellow-600 {
1176
1173
  color: var(--color-yellow-600);
1177
1174
  }
1178
- .lowercase {
1179
- text-transform: lowercase;
1180
- }
1181
1175
  .uppercase {
1182
1176
  text-transform: uppercase;
1183
1177
  }
1184
- .ordinal {
1185
- --tw-ordinal: ordinal;
1186
- font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
1187
- }
1188
1178
  .underline {
1189
1179
  text-decoration-line: underline;
1190
1180
  }
@@ -6498,7 +6488,7 @@ input[type="number"] {
6498
6488
  }
6499
6489
  }
6500
6490
  }
6501
- /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
6491
+ /*! tailwindcss v4.1.5 | MIT License | https://tailwindcss.com */
6502
6492
  @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
6503
6493
  @layer properties;
6504
6494
  @layer theme, base, components, utilities;
@@ -6775,9 +6765,6 @@ input[type="number"] {
6775
6765
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
6776
6766
  padding-block: 0;
6777
6767
  }
6778
- ::-webkit-calendar-picker-indicator {
6779
- line-height: 1;
6780
- }
6781
6768
  :-moz-ui-invalid {
6782
6769
  box-shadow: none;
6783
6770
  }
@@ -7636,7 +7623,7 @@ input[type="number"] {
7636
7623
  border-radius: 100px;
7637
7624
  }
7638
7625
  .rounded-full {
7639
- border-radius: calc(infinity * 1px) !important;
7626
+ border-radius: calc(infinity * 1px);
7640
7627
  }
7641
7628
  .rounded-lg {
7642
7629
  border-radius: var(--radius-lg);
@@ -8464,7 +8451,7 @@ input[type="number"] {
8464
8451
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
8465
8452
  }
8466
8453
  .transition {
8467
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
8454
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
8468
8455
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
8469
8456
  transition-duration: var(--tw-duration, var(--default-transition-duration));
8470
8457
  }
@@ -8651,7 +8638,7 @@ input[type="number"] {
8651
8638
  }
8652
8639
  .file\:rounded-full {
8653
8640
  &::file-selector-button {
8654
- border-radius: calc(infinity * 1px) !important;
8641
+ border-radius: calc(infinity * 1px);
8655
8642
  }
8656
8643
  }
8657
8644
  .file\:border-0 {
@@ -8746,7 +8733,7 @@ input[type="number"] {
8746
8733
  .before\:rounded-full {
8747
8734
  &::before {
8748
8735
  content: var(--tw-content);
8749
- border-radius: calc(infinity * 1px) !important;
8736
+ border-radius: calc(infinity * 1px);
8750
8737
  }
8751
8738
  }
8752
8739
  .before\:bg-blue-900 {
@@ -8867,7 +8854,7 @@ input[type="number"] {
8867
8854
  .after\:rounded-full {
8868
8855
  &::after {
8869
8856
  content: var(--tw-content);
8870
- border-radius: calc(infinity * 1px) !important;
8857
+ border-radius: calc(infinity * 1px);
8871
8858
  }
8872
8859
  }
8873
8860
  .after\:bg-gray-300 {
@@ -8890,6 +8877,7 @@ input[type="number"] {
8890
8877
  }
8891
8878
  .after\:content-\[\'\'\] {
8892
8879
  &::after {
8880
+ content: var(--tw-content);
8893
8881
  --tw-content: '';
8894
8882
  content: var(--tw-content);
8895
8883
  }
@@ -10761,7 +10749,7 @@ input[type="number"] {
10761
10749
  }
10762
10750
  .\[\&_\.date-picker\\\\_\\\\_button-next\]\:rounded-full {
10763
10751
  & .date-picker\_\_button-next {
10764
- border-radius: calc(infinity * 1px) !important;
10752
+ border-radius: calc(infinity * 1px);
10765
10753
  }
10766
10754
  }
10767
10755
  .\[\&_\.date-picker\\\\_\\\\_button-next\]\:border-2 {
@@ -10877,7 +10865,7 @@ input[type="number"] {
10877
10865
  }
10878
10866
  .\[\&_\.date-picker\\\\_\\\\_button-previous\]\:rounded-full {
10879
10867
  & .date-picker\_\_button-previous {
10880
- border-radius: calc(infinity * 1px) !important;
10868
+ border-radius: calc(infinity * 1px);
10881
10869
  }
10882
10870
  }
10883
10871
  .\[\&_\.date-picker\\\\_\\\\_button-previous\]\:border-2 {
@@ -11049,7 +11037,7 @@ input[type="number"] {
11049
11037
  }
11050
11038
  .\[\&_\.date-picker\\\\_\\\\_day-button\]\:rounded-full {
11051
11039
  & .date-picker\_\_day-button {
11052
- border-radius: calc(infinity * 1px) !important;
11040
+ border-radius: calc(infinity * 1px);
11053
11041
  }
11054
11042
  }
11055
11043
  .\[\&_\.date-picker\\\\_\\\\_day-button\]\:font-medium {
@@ -11399,7 +11387,7 @@ input[type="number"] {
11399
11387
  }
11400
11388
  .\[\&_\.date-picker\\\\_\\\\_today\]\:rounded-full {
11401
11389
  & .date-picker\_\_today {
11402
- border-radius: calc(infinity * 1px) !important;
11390
+ border-radius: calc(infinity * 1px);
11403
11391
  }
11404
11392
  }
11405
11393
  .\[\&_\.date-picker\\\\_\\\\_today\]\:border-2 {
@@ -11665,7 +11653,7 @@ input[type="number"] {
11665
11653
  }
11666
11654
  .\[\&_\.radio-group\\\\_\\\\_item\]\:rounded-full {
11667
11655
  & .radio-group\_\_item {
11668
- border-radius: calc(infinity * 1px) !important;
11656
+ border-radius: calc(infinity * 1px);
11669
11657
  }
11670
11658
  }
11671
11659
  .\[\&_\.radio-group\\\\_\\\\_item\]\:text-cyan-400 {
@@ -12557,7 +12545,7 @@ input[type="number"] {
12557
12545
  .\[\&_\.date-picker\\\\_\\\\_date-footer\]\:\[\&\>button\]\:rounded-full {
12558
12546
  & .date-picker\_\_date-footer {
12559
12547
  &>button {
12560
- border-radius: calc(infinity * 1px) !important;
12548
+ border-radius: calc(infinity * 1px);
12561
12549
  }
12562
12550
  }
12563
12551
  }
@@ -13174,7 +13162,7 @@ input[type="number"] {
13174
13162
  }
13175
13163
  }
13176
13164
  }
13177
- /*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */
13165
+ /*! tailwindcss v4.1.5 | MIT License | https://tailwindcss.com */
13178
13166
  @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
13179
13167
  @layer properties;
13180
13168
  @layer theme, base, components, utilities;
@@ -13451,9 +13439,6 @@ input[type="number"] {
13451
13439
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
13452
13440
  padding-block: 0;
13453
13441
  }
13454
- ::-webkit-calendar-picker-indicator {
13455
- line-height: 1;
13456
- }
13457
13442
  :-moz-ui-invalid {
13458
13443
  box-shadow: none;
13459
13444
  }
@@ -14312,7 +14297,7 @@ input[type="number"] {
14312
14297
  border-radius: 100px;
14313
14298
  }
14314
14299
  .rounded-full {
14315
- border-radius: calc(infinity * 1px) !important;
14300
+ border-radius: calc(infinity * 1px);
14316
14301
  }
14317
14302
  .rounded-lg {
14318
14303
  border-radius: var(--radius-lg);
@@ -15140,7 +15125,7 @@ input[type="number"] {
15140
15125
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
15141
15126
  }
15142
15127
  .transition {
15143
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
15128
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
15144
15129
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
15145
15130
  transition-duration: var(--tw-duration, var(--default-transition-duration));
15146
15131
  }
@@ -15327,7 +15312,7 @@ input[type="number"] {
15327
15312
  }
15328
15313
  .file\:rounded-full {
15329
15314
  &::file-selector-button {
15330
- border-radius: calc(infinity * 1px) !important;
15315
+ border-radius: calc(infinity * 1px);
15331
15316
  }
15332
15317
  }
15333
15318
  .file\:border-0 {
@@ -15422,7 +15407,7 @@ input[type="number"] {
15422
15407
  .before\:rounded-full {
15423
15408
  &::before {
15424
15409
  content: var(--tw-content);
15425
- border-radius: calc(infinity * 1px) !important;
15410
+ border-radius: calc(infinity * 1px);
15426
15411
  }
15427
15412
  }
15428
15413
  .before\:bg-blue-900 {
@@ -15543,7 +15528,7 @@ input[type="number"] {
15543
15528
  .after\:rounded-full {
15544
15529
  &::after {
15545
15530
  content: var(--tw-content);
15546
- border-radius: calc(infinity * 1px) !important;
15531
+ border-radius: calc(infinity * 1px);
15547
15532
  }
15548
15533
  }
15549
15534
  .after\:bg-gray-300 {
@@ -15566,6 +15551,7 @@ input[type="number"] {
15566
15551
  }
15567
15552
  .after\:content-\[\'\'\] {
15568
15553
  &::after {
15554
+ content: var(--tw-content);
15569
15555
  --tw-content: '';
15570
15556
  content: var(--tw-content);
15571
15557
  }
@@ -17437,7 +17423,7 @@ input[type="number"] {
17437
17423
  }
17438
17424
  .\[\&_\.date-picker\\\\_\\\\_button-next\]\:rounded-full {
17439
17425
  & .date-picker\_\_button-next {
17440
- border-radius: calc(infinity * 1px) !important;
17426
+ border-radius: calc(infinity * 1px);
17441
17427
  }
17442
17428
  }
17443
17429
  .\[\&_\.date-picker\\\\_\\\\_button-next\]\:border-2 {
@@ -17553,7 +17539,7 @@ input[type="number"] {
17553
17539
  }
17554
17540
  .\[\&_\.date-picker\\\\_\\\\_button-previous\]\:rounded-full {
17555
17541
  & .date-picker\_\_button-previous {
17556
- border-radius: calc(infinity * 1px) !important;
17542
+ border-radius: calc(infinity * 1px);
17557
17543
  }
17558
17544
  }
17559
17545
  .\[\&_\.date-picker\\\\_\\\\_button-previous\]\:border-2 {
@@ -17725,7 +17711,7 @@ input[type="number"] {
17725
17711
  }
17726
17712
  .\[\&_\.date-picker\\\\_\\\\_day-button\]\:rounded-full {
17727
17713
  & .date-picker\_\_day-button {
17728
- border-radius: calc(infinity * 1px) !important;
17714
+ border-radius: calc(infinity * 1px);
17729
17715
  }
17730
17716
  }
17731
17717
  .\[\&_\.date-picker\\\\_\\\\_day-button\]\:font-medium {
@@ -18075,7 +18061,7 @@ input[type="number"] {
18075
18061
  }
18076
18062
  .\[\&_\.date-picker\\\\_\\\\_today\]\:rounded-full {
18077
18063
  & .date-picker\_\_today {
18078
- border-radius: calc(infinity * 1px) !important;
18064
+ border-radius: calc(infinity * 1px);
18079
18065
  }
18080
18066
  }
18081
18067
  .\[\&_\.date-picker\\\\_\\\\_today\]\:border-2 {
@@ -18341,7 +18327,7 @@ input[type="number"] {
18341
18327
  }
18342
18328
  .\[\&_\.radio-group\\\\_\\\\_item\]\:rounded-full {
18343
18329
  & .radio-group\_\_item {
18344
- border-radius: calc(infinity * 1px) !important;
18330
+ border-radius: calc(infinity * 1px);
18345
18331
  }
18346
18332
  }
18347
18333
  .\[\&_\.radio-group\\\\_\\\\_item\]\:text-cyan-400 {
@@ -19233,7 +19219,7 @@ input[type="number"] {
19233
19219
  .\[\&_\.date-picker\\\\_\\\\_date-footer\]\:\[\&\>button\]\:rounded-full {
19234
19220
  & .date-picker\_\_date-footer {
19235
19221
  &>button {
19236
- border-radius: calc(infinity * 1px) !important;
19222
+ border-radius: calc(infinity * 1px);
19237
19223
  }
19238
19224
  }
19239
19225
  }
@@ -19952,26 +19938,6 @@ input[type="number"] {
19952
19938
  syntax: "*";
19953
19939
  inherits: false;
19954
19940
  }
19955
- @property --tw-ordinal {
19956
- syntax: "*";
19957
- inherits: false;
19958
- }
19959
- @property --tw-slashed-zero {
19960
- syntax: "*";
19961
- inherits: false;
19962
- }
19963
- @property --tw-numeric-figure {
19964
- syntax: "*";
19965
- inherits: false;
19966
- }
19967
- @property --tw-numeric-spacing {
19968
- syntax: "*";
19969
- inherits: false;
19970
- }
19971
- @property --tw-numeric-fraction {
19972
- syntax: "*";
19973
- inherits: false;
19974
- }
19975
19941
  @property --tw-shadow {
19976
19942
  syntax: "*";
19977
19943
  inherits: false;
@@ -20179,11 +20145,6 @@ input[type="number"] {
20179
20145
  --tw-border-style: solid;
20180
20146
  --tw-font-weight: initial;
20181
20147
  --tw-tracking: initial;
20182
- --tw-ordinal: initial;
20183
- --tw-slashed-zero: initial;
20184
- --tw-numeric-figure: initial;
20185
- --tw-numeric-spacing: initial;
20186
- --tw-numeric-fraction: initial;
20187
20148
  --tw-shadow: 0 0 #0000;
20188
20149
  --tw-shadow-color: initial;
20189
20150
  --tw-shadow-alpha: 100%;
@@ -4,6 +4,13 @@ declare let pendingTransactions: Record<string, {
4
4
  paymentDetails: any;
5
5
  timestamp: number;
6
6
  }>;
7
+ interface UploadInvoicePdfChunkArgs {
8
+ chunk: string;
9
+ chunkIndex: number;
10
+ totalChunks: number;
11
+ fileName: string;
12
+ sessionId: string;
13
+ }
7
14
  export declare const Invoice_processGnosisPayment: (_: any, args: any) => Promise<{
8
15
  success: boolean;
9
16
  data: import("../../scripts/invoice/gnosisTransactionBuilder.js").TransferResult;
@@ -25,12 +32,21 @@ export declare const Invoice_createRequestFinancePayment: (_: any, args: any) =>
25
32
  };
26
33
  error?: undefined;
27
34
  }>;
28
- export declare const Invoice_uploadInvoicePdfChunk: (_: any, args: any) => Promise<{
35
+ export declare const Invoice_uploadInvoicePdfChunk: (_: any, args: UploadInvoicePdfChunkArgs) => Promise<{
29
36
  success: boolean;
30
37
  data: {
31
- invoiceData: Partial<import("../../document-models/invoice/index.js").InvoiceState>;
38
+ invoiceData: any;
39
+ processingMetadata: {
40
+ provider: string;
41
+ processingTimeMs: number;
42
+ processingTimestamp: string;
43
+ };
32
44
  };
33
45
  error?: undefined;
46
+ } | {
47
+ success: boolean;
48
+ error: string;
49
+ data?: undefined;
34
50
  } | {
35
51
  success: boolean;
36
52
  data: {
@@ -38,10 +54,6 @@ export declare const Invoice_uploadInvoicePdfChunk: (_: any, args: any) => Promi
38
54
  progress: number;
39
55
  };
40
56
  error?: undefined;
41
- } | {
42
- success: boolean;
43
- error: string;
44
- data?: undefined;
45
57
  }>;
46
58
  export declare const setReactor: (reactorInstance: any) => void;
47
59
  export { pendingTransactions };