@fiatden/openpay 0.0.0-stage → 0.0.1

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 (101) hide show
  1. package/README.md +269 -2
  2. package/dist/analytics.test.d.ts +2 -0
  3. package/dist/analytics.test.d.ts.map +1 -0
  4. package/dist/analytics.test.js +184 -0
  5. package/dist/apps.test.d.ts +2 -0
  6. package/dist/apps.test.d.ts.map +1 -0
  7. package/dist/apps.test.js +92 -0
  8. package/dist/http.d.ts +22 -0
  9. package/dist/http.d.ts.map +1 -0
  10. package/dist/http.js +56 -0
  11. package/dist/http.test.d.ts +2 -0
  12. package/dist/http.test.d.ts.map +1 -0
  13. package/dist/http.test.js +47 -0
  14. package/dist/index.d.ts +145 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +190 -0
  17. package/dist/resources/analytics.d.ts +215 -0
  18. package/dist/resources/analytics.d.ts.map +1 -0
  19. package/dist/resources/analytics.js +66 -0
  20. package/dist/resources/apiKeys.d.ts +22 -0
  21. package/dist/resources/apiKeys.d.ts.map +1 -0
  22. package/dist/resources/apiKeys.js +40 -0
  23. package/dist/resources/apps.d.ts +108 -0
  24. package/dist/resources/apps.d.ts.map +1 -0
  25. package/dist/resources/apps.js +32 -0
  26. package/dist/resources/auth.d.ts +71 -0
  27. package/dist/resources/auth.d.ts.map +1 -0
  28. package/dist/resources/auth.js +71 -0
  29. package/dist/resources/billing.d.ts +148 -0
  30. package/dist/resources/billing.d.ts.map +1 -0
  31. package/dist/resources/billing.js +55 -0
  32. package/dist/resources/charges.d.ts +67 -0
  33. package/dist/resources/charges.d.ts.map +1 -0
  34. package/dist/resources/charges.js +103 -0
  35. package/dist/resources/checkout.d.ts +80 -0
  36. package/dist/resources/checkout.d.ts.map +1 -0
  37. package/dist/resources/checkout.js +36 -0
  38. package/dist/resources/coupons.d.ts +66 -0
  39. package/dist/resources/coupons.d.ts.map +1 -0
  40. package/dist/resources/coupons.js +39 -0
  41. package/dist/resources/currencies.d.ts +45 -0
  42. package/dist/resources/currencies.d.ts.map +1 -0
  43. package/dist/resources/currencies.js +48 -0
  44. package/dist/resources/customers.d.ts +135 -0
  45. package/dist/resources/customers.d.ts.map +1 -0
  46. package/dist/resources/customers.js +50 -0
  47. package/dist/resources/disputes.d.ts +48 -0
  48. package/dist/resources/disputes.d.ts.map +1 -0
  49. package/dist/resources/disputes.js +47 -0
  50. package/dist/resources/emailTemplates.d.ts +55 -0
  51. package/dist/resources/emailTemplates.d.ts.map +1 -0
  52. package/dist/resources/emailTemplates.js +49 -0
  53. package/dist/resources/fx.d.ts +34 -0
  54. package/dist/resources/fx.d.ts.map +1 -0
  55. package/dist/resources/fx.js +27 -0
  56. package/dist/resources/invoices.d.ts +32 -0
  57. package/dist/resources/invoices.d.ts.map +1 -0
  58. package/dist/resources/invoices.js +36 -0
  59. package/dist/resources/merchants.d.ts +77 -0
  60. package/dist/resources/merchants.d.ts.map +1 -0
  61. package/dist/resources/merchants.js +97 -0
  62. package/dist/resources/metering.d.ts +65 -0
  63. package/dist/resources/metering.d.ts.map +1 -0
  64. package/dist/resources/metering.js +36 -0
  65. package/dist/resources/paymentLinks.d.ts +45 -0
  66. package/dist/resources/paymentLinks.d.ts.map +1 -0
  67. package/dist/resources/paymentLinks.js +32 -0
  68. package/dist/resources/payouts.d.ts +49 -0
  69. package/dist/resources/payouts.d.ts.map +1 -0
  70. package/dist/resources/payouts.js +55 -0
  71. package/dist/resources/providers.d.ts +52 -0
  72. package/dist/resources/providers.d.ts.map +1 -0
  73. package/dist/resources/providers.js +38 -0
  74. package/dist/resources/reconciliation.d.ts +125 -0
  75. package/dist/resources/reconciliation.d.ts.map +1 -0
  76. package/dist/resources/reconciliation.js +50 -0
  77. package/dist/resources/referrals.d.ts +25 -0
  78. package/dist/resources/referrals.d.ts.map +1 -0
  79. package/dist/resources/referrals.js +16 -0
  80. package/dist/resources/riskReview.d.ts +96 -0
  81. package/dist/resources/riskReview.d.ts.map +1 -0
  82. package/dist/resources/riskReview.js +44 -0
  83. package/dist/resources/roles.d.ts +59 -0
  84. package/dist/resources/roles.d.ts.map +1 -0
  85. package/dist/resources/roles.js +42 -0
  86. package/dist/resources/subscriptions.d.ts +42 -0
  87. package/dist/resources/subscriptions.d.ts.map +1 -0
  88. package/dist/resources/subscriptions.js +61 -0
  89. package/dist/resources/totp.d.ts +36 -0
  90. package/dist/resources/totp.d.ts.map +1 -0
  91. package/dist/resources/totp.js +41 -0
  92. package/dist/resources/wallets.d.ts +124 -0
  93. package/dist/resources/wallets.d.ts.map +1 -0
  94. package/dist/resources/wallets.js +68 -0
  95. package/dist/resources/webhooks.d.ts +47 -0
  96. package/dist/resources/webhooks.d.ts.map +1 -0
  97. package/dist/resources/webhooks.js +41 -0
  98. package/dist/types.d.ts +484 -0
  99. package/dist/types.d.ts.map +1 -0
  100. package/dist/types.js +15 -0
  101. package/package.json +46 -4
