@elyonar/einvoice-js 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +230 -0
  3. package/dist/cjs/client/http-client.d.ts +52 -0
  4. package/dist/cjs/client/http-client.d.ts.map +1 -0
  5. package/dist/cjs/client/http-client.js +117 -0
  6. package/dist/cjs/client/http-client.js.map +1 -0
  7. package/dist/cjs/client/index.d.ts +3 -0
  8. package/dist/cjs/client/index.d.ts.map +1 -0
  9. package/dist/cjs/client/index.js +6 -0
  10. package/dist/cjs/client/index.js.map +1 -0
  11. package/dist/cjs/einvoice.d.ts +69 -0
  12. package/dist/cjs/einvoice.d.ts.map +1 -0
  13. package/dist/cjs/einvoice.js +79 -0
  14. package/dist/cjs/einvoice.js.map +1 -0
  15. package/dist/cjs/errors.d.ts +74 -0
  16. package/dist/cjs/errors.d.ts.map +1 -0
  17. package/dist/cjs/errors.js +98 -0
  18. package/dist/cjs/errors.js.map +1 -0
  19. package/dist/cjs/index.d.ts +12 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +40 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/package.json +1 -0
  24. package/dist/cjs/services/billing.d.ts +75 -0
  25. package/dist/cjs/services/billing.d.ts.map +1 -0
  26. package/dist/cjs/services/billing.js +172 -0
  27. package/dist/cjs/services/billing.js.map +1 -0
  28. package/dist/cjs/services/buyers.d.ts +57 -0
  29. package/dist/cjs/services/buyers.d.ts.map +1 -0
  30. package/dist/cjs/services/buyers.js +110 -0
  31. package/dist/cjs/services/buyers.js.map +1 -0
  32. package/dist/cjs/services/index.d.ts +5 -0
  33. package/dist/cjs/services/index.d.ts.map +1 -0
  34. package/dist/cjs/services/index.js +12 -0
  35. package/dist/cjs/services/index.js.map +1 -0
  36. package/dist/cjs/services/invoices.d.ts +94 -0
  37. package/dist/cjs/services/invoices.d.ts.map +1 -0
  38. package/dist/cjs/services/invoices.js +193 -0
  39. package/dist/cjs/services/invoices.js.map +1 -0
  40. package/dist/cjs/services/sellers.d.ts +61 -0
  41. package/dist/cjs/services/sellers.d.ts.map +1 -0
  42. package/dist/cjs/services/sellers.js +114 -0
  43. package/dist/cjs/services/sellers.js.map +1 -0
  44. package/dist/cjs/types/billing.d.ts +174 -0
  45. package/dist/cjs/types/billing.d.ts.map +1 -0
  46. package/dist/cjs/types/billing.js +6 -0
  47. package/dist/cjs/types/billing.js.map +1 -0
  48. package/dist/cjs/types/common.d.ts +53 -0
  49. package/dist/cjs/types/common.d.ts.map +1 -0
  50. package/dist/cjs/types/common.js +6 -0
  51. package/dist/cjs/types/common.js.map +1 -0
  52. package/dist/cjs/types/index.d.ts +6 -0
  53. package/dist/cjs/types/index.d.ts.map +1 -0
  54. package/dist/cjs/types/index.js +3 -0
  55. package/dist/cjs/types/index.js.map +1 -0
  56. package/dist/cjs/types/invoice.d.ts +183 -0
  57. package/dist/cjs/types/invoice.d.ts.map +1 -0
  58. package/dist/cjs/types/invoice.js +6 -0
  59. package/dist/cjs/types/invoice.js.map +1 -0
  60. package/dist/cjs/types/party.d.ts +128 -0
  61. package/dist/cjs/types/party.d.ts.map +1 -0
  62. package/dist/cjs/types/party.js +3 -0
  63. package/dist/cjs/types/party.js.map +1 -0
  64. package/dist/cjs/types/webhook.d.ts +14 -0
  65. package/dist/cjs/types/webhook.d.ts.map +1 -0
  66. package/dist/cjs/types/webhook.js +6 -0
  67. package/dist/cjs/types/webhook.js.map +1 -0
  68. package/dist/cjs/webhooks/index.d.ts +3 -0
  69. package/dist/cjs/webhooks/index.d.ts.map +1 -0
  70. package/dist/cjs/webhooks/index.js +6 -0
  71. package/dist/cjs/webhooks/index.js.map +1 -0
  72. package/dist/cjs/webhooks/verify.d.ts +43 -0
  73. package/dist/cjs/webhooks/verify.d.ts.map +1 -0
  74. package/dist/cjs/webhooks/verify.js +92 -0
  75. package/dist/cjs/webhooks/verify.js.map +1 -0
  76. package/dist/esm/client/http-client.d.ts +52 -0
  77. package/dist/esm/client/http-client.d.ts.map +1 -0
  78. package/dist/esm/client/http-client.js +113 -0
  79. package/dist/esm/client/http-client.js.map +1 -0
  80. package/dist/esm/client/index.d.ts +3 -0
  81. package/dist/esm/client/index.d.ts.map +1 -0
  82. package/dist/esm/client/index.js +2 -0
  83. package/dist/esm/client/index.js.map +1 -0
  84. package/dist/esm/einvoice.d.ts +69 -0
  85. package/dist/esm/einvoice.d.ts.map +1 -0
  86. package/dist/esm/einvoice.js +75 -0
  87. package/dist/esm/einvoice.js.map +1 -0
  88. package/dist/esm/errors.d.ts +74 -0
  89. package/dist/esm/errors.d.ts.map +1 -0
  90. package/dist/esm/errors.js +89 -0
  91. package/dist/esm/errors.js.map +1 -0
  92. package/dist/esm/index.d.ts +12 -0
  93. package/dist/esm/index.d.ts.map +1 -0
  94. package/dist/esm/index.js +24 -0
  95. package/dist/esm/index.js.map +1 -0
  96. package/dist/esm/services/billing.d.ts +75 -0
  97. package/dist/esm/services/billing.d.ts.map +1 -0
  98. package/dist/esm/services/billing.js +168 -0
  99. package/dist/esm/services/billing.js.map +1 -0
  100. package/dist/esm/services/buyers.d.ts +57 -0
  101. package/dist/esm/services/buyers.d.ts.map +1 -0
  102. package/dist/esm/services/buyers.js +106 -0
  103. package/dist/esm/services/buyers.js.map +1 -0
  104. package/dist/esm/services/index.d.ts +5 -0
  105. package/dist/esm/services/index.d.ts.map +1 -0
  106. package/dist/esm/services/index.js +5 -0
  107. package/dist/esm/services/index.js.map +1 -0
  108. package/dist/esm/services/invoices.d.ts +94 -0
  109. package/dist/esm/services/invoices.d.ts.map +1 -0
  110. package/dist/esm/services/invoices.js +189 -0
  111. package/dist/esm/services/invoices.js.map +1 -0
  112. package/dist/esm/services/sellers.d.ts +61 -0
  113. package/dist/esm/services/sellers.d.ts.map +1 -0
  114. package/dist/esm/services/sellers.js +110 -0
  115. package/dist/esm/services/sellers.js.map +1 -0
  116. package/dist/esm/types/billing.d.ts +174 -0
  117. package/dist/esm/types/billing.d.ts.map +1 -0
  118. package/dist/esm/types/billing.js +5 -0
  119. package/dist/esm/types/billing.js.map +1 -0
  120. package/dist/esm/types/common.d.ts +53 -0
  121. package/dist/esm/types/common.d.ts.map +1 -0
  122. package/dist/esm/types/common.js +5 -0
  123. package/dist/esm/types/common.js.map +1 -0
  124. package/dist/esm/types/index.d.ts +6 -0
  125. package/dist/esm/types/index.d.ts.map +1 -0
  126. package/dist/esm/types/index.js +2 -0
  127. package/dist/esm/types/index.js.map +1 -0
  128. package/dist/esm/types/invoice.d.ts +183 -0
  129. package/dist/esm/types/invoice.d.ts.map +1 -0
  130. package/dist/esm/types/invoice.js +5 -0
  131. package/dist/esm/types/invoice.js.map +1 -0
  132. package/dist/esm/types/party.d.ts +128 -0
  133. package/dist/esm/types/party.d.ts.map +1 -0
  134. package/dist/esm/types/party.js +2 -0
  135. package/dist/esm/types/party.js.map +1 -0
  136. package/dist/esm/types/webhook.d.ts +14 -0
  137. package/dist/esm/types/webhook.d.ts.map +1 -0
  138. package/dist/esm/types/webhook.js +5 -0
  139. package/dist/esm/types/webhook.js.map +1 -0
  140. package/dist/esm/webhooks/index.d.ts +3 -0
  141. package/dist/esm/webhooks/index.d.ts.map +1 -0
  142. package/dist/esm/webhooks/index.js +2 -0
  143. package/dist/esm/webhooks/index.js.map +1 -0
  144. package/dist/esm/webhooks/verify.d.ts +43 -0
  145. package/dist/esm/webhooks/verify.d.ts.map +1 -0
  146. package/dist/esm/webhooks/verify.js +89 -0
  147. package/dist/esm/webhooks/verify.js.map +1 -0
  148. package/package.json +87 -0
