@vrplatform/hyperline-client 1.0.24 → 1.0.26

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 (96) hide show
  1. package/build/main/client.d.ts +215 -0
  2. package/build/main/client.js +87 -16
  3. package/build/main/client.js.map +1 -1
  4. package/build/main/const.d.ts +17 -0
  5. package/build/main/const.js +17 -0
  6. package/build/main/const.js.map +1 -1
  7. package/build/main/src/_types.generated.d.ts +22310 -0
  8. package/build/main/src/_types.generated.js +6 -0
  9. package/build/main/src/_types.generated.js.map +1 -0
  10. package/build/main/src/client.d.ts +1706 -0
  11. package/build/main/src/client.js +294 -0
  12. package/build/main/src/client.js.map +1 -0
  13. package/build/main/src/const.d.ts +73 -0
  14. package/build/main/src/const.js +257 -0
  15. package/build/main/src/const.js.map +1 -0
  16. package/build/main/src/hooks.d.ts +10 -0
  17. package/build/main/src/hooks.js +13 -0
  18. package/build/main/src/hooks.js.map +1 -0
  19. package/build/main/src/index.d.ts +5 -0
  20. package/build/main/src/index.js +6 -0
  21. package/build/main/src/index.js.map +1 -0
  22. package/build/main/src/types.d.ts +35 -0
  23. package/build/main/src/types.js +2 -0
  24. package/build/main/src/types.js.map +1 -0
  25. package/build/main/src/utils/arrayBufferToBase64.d.ts +1 -0
  26. package/build/main/src/utils/arrayBufferToBase64.js +9 -0
  27. package/build/main/src/utils/arrayBufferToBase64.js.map +1 -0
  28. package/build/main/src/utils/calculateMrr.d.ts +45 -0
  29. package/build/main/src/utils/calculateMrr.js +107 -0
  30. package/build/main/src/utils/calculateMrr.js.map +1 -0
  31. package/build/main/src/utils/getMrrDiffReasons.d.ts +15 -0
  32. package/build/main/src/utils/getMrrDiffReasons.js +217 -0
  33. package/build/main/src/utils/getMrrDiffReasons.js.map +1 -0
  34. package/build/main/src/utils/index.d.ts +3 -0
  35. package/build/main/src/utils/index.js +4 -0
  36. package/build/main/src/utils/index.js.map +1 -0
  37. package/build/main/tsconfig.main.tsbuildinfo +1 -1
  38. package/build/main/utils/arrayBufferToBase64.js +5 -2
  39. package/build/main/utils/arrayBufferToBase64.js.map +1 -1
  40. package/build/main/utils/calculateMrr.d.ts +45 -0
  41. package/build/main/utils/calculateMrr.js +107 -0
  42. package/build/main/utils/calculateMrr.js.map +1 -0
  43. package/build/main/utils/index.d.ts +1 -0
  44. package/build/main/utils/index.js +1 -0
  45. package/build/main/utils/index.js.map +1 -1
  46. package/build/module/client.d.ts +215 -0
  47. package/build/module/client.js +87 -16
  48. package/build/module/client.js.map +1 -1
  49. package/build/module/const.d.ts +17 -0
  50. package/build/module/const.js +17 -0
  51. package/build/module/const.js.map +1 -1
  52. package/build/module/src/_types.generated.d.ts +22310 -0
  53. package/build/module/src/_types.generated.js +6 -0
  54. package/build/module/src/_types.generated.js.map +1 -0
  55. package/build/module/src/client.d.ts +1706 -0
  56. package/build/module/src/client.js +296 -0
  57. package/build/module/src/client.js.map +1 -0
  58. package/build/module/src/const.d.ts +73 -0
  59. package/build/module/src/const.js +257 -0
  60. package/build/module/src/const.js.map +1 -0
  61. package/build/module/src/hooks.d.ts +10 -0
  62. package/build/module/src/hooks.js +13 -0
  63. package/build/module/src/hooks.js.map +1 -0
  64. package/build/module/src/index.d.ts +5 -0
  65. package/build/module/src/index.js +6 -0
  66. package/build/module/src/index.js.map +1 -0
  67. package/build/module/src/types.d.ts +35 -0
  68. package/build/module/src/types.js +2 -0
  69. package/build/module/src/types.js.map +1 -0
  70. package/build/module/src/utils/arrayBufferToBase64.d.ts +1 -0
  71. package/build/module/src/utils/arrayBufferToBase64.js +9 -0
  72. package/build/module/src/utils/arrayBufferToBase64.js.map +1 -0
  73. package/build/module/src/utils/calculateMrr.d.ts +45 -0
  74. package/build/module/src/utils/calculateMrr.js +107 -0
  75. package/build/module/src/utils/calculateMrr.js.map +1 -0
  76. package/build/module/src/utils/getMrrDiffReasons.d.ts +15 -0
  77. package/build/module/src/utils/getMrrDiffReasons.js +217 -0
  78. package/build/module/src/utils/getMrrDiffReasons.js.map +1 -0
  79. package/build/module/src/utils/index.d.ts +3 -0
  80. package/build/module/src/utils/index.js +4 -0
  81. package/build/module/src/utils/index.js.map +1 -0
  82. package/build/module/tsconfig.esm.tsbuildinfo +1 -1
  83. package/build/module/utils/arrayBufferToBase64.js +5 -2
  84. package/build/module/utils/arrayBufferToBase64.js.map +1 -1
  85. package/build/module/utils/calculateMrr.d.ts +45 -0
  86. package/build/module/utils/calculateMrr.js +107 -0
  87. package/build/module/utils/calculateMrr.js.map +1 -0
  88. package/build/module/utils/index.d.ts +1 -0
  89. package/build/module/utils/index.js +1 -0
  90. package/build/module/utils/index.js.map +1 -1
  91. package/package.json +19 -18
  92. package/src/client.ts +117 -22
  93. package/src/const.ts +21 -0
  94. package/src/utils/arrayBufferToBase64.ts +9 -2
  95. package/src/utils/calculateMrr.ts +206 -0
  96. package/src/utils/index.ts +1 -0