@@ -0,0 +1,67 @@
1
+ import { HttpClient } from '../http';
2
+ import { ChargeCreateParams, Charge, TokenizeParams, TokenizeResult, RefundParams, Refund, ListParams, ListResponse } from '../types';
3
+ export declare class ChargesResource {
4
+ private client;
5
+ constructor(client: HttpClient);
6
+ /** Create a one-time payment. Returns a checkout URL to redirect the customer to. */
7
+ create(params: ChargeCreateParams): Promise<Charge>;
8
+ /** Retrieve a single charge by reference. */
9
+ retrieve(reference: string): Promise<Charge>;
10
+ /** List charges with optional filters. */
11
+ list(params?: ListParams & {
12
+ merchant_id?: string;
13
+ status?: string;
14
+ provider?: string;
15
+ }): Promise<ListResponse<Charge>>;
16
+ /** Refund a successful charge. Pass amount for partial refund. */
17
+ refund(reference: string, params?: RefundParams): Promise<Refund>;
18
+ /**
19
+ * Manually retry a failed charge that opted in to retries
20
+ * (`retry_on_failure: true`). Returns the new attempt's reference.
21
+ */
22
+ retry(reference: string): Promise<{
23
+ reference: string;
24
+ retry_reference: string;
25
+ status: string;
26
+ }>;
27
+ /**
28
+ * Capture an authorized charge (8.2 auth-then-capture). Omit `amount` to
29
+ * capture the full authorized amount, or pass a smaller amount for a
30
+ * partial capture — the remainder is released.
31
+ */
32
+ capture(reference: string, params?: {
33
+ amount?: number;
34
+ }): Promise<{
35
+ reference: string;
36
+ status: string;
37
+ authorized_amount: number;
38
+ captured_amount: number;
39
+ currency: string;
40
+ partially_captured: boolean;
41
+ }>;
42
+ /** Void an authorized (uncaptured) charge, releasing the hold. */
43
+ void(reference: string): Promise<{
44
+ reference: string;
45
+ status: string;
46
+ }>;
47
+ /** Tokenize a card for future recurring charges (first step for subscriptions). */
48
+ tokenize(params: TokenizeParams): Promise<TokenizeResult>;
49
+ /** Export transactions as CSV. Returns raw CSV text. */
50
+ exportCsv(params?: {
51
+ merchant_id?: string;
52
+ status?: string;
53
+ provider?: string;
54
+ search?: string;
55
+ start_date?: string;
56
+ end_date?: string;
57
+ }): Promise<string>;
58
+ /** Get an HTML or JSON invoice/receipt for a charge. */
59
+ invoice(reference: string, format?: 'html' | 'json'): Promise<any>;
60
+ /** Send an invoice/receipt email to the customer for a charge. */
61
+ sendInvoice(reference: string): Promise<{
62
+ reference: string;
63
+ sent: boolean;
64
+ message: string;
65
+ }>;
66
+ }
67
+ //# sourceMappingURL=charges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charges.d.ts","sourceRoot":"","sources":["../../src/resources/charges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAC1D,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAC/C,MAAM,UAAU,CAAC;AAElB,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC,qFAAqF;IAC/E,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzD,6CAA6C;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,0CAA0C;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAIjC,kEAAkE;IAC5D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQvE;;;OAGG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvG;;;;OAIG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACtE,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IAOF,kEAAkE;IAC5D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7E,mFAAmF;IAC7E,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAO/D,wDAAwD;IAClD,SAAS,CAAC,MAAM,CAAC,EAAE;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBnB,wDAAwD;IAClD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAchF,kEAAkE;IAC5D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAKrG"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChargesResource = void 0;
4
+ class ChargesResource {
5
+ client;
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ /** Create a one-time payment. Returns a checkout URL to redirect the customer to. */
10
+ async create(params) {
11
+ return this.client.request('/v1/charges', {
12
+ method: 'POST',
13
+ body: params,
14
+ idempotencyKey: params.idempotency_key,
15
+ });
16
+ }
17
+ /** Retrieve a single charge by reference. */
18
+ async retrieve(reference) {
19
+ return this.client.request(`/v1/charges/${reference}`);
20
+ }
21
+ /** List charges with optional filters. */
22
+ async list(params) {
23
+ return this.client.request('/v1/charges', { params });
24
+ }
25
+ /** Refund a successful charge. Pass amount for partial refund. */
26
+ async refund(reference, params) {
27
+ return this.client.request(`/v1/charges/${reference}/refund`, {
28
+ method: 'POST',
29
+ body: params || {},
30
+ idempotencyKey: params?.idempotency_key,
31
+ });
32
+ }
33
+ /**
34
+ * Manually retry a failed charge that opted in to retries
35
+ * (`retry_on_failure: true`). Returns the new attempt's reference.
36
+ */
37
+ async retry(reference) {
38
+ return this.client.request(`/v1/charges/${reference}/retry`, { method: 'POST' });
39
+ }
40
+ /**
41
+ * Capture an authorized charge (8.2 auth-then-capture). Omit `amount` to
42
+ * capture the full authorized amount, or pass a smaller amount for a
43
+ * partial capture — the remainder is released.
44
+ */
45
+ async capture(reference, params) {
46
+ return this.client.request(`/v1/charges/${reference}/capture`, {
47
+ method: 'POST',
48
+ body: params || {},
49
+ });
50
+ }
51
+ /** Void an authorized (uncaptured) charge, releasing the hold. */
52
+ async void(reference) {
53
+ return this.client.request(`/v1/charges/${reference}/void`, { method: 'POST' });
54
+ }
55
+ /** Tokenize a card for future recurring charges (first step for subscriptions). */
56
+ async tokenize(params) {
57
+ return this.client.request('/v1/charges/tokenize', {
58
+ method: 'POST',
59
+ body: params,
60
+ });
61
+ }
62
+ /** Export transactions as CSV. Returns raw CSV text. */
63
+ async exportCsv(params) {
64
+ // CSV export returns raw text, not JSON
65
+ const qs = params
66
+ ? '?' + Object.entries(params)
67
+ .filter(([, v]) => v !== undefined)
68
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
69
+ .join('&')
70
+ : '';
71
+ const response = await fetch(`${this.client.baseUrl}/v1/charges/export${qs}`, {
72
+ headers: {
73
+ 'x-api-key': this.client.apiKey,
74
+ },
75
+ });
76
+ if (!response.ok) {
77
+ throw new Error(`Export failed: ${response.status}`);
78
+ }
79
+ return response.text();
80
+ }
81
+ /** Get an HTML or JSON invoice/receipt for a charge. */
82
+ async invoice(reference, format = 'json') {
83
+ if (format === 'html') {
84
+ const response = await fetch(`${this.client.baseUrl}/v1/charges/${encodeURIComponent(reference)}/invoice`, {
85
+ headers: {
86
+ Accept: 'text/html',
87
+ 'x-api-key': this.client.apiKey,
88
+ },
89
+ });
90
+ if (!response.ok)
91
+ throw new Error(`Invoice failed: ${response.status}`);
92
+ return response.text();
93
+ }
94
+ return this.client.request(`/v1/charges/${encodeURIComponent(reference)}/invoice`);
95
+ }
96
+ /** Send an invoice/receipt email to the customer for a charge. */
97
+ async sendInvoice(reference) {
98
+ return this.client.request(`/v1/charges/${encodeURIComponent(reference)}/invoice/send`, {
99
+ method: 'POST',
100
+ });
101
+ }
102
+ }
103
+ exports.ChargesResource = ChargesResource;
@@ -0,0 +1,80 @@
1
+ import { HttpClient } from '../http';
2
+ import { Currency } from '../types';
3
+ export interface CheckoutSession {
4
+ session_id: string;
5
+ checkout_url: string;
6
+ reference: string;
7
+ }
8
+ export interface CheckoutSessionParams {
9
+ amount: number;
10
+ email: string;
11
+ currency?: Currency;
12
+ customer_name?: string;
13
+ merchant_id?: string;
14
+ success_url?: string;
15
+ cancel_url?: string;
16
+ metadata?: Record<string, unknown>;
17
+ referral_code?: string;
18
+ coupon_code?: string;
19
+ provider_preference?: 'paystack' | 'flutterwave' | 'korapay' | 'hyperswitch';
20
+ /** 8.2 multi-currency checkout: presentment currencies the payer may pick. */
21
+ accepted_currencies?: Currency[];
22
+ /** 8.2 guest saved cards: save the payer's card on success (default true). */
23
+ save_card?: boolean;
24
+ /** 5.2 consent tracking: capture the payer's consent decisions. */
25
+ consent?: {
26
+ data_processing?: boolean;
27
+ marketing_email?: boolean;
28
+ analytics?: boolean;
29
+ third_party_sharing?: boolean;
30
+ };
31
+ /** Optional key forwarded as the Idempotency-Key header. */
32
+ idempotency_key?: string;
33
+ }
34
+ export interface CheckoutSessionDetail {
35
+ id: string;
36
+ reference: string;
37
+ merchant_id?: string;
38
+ amount: number;
39
+ currency: string;
40
+ net_amount: number;
41
+ discount_amount: number;
42
+ coupon_id?: string;
43
+ customer_email: string;
44
+ customer_name?: string;
45
+ provider: string;
46
+ status: string;
47
+ authorization_url?: string;
48
+ checkout_url?: string;
49
+ success_url?: string;
50
+ cancel_url?: string;
51
+ metadata: Record<string, unknown>;
52
+ expires_at: string;
53
+ created_at: string;
54
+ transaction_status: string;
55
+ hosted_url: string;
56
+ }
57
+ export declare class CheckoutResource {
58
+ private client;
59
+ constructor(client: HttpClient);
60
+ create(params: CheckoutSessionParams): Promise<CheckoutSession>;
61
+ get(id: string): Promise<CheckoutSessionDetail>;
62
+ /**
63
+ * 8.2 multiple currency checkout: switch an open session's presentment
64
+ * currency to one advertised in `accepted_currencies`. The amount is
65
+ * FX-converted and the provider session is re-initialised.
66
+ */
67
+ switchCurrency(id: string, currency: Currency): Promise<{
68
+ session_id: string;
69
+ reference: string;
70
+ currency: string;
71
+ amount: number;
72
+ net_amount: number;
73
+ exchange_rate: number;
74
+ checkout_url: string;
75
+ authorization_url: string | null;
76
+ }>;
77
+ /** Get the hosted payment page URL for a session. */
78
+ hostedUrl(sessionId: string, baseUrl?: string): string;
79
+ }
80
+ //# sourceMappingURL=checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/resources/checkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CheckoutResource = void 0;
4
+ class CheckoutResource {
5
+ client;
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ async create(params) {
10
+ return this.client.request('/v1/checkout/sessions', {
11
+ method: 'POST',
12
+ body: params,
13
+ idempotencyKey: params.idempotency_key,
14
+ });
15
+ }
16
+ async get(id) {
17
+ return this.client.request(`/v1/checkout/sessions/${id}`);
18
+ }
19
+ /**
20
+ * 8.2 multiple currency checkout: switch an open session's presentment
21
+ * currency to one advertised in `accepted_currencies`. The amount is
22
+ * FX-converted and the provider session is re-initialised.
23
+ */
24
+ async switchCurrency(id, currency) {
25
+ return this.client.request(`/v1/checkout/sessions/${id}/currency`, {
26
+ method: 'POST',
27
+ body: { currency },
28
+ });
29
+ }
30
+ /** Get the hosted payment page URL for a session. */
31
+ hostedUrl(sessionId, baseUrl) {
32
+ const base = baseUrl || 'http://localhost:3000';
33
+ return `${base.replace(/\/$/, '')}/pay/${sessionId}`;
34
+ }
35
+ }
36
+ exports.CheckoutResource = CheckoutResource;
@@ -0,0 +1,66 @@
1
+ import { HttpClient } from '../http';
2
+ import { ListResponse } from '../types';
3
+ export interface CouponCreateParams {
4
+ code: string;
5
+ discount_type: 'percentage' | 'fixed';
6
+ discount_value: number;
7
+ description?: string;
8
+ max_discount_amount?: number;
9
+ applies_to?: 'all' | 'plan' | 'first_payment';
10
+ plan_id?: string;
11
+ min_amount?: number;
12
+ max_uses?: number;
13
+ max_uses_per_customer?: number;
14
+ starts_at?: string;
15
+ expires_at?: string;
16
+ }
17
+ export interface Coupon {
18
+ id: string;
19
+ merchant_id: string;
20
+ code: string;
21
+ description?: string;
22
+ discount_type: 'percentage' | 'fixed';
23
+ discount_value: number;
24
+ max_discount_amount?: number;
25
+ applies_to: string;
26
+ plan_id?: string;
27
+ min_amount: number;
28
+ max_uses?: number;
29
+ max_uses_per_customer: number;
30
+ is_active: boolean;
31
+ total_used: number;
32
+ created_at: string;
33
+ }
34
+ export interface CouponValidation {
35
+ valid: boolean;
36
+ coupon?: Coupon;
37
+ discount_amount?: number;
38
+ final_amount?: number;
39
+ }
40
+ export interface CouponValidateParams {
41
+ code: string;
42
+ amount: number;
43
+ plan_id?: string;
44
+ customer_id?: string;
45
+ }
46
+ export declare class CouponsResource {
47
+ private client;
48
+ constructor(client: HttpClient);
49
+ create(params: CouponCreateParams): Promise<Coupon>;
50
+ list(params?: {
51
+ is_active?: boolean;
52
+ code?: string;
53
+ }): Promise<ListResponse<Coupon>>;
54
+ get(id: string): Promise<Coupon>;
55
+ update(id: string, params: {
56
+ is_active?: boolean;
57
+ max_uses?: number;
58
+ description?: string;
59
+ }): Promise<Coupon>;
60
+ deactivate(id: string): Promise<{
61
+ deleted: boolean;
62
+ coupon: Coupon;
63
+ }>;
64
+ validate(params: CouponValidateParams): Promise<CouponValidation>;
65
+ }
66
+ //# sourceMappingURL=coupons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coupons.d.ts","sourceRoot":"","sources":["../../src/resources/coupons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAY,YAAY,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEhC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOnD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAIpF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7G,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAMrE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAMxE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CouponsResource = void 0;
4
+ class CouponsResource {
5
+ client;
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ async create(params) {
10
+ return this.client.request('/v1/coupons', {
11
+ method: 'POST',
12
+ body: params,
13
+ });
14
+ }
15
+ async list(params) {
16
+ return this.client.request('/v1/coupons', { params });
17
+ }
18
+ async get(id) {
19
+ return this.client.request(`/v1/coupons/${id}`);
20
+ }
21
+ async update(id, params) {
22
+ return this.client.request(`/v1/coupons/${id}`, {
23
+ method: 'PATCH',
24
+ body: params,
25
+ });
26
+ }
27
+ async deactivate(id) {
28
+ return this.client.request(`/v1/coupons/${id}`, {
29
+ method: 'DELETE',
30
+ });
31
+ }
32
+ async validate(params) {
33
+ return this.client.request('/v1/coupons/validate', {
34
+ method: 'POST',
35
+ body: params,
36
+ });
37
+ }
38
+ }
39
+ exports.CouponsResource = CouponsResource;
@@ -0,0 +1,45 @@
1
+ import { HttpClient } from '../http';
2
+ export interface CurrencyRecord {
3
+ code: string;
4
+ name: string;
5
+ symbol: string;
6
+ decimals: number;
7
+ is_active: boolean;
8
+ is_fiat: boolean;
9
+ sort_order: number;
10
+ created_at: string;
11
+ updated_at: string;
12
+ }
13
+ /**
14
+ * Admin-managed ISO 4217 currency registry. GET returns the active
15
+ * list to anyone with an API key. POST/PATCH/DELETE are admin-only
16
+ * and let operators onboard new currencies and deactivate retired
17
+ * ones without a schema migration.
18
+ */
19
+ export declare class CurrenciesResource {
20
+ private client;
21
+ constructor(client: HttpClient);
22
+ list(): Promise<{
23
+ data: CurrencyRecord[];
24
+ }>;
25
+ /**
26
+ * Upsert. If the currency code exists, its other fields are
27
+ * overwritten; otherwise it's inserted. Admin-only.
28
+ */
29
+ upsert(body: Omit<CurrencyRecord, 'created_at' | 'updated_at'>): Promise<CurrencyRecord>;
30
+ /**
31
+ * Partial update of a currency's metadata (name, symbol, decimals,
32
+ * sort_order, is_active, is_fiat). Code is immutable. Admin-only.
33
+ */
34
+ update(code: string, body: Partial<Omit<CurrencyRecord, 'code' | 'created_at' | 'updated_at'>>): Promise<CurrencyRecord>;
35
+ /**
36
+ * Soft delete: sets is_active=false. The currency stays in the DB
37
+ * for audit history; fx-service validates only against active codes
38
+ * so this takes effect immediately for new settlements.
39
+ */
40
+ deactivate(code: string): Promise<{
41
+ code: string;
42
+ is_active: false;
43
+ }>;
44
+ }
45
+ //# sourceMappingURL=currencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currencies.d.ts","sourceRoot":"","sources":["../../src/resources/currencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;;;GAKG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEhC,IAAI,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAIjD;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAO9F;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAO9H;;;;OAIG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,CAAA;KAAE,CAAC;CAM5E"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurrenciesResource = void 0;
4
+ // ── Resource ───────────────────────────────────────────────────────
5
+ /**
6
+ * Admin-managed ISO 4217 currency registry. GET returns the active
7
+ * list to anyone with an API key. POST/PATCH/DELETE are admin-only
8
+ * and let operators onboard new currencies and deactivate retired
9
+ * ones without a schema migration.
10
+ */
11
+ class CurrenciesResource {
12
+ client;
13
+ constructor(client) {
14
+ this.client = client;
15
+ }
16
+ async list() {
17
+ return this.client.request('/v1/currencies');
18
+ }
19
+ /**
20
+ * Upsert. If the currency code exists, its other fields are
21
+ * overwritten; otherwise it's inserted. Admin-only.
22
+ */
23
+ async upsert(body) {
24
+ return this.client.request('/v1/currencies', {
25
+ method: 'POST',
26
+ body,
27
+ });
28
+ }
29
+ /**
30
+ * Partial update of a currency's metadata (name, symbol, decimals,
31
+ * sort_order, is_active, is_fiat). Code is immutable. Admin-only.
32
+ */
33
+ async update(code, body) {
34
+ return this.client.request(`/v1/currencies/${encodeURIComponent(code)}`, {
35
+ method: 'PATCH',
36
+ body,
37
+ });
38
+ }
39
+ /**
40
+ * Soft delete: sets is_active=false. The currency stays in the DB
41
+ * for audit history; fx-service validates only against active codes
42
+ * so this takes effect immediately for new settlements.
43
+ */
44
+ async deactivate(code) {
45
+ return this.client.request(`/v1/currencies/${encodeURIComponent(code)}`, { method: 'DELETE' });
46
+ }
47
+ }
48
+ exports.CurrenciesResource = CurrenciesResource;
@@ -0,0 +1,135 @@
1
+ import { HttpClient } from '../http';
2
+ import { TransactionSdk as Transaction, SubscriptionSdk as Subscription, DisputeSdk as Dispute } from '../types';
3
+ export interface Customer {
4
+ id: string;
5
+ email: string;
6
+ name: string | null;
7
+ phone: string | null;
8
+ default_app_id: string | null;
9
+ metadata: Record<string, unknown>;
10
+ first_seen_at: string;
11
+ last_seen_at: string;
12
+ transaction_count: number;
13
+ successful_payment_count: number;
14
+ failed_payment_count: number;
15
+ refund_count: number;
16
+ dispute_count: number;
17
+ subscription_count: number;
18
+ payment_method_count: number;
19
+ lifetime_spend_cents: number;
20
+ risk_score: number;
21
+ risk_signals: Record<string, unknown>;
22
+ acquisition_source: string | null;
23
+ acquisition_referral_code: string | null;
24
+ gdpr_erased_at: string | null;
25
+ created_at: string;
26
+ updated_at: string;
27
+ }
28
+ export interface PaymentMethod {
29
+ id: string;
30
+ provider: 'paystack' | 'flutterwave' | 'korapay' | 'hyperswitch';
31
+ card_type: string | null;
32
+ last4: string | null;
33
+ exp_month: string | null;
34
+ exp_year: string | null;
35
+ bin: string | null;
36
+ bank_name: string | null;
37
+ brand: string | null;
38
+ reusable: boolean;
39
+ is_default: boolean;
40
+ first_used_at: string | null;
41
+ last_used_at: string | null;
42
+ usage_count: number;
43
+ app_id: string | null;
44
+ created_at: string;
45
+ updated_at: string;
46
+ }
47
+ export interface CustomerRiskScore {
48
+ id: string;
49
+ risk_score: number;
50
+ risk_signals: {
51
+ dispute_rate: number;
52
+ failure_rate: number;
53
+ refund_rate: number;
54
+ dispute_count: number;
55
+ successful_payments: number;
56
+ failed_payments: number;
57
+ refunded_payments: number;
58
+ computed_at: string;
59
+ };
60
+ }
61
+ export interface CustomerExportPayload {
62
+ generated_at: string;
63
+ customer_id: string;
64
+ customer: Customer | null;
65
+ transactions: Transaction[];
66
+ payment_methods: Omit<PaymentMethod, 'auth_token'>[];
67
+ subscriptions: Subscription[];
68
+ disputes: Dispute[];
69
+ }
70
+ export declare class CustomersResource {
71
+ private client;
72
+ constructor(client: HttpClient);
73
+ list(params?: {
74
+ search?: string;
75
+ email?: string;
76
+ sort?: 'last_seen' | 'first_seen' | 'lifetime_spend_cents' | 'risk_score' | 'transaction_count';
77
+ order?: 'asc' | 'desc';
78
+ limit?: number;
79
+ offset?: number;
80
+ }): Promise<{
81
+ data: Customer[];
82
+ has_more: boolean;
83
+ }>;
84
+ get(id: string): Promise<Customer>;
85
+ paymentMethods(id: string): Promise<{
86
+ data: PaymentMethod[];
87
+ }>;
88
+ transactions(id: string, params?: {
89
+ limit?: number;
90
+ offset?: number;
91
+ status?: string;
92
+ type?: string;
93
+ }): Promise<{
94
+ data: Transaction[];
95
+ has_more: boolean;
96
+ }>;
97
+ subscriptions(id: string): Promise<{
98
+ data: (Subscription & {
99
+ plan_name: string;
100
+ plan_amount: number;
101
+ plan_currency: string;
102
+ })[];
103
+ }>;
104
+ disputes(id: string): Promise<{
105
+ data: (Dispute & {
106
+ evidence_submissions_count: number;
107
+ })[];
108
+ }>;
109
+ recomputeRisk(id: string): Promise<CustomerRiskScore>;
110
+ update(id: string, body: {
111
+ name?: string;
112
+ phone?: string;
113
+ metadata?: Record<string, unknown>;
114
+ default_app_id?: string | null;
115
+ }): Promise<Customer>;
116
+ exportData(id: string): Promise<{
117
+ export_id: string;
118
+ payload: CustomerExportPayload;
119
+ }>;
120
+ erase(id: string): Promise<{
121
+ id: string;
122
+ erased_at: string;
123
+ erasure_hash: string;
124
+ message: string;
125
+ }>;
126
+ /** Export customers as CSV — mirrors GET /v1/customers/export (same filters as list). Returns raw CSV text. */
127
+ exportCsv(params?: {
128
+ search?: string;
129
+ email?: string;
130
+ app_id?: string;
131
+ start_date?: string;
132
+ end_date?: string;
133
+ }): Promise<string>;
134
+ }
135
+ //# sourceMappingURL=customers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"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"}