@@ -0,0 +1,53 @@
1
+ export interface PaginationMeta {
2
+ total: number;
3
+ page: number;
4
+ pageSize: number;
5
+ totalPages: number;
6
+ hasNext: boolean;
7
+ hasPrevious: boolean;
8
+ }
9
+ export interface ApiResponseMeta {
10
+ statusCode: number;
11
+ success: boolean;
12
+ errors: Array<{
13
+ field?: string;
14
+ message: string;
15
+ code?: string;
16
+ }>;
17
+ message: string;
18
+ timestamp: string;
19
+ pagination?: PaginationMeta;
20
+ }
21
+ export interface ApiResponse<T> {
22
+ meta: ApiResponseMeta;
23
+ data: T;
24
+ }
25
+ export interface PaginationParams {
26
+ page?: number;
27
+ pageSize?: number;
28
+ }
29
+ export interface PaginatedResult<T> {
30
+ data: T[];
31
+ pagination: PaginationMeta;
32
+ }
33
+ export interface RateLimitInfo {
34
+ limit: number;
35
+ remaining: number;
36
+ reset: number;
37
+ resetAfter: number;
38
+ }
39
+ export interface RequestOptions {
40
+ /**
41
+ * Override timeout for this specific request (in milliseconds).
42
+ */
43
+ timeout?: number;
44
+ /**
45
+ * AbortSignal for request cancellation.
46
+ */
47
+ signal?: AbortSignal;
48
+ /**
49
+ * Additional headers to send with this request.
50
+ */
51
+ headers?: Record<string, string>;
52
+ }
53
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC;CACT;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,cAAc,CAAC;CAC5B;AAMD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════
2
+ // API Response Envelope
3
+ // ═══════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,wBAAwB;AACxB,8CAA8C"}
@@ -0,0 +1,6 @@
1
+ export type { ApiResponse, ApiResponseMeta, PaginationMeta, PaginationParams, PaginatedResult, RateLimitInfo, RequestOptions, } from './common.js';
2
+ export type { InvoiceType, InvoiceStatus, PaymentStatus, Currency, PostalAddress, LineItem, Invoice, CreateInvoiceParams, UpdateInvoiceParams, ListInvoicesParams, SubmitResult, BatchSubmitResult, RetryResult, InvoiceStatusResult, ValidationResult, DownloadResult, InvoiceStatistics, InvoiceStatisticsParams, CancelInvoiceParams, } from './invoice.js';
3
+ export type { PartyType, PartyStatus, TinVerificationStatus, Seller, Buyer, CreateSellerParams, UpdateSellerParams, CreateBuyerParams, UpdateBuyerParams, ListSellersParams, ListBuyersParams, TinVerificationResult, SearchResult, } from './party.js';
4
+ export type { BillingMode, BillingAccountStatus, SubscriptionStatus, SubscriptionInterval, BillingPaymentStatus, CreditTransactionType, CreditTransactionStatus, BillingAccount, SubscriptionPlan, SubscriptionPlanPrice, Subscription, CreditPackage, CreditPackagePrice, CreditTransaction, Payment, BalanceCheck, PurchaseCreditsParams, PurchaseResult, UsageAnalytics, BillingSetup, ListPlansParams, ListPackagesParams, ListPaymentsParams, ListTransactionsParams, UsageAnalyticsParams, } from './billing.js';
5
+ export type { WebhookEventType, WebhookEvent, WebhookHeaders, } from './webhook.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,SAAS,EACT,WAAW,EACX,qBAAqB,EACrB,MAAM,EACN,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,183 @@
1
+ export type InvoiceType = 'STANDARD' | 'CREDIT_NOTE' | 'DEBIT_NOTE';
2
+ export type InvoiceStatus = 'draft' | 'queued' | 'pending' | 'accepted' | 'rejected' | 'failed' | 'cancelled';
3
+ export type PaymentStatus = 'UNPAID' | 'PARTIALLY_PAID' | 'PAID';
4
+ export type Currency = 'NGN' | 'USD' | 'EUR' | 'GBP';
5
+ export interface PostalAddress {
6
+ buildingNumber?: string;
7
+ streetName: string;
8
+ additionalStreetName?: string;
9
+ cityName: string;
10
+ countrySubentity: string;
11
+ postalZone?: string;
12
+ countryCode: string;
13
+ }
14
+ export interface LineItem {
15
+ id?: string;
16
+ description: string;
17
+ quantity: number;
18
+ unitPrice: number;
19
+ lineExtensionAmount?: number;
20
+ taxPercent?: number;
21
+ taxAmount?: number;
22
+ totalAmount?: number;
23
+ hsnCode?: string;
24
+ unitCode?: string;
25
+ discountAmount?: number;
26
+ }
27
+ export interface Invoice {
28
+ id: string;
29
+ organizationId: string;
30
+ sellerId: string;
31
+ buyerId: string;
32
+ invoiceNumber: string;
33
+ invoiceType: InvoiceType;
34
+ status: InvoiceStatus;
35
+ invoiceDate: string;
36
+ issueTime?: string;
37
+ dueDate?: string;
38
+ deliveryDate?: string;
39
+ currency: Currency;
40
+ lineItems: LineItem[];
41
+ totalAmountExcludingTax: number;
42
+ totalTaxAmount: number;
43
+ totalAmountIncludingTax: number;
44
+ allowanceAmount: number;
45
+ chargeAmount: number;
46
+ payableAmount: number;
47
+ paymentStatus: PaymentStatus;
48
+ paymentTerms?: string;
49
+ notes?: string;
50
+ originalInvoiceNumber?: string;
51
+ purchaseOrderReference?: string;
52
+ accountingCost?: string;
53
+ jurisdiction: string;
54
+ regulatoryData?: Record<string, unknown>;
55
+ submissionAttempts: number;
56
+ lastSubmissionAttemptAt?: string;
57
+ metadata?: Record<string, unknown>;
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ }
61
+ export interface CreateInvoiceParams {
62
+ sellerId: string;
63
+ buyerId: string;
64
+ invoiceDate: string;
65
+ dueDate: string;
66
+ currency: Currency;
67
+ lineItems: Array<{
68
+ description: string;
69
+ quantity: number;
70
+ unitPrice: number;
71
+ vatRate: number;
72
+ hsnCode?: string;
73
+ unitCode?: string;
74
+ discountAmount?: number;
75
+ }>;
76
+ invoiceType?: InvoiceType;
77
+ deliveryDate?: string;
78
+ paymentTerms?: string;
79
+ notes?: string;
80
+ originalInvoiceNumber?: string;
81
+ purchaseOrderReference?: string;
82
+ accountingCost?: string;
83
+ metadata?: Record<string, unknown>;
84
+ }
85
+ export interface UpdateInvoiceParams {
86
+ buyerId?: string;
87
+ invoiceDate?: string;
88
+ dueDate?: string;
89
+ currency?: Currency;
90
+ lineItems?: CreateInvoiceParams['lineItems'];
91
+ deliveryDate?: string;
92
+ paymentTerms?: string;
93
+ notes?: string;
94
+ purchaseOrderReference?: string;
95
+ accountingCost?: string;
96
+ metadata?: Record<string, unknown>;
97
+ }
98
+ export interface ListInvoicesParams {
99
+ page?: number;
100
+ pageSize?: number;
101
+ status?: InvoiceStatus;
102
+ sellerId?: string;
103
+ buyerId?: string;
104
+ startDate?: string;
105
+ endDate?: string;
106
+ search?: string;
107
+ sortBy?: string;
108
+ sortOrder?: 'asc' | 'desc';
109
+ }
110
+ export interface SubmitResult {
111
+ jobId: string;
112
+ status: 'queued';
113
+ jurisdiction: string;
114
+ }
115
+ export interface BatchSubmitResult {
116
+ totalQueued: number;
117
+ totalFailed: number;
118
+ queued: Array<{
119
+ invoiceId: string;
120
+ jobId: string;
121
+ }>;
122
+ failed: Array<{
123
+ invoiceId: string;
124
+ error: string;
125
+ }>;
126
+ }
127
+ export interface RetryResult {
128
+ jobId: string;
129
+ status: 'queued';
130
+ attempt: number;
131
+ }
132
+ export interface InvoiceStatusResult {
133
+ invoiceId: string;
134
+ status: InvoiceStatus;
135
+ submissionAttempts: number;
136
+ lastSubmissionAttemptAt?: string;
137
+ regulatoryData?: Record<string, unknown>;
138
+ }
139
+ export interface ValidationResult {
140
+ valid: boolean;
141
+ errors: Array<{
142
+ field: string;
143
+ message: string;
144
+ code: string;
145
+ }>;
146
+ warnings?: Array<{
147
+ field: string;
148
+ message: string;
149
+ }>;
150
+ calculations?: {
151
+ subtotal: number;
152
+ tax: number;
153
+ total: number;
154
+ };
155
+ }
156
+ export interface DownloadResult {
157
+ downloadUrl: string;
158
+ expiresAt: string;
159
+ fileName: string;
160
+ }
161
+ export interface InvoiceStatistics {
162
+ totalInvoices: number;
163
+ totalAmount?: number;
164
+ pendingInvoices?: number;
165
+ rejectedInvoices?: number;
166
+ byStatus?: Record<string, number>;
167
+ jurisdiction?: string;
168
+ period?: {
169
+ startDate: string;
170
+ endDate: string;
171
+ };
172
+ }
173
+ export interface InvoiceStatisticsParams {
174
+ startDate?: string;
175
+ endDate?: string;
176
+ jurisdiction?: string;
177
+ sellerId?: string;
178
+ }
179
+ export interface CancelInvoiceParams {
180
+ reason: string;
181
+ notes?: string;
182
+ }
183
+ //# sourceMappingURL=invoice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../../src/types/invoice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════
2
+ // Enums
3
+ // ═══════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=invoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoice.js","sourceRoot":"","sources":["../../../src/types/invoice.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,QAAQ;AACR,8CAA8C"}
@@ -0,0 +1,128 @@
1
+ import type { PostalAddress } from './invoice.js';
2
+ export type PartyType = 'COMPANY' | 'INDIVIDUAL' | 'OTHER';
3
+ export type PartyStatus = 'PENDING_VERIFICATION' | 'ACTIVE' | 'SUSPENDED' | 'INACTIVE';
4
+ export type TinVerificationStatus = 'NOT_VERIFIED' | 'PENDING' | 'VERIFIED' | 'FAILED';
5
+ export interface Seller {
6
+ id: string;
7
+ organizationId: string;
8
+ partyName: string;
9
+ tradingName?: string;
10
+ tin: string;
11
+ sellerType: PartyType;
12
+ status: PartyStatus;
13
+ registrationNumber?: string;
14
+ vatNumber?: string;
15
+ postalAddress?: PostalAddress;
16
+ email?: string;
17
+ phone?: string;
18
+ website?: string;
19
+ businessActivity?: string;
20
+ tinVerificationStatus: TinVerificationStatus;
21
+ tinVerifiedAt?: string;
22
+ logoUrl?: string;
23
+ metadata?: Record<string, unknown>;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ }
27
+ export interface Buyer {
28
+ id: string;
29
+ organizationId: string;
30
+ partyName: string;
31
+ tradingName?: string;
32
+ tin: string;
33
+ buyerType: PartyType;
34
+ status: PartyStatus;
35
+ registrationNumber?: string;
36
+ postalAddress?: PostalAddress;
37
+ email?: string;
38
+ phone?: string;
39
+ businessActivity?: string;
40
+ tinVerificationStatus: TinVerificationStatus;
41
+ tinVerifiedAt?: string;
42
+ metadata?: Record<string, unknown>;
43
+ createdAt: string;
44
+ updatedAt: string;
45
+ }
46
+ export interface CreateSellerParams {
47
+ partyName: string;
48
+ tin: string;
49
+ sellerType: PartyType;
50
+ tradingName?: string;
51
+ registrationNumber?: string;
52
+ vatNumber?: string;
53
+ postalAddress?: PostalAddress;
54
+ email?: string;
55
+ phone?: string;
56
+ website?: string;
57
+ businessActivity?: string;
58
+ logoUrl?: string;
59
+ metadata?: Record<string, unknown>;
60
+ }
61
+ export interface UpdateSellerParams {
62
+ partyName?: string;
63
+ tradingName?: string;
64
+ sellerType?: PartyType;
65
+ registrationNumber?: string;
66
+ vatNumber?: string;
67
+ postalAddress?: PostalAddress;
68
+ email?: string;
69
+ phone?: string;
70
+ website?: string;
71
+ businessActivity?: string;
72
+ logoUrl?: string;
73
+ metadata?: Record<string, unknown>;
74
+ }
75
+ export interface CreateBuyerParams {
76
+ partyName: string;
77
+ tin: string;
78
+ buyerType: PartyType;
79
+ tradingName?: string;
80
+ registrationNumber?: string;
81
+ postalAddress?: PostalAddress;
82
+ email?: string;
83
+ phone?: string;
84
+ businessActivity?: string;
85
+ metadata?: Record<string, unknown>;
86
+ }
87
+ export interface UpdateBuyerParams {
88
+ partyName?: string;
89
+ tradingName?: string;
90
+ buyerType?: PartyType;
91
+ registrationNumber?: string;
92
+ postalAddress?: PostalAddress;
93
+ email?: string;
94
+ phone?: string;
95
+ businessActivity?: string;
96
+ metadata?: Record<string, unknown>;
97
+ }
98
+ export interface ListSellersParams {
99
+ page?: number;
100
+ pageSize?: number;
101
+ status?: PartyStatus;
102
+ search?: string;
103
+ sortBy?: string;
104
+ sortOrder?: 'asc' | 'desc';
105
+ }
106
+ export interface ListBuyersParams {
107
+ page?: number;
108
+ pageSize?: number;
109
+ status?: PartyStatus;
110
+ search?: string;
111
+ sortBy?: string;
112
+ sortOrder?: 'asc' | 'desc';
113
+ }
114
+ export interface TinVerificationResult {
115
+ tinVerificationStatus: TinVerificationStatus;
116
+ tinVerifiedAt?: string;
117
+ tinVerificationResult?: Record<string, unknown>;
118
+ }
119
+ export interface SearchResult {
120
+ results: Array<{
121
+ id: string;
122
+ name: string;
123
+ tin: string;
124
+ type?: string;
125
+ }>;
126
+ count: number;
127
+ }
128
+ //# sourceMappingURL=party.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party.d.ts","sourceRoot":"","sources":["../../../src/types/party.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=party.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"party.js","sourceRoot":"","sources":["../../../src/types/party.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ export type WebhookEventType = 'invoice.created' | 'invoice.submitted' | 'invoice.approved' | 'invoice.rejected' | 'invoice.failed' | 'invoice.cancelled' | 'billing.payment_succeeded' | 'billing.payment_failed' | 'billing.low_credit_alert' | 'billing.subscription_created' | 'billing.subscription_renewed' | 'billing.subscription_cancelled' | 'billing.trial_expiring_soon' | 'auth.user_invited' | 'auth.user_joined' | 'auth.api_key_created' | 'auth.api_key_revoked';
2
+ export interface WebhookEvent<T = Record<string, unknown>> {
3
+ eventId: string;
4
+ eventType: WebhookEventType;
5
+ timestamp: string;
6
+ data: T;
7
+ }
8
+ export interface WebhookHeaders {
9
+ 'x-webhook-signature': string;
10
+ 'x-webhook-timestamp': string;
11
+ 'x-webhook-event': string;
12
+ 'x-webhook-event-id': string;
13
+ }
14
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAExB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GAEnB,2BAA2B,GAC3B,wBAAwB,GACxB,0BAA0B,GAC1B,8BAA8B,GAC9B,8BAA8B,GAC9B,gCAAgC,GAChC,6BAA6B,GAE7B,mBAAmB,GACnB,kBAAkB,GAClB,sBAAsB,GACtB,sBAAsB,CAAC;AAM3B,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;CACT;AAMD,MAAM,WAAW,cAAc;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,5 @@
1
+ // ═══════════════════════════════════════════
2
+ // Webhook Event Types
3
+ // ═══════════════════════════════════════════
4
+ export {};
5
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,sBAAsB;AACtB,8CAA8C"}
@@ -0,0 +1,3 @@
1
+ export { verifyWebhook } from './verify.js';
2
+ export type { VerifyWebhookOptions } from './verify.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/webhooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { verifyWebhook } from './verify.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webhooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { WebhookEvent, WebhookHeaders } from '../types/webhook.js';
2
+ export interface VerifyWebhookOptions {
3
+ /**
4
+ * Maximum allowed age of the webhook timestamp (in seconds).
5
+ * Prevents replay attacks.
6
+ * @default 300
7
+ */
8
+ toleranceSeconds?: number;
9
+ }
10
+ /**
11
+ * Verify and parse a webhook event from the E-Invoice platform.
12
+ *
13
+ * Performs HMAC-SHA256 signature verification with timing-safe comparison
14
+ * and replay protection via timestamp validation.
15
+ *
16
+ * @param payload - The raw request body (string or Buffer).
17
+ * @param headers - The webhook request headers (or a plain object with the relevant keys).
18
+ * @param secret - Your webhook signing secret.
19
+ * @param options - Optional verification options.
20
+ * @returns The parsed and verified webhook event.
21
+ * @throws {EInvoiceWebhookError} If verification fails.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { verifyWebhook } from '@elyonar/einvoice-js/webhooks';
26
+ *
27
+ * app.post('/webhooks/einvoice', (req, res) => {
28
+ * try {
29
+ * const event = verifyWebhook(req.body, req.headers, process.env.WEBHOOK_SECRET);
30
+ * switch (event.eventType) {
31
+ * case 'invoice.approved':
32
+ * // Handle approved invoice
33
+ * break;
34
+ * }
35
+ * res.sendStatus(200);
36
+ * } catch (err) {
37
+ * res.sendStatus(400);
38
+ * }
39
+ * });
40
+ * ```
41
+ */
42
+ export declare function verifyWebhook<T = Record<string, unknown>>(payload: string | Buffer, headers: Partial<WebhookHeaders> | Record<string, string | string[] | undefined>, secret: string, options?: VerifyWebhookOptions): WebhookEvent<T>;
43
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/webhooks/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQxE,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EAChF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC7B,YAAY,CAAC,CAAC,CAAC,CAgDjB"}
@@ -0,0 +1,89 @@
1
+ import { createHmac, timingSafeEqual } from 'node:crypto';
2
+ import { EInvoiceWebhookError } from '../errors.js';
3
+ /**
4
+ * Maximum age (in seconds) for a webhook timestamp before it's considered stale.
5
+ * Default: 300 seconds (5 minutes).
6
+ */
7
+ const DEFAULT_TOLERANCE_SECONDS = 300;
8
+ /**
9
+ * Verify and parse a webhook event from the E-Invoice platform.
10
+ *
11
+ * Performs HMAC-SHA256 signature verification with timing-safe comparison
12
+ * and replay protection via timestamp validation.
13
+ *
14
+ * @param payload - The raw request body (string or Buffer).
15
+ * @param headers - The webhook request headers (or a plain object with the relevant keys).
16
+ * @param secret - Your webhook signing secret.
17
+ * @param options - Optional verification options.
18
+ * @returns The parsed and verified webhook event.
19
+ * @throws {EInvoiceWebhookError} If verification fails.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { verifyWebhook } from '@elyonar/einvoice-js/webhooks';
24
+ *
25
+ * app.post('/webhooks/einvoice', (req, res) => {
26
+ * try {
27
+ * const event = verifyWebhook(req.body, req.headers, process.env.WEBHOOK_SECRET);
28
+ * switch (event.eventType) {
29
+ * case 'invoice.approved':
30
+ * // Handle approved invoice
31
+ * break;
32
+ * }
33
+ * res.sendStatus(200);
34
+ * } catch (err) {
35
+ * res.sendStatus(400);
36
+ * }
37
+ * });
38
+ * ```
39
+ */
40
+ export function verifyWebhook(payload, headers, secret, options) {
41
+ const tolerance = options?.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;
42
+ // Extract headers (case-insensitive)
43
+ const signature = getHeader(headers, 'x-webhook-signature');
44
+ const timestamp = getHeader(headers, 'x-webhook-timestamp');
45
+ if (!signature) {
46
+ throw new EInvoiceWebhookError('Missing X-Webhook-Signature header');
47
+ }
48
+ if (!timestamp) {
49
+ throw new EInvoiceWebhookError('Missing X-Webhook-Timestamp header');
50
+ }
51
+ // Validate timestamp (replay protection)
52
+ const webhookTime = parseInt(timestamp, 10);
53
+ if (isNaN(webhookTime)) {
54
+ throw new EInvoiceWebhookError('Invalid X-Webhook-Timestamp header');
55
+ }
56
+ const now = Math.floor(Date.now() / 1000);
57
+ if (Math.abs(now - webhookTime) > tolerance) {
58
+ throw new EInvoiceWebhookError(`Webhook timestamp too old. Received: ${webhookTime}, current: ${now}, tolerance: ${tolerance}s`);
59
+ }
60
+ // Build the signed payload: "{timestamp}.{rawBody}"
61
+ const rawBody = typeof payload === 'string' ? payload : payload.toString('utf-8');
62
+ const signedPayload = `${timestamp}.${rawBody}`;
63
+ // Compute expected signature
64
+ const expectedSignature = `sha256=${createHmac('sha256', secret).update(signedPayload).digest('hex')}`;
65
+ // Timing-safe comparison
66
+ const sigBuffer = Buffer.from(signature, 'utf-8');
67
+ const expectedBuffer = Buffer.from(expectedSignature, 'utf-8');
68
+ if (sigBuffer.length !== expectedBuffer.length || !timingSafeEqual(sigBuffer, expectedBuffer)) {
69
+ throw new EInvoiceWebhookError('Webhook signature verification failed');
70
+ }
71
+ // Parse and return the event
72
+ try {
73
+ return JSON.parse(rawBody);
74
+ }
75
+ catch {
76
+ throw new EInvoiceWebhookError('Failed to parse webhook payload as JSON');
77
+ }
78
+ }
79
+ /**
80
+ * Extract a header value, handling case insensitivity and arrays.
81
+ */
82
+ function getHeader(headers, key) {
83
+ // Try exact match first, then lowercase
84
+ const value = headers[key] ?? headers[key.toLowerCase()];
85
+ if (Array.isArray(value))
86
+ return value[0];
87
+ return value;
88
+ }
89
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/webhooks/verify.ts"],"names":[],"mappings":"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"}