@fiddupay/fiddupay-node 1.0.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 (38) hide show
  1. package/README.md +248 -0
  2. package/dist/client.d.ts +18 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +140 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/errors/index.d.ts +28 -0
  7. package/dist/errors/index.d.ts.map +1 -0
  8. package/dist/errors/index.js +59 -0
  9. package/dist/errors/index.js.map +1 -0
  10. package/dist/index.d.ts +21 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +62 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/resources/analytics.d.ts +30 -0
  15. package/dist/resources/analytics.d.ts.map +1 -0
  16. package/dist/resources/analytics.js +31 -0
  17. package/dist/resources/analytics.js.map +1 -0
  18. package/dist/resources/merchants.d.ts +47 -0
  19. package/dist/resources/merchants.d.ts.map +1 -0
  20. package/dist/resources/merchants.js +40 -0
  21. package/dist/resources/merchants.js.map +1 -0
  22. package/dist/resources/payments.d.ts +24 -0
  23. package/dist/resources/payments.d.ts.map +1 -0
  24. package/dist/resources/payments.js +83 -0
  25. package/dist/resources/payments.js.map +1 -0
  26. package/dist/resources/refunds.d.ts +27 -0
  27. package/dist/resources/refunds.d.ts.map +1 -0
  28. package/dist/resources/refunds.js +54 -0
  29. package/dist/resources/refunds.js.map +1 -0
  30. package/dist/resources/webhooks.d.ts +17 -0
  31. package/dist/resources/webhooks.d.ts.map +1 -0
  32. package/dist/resources/webhooks.js +130 -0
  33. package/dist/resources/webhooks.js.map +1 -0
  34. package/dist/types/index.d.ts +110 -0
  35. package/dist/types/index.d.ts.map +1 -0
  36. package/dist/types/index.js +4 -0
  37. package/dist/types/index.js.map +1 -0
  38. package/package.json +65 -0
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalyticsResource = void 0;
4
+ class AnalyticsResource {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ /**
9
+ * Get analytics data
10
+ */
11
+ async retrieve(params, options) {
12
+ const queryParams = new URLSearchParams();
13
+ if (params?.start_date)
14
+ queryParams.append('start_date', params.start_date);
15
+ if (params?.end_date)
16
+ queryParams.append('end_date', params.end_date);
17
+ if (params?.granularity)
18
+ queryParams.append('granularity', params.granularity);
19
+ const query = queryParams.toString();
20
+ const path = query ? `/analytics?${query}` : '/analytics';
21
+ return this.client.get(path, options);
22
+ }
23
+ /**
24
+ * Export analytics data
25
+ */
26
+ async export(params, options) {
27
+ return this.client.post('/analytics/export', params, options);
28
+ }
29
+ }
30
+ exports.AnalyticsResource = AnalyticsResource;
31
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/resources/analytics.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAC5B,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAId,EAAE,OAAwB;QACzB,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE,UAAU;YAAE,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,MAAM,EAAE,QAAQ;YAAE,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtE,IAAI,MAAM,EAAE,WAAW;YAAE,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAY,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAIZ,EAAE,OAAwB;QAQzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAxCD,8CAwCC"}
@@ -0,0 +1,47 @@
1
+ import { HttpClient } from '../client';
2
+ import { Merchant, RequestOptions } from '../types';
3
+ export declare class Merchants {
4
+ private client;
5
+ constructor(client: HttpClient);
6
+ /**
7
+ * Get current merchant profile
8
+ */
9
+ retrieve(options?: RequestOptions): Promise<Merchant>;
10
+ /**
11
+ * Update webhook URL
12
+ */
13
+ updateWebhook(data: {
14
+ url: string;
15
+ }, options?: RequestOptions): Promise<{
16
+ message: string;
17
+ webhook_url: string;
18
+ }>;
19
+ /**
20
+ * Get merchant balance
21
+ */
22
+ getBalance(options?: RequestOptions): Promise<{
23
+ balances: Array<{
24
+ crypto_type: string;
25
+ balance: string;
26
+ balance_usd: string;
27
+ pending: string;
28
+ pending_usd: string;
29
+ }>;
30
+ total_balance_usd: string;
31
+ total_pending_usd: string;
32
+ }>;
33
+ /**
34
+ * Set wallet addresses for automatic forwarding
35
+ */
36
+ setWallets(wallets: Record<string, string>, options?: RequestOptions): Promise<{
37
+ message: string;
38
+ wallets: Record<string, string>;
39
+ }>;
40
+ /**
41
+ * Regenerate API key
42
+ */
43
+ regenerateApiKey(options?: RequestOptions): Promise<{
44
+ api_key: string;
45
+ }>;
46
+ }
47
+ //# sourceMappingURL=merchants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchants.d.ts","sourceRoot":"","sources":["../../src/resources/merchants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpD,qBAAa,SAAS;IACR,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;OAEG;IACG,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI3D;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvH;;OAEG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAClD,QAAQ,EAAE,KAAK,CAAC;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,iBAAiB,EAAE,MAAM,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IAIF;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAIhE;;OAEG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAG/E"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Merchants = void 0;
4
+ class Merchants {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ /**
9
+ * Get current merchant profile
10
+ */
11
+ async retrieve(options) {
12
+ return this.client.get('/merchants/profile', options);
13
+ }
14
+ /**
15
+ * Update webhook URL
16
+ */
17
+ async updateWebhook(data, options) {
18
+ return this.client.put('/merchants/webhook', data, options);
19
+ }
20
+ /**
21
+ * Get merchant balance
22
+ */
23
+ async getBalance(options) {
24
+ return this.client.get('/merchants/balance', options);
25
+ }
26
+ /**
27
+ * Set wallet addresses for automatic forwarding
28
+ */
29
+ async setWallets(wallets, options) {
30
+ return this.client.put('/merchants/wallets', { wallets }, options);
31
+ }
32
+ /**
33
+ * Regenerate API key
34
+ */
35
+ async regenerateApiKey(options) {
36
+ return this.client.post('/merchants/api-key/regenerate', {}, options);
37
+ }
38
+ }
39
+ exports.Merchants = Merchants;
40
+ //# sourceMappingURL=merchants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchants.js","sourceRoot":"","sources":["../../src/resources/merchants.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IACpB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAW,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAqB,EAAE,OAAwB;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAwB;QAWvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,OAA+B,EAC/B,OAAwB;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAwB;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF;AAlDD,8BAkDC"}
@@ -0,0 +1,24 @@
1
+ import { HttpClient } from '../client';
2
+ import { CreatePaymentRequest, Payment, ListPaymentsRequest, ListPaymentsResponse, RequestOptions } from '../types';
3
+ export declare class Payments {
4
+ private client;
5
+ constructor(client: HttpClient);
6
+ /**
7
+ * Create a new payment
8
+ */
9
+ create(data: CreatePaymentRequest, options?: RequestOptions): Promise<Payment>;
10
+ /**
11
+ * Retrieve a payment by ID
12
+ */
13
+ retrieve(paymentId: string, options?: RequestOptions): Promise<Payment>;
14
+ /**
15
+ * List payments with optional filters
16
+ */
17
+ list(params?: ListPaymentsRequest, options?: RequestOptions): Promise<ListPaymentsResponse>;
18
+ /**
19
+ * Cancel a pending payment
20
+ */
21
+ cancel(paymentId: string, options?: RequestOptions): Promise<Payment>;
22
+ private validateCreatePayment;
23
+ }
24
+ //# sourceMappingURL=payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/resources/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,qBAAa,QAAQ;IACP,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpF;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAO7E;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAcjG;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAO3E,OAAO,CAAC,qBAAqB;CA8C9B"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Payments = void 0;
4
+ const errors_1 = require("../errors");
5
+ class Payments {
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ /**
10
+ * Create a new payment
11
+ */
12
+ async create(data, options) {
13
+ this.validateCreatePayment(data);
14
+ return this.client.post('/payments', data, options);
15
+ }
16
+ /**
17
+ * Retrieve a payment by ID
18
+ */
19
+ async retrieve(paymentId, options) {
20
+ if (!paymentId) {
21
+ throw new errors_1.FidduPayValidationError('Payment ID is required', 'payment_id');
22
+ }
23
+ return this.client.get(`/payments/${paymentId}`, options);
24
+ }
25
+ /**
26
+ * List payments with optional filters
27
+ */
28
+ async list(params, options) {
29
+ const queryParams = new URLSearchParams();
30
+ if (params?.limit)
31
+ queryParams.append('limit', params.limit.toString());
32
+ if (params?.offset)
33
+ queryParams.append('offset', params.offset.toString());
34
+ if (params?.status)
35
+ queryParams.append('status', params.status);
36
+ if (params?.crypto_type)
37
+ queryParams.append('crypto_type', params.crypto_type);
38
+ const query = queryParams.toString();
39
+ const path = query ? `/payments?${query}` : '/payments';
40
+ return this.client.get(path, options);
41
+ }
42
+ /**
43
+ * Cancel a pending payment
44
+ */
45
+ async cancel(paymentId, options) {
46
+ if (!paymentId) {
47
+ throw new errors_1.FidduPayValidationError('Payment ID is required', 'payment_id');
48
+ }
49
+ return this.client.post(`/payments/${paymentId}/cancel`, {}, options);
50
+ }
51
+ validateCreatePayment(data) {
52
+ if (!data.amount_usd) {
53
+ throw new errors_1.FidduPayValidationError('Amount in USD is required', 'amount_usd');
54
+ }
55
+ if (!data.crypto_type) {
56
+ throw new errors_1.FidduPayValidationError('Crypto type is required', 'crypto_type');
57
+ }
58
+ const amount = parseFloat(data.amount_usd);
59
+ if (isNaN(amount) || amount <= 0) {
60
+ throw new errors_1.FidduPayValidationError('Amount must be a positive number', 'amount_usd');
61
+ }
62
+ if (amount < 0.01) {
63
+ throw new errors_1.FidduPayValidationError('Minimum amount is $0.01', 'amount_usd');
64
+ }
65
+ if (amount > 1000000) {
66
+ throw new errors_1.FidduPayValidationError('Maximum amount is $1,000,000', 'amount_usd');
67
+ }
68
+ const validCryptoTypes = ['SOL', 'USDT_ETH', 'USDT_BSC', 'USDT_POLYGON', 'USDT_ARBITRUM', 'USDT_SPL'];
69
+ if (!validCryptoTypes.includes(data.crypto_type)) {
70
+ throw new errors_1.FidduPayValidationError(`Invalid crypto type. Must be one of: ${validCryptoTypes.join(', ')}`, 'crypto_type');
71
+ }
72
+ if (data.expiration_minutes !== undefined) {
73
+ if (data.expiration_minutes < 5 || data.expiration_minutes > 1440) {
74
+ throw new errors_1.FidduPayValidationError('Expiration must be between 5 and 1440 minutes', 'expiration_minutes');
75
+ }
76
+ }
77
+ if (data.description && data.description.length > 500) {
78
+ throw new errors_1.FidduPayValidationError('Description must be 500 characters or less', 'description');
79
+ }
80
+ }
81
+ }
82
+ exports.Payments = Payments;
83
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/resources/payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { HttpClient } from '../client';
2
+ import { CreateRefundRequest, Refund, RequestOptions } from '../types';
3
+ export declare class Refunds {
4
+ private client;
5
+ constructor(client: HttpClient);
6
+ /**
7
+ * Create a refund for a confirmed payment
8
+ */
9
+ create(data: CreateRefundRequest, options?: RequestOptions): Promise<Refund>;
10
+ /**
11
+ * Retrieve a refund by ID
12
+ */
13
+ retrieve(refundId: string, options?: RequestOptions): Promise<Refund>;
14
+ /**
15
+ * List refunds
16
+ */
17
+ list(params?: {
18
+ limit?: number;
19
+ offset?: number;
20
+ }, options?: RequestOptions): Promise<{
21
+ refunds: Refund[];
22
+ total: number;
23
+ has_more: boolean;
24
+ }>;
25
+ private validateCreateRefund;
26
+ }
27
+ //# sourceMappingURL=refunds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refunds.d.ts","sourceRoot":"","sources":["../../src/resources/refunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvE,qBAAa,OAAO;IACN,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlF;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3E;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAC1F,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IAYF,OAAO,CAAC,oBAAoB;CAmB7B"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Refunds = void 0;
4
+ const errors_1 = require("../errors");
5
+ class Refunds {
6
+ constructor(client) {
7
+ this.client = client;
8
+ }
9
+ /**
10
+ * Create a refund for a confirmed payment
11
+ */
12
+ async create(data, options) {
13
+ this.validateCreateRefund(data);
14
+ return this.client.post('/refunds', data, options);
15
+ }
16
+ /**
17
+ * Retrieve a refund by ID
18
+ */
19
+ async retrieve(refundId, options) {
20
+ if (!refundId) {
21
+ throw new errors_1.FidduPayValidationError('Refund ID is required', 'refund_id');
22
+ }
23
+ return this.client.get(`/refunds/${refundId}`, options);
24
+ }
25
+ /**
26
+ * List refunds
27
+ */
28
+ async list(params, options) {
29
+ const queryParams = new URLSearchParams();
30
+ if (params?.limit)
31
+ queryParams.append('limit', params.limit.toString());
32
+ if (params?.offset)
33
+ queryParams.append('offset', params.offset.toString());
34
+ const query = queryParams.toString();
35
+ const path = query ? `/refunds?${query}` : '/refunds';
36
+ return this.client.get(path, options);
37
+ }
38
+ validateCreateRefund(data) {
39
+ if (!data.payment_id) {
40
+ throw new errors_1.FidduPayValidationError('Payment ID is required', 'payment_id');
41
+ }
42
+ if (data.amount !== undefined) {
43
+ const amount = parseFloat(data.amount);
44
+ if (isNaN(amount) || amount <= 0) {
45
+ throw new errors_1.FidduPayValidationError('Refund amount must be a positive number', 'amount');
46
+ }
47
+ }
48
+ if (data.reason && data.reason.length > 500) {
49
+ throw new errors_1.FidduPayValidationError('Refund reason must be 500 characters or less', 'reason');
50
+ }
51
+ }
52
+ }
53
+ exports.Refunds = Refunds;
54
+ //# sourceMappingURL=refunds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../src/resources/refunds.ts"],"names":[],"mappings":";;;AAEA,sCAAoD;AAEpD,MAAa,OAAO;IAClB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,IAAyB,EAAE,OAAwB;QAC9D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAS,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,OAAwB;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gCAAuB,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,YAAY,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAA4C,EAAE,OAAwB;QAK/E,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,IAAI,MAAM,EAAE,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAEtD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAC,IAAyB;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,gCAAuB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,gCAAuB,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC5C,MAAM,IAAI,gCAAuB,CAC/B,8CAA8C,EAC9C,QAAQ,CACT,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA3DD,0BA2DC"}
@@ -0,0 +1,17 @@
1
+ import { WebhookEvent } from '../types';
2
+ export declare class Webhooks {
3
+ /**
4
+ * Construct and verify a webhook event from the request body and signature
5
+ */
6
+ static constructEvent(payload: string | Buffer, signature: string, secret: string, tolerance?: number): WebhookEvent;
7
+ /**
8
+ * Verify webhook signature
9
+ */
10
+ static verifySignature(payload: string, signature: string, secret: string, tolerance?: number): boolean;
11
+ /**
12
+ * Generate webhook signature for testing
13
+ */
14
+ static generateSignature(payload: string, secret: string): string;
15
+ private static validateWebhookEvent;
16
+ }
17
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAC;AAG1D,qBAAa,QAAQ;IACnB;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAY,GACtB,YAAY;IAmBf;;OAEG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAY,GACtB,OAAO;IAoCV;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAWjE,OAAO,CAAC,MAAM,CAAC,oBAAoB;CA6BpC"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Webhooks = void 0;
37
+ const crypto = __importStar(require("crypto"));
38
+ const errors_1 = require("../errors");
39
+ class Webhooks {
40
+ /**
41
+ * Construct and verify a webhook event from the request body and signature
42
+ */
43
+ static constructEvent(payload, signature, secret, tolerance = 300 // 5 minutes
44
+ ) {
45
+ const payloadString = typeof payload === 'string' ? payload : payload.toString('utf8');
46
+ if (!this.verifySignature(payloadString, signature, secret, tolerance)) {
47
+ throw new errors_1.FidduPayError('Invalid webhook signature', 'webhook_signature_verification_failed');
48
+ }
49
+ try {
50
+ const event = JSON.parse(payloadString);
51
+ this.validateWebhookEvent(event);
52
+ return event;
53
+ }
54
+ catch (error) {
55
+ if (error instanceof errors_1.FidduPayError) {
56
+ throw error;
57
+ }
58
+ throw new errors_1.FidduPayError('Invalid webhook payload', 'webhook_payload_invalid');
59
+ }
60
+ }
61
+ /**
62
+ * Verify webhook signature
63
+ */
64
+ static verifySignature(payload, signature, secret, tolerance = 300) {
65
+ try {
66
+ // Parse signature header (format: "t=timestamp,v1=signature")
67
+ const elements = signature.split(',');
68
+ const timestamp = elements.find(el => el.startsWith('t='))?.split('=')[1];
69
+ const sig = elements.find(el => el.startsWith('v1='))?.split('=')[1];
70
+ if (!timestamp || !sig) {
71
+ return false;
72
+ }
73
+ // Check timestamp tolerance
74
+ const timestampNum = parseInt(timestamp, 10);
75
+ const now = Math.floor(Date.now() / 1000);
76
+ if (Math.abs(now - timestampNum) > tolerance) {
77
+ return false;
78
+ }
79
+ // Compute expected signature
80
+ const signedPayload = `${timestamp}.${payload}`;
81
+ const expectedSig = crypto
82
+ .createHmac('sha256', secret)
83
+ .update(signedPayload, 'utf8')
84
+ .digest('hex');
85
+ // Compare signatures using constant-time comparison
86
+ return crypto.timingSafeEqual(Buffer.from(sig, 'hex'), Buffer.from(expectedSig, 'hex'));
87
+ }
88
+ catch (error) {
89
+ return false;
90
+ }
91
+ }
92
+ /**
93
+ * Generate webhook signature for testing
94
+ */
95
+ static generateSignature(payload, secret) {
96
+ const timestamp = Math.floor(Date.now() / 1000);
97
+ const signedPayload = `${timestamp}.${payload}`;
98
+ const signature = crypto
99
+ .createHmac('sha256', secret)
100
+ .update(signedPayload, 'utf8')
101
+ .digest('hex');
102
+ return `t=${timestamp},v1=${signature}`;
103
+ }
104
+ static validateWebhookEvent(event) {
105
+ if (!event.id || typeof event.id !== 'string') {
106
+ throw new errors_1.FidduPayError('Invalid webhook event: missing or invalid id', 'webhook_event_invalid');
107
+ }
108
+ if (!event.type || typeof event.type !== 'string') {
109
+ throw new errors_1.FidduPayError('Invalid webhook event: missing or invalid type', 'webhook_event_invalid');
110
+ }
111
+ const validTypes = [
112
+ 'payment.confirmed',
113
+ 'payment.expired',
114
+ 'payment.failed',
115
+ 'refund.completed',
116
+ 'refund.failed'
117
+ ];
118
+ if (!validTypes.includes(event.type)) {
119
+ throw new errors_1.FidduPayError(`Invalid webhook event type: ${event.type}`, 'webhook_event_invalid');
120
+ }
121
+ if (!event.data) {
122
+ throw new errors_1.FidduPayError('Invalid webhook event: missing data', 'webhook_event_invalid');
123
+ }
124
+ if (!event.created_at || typeof event.created_at !== 'string') {
125
+ throw new errors_1.FidduPayError('Invalid webhook event: missing or invalid created_at', 'webhook_event_invalid');
126
+ }
127
+ }
128
+ }
129
+ exports.Webhooks = Webhooks;
130
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ export type CryptoType = 'SOL' | 'ETH' | 'BNB' | 'MATIC' | 'ARB' | 'USDT_ETH' | 'USDT_BSC' | 'USDT_POLYGON' | 'USDT_ARBITRUM' | 'USDT_SPL';
2
+ export type PaymentStatus = 'PENDING' | 'CONFIRMING' | 'CONFIRMED' | 'FAILED' | 'EXPIRED';
3
+ export type WebhookEventType = 'payment.confirmed' | 'payment.expired' | 'payment.failed' | 'refund.completed' | 'refund.failed';
4
+ export interface FidduPayConfig {
5
+ apiKey: string;
6
+ environment?: 'sandbox' | 'production';
7
+ apiVersion?: string;
8
+ timeout?: number;
9
+ maxRetries?: number;
10
+ baseURL?: string;
11
+ }
12
+ export interface CreatePaymentRequest {
13
+ amount_usd: string;
14
+ crypto_type: CryptoType;
15
+ description?: string;
16
+ metadata?: Record<string, any>;
17
+ expiration_minutes?: number;
18
+ webhook_url?: string;
19
+ }
20
+ export interface Payment {
21
+ payment_id: string;
22
+ amount_usd: string;
23
+ crypto_amount: string;
24
+ crypto_type: CryptoType;
25
+ status: PaymentStatus;
26
+ deposit_address: string;
27
+ transaction_hash?: string;
28
+ confirmations?: number;
29
+ created_at: string;
30
+ confirmed_at?: string;
31
+ expires_at: string;
32
+ description?: string;
33
+ metadata?: Record<string, any>;
34
+ payment_link?: string;
35
+ qr_code_data?: string;
36
+ }
37
+ export interface ListPaymentsRequest {
38
+ limit?: number;
39
+ offset?: number;
40
+ status?: PaymentStatus;
41
+ crypto_type?: CryptoType;
42
+ }
43
+ export interface ListPaymentsResponse {
44
+ payments: Payment[];
45
+ total: number;
46
+ has_more: boolean;
47
+ }
48
+ export interface CreateRefundRequest {
49
+ payment_id: string;
50
+ amount?: string;
51
+ reason?: string;
52
+ }
53
+ export interface Refund {
54
+ refund_id: string;
55
+ payment_id: string;
56
+ status: 'PROCESSING' | 'COMPLETED' | 'FAILED';
57
+ amount: string;
58
+ amount_usd: string;
59
+ crypto_type: CryptoType;
60
+ refund_address: string;
61
+ reason?: string;
62
+ created_at: string;
63
+ processed_at?: string;
64
+ transaction_hash?: string;
65
+ }
66
+ export interface Merchant {
67
+ merchant_id: string;
68
+ email: string;
69
+ business_name: string;
70
+ status: 'pending_verification' | 'verified' | 'suspended';
71
+ balance: {
72
+ available_usd: string;
73
+ pending_usd: string;
74
+ };
75
+ created_at: string;
76
+ verified_at?: string;
77
+ }
78
+ export interface WebhookEvent {
79
+ id: string;
80
+ type: WebhookEventType;
81
+ data: Payment | Refund;
82
+ created_at: string;
83
+ }
84
+ export interface Analytics {
85
+ period: {
86
+ start_date: string;
87
+ end_date: string;
88
+ granularity: 'day' | 'week' | 'month';
89
+ };
90
+ summary: {
91
+ total_payments: number;
92
+ total_volume_usd: string;
93
+ successful_payments: number;
94
+ failed_payments: number;
95
+ success_rate: number;
96
+ average_payment_usd: string;
97
+ };
98
+ data: Array<{
99
+ date: string;
100
+ payments: number;
101
+ volume_usd: string;
102
+ success_rate: number;
103
+ }>;
104
+ }
105
+ export interface RequestOptions {
106
+ timeout?: number;
107
+ retries?: number;
108
+ idempotencyKey?: string;
109
+ }
110
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Core types for FidduPay SDK
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,8BAA8B"}