@thorprovider/types 3.7.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/publish.log ADDED
@@ -0,0 +1,60 @@
1
+ npm warn Unknown project config "network-concurrency". This will stop working in the next major version of npm.
2
+ npm warn publish npm auto-corrected some errors in your package.json when publishing. Please run "npm pkg fix" to address these errors.
3
+ npm warn publish errors corrected:
4
+ npm warn publish "repository.url" was normalized to "git+https://github.com/thorprovider/thor-commerce.git"
5
+ npm notice
6
+ npm notice 📦 @thor/types@2.0.1
7
+ npm notice Tarball Contents
8
+ npm notice 277B AGENTS.md
9
+ npm notice 1.6kB CHANGELOG.md
10
+ npm notice 6.4kB README.md
11
+ npm notice 101.2kB dist/index.d.mts
12
+ npm notice 101.2kB dist/index.d.ts
13
+ npm notice 3.2kB dist/index.js
14
+ npm notice 14.3kB dist/index.js.map
15
+ npm notice 1.9kB dist/index.mjs
16
+ npm notice 14.2kB dist/index.mjs.map
17
+ npm notice 832B package.json
18
+ npm notice 724B src/admin/AdminUser.ts
19
+ npm notice 946B src/admin/AuditLog.ts
20
+ npm notice 2.0kB src/admin/DashboardConfig.ts
21
+ npm notice 1.5kB src/admin/DashboardMetrics.ts
22
+ npm notice 268B src/admin/index.ts
23
+ npm notice 1.2kB src/admin/SiteConfigMetadata.ts
24
+ npm notice 6.5kB src/auth.ts
25
+ npm notice 2.8kB src/cart.ts
26
+ npm notice 3.0kB src/category.ts
27
+ npm notice 733B src/collection.ts
28
+ npm notice 35.3kB src/commerce-provider.ts
29
+ npm notice 2.1kB src/common.ts
30
+ npm notice 4.6kB src/customer.ts
31
+ npm notice 2.5kB src/designer-config.ts
32
+ npm notice 7.3kB src/header-config.README.md
33
+ npm notice 4.6kB src/header-config.ts
34
+ npm notice 5.5kB src/index.ts
35
+ npm notice 5.0kB src/order.ts
36
+ npm notice 6.0kB src/payment.ts
37
+ npm notice 10.7kB src/product.ts
38
+ npm notice 3.8kB src/provider.ts
39
+ npm notice 1.4kB src/region.ts
40
+ npm notice 2.1kB src/site-config-labels.ts
41
+ npm notice 3.0kB src/site-config.ts
42
+ npm notice 1.3kB src/stock-location.ts
43
+ npm notice 1.5kB src/storefront-config.ts
44
+ npm notice 3.3kB src/storefront.ts
45
+ npm notice 333B tsconfig.json
46
+ npm notice 303B tsup.config.ts
47
+ npm notice Tarball Details
48
+ npm notice name: @thor/types
49
+ npm notice version: 2.0.1
50
+ npm notice filename: thor-types-2.0.1.tgz
51
+ npm notice package size: 87.7 kB
52
+ npm notice unpacked size: 365.5 kB
53
+ npm notice shasum: 45a0c68b20d21a5446a471abb9077f2dd59cdd0d
54
+ npm notice integrity: sha512-AJRNa0Gs1osFo[...]RLXmlsHuMfinQ==
55
+ npm notice total files: 39
56
+ npm notice
57
+ npm notice Publishing to https://npm.pkg.github.com with tag latest and restricted access
58
+ npm error code E401
59
+ npm error 401 Unauthorized - PUT https://npm.pkg.github.com/@thor%2ftypes - unauthenticated: User cannot be authenticated with the token provided.
60
+ npm error A complete log of this run can be found in: /home/nelson/.npm/_logs/2026-04-16T15_45_29_457Z-debug-0.log
@@ -313,6 +313,10 @@ export interface DropshipperShippingOption {
313
313
  export interface GetDropshipperShippingOptionsParams {
314
314
  currency_code: string;
315
315
  country_code?: string;
316
+ /** Province/state code for granular geo‑zone filtering */
317
+ province?: string;
318
+ /** City for granular geo‑zone filtering */
319
+ city?: string;
316
320
  }
317
321
 
318
322
  /** Response for `GET /admin/thor/dropshipper/orders/shipping-options` */
@@ -1133,3 +1137,628 @@ export interface GetDropshipperAddressesResponse {
1133
1137
  export interface GetStorefrontDropshipperCategoriesResponse {
1134
1138
  categories: DropshipperCategory[];
1135
1139
  }
1140
+
1141
+ // ============================================================
1142
+ // Financial Endpoints — Group A (Endpoints 1-7)
1143
+ // ============================================================
1144
+
1145
+ /** Settlement status values for orders */
1146
+ export type SettlementStatus =
1147
+ | 'pending'
1148
+ | 'partial'
1149
+ | 'settled'
1150
+ | 'guaranteed'
1151
+ | 'refund_pending'
1152
+ | 'compensated'
1153
+ | 'recovery_pending'
1154
+ | 'en_garantia'
1155
+ | 'refunded';
1156
+
1157
+ /** Financial movement types */
1158
+ export type FinancialMovementType =
1159
+ | 'cobro'
1160
+ | 'pago'
1161
+ | 'ajuste'
1162
+ | 'compensacion'
1163
+ | 'devolucion'
1164
+ | 'reverso'
1165
+ | 'garantia';
1166
+
1167
+ /** Financial movement statuses */
1168
+ export type FinancialMovementStatus =
1169
+ | 'pendiente'
1170
+ | 'confirmado'
1171
+ | 'revertido'
1172
+ | 'anulado';
1173
+
1174
+ /** Impact direction of a financial movement */
1175
+ export type Impact =
1176
+ | 'ds_debe_mas'
1177
+ | 'ds_debe_menos'
1178
+ | 'thor_debe_mas'
1179
+ | 'thor_debe_menos'
1180
+ | 'neutro';
1181
+
1182
+ /** Ajuste subtype values */
1183
+ export type AjusteSubtype =
1184
+ | 'bonificacion_comercial'
1185
+ | 'penalizacion_general'
1186
+ | 'credito_manual'
1187
+ | 'debito_manual'
1188
+ | 'correccion_saldo_inicial'
1189
+ | 'error_migracion'
1190
+ | 'compensacion_administrativa'
1191
+ | 'aumento_comision'
1192
+ | 'disminucion_comision'
1193
+ | 'aumento_costo'
1194
+ | 'disminucion_costo'
1195
+ | 'diferencia_precio'
1196
+ | 'penalizacion_orden'
1197
+ | 'descuento_orden'
1198
+ | 'ajuste_garantia'
1199
+ | 'ajuste_devolucion'
1200
+ | 'otro';
1201
+
1202
+ /** Balance snapshot used in before/after projections */
1203
+ export interface BalanceSnapshot {
1204
+ ds_debe: number;
1205
+ thor_debe: number;
1206
+ retenidos_total: number;
1207
+ retenidos_thor: number;
1208
+ retenidos_ds: number;
1209
+ balance_neto: number;
1210
+ }
1211
+
1212
+ /** An order applied to a financial movement */
1213
+ export interface OrderAppliedEntry {
1214
+ order_id: string;
1215
+ amount_applied: number;
1216
+ display_id?: number | null;
1217
+ }
1218
+
1219
+ /** An account adjustment paid within a financial movement */
1220
+ export interface AccountAdjustmentPaidEntry {
1221
+ adjustment_id: string;
1222
+ amount_applied: number;
1223
+ side?: 'ds' | 'thor';
1224
+ }
1225
+
1226
+ /** A full financial movement record */
1227
+ export interface FinancialMovement {
1228
+ id: string;
1229
+ reference: string;
1230
+ type: FinancialMovementType;
1231
+ subtype: string | null;
1232
+ amount: number;
1233
+ currency_code: string;
1234
+ impact: Impact;
1235
+ status: FinancialMovementStatus;
1236
+ payment_method: string | null;
1237
+ payment_reference: string | null;
1238
+ orders_applied: OrderAppliedEntry[];
1239
+ orders_applied_count: number;
1240
+ account_adjustments_paid: AccountAdjustmentPaidEntry[];
1241
+ adjustment_paid_amount: number;
1242
+ adjustment_payment_status: string | null;
1243
+ balance_before: BalanceSnapshot | null;
1244
+ balance_after: BalanceSnapshot | null;
1245
+ reason: string;
1246
+ note: string | null;
1247
+ created_by_admin_name: string;
1248
+ confirmed_by_admin_name: string | null;
1249
+ confirmed_at: string | null;
1250
+ created_at: string;
1251
+ }
1252
+
1253
+ /** An order entry in a compensation request */
1254
+ export interface CompensacionOrderEntry {
1255
+ order_id: string;
1256
+ amount_to_compensate: number;
1257
+ }
1258
+
1259
+ /** An adjustment entry in a compensation request */
1260
+ export interface CompensacionAdjustmentEntry {
1261
+ adjustment_id: string;
1262
+ amount_to_compensate: number;
1263
+ }
1264
+
1265
+ // ------------------------------------------------------------
1266
+ // 1. GET /admin/thor/dropshipper/account/balance
1267
+ // ------------------------------------------------------------
1268
+
1269
+ /** Balance breakdown for the authenticated dropshipper */
1270
+ export interface DropshipperAccountBalance {
1271
+ ds_debe: number;
1272
+ ds_debe_orders_count: number;
1273
+ thor_debe: number;
1274
+ thor_debe_orders_count: number;
1275
+ retenidos_total: number;
1276
+ retenidos_thor: number;
1277
+ retenidos_ds: number;
1278
+ retenidos_orders_count: number;
1279
+ balance_neto: number;
1280
+ balance_direction: 'ds_debe' | 'thor_debe' | 'equilibrado';
1281
+ currency_code: string;
1282
+ }
1283
+
1284
+ /** Response for `GET /admin/thor/dropshipper/account/balance` */
1285
+ export interface GetDropshipperAccountBalanceResponse {
1286
+ balance: DropshipperAccountBalance;
1287
+ account: {
1288
+ id: string;
1289
+ provider_name: string;
1290
+ payment_terms_days: number;
1291
+ };
1292
+ }
1293
+
1294
+ // ------------------------------------------------------------
1295
+ // 2. GET /admin/thor/dropshipper/account/orders
1296
+ // ------------------------------------------------------------
1297
+
1298
+ /** A financial order row in the dropshipper's own view */
1299
+ export interface DropshipperFinancialOrder {
1300
+ id: string;
1301
+ display_id: number;
1302
+ created_at: string;
1303
+ customer_name: string | null;
1304
+ quien_cobro: 'dropshipper' | 'provider' | null;
1305
+ sale_total: number;
1306
+ cost_total: number;
1307
+ commission: number;
1308
+ base_amount: number;
1309
+ settled_amount: number;
1310
+ pending_amount: number;
1311
+ settlement_status: SettlementStatus;
1312
+ retained_by: string | null;
1313
+ due_date: string;
1314
+ days_overdue: number;
1315
+ is_overdue: boolean;
1316
+ currency_code: string;
1317
+ }
1318
+
1319
+ /** Options for `GET /admin/thor/dropshipper/account/orders` */
1320
+ export interface GetDropshipperAccountOrdersOptions {
1321
+ tab?: 'all' | 'thor_cobro' | 'ds_cobro' | 'garantias';
1322
+ status?: SettlementStatus;
1323
+ limit?: number;
1324
+ offset?: number;
1325
+ q?: string;
1326
+ }
1327
+
1328
+ /** Response for `GET /admin/thor/dropshipper/account/orders` */
1329
+ export interface GetDropshipperAccountOrdersResponse {
1330
+ orders: DropshipperFinancialOrder[];
1331
+ count: number;
1332
+ offset: number;
1333
+ limit: number;
1334
+ }
1335
+
1336
+ // ------------------------------------------------------------
1337
+ // 3. GET /admin/thor/dropshipper/admin/accounts/:id/orders
1338
+ // ------------------------------------------------------------
1339
+
1340
+ /** A financial order row in the admin view (extends dropshipper view) */
1341
+ export interface AdminDropshipperFinancialOrder extends DropshipperFinancialOrder {
1342
+ adjustment_applied_amount: number;
1343
+ recovery_type: string | null;
1344
+ recovery_amount: number;
1345
+ }
1346
+
1347
+ /** Response for `GET /admin/thor/dropshipper/admin/accounts/:id/orders` */
1348
+ export interface GetAdminDropshipperAccountOrdersResponse {
1349
+ orders: AdminDropshipperFinancialOrder[];
1350
+ count: number;
1351
+ offset: number;
1352
+ limit: number;
1353
+ }
1354
+
1355
+ // ------------------------------------------------------------
1356
+ // 4. GET /admin/thor/dropshipper/admin/accounts/:id/settlements
1357
+ // ------------------------------------------------------------
1358
+
1359
+ /** Options for `GET /admin/thor/dropshipper/admin/accounts/:id/settlements` */
1360
+ export interface GetAdminDropshipperAccountSettlementsOptions {
1361
+ type?: FinancialMovementType;
1362
+ status?: FinancialMovementStatus;
1363
+ limit?: number;
1364
+ offset?: number;
1365
+ }
1366
+
1367
+ /** Response for `GET /admin/thor/dropshipper/admin/accounts/:id/settlements` */
1368
+ export interface GetAdminDropshipperAccountSettlementsResponse {
1369
+ settlements: FinancialMovement[];
1370
+ count: number;
1371
+ offset: number;
1372
+ limit: number;
1373
+ }
1374
+
1375
+ // ------------------------------------------------------------
1376
+ // 5. POST /admin/thor/dropshipper/admin/accounts/:id/guarantee/:order_id
1377
+ // ------------------------------------------------------------
1378
+
1379
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/guarantee/:order_id` */
1380
+ export interface ResolveGuaranteeBody {
1381
+ resolution: 'close' | 'close_with_refund';
1382
+ amount?: number;
1383
+ reason: string;
1384
+ note?: string;
1385
+ }
1386
+
1387
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/guarantee/:order_id` */
1388
+ export interface ResolveGuaranteeResponse {
1389
+ order_id: string;
1390
+ status: SettlementStatus;
1391
+ resolution: 'close' | 'close_with_refund';
1392
+ financial_movement?: {
1393
+ reference: string;
1394
+ amount: number;
1395
+ impact: Impact;
1396
+ type: FinancialMovementType;
1397
+ };
1398
+ message: string;
1399
+ }
1400
+
1401
+ // ------------------------------------------------------------
1402
+ // 6. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/compensacion
1403
+ // ------------------------------------------------------------
1404
+
1405
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/compensacion` */
1406
+ export interface CreateCompensacionBody {
1407
+ ds_orders: CompensacionOrderEntry[];
1408
+ thor_orders: CompensacionOrderEntry[];
1409
+ ds_adjustments?: CompensacionAdjustmentEntry[];
1410
+ thor_adjustments?: CompensacionAdjustmentEntry[];
1411
+ reason: string;
1412
+ note?: string;
1413
+ }
1414
+
1415
+ /** Compensation preview in the response */
1416
+ export interface CompensacionPreview {
1417
+ before: BalanceSnapshot;
1418
+ after: BalanceSnapshot;
1419
+ total_ds: number;
1420
+ total_thor: number;
1421
+ monto_compensar: number;
1422
+ compensation_type: 'total' | 'parcial';
1423
+ }
1424
+
1425
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/compensacion` */
1426
+ export interface CreateCompensacionResponse {
1427
+ movement: {
1428
+ id: string;
1429
+ reference: string;
1430
+ type: 'compensacion';
1431
+ amount: number;
1432
+ currency_code: string;
1433
+ status: FinancialMovementStatus;
1434
+ orders_applied: OrderAppliedEntry[];
1435
+ reason: string;
1436
+ created_at: string;
1437
+ };
1438
+ preview: CompensacionPreview;
1439
+ }
1440
+
1441
+ // ------------------------------------------------------------
1442
+ // 7. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/ajuste
1443
+ // ------------------------------------------------------------
1444
+
1445
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/ajuste` */
1446
+ export interface CreateAjusteBody {
1447
+ subtype: AjusteSubtype;
1448
+ impact: Impact;
1449
+ amount: number;
1450
+ reason: string;
1451
+ note?: string;
1452
+ evidence?: string[];
1453
+ order_id?: string;
1454
+ }
1455
+
1456
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/ajuste` */
1457
+ export interface CreateAjusteResponse {
1458
+ movement: {
1459
+ id: string;
1460
+ reference: string;
1461
+ type: 'ajuste';
1462
+ subtype: AjusteSubtype;
1463
+ impact: Impact;
1464
+ amount: number;
1465
+ currency_code: string;
1466
+ status: FinancialMovementStatus;
1467
+ order_id: string | null;
1468
+ reason: string;
1469
+ created_at: string;
1470
+ };
1471
+ balance_before: BalanceSnapshot;
1472
+ balance_after_projected: BalanceSnapshot;
1473
+ }
1474
+
1475
+ // ============================================================
1476
+ // Financial Endpoints — Group B (Endpoints 8-14)
1477
+ // ============================================================
1478
+
1479
+ /** Payment method for cobro/pago movements */
1480
+ export type PaymentMethod =
1481
+ | 'transferencia'
1482
+ | 'stripe'
1483
+ | 'cheque'
1484
+ | 'efectivo'
1485
+ | 'otro';
1486
+
1487
+ // ------------------------------------------------------------
1488
+ // 8. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/cobro
1489
+ // ------------------------------------------------------------
1490
+
1491
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/cobro` */
1492
+ export interface CreateCobroBody {
1493
+ orders_applied: OrderAppliedEntry[];
1494
+ account_adjustments_paid?: AccountAdjustmentPaidEntry[];
1495
+ payment_method: PaymentMethod;
1496
+ payment_reference: string;
1497
+ reason: string;
1498
+ note?: string;
1499
+ evidence?: string[];
1500
+ }
1501
+
1502
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/cobro` */
1503
+ export interface CreateCobroResponse {
1504
+ movement: FinancialMovement;
1505
+ balance_before: BalanceSnapshot;
1506
+ balance_after_projected: BalanceSnapshot;
1507
+ }
1508
+
1509
+ // ------------------------------------------------------------
1510
+ // 9. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/pago
1511
+ // ------------------------------------------------------------
1512
+
1513
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/pago` */
1514
+ export interface CreatePagoBody {
1515
+ orders_applied: OrderAppliedEntry[];
1516
+ account_adjustments_paid?: AccountAdjustmentPaidEntry[];
1517
+ payment_method: PaymentMethod;
1518
+ payment_reference: string;
1519
+ reason: string;
1520
+ note?: string;
1521
+ evidence?: string[];
1522
+ }
1523
+
1524
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/pago` */
1525
+ export interface CreatePagoResponse {
1526
+ movement: FinancialMovement;
1527
+ balance_before: BalanceSnapshot;
1528
+ balance_after_projected: BalanceSnapshot;
1529
+ }
1530
+
1531
+ // ------------------------------------------------------------
1532
+ // 10. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/reverso
1533
+ // ------------------------------------------------------------
1534
+
1535
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/reverso` */
1536
+ export interface CreateReversoBody {
1537
+ reversion_reason: string;
1538
+ note?: string;
1539
+ }
1540
+
1541
+ /** Reversal movement summary */
1542
+ export interface ReversoMovementSummary {
1543
+ id: string;
1544
+ reference: string;
1545
+ type: 'reverso';
1546
+ impact: Impact;
1547
+ amount: number;
1548
+ status: 'confirmado';
1549
+ reverts_movement_id: string;
1550
+ confirmed_at: string;
1551
+ }
1552
+
1553
+ /** Original movement summary after reversal */
1554
+ export interface OriginalMovementSummary {
1555
+ id: string;
1556
+ reference: string;
1557
+ type: FinancialMovementType;
1558
+ status: 'revertido';
1559
+ reverted_at: string;
1560
+ }
1561
+
1562
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/reverso` */
1563
+ export interface CreateReversoResponse {
1564
+ reverso: ReversoMovementSummary;
1565
+ original: OriginalMovementSummary;
1566
+ balance_before: BalanceSnapshot;
1567
+ balance_after: BalanceSnapshot;
1568
+ }
1569
+
1570
+ // ------------------------------------------------------------
1571
+ // 11. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/confirm
1572
+ // ------------------------------------------------------------
1573
+
1574
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/confirm` */
1575
+ export interface ConfirmMovementBody {
1576
+ note?: string;
1577
+ }
1578
+
1579
+ /** Confirmed movement summary */
1580
+ export interface ConfirmedMovementSummary {
1581
+ id: string;
1582
+ reference: string;
1583
+ type: FinancialMovementType;
1584
+ status: 'confirmado';
1585
+ confirmed_at: string;
1586
+ }
1587
+
1588
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/confirm` */
1589
+ export interface ConfirmMovementResponse {
1590
+ movement: ConfirmedMovementSummary;
1591
+ balance_before: BalanceSnapshot;
1592
+ balance_after: BalanceSnapshot;
1593
+ }
1594
+
1595
+ // ------------------------------------------------------------
1596
+ // 12. POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/cancel
1597
+ // ------------------------------------------------------------
1598
+
1599
+ /** Body for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/cancel` */
1600
+ export interface CancelMovementBody {
1601
+ reason: string;
1602
+ }
1603
+
1604
+ /** Cancelled movement summary */
1605
+ export interface CancelledMovementSummary {
1606
+ id: string;
1607
+ reference: string;
1608
+ type: FinancialMovementType;
1609
+ status: 'anulado';
1610
+ reason: string;
1611
+ }
1612
+
1613
+ /** Response for `POST /admin/thor/dropshipper/admin/accounts/:id/settlements/:mov_id/cancel` */
1614
+ export interface CancelMovementResponse {
1615
+ movement: CancelledMovementSummary;
1616
+ }
1617
+
1618
+ // ------------------------------------------------------------
1619
+ // 13. GET /admin/thor/dropshipper/admin/orders/:id/financial-analysis
1620
+ // ------------------------------------------------------------
1621
+
1622
+ /** A single item in the financial analysis breakdown */
1623
+ export interface FinancialAnalysisItem {
1624
+ id: string;
1625
+ product_title: string;
1626
+ variant_title: string;
1627
+ variant_id: string;
1628
+ sku: string | null;
1629
+ quantity: number;
1630
+ sale_price: number;
1631
+ cost_thor: number;
1632
+ commission: number;
1633
+ margin: number;
1634
+ margin_percent: number;
1635
+ expected_cost_thor: number;
1636
+ current_cost_thor: number;
1637
+ expected_commission: number;
1638
+ current_commission: number;
1639
+ difference: number;
1640
+ validation: string;
1641
+ }
1642
+
1643
+ /** A settlement movement applied to an order in financial analysis */
1644
+ export interface FinancialAnalysisSettlementMovement {
1645
+ movement_id: string;
1646
+ reference: string;
1647
+ type: FinancialMovementType;
1648
+ impact: Impact;
1649
+ amount_applied: number;
1650
+ confirmed_at: string | null;
1651
+ confirmed_by: string | null;
1652
+ }
1653
+
1654
+ /** Settlement details within financial analysis */
1655
+ export interface FinancialAnalysisSettlementDetails {
1656
+ settled_amount: number;
1657
+ adjustment_applied_amount: number;
1658
+ base_amount: number;
1659
+ effective_settled: number;
1660
+ movements: FinancialAnalysisSettlementMovement[];
1661
+ }
1662
+
1663
+ /** Financial summary for an order */
1664
+ export interface FinancialAnalysisSummary {
1665
+ ds_owes_to_thor: number;
1666
+ thor_owes_to_ds: number;
1667
+ total_sale: number;
1668
+ total_cost_thor: number;
1669
+ total_commission_ds: number;
1670
+ total_margin: number;
1671
+ total_margin_percent: number;
1672
+ }
1673
+
1674
+ /** Dropshipper info within financial analysis */
1675
+ export interface FinancialAnalysisDropshipper {
1676
+ account_id: string;
1677
+ name: string;
1678
+ payment_terms_days: number;
1679
+ }
1680
+
1681
+ /** Full financial analysis for a single order */
1682
+ export interface FinancialAnalysis {
1683
+ order_id: string;
1684
+ display_id: number;
1685
+ currency_code: string;
1686
+ dropshipper: FinancialAnalysisDropshipper;
1687
+ payment_collected_by: string | null;
1688
+ settlement_status: SettlementStatus;
1689
+ settlement_id: null;
1690
+ summary: FinancialAnalysisSummary;
1691
+ items: FinancialAnalysisItem[];
1692
+ items_with_issues: number;
1693
+ items_total: number;
1694
+ settlement_details: FinancialAnalysisSettlementDetails;
1695
+ }
1696
+
1697
+ /** Response for `GET /admin/thor/dropshipper/admin/orders/:id/financial-analysis` */
1698
+ export interface GetFinancialAnalysisResponse {
1699
+ financial_analysis: FinancialAnalysis;
1700
+ }
1701
+
1702
+ // ------------------------------------------------------------
1703
+ // 14. POST /admin/thor/dropshipper/orders/:id/payment
1704
+ // ------------------------------------------------------------
1705
+
1706
+ /** Body for `POST /admin/thor/dropshipper/orders/:id/payment` */
1707
+ export interface RegisterPaymentBody {
1708
+ paid_amount: number;
1709
+ due_date?: string;
1710
+ payment_provider_id?: string;
1711
+ force_collector?: boolean;
1712
+ }
1713
+
1714
+ /** Payment record in the register payment response */
1715
+ export interface RegisterPaymentRecord {
1716
+ id: string;
1717
+ amount: number;
1718
+ provider_id: string;
1719
+ status: string;
1720
+ created_at: string;
1721
+ }
1722
+
1723
+ /** Response for `POST /admin/thor/dropshipper/orders/:id/payment` */
1724
+ export interface RegisterPaymentResponse {
1725
+ order_id: string;
1726
+ payment: RegisterPaymentRecord;
1727
+ paid_amount_total: number;
1728
+ remaining: number;
1729
+ payment_status: string;
1730
+ payment_collected_by: string | null;
1731
+ due_date: string | null;
1732
+ }
1733
+
1734
+ // ============================================================
1735
+ // Dashboard Capabilities
1736
+ // ============================================================
1737
+
1738
+ /**
1739
+ * Flat boolean map telling the dropshipper dashboard which features
1740
+ * the backend currently supports. Consumed via
1741
+ * `GET /admin/thor/dropshipper/capabilities`.
1742
+ */
1743
+ export interface DropshipperDashboardCapabilities {
1744
+ /** Core navigation — always expected to be true */
1745
+ dashboard: boolean;
1746
+ orders: boolean;
1747
+ products: boolean;
1748
+ prices: boolean;
1749
+ customers: boolean;
1750
+ configuration: boolean;
1751
+
1752
+ /** Feature modules (may be disabled per-tenant or in development) */
1753
+ financialSettlements: boolean;
1754
+ promotions: boolean;
1755
+ shipping: boolean;
1756
+ reports: boolean;
1757
+
1758
+ /** Settings sub-pages (may be disabled per-tenant or in development) */
1759
+ paymentSettings: boolean;
1760
+ notifications: boolean;
1761
+ security: boolean;
1762
+ integrations: boolean;
1763
+ team: boolean;
1764
+ }