@vindhq/sloud-payment-sdk 1.0.0 → 1.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 (163) hide show
  1. package/README.md +87 -20
  2. package/dist/index.cjs.js +24 -51295
  3. package/dist/index.d.ts +221 -3
  4. package/dist/index.esm.js +30 -51299
  5. package/dist/index.umd.js +24 -51301
  6. package/package.json +5 -4
  7. package/dist/index.cjs.js.map +0 -1
  8. package/dist/index.esm.js.map +0 -1
  9. package/dist/index.umd.js.map +0 -1
  10. package/dist/react/index.esm.js +0 -51440
  11. package/dist/react/index.esm.js.map +0 -1
  12. package/dist/react/rollup.config.d.ts +0 -8
  13. package/dist/react/rollup.config.dts.d.ts +0 -3
  14. package/dist/react/src/components/Button/Button.types.d.ts +0 -6
  15. package/dist/react/src/components/Button/index.d.ts +0 -3
  16. package/dist/react/src/components/CopyToClipboardSpan/CopyToClipboard.types.d.ts +0 -4
  17. package/dist/react/src/components/CopyToClipboardSpan/index.d.ts +0 -3
  18. package/dist/react/src/components/Input/Input.types.d.ts +0 -17
  19. package/dist/react/src/components/Input/index.d.ts +0 -3
  20. package/dist/react/src/components/Skeleton/PaymentOptionSkeletons.d.ts +0 -6
  21. package/dist/react/src/components/TextArea/TextArea.types.d.ts +0 -19
  22. package/dist/react/src/components/TextArea/index.d.ts +0 -3
  23. package/dist/react/src/components/Widget.d.ts +0 -6
  24. package/dist/react/src/components/modals/AwaitingPaymentModal/AwaitingPaymentModal.d.ts +0 -2
  25. package/dist/react/src/components/modals/AwaitingPaymentTimeoutModal/AwaitingPaymentTimeoutModal.d.ts +0 -2
  26. package/dist/react/src/components/modals/Modal.d.ts +0 -10
  27. package/dist/react/src/components/modals/PaymentDetailsModal/PaymentDetailsModal.d.ts +0 -2
  28. package/dist/react/src/components/modals/PaymentDetailsModal/hooks/useTimer.d.ts +0 -7
  29. package/dist/react/src/components/modals/PaymentOptionsModal/PaymentOptionsModal.d.ts +0 -2
  30. package/dist/react/src/components/modals/PaymentOptionsModal/RadioButton.d.ts +0 -11
  31. package/dist/react/src/components/modals/PaymentOptionsModal/paymentOptionsMap.d.ts +0 -5
  32. package/dist/react/src/components/modals/SuccessModal/SuccessModal.d.ts +0 -2
  33. package/dist/react/src/components/modals/state/actions/data.d.ts +0 -10
  34. package/dist/react/src/components/modals/state/actions/index.d.ts +0 -5
  35. package/dist/react/src/components/modals/state/actions/modal.d.ts +0 -5
  36. package/dist/react/src/components/modals/state/actions/payment.d.ts +0 -7
  37. package/dist/react/src/components/modals/state/constants/actionTypes.d.ts +0 -24
  38. package/dist/react/src/components/modals/state/constants/index.d.ts +0 -2
  39. package/dist/react/src/components/modals/state/constants/initialState.d.ts +0 -36
  40. package/dist/react/src/components/modals/state/reducers/data.d.ts +0 -2
  41. package/dist/react/src/components/modals/state/reducers/index.d.ts +0 -2
  42. package/dist/react/src/components/modals/state/reducers/modal.d.ts +0 -2
  43. package/dist/react/src/components/modals/state/reducers/payment.d.ts +0 -2
  44. package/dist/react/src/components/modals/state/types/common.d.ts +0 -12
  45. package/dist/react/src/components/modals/state/types/data.d.ts +0 -34
  46. package/dist/react/src/components/modals/state/types/index.d.ts +0 -8
  47. package/dist/react/src/components/modals/state/types/modal.d.ts +0 -12
  48. package/dist/react/src/components/modals/state/types/payment.d.ts +0 -14
  49. package/dist/react/src/components/modals/state/utils/index.d.ts +0 -37
  50. package/dist/react/src/context/ModalProvider.d.ts +0 -4
  51. package/dist/react/src/context/PaymentInfoContext.d.ts +0 -26
  52. package/dist/react/src/context/PaymentWidgetContext.d.ts +0 -13
  53. package/dist/react/src/context/modal.d.ts +0 -4
  54. package/dist/react/src/context/types.d.ts +0 -28
  55. package/dist/react/src/hooks/types.d.ts +0 -34
  56. package/dist/react/src/hooks/useModalControl.d.ts +0 -27
  57. package/dist/react/src/hooks/usePaymentAPI.d.ts +0 -10
  58. package/dist/react/src/hooks/useShortPolling.d.ts +0 -4
  59. package/dist/react/src/index.d.ts +0 -2
  60. package/dist/react/src/services/config/endpoints.d.ts +0 -9
  61. package/dist/react/src/services/config/error.d.ts +0 -5
  62. package/dist/react/src/services/index.d.ts +0 -27
  63. package/dist/react/src/services/payments/index.d.ts +0 -4
  64. package/dist/react/src/services/payments/types.d.ts +0 -68
  65. package/dist/react/src/services/products/index.d.ts +0 -1
  66. package/dist/react/src/services/products/types.d.ts +0 -124
  67. package/dist/react/src/services/store/index.d.ts +0 -2
  68. package/dist/react/src/services/store/types.d.ts +0 -57
  69. package/dist/react/src/services/utils/widgetConfig.d.ts +0 -20
  70. package/dist/react/src/svg_components/ArrowLeftIcon.d.ts +0 -3
  71. package/dist/react/src/svg_components/BankTransferIcon.d.ts +0 -2
  72. package/dist/react/src/svg_components/CancelIcon.d.ts +0 -7
  73. package/dist/react/src/svg_components/CardIcon.d.ts +0 -2
  74. package/dist/react/src/svg_components/CloseIcon.d.ts +0 -3
  75. package/dist/react/src/svg_components/CopyIcon.d.ts +0 -2
  76. package/dist/react/src/svg_components/EyeCloseIcon.d.ts +0 -5
  77. package/dist/react/src/svg_components/EyeOpenIcon.d.ts +0 -5
  78. package/dist/react/src/svg_components/SloudIcon.d.ts +0 -2
  79. package/dist/react/src/utils/enums/AxiosErrorCodes.d.ts +0 -7
  80. package/dist/react/src/utils/enums/AxiosMethods.d.ts +0 -7
  81. package/dist/react/src/utils/helpers/classNames.d.ts +0 -7
  82. package/dist/react/src/utils/helpers/formatCurrency.d.ts +0 -10
  83. package/dist/react/src/utils/helpers/phoneDefaults.d.ts +0 -3
  84. package/dist/react/src/utils/helpers/validatePhone.d.ts +0 -7
  85. package/dist/react/src/utils/image_utils/index.d.ts +0 -9
  86. package/dist/react/src/utils/storage/index.d.ts +0 -9
  87. package/dist/react/src/widget.d.ts +0 -27
  88. package/dist/rollup.config.d.ts +0 -8
  89. package/dist/rollup.config.dts.d.ts +0 -3
  90. package/dist/src/components/Button/Button.types.d.ts +0 -6
  91. package/dist/src/components/Button/index.d.ts +0 -3
  92. package/dist/src/components/CopyToClipboardSpan/CopyToClipboard.types.d.ts +0 -4
  93. package/dist/src/components/CopyToClipboardSpan/index.d.ts +0 -3
  94. package/dist/src/components/Input/Input.types.d.ts +0 -17
  95. package/dist/src/components/Input/index.d.ts +0 -3
  96. package/dist/src/components/Skeleton/PaymentOptionSkeletons.d.ts +0 -6
  97. package/dist/src/components/TextArea/TextArea.types.d.ts +0 -19
  98. package/dist/src/components/TextArea/index.d.ts +0 -3
  99. package/dist/src/components/Widget.d.ts +0 -6
  100. package/dist/src/components/modals/AwaitingPaymentModal/AwaitingPaymentModal.d.ts +0 -2
  101. package/dist/src/components/modals/AwaitingPaymentTimeoutModal/AwaitingPaymentTimeoutModal.d.ts +0 -2
  102. package/dist/src/components/modals/Modal.d.ts +0 -10
  103. package/dist/src/components/modals/PaymentDetailsModal/PaymentDetailsModal.d.ts +0 -2
  104. package/dist/src/components/modals/PaymentDetailsModal/hooks/useTimer.d.ts +0 -7
  105. package/dist/src/components/modals/PaymentOptionsModal/PaymentOptionsModal.d.ts +0 -2
  106. package/dist/src/components/modals/PaymentOptionsModal/RadioButton.d.ts +0 -11
  107. package/dist/src/components/modals/PaymentOptionsModal/paymentOptionsMap.d.ts +0 -5
  108. package/dist/src/components/modals/SuccessModal/SuccessModal.d.ts +0 -2
  109. package/dist/src/components/modals/state/actions/data.d.ts +0 -10
  110. package/dist/src/components/modals/state/actions/index.d.ts +0 -5
  111. package/dist/src/components/modals/state/actions/modal.d.ts +0 -5
  112. package/dist/src/components/modals/state/actions/payment.d.ts +0 -7
  113. package/dist/src/components/modals/state/constants/actionTypes.d.ts +0 -24
  114. package/dist/src/components/modals/state/constants/index.d.ts +0 -2
  115. package/dist/src/components/modals/state/constants/initialState.d.ts +0 -36
  116. package/dist/src/components/modals/state/reducers/data.d.ts +0 -2
  117. package/dist/src/components/modals/state/reducers/index.d.ts +0 -2
  118. package/dist/src/components/modals/state/reducers/modal.d.ts +0 -2
  119. package/dist/src/components/modals/state/reducers/payment.d.ts +0 -2
  120. package/dist/src/components/modals/state/types/common.d.ts +0 -12
  121. package/dist/src/components/modals/state/types/data.d.ts +0 -34
  122. package/dist/src/components/modals/state/types/index.d.ts +0 -8
  123. package/dist/src/components/modals/state/types/modal.d.ts +0 -12
  124. package/dist/src/components/modals/state/types/payment.d.ts +0 -14
  125. package/dist/src/components/modals/state/utils/index.d.ts +0 -37
  126. package/dist/src/context/ModalProvider.d.ts +0 -4
  127. package/dist/src/context/PaymentInfoContext.d.ts +0 -26
  128. package/dist/src/context/PaymentWidgetContext.d.ts +0 -13
  129. package/dist/src/context/modal.d.ts +0 -4
  130. package/dist/src/context/types.d.ts +0 -28
  131. package/dist/src/hooks/types.d.ts +0 -34
  132. package/dist/src/hooks/useModalControl.d.ts +0 -27
  133. package/dist/src/hooks/usePaymentAPI.d.ts +0 -10
  134. package/dist/src/hooks/useShortPolling.d.ts +0 -4
  135. package/dist/src/index.d.ts +0 -2
  136. package/dist/src/services/config/endpoints.d.ts +0 -9
  137. package/dist/src/services/config/error.d.ts +0 -5
  138. package/dist/src/services/index.d.ts +0 -27
  139. package/dist/src/services/payments/index.d.ts +0 -4
  140. package/dist/src/services/payments/types.d.ts +0 -68
  141. package/dist/src/services/products/index.d.ts +0 -1
  142. package/dist/src/services/products/types.d.ts +0 -124
  143. package/dist/src/services/store/index.d.ts +0 -2
  144. package/dist/src/services/store/types.d.ts +0 -57
  145. package/dist/src/services/utils/widgetConfig.d.ts +0 -20
  146. package/dist/src/svg_components/ArrowLeftIcon.d.ts +0 -3
  147. package/dist/src/svg_components/BankTransferIcon.d.ts +0 -2
  148. package/dist/src/svg_components/CancelIcon.d.ts +0 -7
  149. package/dist/src/svg_components/CardIcon.d.ts +0 -2
  150. package/dist/src/svg_components/CloseIcon.d.ts +0 -3
  151. package/dist/src/svg_components/CopyIcon.d.ts +0 -2
  152. package/dist/src/svg_components/EyeCloseIcon.d.ts +0 -5
  153. package/dist/src/svg_components/EyeOpenIcon.d.ts +0 -5
  154. package/dist/src/svg_components/SloudIcon.d.ts +0 -2
  155. package/dist/src/utils/enums/AxiosErrorCodes.d.ts +0 -7
  156. package/dist/src/utils/enums/AxiosMethods.d.ts +0 -7
  157. package/dist/src/utils/helpers/classNames.d.ts +0 -7
  158. package/dist/src/utils/helpers/formatCurrency.d.ts +0 -10
  159. package/dist/src/utils/helpers/phoneDefaults.d.ts +0 -3
  160. package/dist/src/utils/helpers/validatePhone.d.ts +0 -7
  161. package/dist/src/utils/image_utils/index.d.ts +0 -9
  162. package/dist/src/utils/storage/index.d.ts +0 -9
  163. package/dist/src/widget.d.ts +0 -27