@@ -10,6 +10,91 @@ export declare class HyperlineAPI {
10
10
  private fetchBasic;
11
11
  private fetch;
12
12
  private fetchIngest;
13
+ getInvoicingEntities(): Promise<{
14
+ meta: {
15
+ total: number;
16
+ taken: number;
17
+ skipped: number;
18
+ };
19
+ data: {
20
+ id: string;
21
+ name: string;
22
+ trade_name?: string;
23
+ timezone: string;
24
+ language: "fr" | "en" | "de" | "it" | "nl" | "es" | "pt" | "pl";
25
+ is_default: boolean;
26
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
27
+ accounting_currency: string;
28
+ address_line1: string | null;
29
+ address_line2: string | null;
30
+ zip_code: string | null;
31
+ state: string | null;
32
+ city: string | null;
33
+ country: "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AO" | "AQ" | "AR" | "AS" | "AT" | "AU" | "AW" | "AX" | "AZ" | "BA" | "BB" | "BD" | "BE" | "BF" | "BG" | "BH" | "BI" | "BJ" | "BL" | "BM" | "BN" | "BO" | "BQ" | "BR" | "BS" | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG" | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV" | "CW" | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC" | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM" | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GG" | "GH" | "GI" | "GL" | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY" | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "IC" | "ID" | "IE" | "IL" | "IM" | "IN" | "IO" | "IQ" | "IR" | "IS" | "IT" | "JE" | "JM" | "JO" | "JP" | "KE" | "KG" | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA" | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY" | "MA" | "MC" | "MD" | "ME" | "MF" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO" | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY" | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP" | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK" | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PT-20" | "PT-30" | "PW" | "PY" | "QA" | "RE" | "RO" | "RS" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH" | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "SS" | "ST" | "SV" | "SX" | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TL" | "TM" | "TN" | "TO" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG" | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN" | "VU" | "WF" | "WS" | "XK" | "YE" | "YT" | "ZA" | "ZM" | "ZW";
34
+ tax_id: string | null;
35
+ tax_id_valid?: boolean;
36
+ billing_email: string | null;
37
+ invoice_number_pattern: string;
38
+ credit_note_number_pattern: string;
39
+ document_number_pattern: string;
40
+ next_invoice_number: number;
41
+ next_credit_note_number: number;
42
+ next_document_number: number;
43
+ default_payment_delay: number;
44
+ invoice_grace_period_duration: number;
45
+ invoice_payment_initiation_delay: number | null;
46
+ document_payment_initiation_delay: number | null;
47
+ invoice_late_fees: string | null;
48
+ invoice_footer: string | null;
49
+ document_footer: string | null;
50
+ logo_url: string | null;
51
+ favicon_url: string | null;
52
+ brand_color: string | null;
53
+ forced_customer_type: "corporate" | "person" | null;
54
+ created_at: string;
55
+ updated_at: string;
56
+ deleted_at: string | null;
57
+ }[];
58
+ } | null>;
59
+ getInvoicingEntity(id?: string): Promise<{
60
+ id: string;
61
+ name: string;
62
+ trade_name?: string;
63
+ timezone: string;
64
+ language: "fr" | "en" | "de" | "it" | "nl" | "es" | "pt" | "pl";
65
+ is_default: boolean;
66
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
67
+ accounting_currency: string;
68
+ address_line1: string | null;
69
+ address_line2: string | null;
70
+ zip_code: string | null;
71
+ state: string | null;
72
+ city: string | null;
73
+ country: "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AO" | "AQ" | "AR" | "AS" | "AT" | "AU" | "AW" | "AX" | "AZ" | "BA" | "BB" | "BD" | "BE" | "BF" | "BG" | "BH" | "BI" | "BJ" | "BL" | "BM" | "BN" | "BO" | "BQ" | "BR" | "BS" | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG" | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV" | "CW" | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC" | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM" | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GG" | "GH" | "GI" | "GL" | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY" | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "IC" | "ID" | "IE" | "IL" | "IM" | "IN" | "IO" | "IQ" | "IR" | "IS" | "IT" | "JE" | "JM" | "JO" | "JP" | "KE" | "KG" | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA" | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY" | "MA" | "MC" | "MD" | "ME" | "MF" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO" | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY" | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP" | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK" | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PT-20" | "PT-30" | "PW" | "PY" | "QA" | "RE" | "RO" | "RS" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH" | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "SS" | "ST" | "SV" | "SX" | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TL" | "TM" | "TN" | "TO" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG" | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN" | "VU" | "WF" | "WS" | "XK" | "YE" | "YT" | "ZA" | "ZM" | "ZW";
74
+ tax_id: string | null;
75
+ tax_id_valid?: boolean;
76
+ billing_email: string | null;
77
+ invoice_number_pattern: string;
78
+ credit_note_number_pattern: string;
79
+ document_number_pattern: string;
80
+ next_invoice_number: number;
81
+ next_credit_note_number: number;
82
+ next_document_number: number;
83
+ default_payment_delay: number;
84
+ invoice_grace_period_duration: number;
85
+ invoice_payment_initiation_delay: number | null;
86
+ document_payment_initiation_delay: number | null;
87
+ invoice_late_fees: string | null;
88
+ invoice_footer: string | null;
89
+ document_footer: string | null;
90
+ logo_url: string | null;
91
+ favicon_url: string | null;
92
+ brand_color: string | null;
93
+ forced_customer_type: "corporate" | "person" | null;
94
+ created_at: string;
95
+ updated_at: string;
96
+ deleted_at: string | null;
97
+ } | null>;
13
98
  getCustomer(id?: string): Promise<({
14
99
  id: string;
15
100
  name: string;
@@ -1397,6 +1482,136 @@ export declare class HyperlineAPI {
1397
1482
  } | null>;
1398
1483
  getInvoiceDownload(id: string): Promise<string | null>;
1399
1484
  getAllInvoices(items?: paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data'], query?: operations['getInvoices']['parameters']['query']): Promise<paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data']>;
1485
+ voidInvoice(id: string, data?: NonNullable<paths['/v1/invoices/{id}/void']['post']['requestBody']>['content']['application/json']): Promise<({
1486
+ id: string;
1487
+ number: string;
1488
+ type: "invoice" | "credit_note" | "document" | "child_invoice_ref" | "child_creditnote_ref";
1489
+ document_name: string | null;
1490
+ status: "draft" | "open" | "to_pay" | "grace_period" | "partially_paid" | "paid" | "voided" | "closed" | "error" | "missing_info" | "archived" | "charged_on_parent" | "pending_parent_concat" | "uncollectible";
1491
+ reference: string | null;
1492
+ purchase_order: string | null;
1493
+ original_invoice_id: string | null;
1494
+ original_invoice_number: string | null;
1495
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
1496
+ source: "hyperline" | "api" | "pennylane" | "chargebee" | "stripe" | "lago" | "sequence" | "other";
1497
+ total_amount: number;
1498
+ amount_due: number;
1499
+ amount_paid: number;
1500
+ amount_fixed: number;
1501
+ amount_excluding_tax: number;
1502
+ tax_rate: number;
1503
+ tax_amount: number;
1504
+ tax_scheme: "exempt" | "standard" | "reverse_charge" | "manual" | "not_eligible";
1505
+ discount_amount: number;
1506
+ conversion_rate: number | null;
1507
+ converted_amount: number | null;
1508
+ converted_at: string | null;
1509
+ payment_method_id: string | null;
1510
+ bank_account_id: string | null;
1511
+ custom_note: string | null;
1512
+ additional_info: string | null;
1513
+ footer: string | null;
1514
+ customer: {
1515
+ id: string;
1516
+ name: string;
1517
+ email: string | null;
1518
+ external_id: string | null;
1519
+ vat_number: string | null;
1520
+ address: import("./_types.generated").components["schemas"]["Address"];
1521
+ };
1522
+ seller: {
1523
+ id: string;
1524
+ name: string;
1525
+ tax_id: string | null;
1526
+ address: import("./_types.generated").components["schemas"]["Address"];
1527
+ };
1528
+ subscription_id: string | null;
1529
+ period_starts_at: string | null;
1530
+ period_ends_at: string | null;
1531
+ emitted_at: string;
1532
+ due_at: string;
1533
+ refunded_at: string | null;
1534
+ grace_period_ended_at: string | null;
1535
+ settled_at: string | null;
1536
+ updated_at: string | null;
1537
+ properties: {
1538
+ [key: string]: string | number | boolean | null | (string | number | boolean | null)[];
1539
+ } | null;
1540
+ line_items: import("./_types.generated").components["schemas"]["InvoiceLineItem"][];
1541
+ coupons: import("./_types.generated").components["schemas"]["InvoiceCoupon"][];
1542
+ transactions: ({
1543
+ id: string;
1544
+ type: "subscription" | "one_time" | "refund";
1545
+ amount: number;
1546
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
1547
+ customer_id: string;
1548
+ provider_id: string | null;
1549
+ process_at: string;
1550
+ refunded_at: string | null;
1551
+ last_refreshed_at: string | null;
1552
+ provider_fee: {
1553
+ amount: number;
1554
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
1555
+ exchange_rate: number | null;
1556
+ } | null;
1557
+ chargeback: {
1558
+ amount: number;
1559
+ last_chargeback_at: string;
1560
+ } | null;
1561
+ } & ({
1562
+ payment_method_type: "card" | "direct_debit" | "direct_debit_ach" | "direct_debit_bacs";
1563
+ payment_method: import("./_types.generated").components["schemas"]["PaymentMethod"];
1564
+ } | {
1565
+ payment_method_type: "transfer" | "transfer_automated";
1566
+ bank_account: import("./_types.generated").components["schemas"]["BankAccount"] & (({
1567
+ id: string;
1568
+ currency: "EUR" | "AED" | "AFN" | "XCD" | "ALL" | "AMD" | "AOA" | "ARS" | "USD" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "XOF" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BRL" | "BSD" | "BTN" | "NOK" | "BWP" | "BYR" | "BZD" | "CAD" | "CDF" | "XAF" | "CHF" | "NZD" | "CLP" | "CNY" | "COP" | "CRC" | "CUP" | "CVE" | "ANG" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "MAD" | "ERN" | "ETB" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MDL" | "MGA" | "MKD" | "MMK" | "MNT" | "MOP" | "MRO" | "MUR" | "MVR" | "MWK" | "MXN" | "MYR" | "MZN" | "NAD" | "XPF" | "NGN" | "NIO" | "NPR" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STD" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "VUV" | "WST" | "YER" | "ZAR" | "ZMW" | "ZWL";
1569
+ bank_name: string | null;
1570
+ } & ({
1571
+ format: "iban_bic_swift";
1572
+ iban: string;
1573
+ bic_swift: string | null;
1574
+ } | {
1575
+ format: "sort_code_account_number";
1576
+ sort_code: string;
1577
+ account_number: string;
1578
+ } | {
1579
+ format: "account_number_routing_number";
1580
+ account_number: string;
1581
+ routing_number: string;
1582
+ } | {
1583
+ format: "account_number_bic_swift";
1584
+ account_number: string;
1585
+ bic_swift: string;
1586
+ })) | null);
1587
+ } | {
1588
+ payment_method_type: "wallet";
1589
+ wallet_id: string;
1590
+ } | {
1591
+ payment_method_type: "external";
1592
+ }) & ({
1593
+ status: "scheduled" | "to_process" | "pending" | "settled" | "cancelled";
1594
+ } | {
1595
+ status: "failed";
1596
+ error_type: "authentication_required" | "declined" | "fraud" | "insufficient_funds" | "payment_method_authorization_error" | "payment_method_declined" | "payment_method_expired" | "payment_method_invalid" | "payment_method_not_supported" | "processing_error" | "provider_error" | "unknown" | null;
1597
+ error_message: string | null;
1598
+ }))[];
1599
+ } & {
1600
+ integrations: {
1601
+ entity_id: string;
1602
+ provider_name: "stripe" | "mollie" | "gocardless" | "airwallex" | "salesforce" | "hubspot" | "attio" | "xero" | "pennylane" | "exact-online" | "quickbooks" | "netsuite" | "anrok";
1603
+ provider_account_id: string;
1604
+ }[];
1605
+ }) | null>;
1606
+ deleteInvoice(id: string): Promise<null | undefined>;
1607
+ getCustomerPaymentMethods(customerId: string): Promise<{
1608
+ meta: {
1609
+ total: number;
1610
+ taken: number;
1611
+ skipped: number;
1612
+ };
1613
+ data: (import("./_types.generated").components["schemas"]["PaymentMethod"] & (import("./_types.generated").components["schemas"]["PaymentMethodCard"] | import("./_types.generated").components["schemas"]["PaymentMethodDirectDebit"] | import("./_types.generated").components["schemas"]["PaymentMethodStripeLink"]))[];
1614
+ } | null>;
1400
1615
  getPaymentMethod(customerId: string, paymentMethodId: string): Promise<({
1401
1616
  id: string;
1402
1617
  } & {
@@ -11,6 +11,7 @@ export class HyperlineAPI {
11
11
  async fetchBasic(path, options, data) {
12
12
  if (data)
13
13
  options = { body: JSON.stringify(data), ...(options || {}) };
14
+ const method = (options?.method || 'GET').toUpperCase();
14
15
  const sandbox = this.headers.Authorization.includes('test')
15
16
  ? 'sandbox.'
16
17
  : '';
@@ -19,9 +20,31 @@ export class HyperlineAPI {
19
20
  ...options,
20
21
  headers: { ...this.headers, ...options?.headers },
21
22
  });
22
- if (!result || !result?.ok) {
23
+ if (!result?.ok) {
23
24
  const status = result?.status;
24
25
  const statusText = result?.statusText;
26
+ let content = null;
27
+ try {
28
+ const rawBody = await result.text();
29
+ const trimmedBody = rawBody.trim();
30
+ if (trimmedBody) {
31
+ try {
32
+ content = JSON.parse(trimmedBody);
33
+ }
34
+ catch (_) {
35
+ content = rawBody;
36
+ }
37
+ }
38
+ }
39
+ catch (_) {
40
+ // ignore
41
+ }
42
+ const message = (content && typeof content === 'object' && 'message' in content
43
+ ? content.message
44
+ : null) ||
45
+ (typeof content === 'string' ? content : null) ||
46
+ (content ? JSON.stringify(content) : null) ||
47
+ 'Unknown error';
25
48
  if (status === 429) {
26
49
  // get difference between rate limit reset and now
27
50
  const rateLimitReset = utc(result?.headers.get('x-ratelimit-reset'));
@@ -30,16 +53,17 @@ export class HyperlineAPI {
30
53
  await new Promise((resolve) => setTimeout(resolve, diff));
31
54
  return await this.fetchBasic(path, options, data);
32
55
  }
33
- else if (status === 404) {
56
+ else if (status === 404 && method === 'GET') {
34
57
  return null;
35
58
  }
36
59
  else {
37
- const content = await result.json();
38
- throw new Error(`Hyperline Error ${status} (${statusText}) in ${path} for ${options?.method || 'GET'}: ${content.message}`);
60
+ throw new Error(`Hyperline Error ${status} (${statusText}) in ${path} for ${method}: ${message}`);
39
61
  }
40
62
  }
41
63
  else if (result.headers.get('content-type')?.includes('application/pdf'))
42
64
  return arrayBufferToBase64(await result.arrayBuffer());
65
+ if (result.status === 204)
66
+ return null;
43
67
  return (await result.json());
44
68
  }
45
69
  async fetch(path, options, data) {
@@ -48,6 +72,17 @@ export class HyperlineAPI {
48
72
  async fetchIngest(path, options, data) {
49
73
  return await this.fetchBasic(`ingest.hyperline.co${path}`, options, data);
50
74
  }
75
+ // INVOICING ENTITY
76
+ async getInvoicingEntities() {
77
+ return await this.fetch('/v1/invoicing-entities');
78
+ }
79
+ async getInvoicingEntity(id) {
80
+ if (!id) {
81
+ this.logger.error('Missing invoicing entity ID', { id });
82
+ throw new Error('Missing invoicing entity ID');
83
+ }
84
+ return await this.fetch(`/v1/invoicing-entities/${id}`);
85
+ }
51
86
  // CUSTOMER
52
87
  async getCustomer(id) {
53
88
  if (!id) {
@@ -65,10 +100,15 @@ export class HyperlineAPI {
65
100
  return results?.data[0];
66
101
  }
67
102
  async getCustomers(skip = 0, take = 100, query = {}) {
68
- return await this.fetch(`/v1/customers?take=${take}&skip=${skip}&${Object.entries(query)
69
- .filter(([_, value]) => value !== undefined)
70
- .map(([key, value]) => `&${key}=${value}`)
71
- .join('')}`);
103
+ const queryParams = new URLSearchParams();
104
+ queryParams.set('take', take.toString());
105
+ queryParams.set('skip', skip.toString());
106
+ for (const [key, value] of Object.entries(query)) {
107
+ if (value === undefined || value === null)
108
+ continue;
109
+ queryParams.set(key, value.toString());
110
+ }
111
+ return await this.fetch(`/v1/customers?${queryParams.toString()}`);
72
112
  }
73
113
  async getAllCustomers(items = [], query = {}) {
74
114
  const { data } = (await this.getCustomers(items.length, 100, {
@@ -122,10 +162,15 @@ export class HyperlineAPI {
122
162
  async getSubscriptions(skip = 0, take = 100, query = {
123
163
  status: 'all',
124
164
  }) {
125
- return await this.fetch(`/v2/subscriptions?take=${take}&skip=${skip}${Object.entries(query)
126
- .filter(([_, value]) => value !== undefined)
127
- .map(([key, value]) => `&${key}=${value}`)
128
- .join('')}`);
165
+ const queryParams = new URLSearchParams();
166
+ queryParams.set('take', take.toString());
167
+ queryParams.set('skip', skip.toString());
168
+ for (const [key, value] of Object.entries(query)) {
169
+ if (value === undefined || value === null)
170
+ continue;
171
+ queryParams.set(key, value.toString());
172
+ }
173
+ return await this.fetch(`/v2/subscriptions?${queryParams.toString()}`);
129
174
  }
130
175
  async getAllSubscriptions(items = [], query = {}) {
131
176
  const { data } = (await this.getSubscriptions(items.length, 100, query)) || { data: [] };
@@ -172,10 +217,15 @@ export class HyperlineAPI {
172
217
  return await this.fetch(`/v1/invoices/${id}`);
173
218
  }
174
219
  async getInvoices(skip = 0, take = 100, query = { status: 'all' }) {
175
- return await this.fetch(`/v1/invoices?take=${take}&skip=${skip}&${Object.entries(query)
176
- .filter(([_, value]) => value !== undefined)
177
- .map(([key, value]) => `&${key}=${value}`)
178
- .join('')}`);
220
+ const queryParams = new URLSearchParams();
221
+ queryParams.set('take', take.toString());
222
+ queryParams.set('skip', skip.toString());
223
+ for (const [key, value] of Object.entries(query)) {
224
+ if (value === undefined || value === null)
225
+ continue;
226
+ queryParams.set(key, value.toString());
227
+ }
228
+ return await this.fetch(`/v1/invoices?${queryParams.toString()}`);
179
229
  }
180
230
  async getInvoicesByCustomerId(id, filters) {
181
231
  const queryParams = new URLSearchParams();
@@ -207,7 +257,28 @@ export class HyperlineAPI {
207
257
  ? this.getAllInvoices([...items, ...data], { status: 'all', ...query })
208
258
  : [...items, ...data];
209
259
  }
260
+ async voidInvoice(id, data = { send_email: false }) {
261
+ if (!id) {
262
+ this.logger.error('Missing invoice ID', { id });
263
+ throw new Error('Missing invoice ID');
264
+ }
265
+ return await this.fetch(`/v1/invoices/${id}/void`, { method: 'POST' }, data);
266
+ }
267
+ async deleteInvoice(id) {
268
+ if (!id) {
269
+ this.logger.error('Missing invoice ID', { id });
270
+ throw new Error('Missing invoice ID');
271
+ }
272
+ return await this.fetch(`/v1/invoices/${id}`, { method: 'DELETE' });
273
+ }
210
274
  // OTHERS
275
+ async getCustomerPaymentMethods(customerId) {
276
+ if (!customerId) {
277
+ this.logger.error('Missing customer ID', { customerId });
278
+ throw new Error('Missing customer ID');
279
+ }
280
+ return await this.fetch(`/v1/customers/${customerId}/payment-methods`);
281
+ }
211
282
  async getPaymentMethod(customerId, paymentMethodId) {
212
283
  return await this.fetch(`/v1/customers/${customerId}/payment-methods/${paymentMethodId}`);
213
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":"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","sourcesContent":["import { utc } from '@vrplatform/utils';\nimport type { operations, paths } from './_types.generated';\nimport { BillableEvents, CreateBillableEvent } from './types';\nimport { arrayBufferToBase64 } from './utils';\n\nexport type Logger = { error(message?: any, ...optionalParams: any[]): void };\n\nexport class HyperlineAPI {\n constructor(token: string, logger: Logger = console) {\n this.headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n };\n this.logger = logger;\n }\n\n private headers: Record<string, string>;\n\n private logger: Logger;\n\n private async fetchBasic<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n if (data) options = { body: JSON.stringify(data), ...(options || {}) };\n\n const sandbox = this.headers.Authorization.includes('test')\n ? 'sandbox.'\n : '';\n\n const result = await fetch(`https://${sandbox}${path}`, {\n method: 'GET',\n ...options,\n headers: { ...this.headers, ...options?.headers },\n });\n\n if (!result || !result?.ok) {\n const status = result?.status;\n const statusText = result?.statusText;\n\n if (status === 429) {\n // get difference between rate limit reset and now\n const rateLimitReset = utc(result?.headers.get('x-ratelimit-reset'));\n const diff = rateLimitReset.diff(utc(), 'milliseconds');\n\n // wait until rate limit resets\n await new Promise((resolve) => setTimeout(resolve, diff));\n\n return await this.fetchBasic<T>(path, options, data);\n } else if (status === 404) {\n return null;\n } else {\n const content: any = await result.json();\n throw new Error(\n `Hyperline Error ${status} (${statusText}) in ${path} for ${options?.method || 'GET'}: ${content.message}`\n );\n }\n } else if (result.headers.get('content-type')?.includes('application/pdf'))\n return arrayBufferToBase64(await result.arrayBuffer()) as T;\n\n return (await result.json()) as T;\n }\n\n private async fetch<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`api.hyperline.co${path}`, options, data);\n }\n\n private async fetchIngest<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`ingest.hyperline.co${path}`, options, data);\n }\n\n // CUSTOMER\n\n async getCustomer(id?: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`);\n }\n\n async getCustomerById(id?: string) {\n if (!id) {\n this.logger.error('Missing tenant ID', { id });\n throw new Error('Missing tenant ID');\n }\n\n const results = await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers?external_id__equals=${id}`);\n\n return results?.data[0];\n }\n\n async getCustomers(\n skip = 0,\n take = 100,\n query: operations['getCustomers']['parameters']['query'] = {}\n ) {\n return await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(\n `/v1/customers?take=${take}&skip=${skip}&${Object.entries(query)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => `&${key}=${value}`)\n .join('')}`\n );\n }\n\n async getAllCustomers(\n items: paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getCustomers']['parameters']['query'] = {}\n ): Promise<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getCustomers(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllCustomers([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n async createCustomer(\n data: NonNullable<\n paths['/v1/customers']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/customers']['post']['responses'][201]['content']['application/json']\n >(\n '/v1/customers',\n { method: 'POST' },\n { currency: 'USD', timezone: 'Etc/UTC', ...data }\n );\n }\n\n async updateCustomer(\n id: string,\n data: NonNullable<\n paths['/v1/customers/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`, { method: 'PUT' }, data);\n }\n\n async deleteCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}']['delete']['responses'][204]['content']\n >(`/v1/customers/${id}`, {\n method: 'DELETE',\n });\n }\n\n async archiveCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/archive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n async unarchiveCustomer(id: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/unarchive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/unarchive`, { method: 'PUT' });\n }\n\n async getCustomerPortal(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/portal']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/portal`);\n }\n\n // SUBSCRIPTION\n\n async getSubscription(id: string, liveBilling = false) {\n if (!id) {\n this.logger.error('Missing subscription ID', { id });\n throw new Error('Missing subscription ID');\n }\n\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['get']['responses'][200]['content']['application/json']\n >(\n `/v2/subscriptions/${id}?include_live_billing=${liveBilling ? 'true' : 'false'}`\n );\n }\n\n async getSubscriptions(\n skip = 0,\n take = 100,\n query: operations['getSubscriptions']['parameters']['query'] = {\n status: 'all',\n }\n ) {\n return await this.fetch<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']\n >(\n `/v2/subscriptions?take=${take}&skip=${skip}${Object.entries(query)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => `&${key}=${value}`)\n .join('')}`\n );\n }\n\n async getAllSubscriptions(\n items: paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getSubscriptions']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getSubscriptions(\n items.length,\n 100,\n query\n )) || { data: [] };\n\n return data.length\n ? this.getAllSubscriptions([...items, ...data], query)\n : [...items, ...data];\n }\n\n async createSubscription(\n data: NonNullable<\n paths['/v2/subscriptions']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions']['post']['responses'][201]['content']['application/json']\n >('/v2/subscriptions', { method: 'POST' }, data);\n }\n\n async updateSubscription(\n id: string,\n data: NonNullable<\n paths['/v2/subscriptions/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions/${id}`, { method: 'PUT' }, data);\n }\n\n async createSubscriptionUpdate(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/update']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/update']['post']['responses'][201]['content']['application/json']\n >(`/v1/subscriptions/${id}/update`, { method: 'POST' }, data);\n }\n\n async cancelSubscription(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/cancel']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/cancel']['post']['responses'][200]['content']['application/json']\n >(\n `/v1/subscriptions/${id}/cancel`,\n {\n method: 'POST',\n },\n data\n );\n }\n\n async reinstateSubscription(id: string) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/reinstate']['post']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/${id}/reinstate`, {\n method: 'POST',\n });\n }\n\n // PLAN\n\n async getPlan(id: string) {\n if (!id) {\n this.logger.error('Missing plan ID', { id });\n throw new Error('Missing plan ID');\n }\n\n return await this.fetch<\n paths['/v1/plans/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans/${id}`);\n }\n\n async getPlans(skip = 0, take = 100) {\n return await this.fetch<\n paths['/v1/plans']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans?take=${take}&skip=${skip}`);\n }\n\n // INVOICE\n\n async getInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}`);\n }\n\n async getInvoices(\n skip = 0,\n take = 100,\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ) {\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(\n `/v1/invoices?take=${take}&skip=${skip}&${Object.entries(query)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => `&${key}=${value}`)\n .join('')}`\n );\n }\n\n async getInvoicesByCustomerId(\n id: string,\n filters?: Partial<operations['getInvoices']['parameters']['query']>\n ) {\n const queryParams = new URLSearchParams();\n queryParams.append('customerId__equals', id);\n\n if (filters) {\n Object.entries(filters).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, value.toString());\n }\n });\n }\n\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices?${queryParams.toString()}`);\n }\n\n async getInvoiceDownload(id: string) {\n return await this.fetch<string>(\n // TODO: fix if type != unknown paths['/v1/invoices/{id}/download']['get']['responses'][200]['content']['application/pdf']\n `/v1/invoices/${id}/download`,\n {\n headers: { 'Content-type': 'application/pdf' },\n }\n );\n }\n\n async getAllInvoices(\n items: paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ): Promise<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getInvoices(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllInvoices([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n // OTHERS\n\n async getPaymentMethod(customerId: string, paymentMethodId: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods/{paymentMethodId}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods/${paymentMethodId}`);\n }\n\n async createBillableEvent(data: CreateBillableEvent[]) {\n if (!data.length) return { events_created: [] };\n\n return await this.fetchIngest<BillableEvents>(\n '/v1/events/batch',\n { method: 'POST' },\n data\n );\n }\n\n async getComponentToken(data: { customer_id: string }) {\n return await this.fetch<\n paths['/v1/integrations/components/token']['post']['responses'][201]['content']['application/json']\n >('/v1/integrations/components/token', { method: 'POST' }, data);\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"src/","sources":["client.ts"],"names":[],"mappings":"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","sourcesContent":["import { utc } from '@vrplatform/utils';\nimport type { operations, paths } from './_types.generated';\nimport { BillableEvents, CreateBillableEvent } from './types';\nimport { arrayBufferToBase64 } from './utils';\n\nexport type Logger = { error(message?: any, ...optionalParams: any[]): void };\n\nexport class HyperlineAPI {\n constructor(token: string, logger: Logger = console) {\n this.headers = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n };\n this.logger = logger;\n }\n\n private headers: Record<string, string>;\n\n private logger: Logger;\n\n private async fetchBasic<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n if (data) options = { body: JSON.stringify(data), ...(options || {}) };\n\n const method = (options?.method || 'GET').toUpperCase();\n const sandbox = this.headers.Authorization.includes('test')\n ? 'sandbox.'\n : '';\n\n const result = await fetch(`https://${sandbox}${path}`, {\n method: 'GET',\n ...options,\n headers: { ...this.headers, ...options?.headers },\n });\n\n if (!result?.ok) {\n const status = result?.status;\n const statusText = result?.statusText;\n let content: any = null;\n\n try {\n const rawBody = await result.text();\n const trimmedBody = rawBody.trim();\n\n if (trimmedBody) {\n try {\n content = JSON.parse(trimmedBody);\n } catch (_) {\n content = rawBody;\n }\n }\n } catch (_) {\n // ignore\n }\n\n const message =\n (content && typeof content === 'object' && 'message' in content\n ? (content as any).message\n : null) ||\n (typeof content === 'string' ? content : null) ||\n (content ? JSON.stringify(content) : null) ||\n 'Unknown error';\n\n if (status === 429) {\n // get difference between rate limit reset and now\n const rateLimitReset = utc(result?.headers.get('x-ratelimit-reset'));\n const diff = rateLimitReset.diff(utc(), 'milliseconds');\n\n // wait until rate limit resets\n await new Promise((resolve) => setTimeout(resolve, diff));\n\n return await this.fetchBasic<T>(path, options, data);\n } else if (status === 404 && method === 'GET') {\n return null;\n } else {\n throw new Error(\n `Hyperline Error ${status} (${statusText}) in ${path} for ${method}: ${message}`\n );\n }\n } else if (result.headers.get('content-type')?.includes('application/pdf'))\n return arrayBufferToBase64(await result.arrayBuffer()) as T;\n\n if (result.status === 204) return null;\n\n return (await result.json()) as T;\n }\n\n private async fetch<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`api.hyperline.co${path}`, options, data);\n }\n\n private async fetchIngest<T>(\n path: string,\n options?: RequestInit,\n data?: Record<string, any>\n ): Promise<T | null> {\n return await this.fetchBasic(`ingest.hyperline.co${path}`, options, data);\n }\n\n // INVOICING ENTITY\n\n async getInvoicingEntities() {\n return await this.fetch<\n paths['/v1/invoicing-entities']['get']['responses'][200]['content']['application/json']\n >('/v1/invoicing-entities');\n }\n\n async getInvoicingEntity(id?: string) {\n if (!id) {\n this.logger.error('Missing invoicing entity ID', { id });\n throw new Error('Missing invoicing entity ID');\n }\n\n return await this.fetch<\n paths['/v1/invoicing-entities/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoicing-entities/${id}`);\n }\n\n // CUSTOMER\n\n async getCustomer(id?: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`);\n }\n\n async getCustomerById(id?: string) {\n if (!id) {\n this.logger.error('Missing tenant ID', { id });\n throw new Error('Missing tenant ID');\n }\n\n const results = await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers?external_id__equals=${id}`);\n\n return results?.data[0];\n }\n\n async getCustomers(\n skip = 0,\n take = 100,\n query: operations['getCustomers']['parameters']['query'] = {}\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers?${queryParams.toString()}`);\n }\n\n async getAllCustomers(\n items: paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getCustomers']['parameters']['query'] = {}\n ): Promise<\n paths['/v1/customers']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getCustomers(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllCustomers([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n async createCustomer(\n data: NonNullable<\n paths['/v1/customers']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/customers']['post']['responses'][201]['content']['application/json']\n >(\n '/v1/customers',\n { method: 'POST' },\n { currency: 'USD', timezone: 'Etc/UTC', ...data }\n );\n }\n\n async updateCustomer(\n id: string,\n data: NonNullable<\n paths['/v1/customers/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}`, { method: 'PUT' }, data);\n }\n\n async deleteCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}']['delete']['responses'][204]['content']\n >(`/v1/customers/${id}`, {\n method: 'DELETE',\n });\n }\n\n async archiveCustomer(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/archive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n async unarchiveCustomer(id: string) {\n if (!id) {\n this.logger.error('Missing customer ID', { id });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/unarchive']['put']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/unarchive`, { method: 'PUT' });\n }\n\n async getCustomerPortal(id: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/portal']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${id}/portal`);\n }\n\n // SUBSCRIPTION\n\n async getSubscription(id: string, liveBilling = false) {\n if (!id) {\n this.logger.error('Missing subscription ID', { id });\n throw new Error('Missing subscription ID');\n }\n\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['get']['responses'][200]['content']['application/json']\n >(\n `/v2/subscriptions/${id}?include_live_billing=${liveBilling ? 'true' : 'false'}`\n );\n }\n\n async getSubscriptions(\n skip = 0,\n take = 100,\n query: operations['getSubscriptions']['parameters']['query'] = {\n status: 'all',\n }\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions?${queryParams.toString()}`);\n }\n\n async getAllSubscriptions(\n items: paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getSubscriptions']['parameters']['query'] = {}\n ): Promise<\n paths['/v2/subscriptions']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getSubscriptions(\n items.length,\n 100,\n query\n )) || { data: [] };\n\n return data.length\n ? this.getAllSubscriptions([...items, ...data], query)\n : [...items, ...data];\n }\n\n async createSubscription(\n data: NonNullable<\n paths['/v2/subscriptions']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions']['post']['responses'][201]['content']['application/json']\n >('/v2/subscriptions', { method: 'POST' }, data);\n }\n\n async updateSubscription(\n id: string,\n data: NonNullable<\n paths['/v2/subscriptions/{id}']['put']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v2/subscriptions/{id}']['put']['responses'][200]['content']['application/json']\n >(`/v2/subscriptions/${id}`, { method: 'PUT' }, data);\n }\n\n async createSubscriptionUpdate(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/update']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/update']['post']['responses'][201]['content']['application/json']\n >(`/v1/subscriptions/${id}/update`, { method: 'POST' }, data);\n }\n\n async cancelSubscription(\n id: string,\n data: NonNullable<\n paths['/v1/subscriptions/{id}/cancel']['post']['requestBody']\n >['content']['application/json']\n ) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/cancel']['post']['responses'][200]['content']['application/json']\n >(\n `/v1/subscriptions/${id}/cancel`,\n {\n method: 'POST',\n },\n data\n );\n }\n\n async reinstateSubscription(id: string) {\n return await this.fetch<\n paths['/v1/subscriptions/{id}/reinstate']['post']['responses'][200]['content']['application/json']\n >(`/v1/subscriptions/${id}/reinstate`, {\n method: 'POST',\n });\n }\n\n // PLAN\n\n async getPlan(id: string) {\n if (!id) {\n this.logger.error('Missing plan ID', { id });\n throw new Error('Missing plan ID');\n }\n\n return await this.fetch<\n paths['/v1/plans/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans/${id}`);\n }\n\n async getPlans(skip = 0, take = 100) {\n return await this.fetch<\n paths['/v1/plans']['get']['responses'][200]['content']['application/json']\n >(`/v1/plans?take=${take}&skip=${skip}`);\n }\n\n // INVOICE\n\n async getInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}`);\n }\n\n async getInvoices(\n skip = 0,\n take = 100,\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ) {\n const queryParams = new URLSearchParams();\n queryParams.set('take', take.toString());\n queryParams.set('skip', skip.toString());\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n queryParams.set(key, value.toString());\n }\n\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices?${queryParams.toString()}`);\n }\n\n async getInvoicesByCustomerId(\n id: string,\n filters?: Partial<operations['getInvoices']['parameters']['query']>\n ) {\n const queryParams = new URLSearchParams();\n queryParams.append('customerId__equals', id);\n\n if (filters) {\n Object.entries(filters).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, value.toString());\n }\n });\n }\n\n return await this.fetch<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']\n >(`/v1/invoices?${queryParams.toString()}`);\n }\n\n async getInvoiceDownload(id: string) {\n return await this.fetch<string>(\n // TODO: fix if type != unknown paths['/v1/invoices/{id}/download']['get']['responses'][200]['content']['application/pdf']\n `/v1/invoices/${id}/download`,\n {\n headers: { 'Content-type': 'application/pdf' },\n }\n );\n }\n\n async getAllInvoices(\n items: paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data'] = [],\n query: operations['getInvoices']['parameters']['query'] = { status: 'all' }\n ): Promise<\n paths['/v1/invoices']['get']['responses'][200]['content']['application/json']['data']\n > {\n const { data } = (await this.getInvoices(items.length, 100, {\n status: 'all',\n ...query,\n })) || {\n data: [],\n };\n\n return data.length\n ? this.getAllInvoices([...items, ...data], { status: 'all', ...query })\n : [...items, ...data];\n }\n\n async voidInvoice(\n id: string,\n data: NonNullable<\n paths['/v1/invoices/{id}/void']['post']['requestBody']\n >['content']['application/json'] = { send_email: false }\n ) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}/void']['post']['responses'][200]['content']['application/json']\n >(`/v1/invoices/${id}/void`, { method: 'POST' }, data);\n }\n\n async deleteInvoice(id: string) {\n if (!id) {\n this.logger.error('Missing invoice ID', { id });\n throw new Error('Missing invoice ID');\n }\n\n return await this.fetch<\n paths['/v1/invoices/{id}']['delete']['responses'][204]['content']\n >(`/v1/invoices/${id}`, { method: 'DELETE' });\n }\n\n // OTHERS\n\n async getCustomerPaymentMethods(customerId: string) {\n if (!customerId) {\n this.logger.error('Missing customer ID', { customerId });\n throw new Error('Missing customer ID');\n }\n\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods`);\n }\n\n async getPaymentMethod(customerId: string, paymentMethodId: string) {\n return await this.fetch<\n paths['/v1/customers/{id}/payment-methods/{paymentMethodId}']['get']['responses'][200]['content']['application/json']\n >(`/v1/customers/${customerId}/payment-methods/${paymentMethodId}`);\n }\n\n async createBillableEvent(data: CreateBillableEvent[]) {\n if (!data.length) return { events_created: [] };\n\n return await this.fetchIngest<BillableEvents>(\n '/v1/events/batch',\n { method: 'POST' },\n data\n );\n }\n\n async getComponentToken(data: { customer_id: string }) {\n return await this.fetch<\n paths['/v1/integrations/components/token']['post']['responses'][201]['content']['application/json']\n >('/v1/integrations/components/token', { method: 'POST' }, data);\n }\n}\n"]}
@@ -13,11 +13,27 @@ export declare const VRTRUST_HALF_PRICE_COUPON_ID = "cou_CTOQqs0SOeSc-e";
13
13
  export declare const VRTRUST_HALF_PRICE_DEV_COUPON_ID = "cou_tHLiRdwQ6xGqKA";
14
14
  export declare const VRTRUST_FREE_PRICE_COUPON_ID = "cou_JGiLite8_nFtnX";
15
15
  export declare const VRTRUST_FREE_PRICE_DEV_COUPON_ID = "cou_N4GNqSSLEFscto";
16
+ export declare const HYPERLINE_PARTNER_TIER_10_PERCENT_COUPON_ID = "cou_56kMhdo4fYNs7c";
17
+ export declare const HYPERLINE_PARTNER_TIER_20_PERCENT_COUPON_ID = "cou_ExjGVUcu15XKeq";
18
+ export declare const HYPERLINE_PARTNER_TIER_30_PERCENT_COUPON_ID = "cou_PJI6mXZHOyoWlx";
19
+ export declare const HYPERLINE_PARTNER_TIER_40_PERCENT_COUPON_ID = "cou_gnYic7Uu8zHJX9";
20
+ export declare const HYPERLINE_PARTNER_TIER_50_PERCENT_COUPON_ID = "cou_1saVofWCoJsVyz";
21
+ export declare const HYPERLINE_PARTNER_TIER_60_PERCENT_COUPON_ID = "cou_tJI9hmHkQXjXOp";
22
+ export declare const HYPERLINE_PARTNER_TIER_COUPON_IDS: {
23
+ readonly 10: "cou_56kMhdo4fYNs7c";
24
+ readonly 20: "cou_ExjGVUcu15XKeq";
25
+ readonly 30: "cou_PJI6mXZHOyoWlx";
26
+ readonly 40: "cou_gnYic7Uu8zHJX9";
27
+ readonly 50: "cou_1saVofWCoJsVyz";
28
+ readonly 60: "cou_tJI9hmHkQXjXOp";
29
+ };
16
30
  export declare const HYPERLINE_DEFAULT_PLAN_ID = "plan_Dyb5P0ICZ6HsIT";
17
31
  export declare const HYPERLINE_DEFAULT_DEV_PLAN_ID = "plan_UTCVXFQnKD0oMS";
18
32
  export declare const HYPERLINE_DEFAULT_PLAN_NAME = "All-in-One VRP Subscription";
19
33
  export declare const HYPERLINE_DEFAULT_PRODUCT_ID = "itm_9NU7ffT14I4ris";
20
34
  export declare const HYPERLINE_DEFAULT_MIN_AMOUNT = 12500;
35
+ export declare const HYPERLINE_NEW_PRICING_DIRECT_PRODUCT_ID = "itm_VeR6AJi9OyUQN2";
36
+ export declare const HYPERLINE_NEW_PRICING_PARTNER_CLIENT_PRODUCT_ID = "itm_wrrT0HuAZ8Tlh1";
21
37
  export declare const HYPERLINE_PARTNER_PLAN_ID = "plan_vkYJcCz7z0XD0N";
22
38
  export declare const HYPERLINE_PARTNER_DEV_PLAN_ID = "plan_8qtj8T4j0W3oiS";
23
39
  export declare const HYPERLINE_PARTNER_PLAN_NAME = "VRP Subscription - Partners";
@@ -35,6 +51,7 @@ export declare const WEBHOOKS: {
35
51
  'payment_method.created': "hyperline_payment_method_created";
36
52
  'payment_method.errored': "hyperline_payment_method_errored";
37
53
  'payment_method.deleted': "hyperline_payment_method_deleted";
54
+ 'payment_method.expired': "hyperline_payment_method_expired";
38
55
  'subscription.activated': "hyperline_subscription_status_changed";
39
56
  'subscription.reactivated': "hyperline_subscription_status_changed";
40
57
  'subscription.cancellation_scheduled': "hyperline_subscription_cancellation_scheduled";