package/dist/index.d.ts CHANGED
@@ -1,12 +1,91 @@
1
- interface PaymentWidgetOptions {
1
+ /**
2
+ * Common fields shared across all payment types
3
+ */
4
+ interface BasePaymentWidgetOptions {
2
5
  public_key: string;
3
6
  isLocalEnv?: boolean;
4
- amount: number;
7
+ transaction_id?: string;
8
+ customer_id?: string;
9
+ business_id?: string;
10
+ }
11
+ interface Customer {
5
12
  first_name: string;
6
13
  last_name: string;
7
14
  phone_number: string;
8
15
  email: string;
9
16
  }
17
+ interface DeliveryDetails {
18
+ street: string;
19
+ city: string;
20
+ state: string;
21
+ country: string;
22
+ note?: string;
23
+ }
24
+ interface Product {
25
+ product_id: string;
26
+ quantity: number;
27
+ variation?: string[];
28
+ }
29
+ /**
30
+ * String literal types for payment modes
31
+ * These provide better IntelliSense suggestions
32
+ */
33
+ type PaymentType = "external" | "storefront" | "sloudfront";
34
+ /**
35
+ * String literal types for channel options
36
+ * These provide better IntelliSense suggestions
37
+ */
38
+ type ChannelType = "pickup" | "delivery";
39
+ /**
40
+ * Enum for backward compatibility and convenience
41
+ * Use either string literals or enum values
42
+ */
43
+ declare enum ModeType {
44
+ Storefront = "storefront",
45
+ External = "external",
46
+ Sloudfront = "sloudfront"
47
+ }
48
+ /**
49
+ * Options for external payment type
50
+ * Used for simple payments with customer details
51
+ */
52
+ interface ExternalPaymentWidgetOptions extends BasePaymentWidgetOptions {
53
+ type: "external";
54
+ amount: number;
55
+ customer: Customer;
56
+ }
57
+ /**
58
+ * Options for storefront payment type
59
+ * Used for e-commerce orders with products and delivery
60
+ */
61
+ interface StorefrontPaymentWidgetOptions extends BasePaymentWidgetOptions {
62
+ type: "storefront";
63
+ slug: string;
64
+ amount: number;
65
+ discount?: number;
66
+ channel: ChannelType;
67
+ customer: Customer;
68
+ delivery_details: DeliveryDetails;
69
+ products: Product[];
70
+ }
71
+ interface SloudfrontPaymentWidgetOptions extends BasePaymentWidgetOptions {
72
+ type: "sloudfront";
73
+ amount: number;
74
+ discount?: number;
75
+ channel: ChannelType;
76
+ customer: Customer;
77
+ delivery_details: DeliveryDetails;
78
+ products: Product[];
79
+ transaction_id: string;
80
+ customer_id: string;
81
+ business_id: string;
82
+ }
83
+ /**
84
+ * Discriminated union of all payment widget option types
85
+ * TypeScript will enforce that the correct fields are provided based on the type
86
+ */
87
+ type PaymentWidgetOptions = ExternalPaymentWidgetOptions | StorefrontPaymentWidgetOptions | SloudfrontPaymentWidgetOptions;
88
+
10
89
  declare class PaymentWidget {
11
90
  private options;
12
91
  private container;
@@ -26,4 +105,143 @@ declare class PaymentWidget {
26
105
  hidePopup(): void;
27
106
  }
28
107
 
29
- export { PaymentWidget as default };
108
+ declare class PaymentWidgetValidationError extends Error {
109
+ constructor(message: string);
110
+ }
111
+ /**
112
+ * Validates payment widget options based on the type
113
+ * @throws {PaymentWidgetValidationError} if validation fails
114
+ */
115
+ declare function validatePaymentWidgetOptions(options: PaymentWidgetOptions): void;
116
+
117
+ interface IExternalPaymentPayload {
118
+ type: "external";
119
+ amount: number;
120
+ customer: {
121
+ first_name: string;
122
+ last_name: string;
123
+ phone_number: string;
124
+ email: string;
125
+ };
126
+ }
127
+ interface IStorefrontPaymentPayload {
128
+ type: "storefront";
129
+ slug: string;
130
+ order: {
131
+ additional_amount?: number;
132
+ discount?: number;
133
+ items: Array<{
134
+ product_id: string;
135
+ quantity: number;
136
+ variation?: string[];
137
+ }>;
138
+ payment_method?: string;
139
+ channel?: string;
140
+ buyer_details: {
141
+ first_name: string;
142
+ last_name: string;
143
+ email: string;
144
+ phone_number: string;
145
+ };
146
+ delivery_details: {
147
+ street: string;
148
+ city: string;
149
+ state: string;
150
+ country: string;
151
+ note?: string;
152
+ };
153
+ };
154
+ }
155
+ interface ISloudfrontPaymentPayload {
156
+ type: "sloudfront";
157
+ manual_order: {
158
+ additional_amount?: number;
159
+ discount?: number;
160
+ items: Array<{
161
+ product_id: string;
162
+ quantity: number;
163
+ variation?: string[];
164
+ }>;
165
+ payment_method?: string;
166
+ channel?: string;
167
+ buyer_details: {
168
+ first_name: string;
169
+ last_name: string;
170
+ email: string;
171
+ phone_number: string;
172
+ };
173
+ delivery_details: {
174
+ street: string;
175
+ city: string;
176
+ state: string;
177
+ country: string;
178
+ note?: string;
179
+ };
180
+ transaction_id: string;
181
+ customer_id: string;
182
+ business_id: string;
183
+ };
184
+ }
185
+ type IGeneratePaymentInstrumentPayload = IExternalPaymentPayload | IStorefrontPaymentPayload | ISloudfrontPaymentPayload;
186
+
187
+ /**
188
+ * Base interface for payload builders
189
+ */
190
+ interface PayloadBuilder<T extends IGeneratePaymentInstrumentPayload> {
191
+ build(options: PaymentWidgetOptions, payment_method?: string): T;
192
+ }
193
+ /**
194
+ * Factory function to build payment instrument payload based on options type
195
+ *
196
+ * @param options - Payment widget options
197
+ * @returns Constructed payload for the payment instrument API
198
+ * @throws Error if the payment type is not supported
199
+ *
200
+ * @example
201
+ * // External payment
202
+ * const payload = buildPaymentInstrumentPayload({
203
+ * type: "external",
204
+ * amount: 25000,
205
+ * // ... other options
206
+ * });
207
+ *
208
+ * @example
209
+ * // Storefront payment
210
+ * const payload = buildPaymentInstrumentPayload({
211
+ * type: "storefront",
212
+ * slug: "my-store",
213
+ * products: [...],
214
+ * // ... other options
215
+ * });
216
+ */
217
+ declare function buildPaymentInstrumentPayload(options: PaymentWidgetOptions, payment_method?: string): IGeneratePaymentInstrumentPayload;
218
+ /**
219
+ * Register a new payload builder for a custom payment type
220
+ * This allows for extending the system with new payment types without modifying existing code
221
+ *
222
+ * @param type - The payment type identifier
223
+ * @param builder - The payload builder instance
224
+ *
225
+ * @example
226
+ * class SubscriptionPaymentPayloadBuilder implements PayloadBuilder<ISubscriptionPaymentPayload> {
227
+ * build(options: PaymentWidgetOptions): ISubscriptionPaymentPayload {
228
+ * return {
229
+ * type: "subscription",
230
+ * plan_id: options.plan_id,
231
+ * // ... other fields
232
+ * };
233
+ * }
234
+ * }
235
+ *
236
+ * registerPayloadBuilder("subscription", new SubscriptionPaymentPayloadBuilder());
237
+ */
238
+ declare function registerPayloadBuilder(type: string, builder: PayloadBuilder<IGeneratePaymentInstrumentPayload>): void;
239
+ /**
240
+ * Get all registered payment types
241
+ *
242
+ * @returns Array of registered payment type identifiers
243
+ */
244
+ declare function getRegisteredPaymentTypes(): string[];
245
+
246
+ export { ModeType, PaymentWidgetValidationError, buildPaymentInstrumentPayload, PaymentWidget as default, getRegisteredPaymentTypes, registerPayloadBuilder, validatePaymentWidgetOptions };
247
+ export type { ChannelType, ExternalPaymentWidgetOptions, PaymentType, PaymentWidgetOptions, SloudfrontPaymentWidgetOptions, StorefrontPaymentWidgetOptions };