@finspringinnovations/fixeddepositsdk 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 (311) hide show
  1. package/README.md +128 -0
  2. package/lib/api/applicationApi.d.ts +1 -0
  3. package/lib/api/applicationApi.js +11 -0
  4. package/lib/api/bankApi.d.ts +352 -0
  5. package/lib/api/bankApi.js +54 -0
  6. package/lib/api/baseApi.d.ts +6 -0
  7. package/lib/api/baseApi.js +406 -0
  8. package/lib/api/customerApi.d.ts +855 -0
  9. package/lib/api/customerApi.js +241 -0
  10. package/lib/api/fdApi.d.ts +979 -0
  11. package/lib/api/fdApi.js +112 -0
  12. package/lib/api/fdCalculatorApi.d.ts +179 -0
  13. package/lib/api/fdCalculatorApi.js +36 -0
  14. package/lib/api/index.d.ts +14 -0
  15. package/lib/api/index.js +45 -0
  16. package/lib/api/interestRateApi.d.ts +585 -0
  17. package/lib/api/interestRateApi.js +101 -0
  18. package/lib/api/kycApi.d.ts +486 -0
  19. package/lib/api/kycApi.js +71 -0
  20. package/lib/api/masterDataApi.d.ts +158 -0
  21. package/lib/api/masterDataApi.js +35 -0
  22. package/lib/api/nomineeApi.d.ts +325 -0
  23. package/lib/api/nomineeApi.js +46 -0
  24. package/lib/api/onboardingApi.d.ts +192 -0
  25. package/lib/api/onboardingApi.js +41 -0
  26. package/lib/api/panApi.d.ts +0 -0
  27. package/lib/api/panApi.js +23 -0
  28. package/lib/api/paymentApi.d.ts +325 -0
  29. package/lib/api/paymentApi.js +46 -0
  30. package/lib/api/workflowApi.d.ts +654 -0
  31. package/lib/api/workflowApi.js +90 -0
  32. package/lib/assets/images/images.d.ts +6 -0
  33. package/lib/assets/images/images.js +12 -0
  34. package/lib/components/AadhaarInput.d.ts +13 -0
  35. package/lib/components/AadhaarInput.js +47 -0
  36. package/lib/components/ActionButton.d.ts +12 -0
  37. package/lib/components/ActionButton.js +87 -0
  38. package/lib/components/ActiveFDCard.d.ts +18 -0
  39. package/lib/components/ActiveFDCard.js +116 -0
  40. package/lib/components/AmountInput.d.ts +20 -0
  41. package/lib/components/AmountInput.js +142 -0
  42. package/lib/components/CheckboxOption.d.ts +11 -0
  43. package/lib/components/CheckboxOption.js +41 -0
  44. package/lib/components/CompanyHeader.d.ts +7 -0
  45. package/lib/components/CompanyHeader.js +59 -0
  46. package/lib/components/DropdownSelector.d.ts +9 -0
  47. package/lib/components/DropdownSelector.js +49 -0
  48. package/lib/components/EmptyState.d.ts +17 -0
  49. package/lib/components/EmptyState.js +44 -0
  50. package/lib/components/ErrorDisplay.d.ts +17 -0
  51. package/lib/components/ErrorDisplay.js +69 -0
  52. package/lib/components/FAQItem.d.ts +9 -0
  53. package/lib/components/FAQItem.js +52 -0
  54. package/lib/components/FDCard.d.ts +23 -0
  55. package/lib/components/FDCard.js +116 -0
  56. package/lib/components/FormDropdown.d.ts +18 -0
  57. package/lib/components/FormDropdown.js +155 -0
  58. package/lib/components/FormSection.d.ts +14 -0
  59. package/lib/components/FormSection.js +38 -0
  60. package/lib/components/Header.d.ts +14 -0
  61. package/lib/components/Header.js +52 -0
  62. package/lib/components/IFSCSearchResultCard.d.ts +13 -0
  63. package/lib/components/IFSCSearchResultCard.js +70 -0
  64. package/lib/components/InfoBox.d.ts +8 -0
  65. package/lib/components/InfoBox.js +39 -0
  66. package/lib/components/InterestRateCard.d.ts +8 -0
  67. package/lib/components/InterestRateCard.js +46 -0
  68. package/lib/components/LoadingIndicator.d.ts +12 -0
  69. package/lib/components/LoadingIndicator.js +30 -0
  70. package/lib/components/OTPInput.d.ts +17 -0
  71. package/lib/components/OTPInput.js +144 -0
  72. package/lib/components/PaymentDetailsCard.d.ts +20 -0
  73. package/lib/components/PaymentDetailsCard.js +68 -0
  74. package/lib/components/PendingFDBottomSheet.d.ts +19 -0
  75. package/lib/components/PendingFDBottomSheet.js +122 -0
  76. package/lib/components/SafeAreaWrapper.d.ts +13 -0
  77. package/lib/components/SafeAreaWrapper.js +41 -0
  78. package/lib/components/ScreenHeader.d.ts +11 -0
  79. package/lib/components/ScreenHeader.js +46 -0
  80. package/lib/components/StatusDisplay.d.ts +15 -0
  81. package/lib/components/StatusDisplay.js +88 -0
  82. package/lib/components/TextFieldWithLabel.d.ts +46 -0
  83. package/lib/components/TextFieldWithLabel.js +326 -0
  84. package/lib/components/TrustBox.d.ts +8 -0
  85. package/lib/components/TrustBox.js +46 -0
  86. package/lib/components/ValidationErrorAlert.d.ts +23 -0
  87. package/lib/components/ValidationErrorAlert.js +39 -0
  88. package/lib/components/ValidationMessage.d.ts +9 -0
  89. package/lib/components/ValidationMessage.js +98 -0
  90. package/lib/components/index.d.ts +35 -0
  91. package/lib/components/index.js +64 -0
  92. package/lib/config/apiConfig.d.ts +34 -0
  93. package/lib/config/apiConfig.js +158 -0
  94. package/lib/config/appDataConfig.d.ts +159 -0
  95. package/lib/config/appDataConfig.js +310 -0
  96. package/lib/config/encryptionConfig.d.ts +21 -0
  97. package/lib/config/encryptionConfig.js +61 -0
  98. package/lib/config/workflowConstants.d.ts +62 -0
  99. package/lib/config/workflowConstants.js +63 -0
  100. package/lib/constants/strings/bank.d.ts +72 -0
  101. package/lib/constants/strings/bank.js +86 -0
  102. package/lib/constants/strings/base64Images.d.ts +26 -0
  103. package/lib/constants/strings/base64Images.js +29 -0
  104. package/lib/constants/strings/common.d.ts +53 -0
  105. package/lib/constants/strings/common.js +62 -0
  106. package/lib/constants/strings/employee.d.ts +61 -0
  107. package/lib/constants/strings/employee.js +77 -0
  108. package/lib/constants/strings/faq.d.ts +14 -0
  109. package/lib/constants/strings/faq.js +20 -0
  110. package/lib/constants/strings/fd.d.ts +122 -0
  111. package/lib/constants/strings/fd.js +151 -0
  112. package/lib/constants/strings/home.d.ts +49 -0
  113. package/lib/constants/strings/home.js +62 -0
  114. package/lib/constants/strings/index.d.ts +16 -0
  115. package/lib/constants/strings/index.js +44 -0
  116. package/lib/constants/strings/kyc.d.ts +80 -0
  117. package/lib/constants/strings/kyc.js +94 -0
  118. package/lib/constants/strings/nominee.d.ts +64 -0
  119. package/lib/constants/strings/nominee.js +81 -0
  120. package/lib/hooks/useAuth.d.ts +25 -0
  121. package/lib/hooks/useAuth.js +39 -0
  122. package/lib/hooks/useFDData.d.ts +11 -0
  123. package/lib/hooks/useFDData.js +40 -0
  124. package/lib/index.d.ts +48 -0
  125. package/lib/index.js +161 -0
  126. package/lib/navigation/RootNavigator.d.ts +9 -0
  127. package/lib/navigation/RootNavigator.js +459 -0
  128. package/lib/navigation/SimpleNavigator.d.ts +11 -0
  129. package/lib/navigation/SimpleNavigator.js +114 -0
  130. package/lib/navigation/helpers.d.ts +11 -0
  131. package/lib/navigation/helpers.js +83 -0
  132. package/lib/navigation/index.d.ts +17 -0
  133. package/lib/navigation/index.js +42 -0
  134. package/lib/navigation/types.d.ts +139 -0
  135. package/lib/navigation/types.js +2 -0
  136. package/lib/navigation/workflowNavigator.d.ts +22 -0
  137. package/lib/navigation/workflowNavigator.js +104 -0
  138. package/lib/providers/ApiProvider.d.ts +7 -0
  139. package/lib/providers/ApiProvider.js +16 -0
  140. package/lib/providers/MasterDataProvider.d.ts +10 -0
  141. package/lib/providers/MasterDataProvider.js +54 -0
  142. package/lib/screens/AadhaarVerification.d.ts +7 -0
  143. package/lib/screens/AadhaarVerification.js +627 -0
  144. package/lib/screens/AddBankAccount.d.ts +22 -0
  145. package/lib/screens/AddBankAccount.js +381 -0
  146. package/lib/screens/BankDetail.d.ts +16 -0
  147. package/lib/screens/BankDetail.js +596 -0
  148. package/lib/screens/Employee.d.ts +18 -0
  149. package/lib/screens/Employee.js +594 -0
  150. package/lib/screens/FDCalculator.d.ts +18 -0
  151. package/lib/screens/FDCalculator.js +767 -0
  152. package/lib/screens/FDList.d.ts +28 -0
  153. package/lib/screens/FDList.js +1853 -0
  154. package/lib/screens/FindIFSC.d.ts +16 -0
  155. package/lib/screens/FindIFSC.js +248 -0
  156. package/lib/screens/NomineeDetail.d.ts +17 -0
  157. package/lib/screens/NomineeDetail.js +592 -0
  158. package/lib/screens/PayNow.d.ts +14 -0
  159. package/lib/screens/PayNow.js +230 -0
  160. package/lib/screens/Payment.d.ts +11 -0
  161. package/lib/screens/Payment.js +191 -0
  162. package/lib/screens/PaymentStatus.d.ts +16 -0
  163. package/lib/screens/PaymentStatus.js +431 -0
  164. package/lib/screens/ReviewKYC.d.ts +23 -0
  165. package/lib/screens/ReviewKYC.js +727 -0
  166. package/lib/state/paymentSession.d.ts +8 -0
  167. package/lib/state/paymentSession.js +13 -0
  168. package/lib/store/fdListSelectedSlice.d.ts +21 -0
  169. package/lib/store/fdListSelectedSlice.js +26 -0
  170. package/lib/store/hooks.d.ts +8 -0
  171. package/lib/store/hooks.js +8 -0
  172. package/lib/store/index.d.ts +3 -0
  173. package/lib/store/index.js +8 -0
  174. package/lib/store/onboardingSlice.d.ts +12 -0
  175. package/lib/store/onboardingSlice.js +32 -0
  176. package/lib/store/store.d.ts +13 -0
  177. package/lib/store/store.js +27 -0
  178. package/lib/theme/ThemeContext.d.ts +210 -0
  179. package/lib/theme/ThemeContext.js +92 -0
  180. package/lib/theme/colors.d.ts +80 -0
  181. package/lib/theme/colors.js +85 -0
  182. package/lib/theme/index.d.ts +35 -0
  183. package/lib/theme/index.js +78 -0
  184. package/lib/theme/shadows.d.ts +53 -0
  185. package/lib/theme/shadows.js +58 -0
  186. package/lib/theme/typography.d.ts +134 -0
  187. package/lib/theme/typography.js +143 -0
  188. package/lib/types/dataTypes.d.ts +34 -0
  189. package/lib/types/dataTypes.js +2 -0
  190. package/lib/types/workflowTypes.d.ts +2 -0
  191. package/lib/types/workflowTypes.js +2 -0
  192. package/lib/utils/apiLogger.d.ts +48 -0
  193. package/lib/utils/apiLogger.js +105 -0
  194. package/lib/utils/encryption.d.ts +28 -0
  195. package/lib/utils/encryption.js +113 -0
  196. package/lib/utils/getFDData.d.ts +48 -0
  197. package/lib/utils/getFDData.js +145 -0
  198. package/lib/utils/globalData.d.ts +2 -0
  199. package/lib/utils/globalData.js +10 -0
  200. package/package.json +51 -0
  201. package/src/api/applicationApi.ts +12 -0
  202. package/src/api/bankApi.ts +42 -0
  203. package/src/api/baseApi.ts +463 -0
  204. package/src/api/customerApi.ts +324 -0
  205. package/src/api/fdApi.ts +150 -0
  206. package/src/api/fdCalculatorApi.ts +41 -0
  207. package/src/api/index.ts +29 -0
  208. package/src/api/interestRateApi.ts +143 -0
  209. package/src/api/kycApi.ts +63 -0
  210. package/src/api/masterDataApi.ts +37 -0
  211. package/src/api/nomineeApi.ts +34 -0
  212. package/src/api/onboardingApi.ts +64 -0
  213. package/src/api/panApi.ts +25 -0
  214. package/src/api/paymentApi.ts +34 -0
  215. package/src/api/workflowApi.ts +94 -0
  216. package/src/assets/images/Mahindra.png +0 -0
  217. package/src/assets/images/arrow-filled.png +0 -0
  218. package/src/assets/images/arrow-left.png +0 -0
  219. package/src/assets/images/backicon.png +0 -0
  220. package/src/assets/images/calendar.png +0 -0
  221. package/src/assets/images/chevron-down.png +0 -0
  222. package/src/assets/images/chevron-down@2x.png +0 -0
  223. package/src/assets/images/chevron-down@3x.png +0 -0
  224. package/src/assets/images/images.js +10 -0
  225. package/src/assets/images/shriram_logo.png +0 -0
  226. package/src/components/AadhaarInput.tsx +91 -0
  227. package/src/components/ActionButton.tsx +129 -0
  228. package/src/components/ActiveFDCard.tsx +188 -0
  229. package/src/components/AmountInput.tsx +217 -0
  230. package/src/components/CheckboxOption.tsx +93 -0
  231. package/src/components/CompanyHeader.tsx +80 -0
  232. package/src/components/DropdownSelector.tsx +77 -0
  233. package/src/components/EmptyState.tsx +109 -0
  234. package/src/components/ErrorDisplay.tsx +135 -0
  235. package/src/components/FAQItem.tsx +90 -0
  236. package/src/components/FDCard.tsx +186 -0
  237. package/src/components/FormDropdown.tsx +214 -0
  238. package/src/components/FormSection.tsx +86 -0
  239. package/src/components/Header.tsx +110 -0
  240. package/src/components/IFSCSearchResultCard.tsx +139 -0
  241. package/src/components/InfoBox.tsx +55 -0
  242. package/src/components/InterestRateCard.tsx +77 -0
  243. package/src/components/LoadingIndicator.tsx +63 -0
  244. package/src/components/OTPInput.tsx +213 -0
  245. package/src/components/PaymentDetailsCard.tsx +120 -0
  246. package/src/components/PendingFDBottomSheet.tsx +237 -0
  247. package/src/components/README.md +210 -0
  248. package/src/components/SafeAreaWrapper.tsx +68 -0
  249. package/src/components/ScreenHeader.tsx +83 -0
  250. package/src/components/StatusDisplay.tsx +139 -0
  251. package/src/components/TextFieldWithLabel.tsx +502 -0
  252. package/src/components/TrustBox.tsx +63 -0
  253. package/src/components/ValidationErrorAlert.tsx +57 -0
  254. package/src/components/ValidationMessage.tsx +134 -0
  255. package/src/components/index.tsx +47 -0
  256. package/src/config/apiConfig.ts +217 -0
  257. package/src/config/appDataConfig.ts +358 -0
  258. package/src/config/encryptionConfig.ts +65 -0
  259. package/src/config/workflowConstants.ts +70 -0
  260. package/src/constants/strings/README.md +146 -0
  261. package/src/constants/strings/bank.ts +92 -0
  262. package/src/constants/strings/base64Images.ts +31 -0
  263. package/src/constants/strings/common.ts +63 -0
  264. package/src/constants/strings/employee.ts +85 -0
  265. package/src/constants/strings/faq.ts +23 -0
  266. package/src/constants/strings/fd.ts +172 -0
  267. package/src/constants/strings/home.ts +67 -0
  268. package/src/constants/strings/index.ts +21 -0
  269. package/src/constants/strings/kyc.ts +100 -0
  270. package/src/constants/strings/nominee.ts +90 -0
  271. package/src/hooks/useAuth.ts +42 -0
  272. package/src/hooks/useFDData.ts +48 -0
  273. package/src/index.tsx +139 -0
  274. package/src/navigation/RootNavigator.tsx +687 -0
  275. package/src/navigation/SimpleNavigator.tsx +123 -0
  276. package/src/navigation/helpers.ts +85 -0
  277. package/src/navigation/index.tsx +84 -0
  278. package/src/navigation/types.ts +146 -0
  279. package/src/navigation/workflowNavigator.ts +131 -0
  280. package/src/providers/ApiProvider.tsx +23 -0
  281. package/src/providers/MasterDataProvider.tsx +30 -0
  282. package/src/screens/AadhaarVerification.tsx +809 -0
  283. package/src/screens/AddBankAccount.tsx +541 -0
  284. package/src/screens/BankDetail.tsx +826 -0
  285. package/src/screens/Employee.tsx +822 -0
  286. package/src/screens/FDCalculator.tsx +1002 -0
  287. package/src/screens/FDList.tsx +2199 -0
  288. package/src/screens/FindIFSC.tsx +332 -0
  289. package/src/screens/NomineeDetail.tsx +800 -0
  290. package/src/screens/PayNow.tsx +282 -0
  291. package/src/screens/Payment.tsx +224 -0
  292. package/src/screens/PaymentStatus.tsx +595 -0
  293. package/src/screens/ReviewKYC.tsx +1062 -0
  294. package/src/state/paymentSession.ts +13 -0
  295. package/src/store/fdListSelectedSlice.ts +42 -0
  296. package/src/store/hooks.ts +6 -0
  297. package/src/store/index.ts +3 -0
  298. package/src/store/onboardingSlice.ts +37 -0
  299. package/src/store/store.ts +27 -0
  300. package/src/theme/ThemeContext.tsx +84 -0
  301. package/src/theme/colors.ts +90 -0
  302. package/src/theme/index.ts +85 -0
  303. package/src/theme/shadows.ts +61 -0
  304. package/src/theme/typography.ts +151 -0
  305. package/src/types/dataTypes.ts +37 -0
  306. package/src/types/env.d.ts +93 -0
  307. package/src/types/workflowTypes.ts +12 -0
  308. package/src/utils/apiLogger.ts +166 -0
  309. package/src/utils/encryption.ts +159 -0
  310. package/src/utils/getFDData.ts +165 -0
  311. package/src/utils/globalData.ts +7 -0
@@ -0,0 +1,34 @@
1
+ import 'react-native-get-random-values';
2
+ export declare const logEnvLoaderValues: () => void;
3
+ export type Environment = 'development' | 'staging' | 'production';
4
+ export interface ApiConfig {
5
+ baseUrl: string;
6
+ timeout: number;
7
+ retryAttempts: number;
8
+ enableEncryption: boolean;
9
+ enableLogging: boolean;
10
+ headers: Record<string, string>;
11
+ allowEncryptionToggle?: boolean;
12
+ }
13
+ export declare const getEnvironment: () => Environment;
14
+ export declare const getApiConfig: (env?: Environment) => ApiConfig;
15
+ export declare const getSecureHeaders: (env?: Environment) => Record<string, string>;
16
+ export declare const validateApiConfig: (config: ApiConfig) => boolean;
17
+ export declare const getEnvironmentConfig: () => {
18
+ environment: Environment;
19
+ config: ApiConfig;
20
+ isProduction: boolean;
21
+ isDevelopment: boolean;
22
+ isStaging: boolean;
23
+ };
24
+ export declare const debugApiConfig: () => void;
25
+ export declare const debugApiCall: (endpoint: string, method?: string) => {
26
+ url: string;
27
+ headers: Record<string, string>;
28
+ environment: Environment;
29
+ encryptionEnabled: boolean;
30
+ hasApiKey: boolean;
31
+ };
32
+ export declare const logEnvironmentInfo: () => void;
33
+ export declare const logEnvironmentDetails: () => void;
34
+ export default getApiConfig;
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logEnvironmentDetails = exports.logEnvironmentInfo = exports.debugApiCall = exports.debugApiConfig = exports.getEnvironmentConfig = exports.validateApiConfig = exports.getSecureHeaders = exports.getApiConfig = exports.getEnvironment = exports.logEnvLoaderValues = void 0;
4
+ // API Configuration with values from main app
5
+ require("react-native-get-random-values");
6
+ const appDataConfig_1 = require("./appDataConfig");
7
+ const logEnvLoaderValues = () => {
8
+ // Environment values logging removed for security
9
+ };
10
+ exports.logEnvLoaderValues = logEnvLoaderValues;
11
+ // Environment detection - using hardcoded default
12
+ const getEnvironment = () => {
13
+ // Default to development for hardcoded configuration
14
+ return 'development';
15
+ };
16
+ exports.getEnvironment = getEnvironment;
17
+ // Common configuration shared by all environments
18
+ const COMMON_CONFIG = {
19
+ timeout: 60000,
20
+ retryAttempts: 3,
21
+ enableEncryption: true,
22
+ enableLogging: true,
23
+ allowEncryptionToggle: true,
24
+ headersBase: {
25
+ 'X-Client-Version': '1.0.0',
26
+ },
27
+ };
28
+ const API_ENDPOINTS = {
29
+ development: Object.assign(Object.assign({}, COMMON_CONFIG), { baseUrl: '', headers: Object.assign(Object.assign({}, COMMON_CONFIG.headersBase), { 'X-Environment': 'development', 'X-API-Key': '' }) })
30
+ };
31
+ // Get API configuration for current environment
32
+ const getApiConfig = (env) => {
33
+ // Get environment data from main app first
34
+ const environmentData = (0, appDataConfig_1.getEnvironmentData)();
35
+ // Use environment from EnvironmentData if available, otherwise use parameter or default
36
+ // const currentEnv = env || environmentData?.environment || getEnvironment();
37
+ const config = API_ENDPOINTS.development;
38
+ // Create a new config object to avoid read-only issues
39
+ let finalConfig = Object.assign({}, config);
40
+ // Override configuration with values from main app if available
41
+ if (environmentData) {
42
+ // Override base URL if provided by main app
43
+ if (environmentData.apiBaseUrl) {
44
+ // finalConfig.baseUrl = environmentData.apiBaseUrl as any;
45
+ finalConfig = Object.assign(Object.assign({}, finalConfig), { baseUrl: environmentData.apiBaseUrl });
46
+ }
47
+ // Override API key if provided by main app
48
+ if (environmentData.apiKey) {
49
+ finalConfig.headers = Object.assign(Object.assign({}, finalConfig.headers), { 'X-API-Key': environmentData.apiKey });
50
+ }
51
+ // Override environment if provided by main app
52
+ if (environmentData.environment) {
53
+ finalConfig.headers = Object.assign(Object.assign({}, finalConfig.headers), { 'X-Environment': environmentData.environment });
54
+ }
55
+ }
56
+ // Use secure logger for API configuration logging
57
+ // Validate configuration
58
+ if (!finalConfig.baseUrl) {
59
+ throw new Error(`Missing API base URL `);
60
+ }
61
+ return Object.assign(Object.assign({}, finalConfig), { baseUrl: sanitizeUrl(finalConfig.baseUrl) });
62
+ };
63
+ exports.getApiConfig = getApiConfig;
64
+ // Sanitize and validate URL
65
+ const sanitizeUrl = (url) => {
66
+ if (!url || typeof url !== 'string') {
67
+ throw new Error(`Invalid API URL: ${url}`);
68
+ }
69
+ // Trim leading and trailing spaces
70
+ let sanitized = url.trim();
71
+ // Basic URL validation - check if it starts with http:// or https://
72
+ if (!sanitized.match(/^https?:\/\//)) {
73
+ throw new Error(`Invalid API URL format: ${sanitized}`);
74
+ }
75
+ // Ensure HTTPS in production
76
+ if ((0, exports.getEnvironment)() === 'production' && !sanitized.startsWith('https://')) {
77
+ throw new Error('Production API must use HTTPS');
78
+ }
79
+ // Remove trailing slash
80
+ return sanitized.replace(/\/$/, '');
81
+ };
82
+ // Get secure headers for API requests
83
+ const getSecureHeaders = (env) => {
84
+ const config = (0, exports.getApiConfig)(env);
85
+ //const currentEnv = env || getEnvironment();
86
+ return Object.assign(Object.assign({}, config.headers), { 'Content-Type': 'application/json', 'Accept': 'application/json', 'User-Agent': `FDSDK/'1.0.0'`, 'X-Timestamp': Date.now().toString(), 'X-Request-ID': generateRequestId() });
87
+ };
88
+ exports.getSecureHeaders = getSecureHeaders;
89
+ // Generate unique request ID
90
+ const generateRequestId = () => {
91
+ return `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
92
+ };
93
+ // Validate environment configuration
94
+ const validateApiConfig = (config) => {
95
+ const errors = [];
96
+ if (!config.baseUrl) {
97
+ errors.push('Base URL is required');
98
+ }
99
+ if (config.timeout < 5000) {
100
+ errors.push('Timeout should be at least 5 seconds');
101
+ }
102
+ if (config.retryAttempts < 0 || config.retryAttempts > 5) {
103
+ errors.push('Retry attempts should be between 0 and 5');
104
+ }
105
+ // Validate URL format without using new URL (React Native compatible)
106
+ if (config.baseUrl && !config.baseUrl.match(/^https?:\/\//)) {
107
+ errors.push('Invalid base URL format - must start with http:// or https://');
108
+ }
109
+ if (errors.length > 0) {
110
+ return false;
111
+ }
112
+ return true;
113
+ };
114
+ exports.validateApiConfig = validateApiConfig;
115
+ // Get environment-specific configuration
116
+ const getEnvironmentConfig = () => {
117
+ const env = (0, exports.getEnvironment)();
118
+ const config = (0, exports.getApiConfig)(env);
119
+ return {
120
+ environment: env,
121
+ config,
122
+ isProduction: env === 'production',
123
+ isDevelopment: env === 'development',
124
+ isStaging: env === 'staging',
125
+ };
126
+ };
127
+ exports.getEnvironmentConfig = getEnvironmentConfig;
128
+ // Debug configuration (works in all environments now)
129
+ const debugApiConfig = () => {
130
+ // API Configuration debug complete
131
+ };
132
+ exports.debugApiConfig = debugApiConfig;
133
+ // New utility to help clients debug 403 errors
134
+ const debugApiCall = (endpoint, method = 'GET') => {
135
+ const config = (0, exports.getApiConfig)();
136
+ const headers = (0, exports.getSecureHeaders)();
137
+ // API Call debug complete
138
+ return {
139
+ url: `${config.baseUrl || ''}/${endpoint}`,
140
+ headers,
141
+ environment: (0, exports.getEnvironment)(),
142
+ encryptionEnabled: config.enableEncryption,
143
+ hasApiKey: !!headers['X-API-Key']
144
+ };
145
+ };
146
+ exports.debugApiCall = debugApiCall;
147
+ // Environment logging utility
148
+ const logEnvironmentInfo = () => {
149
+ // Environment logging removed for security
150
+ };
151
+ exports.logEnvironmentInfo = logEnvironmentInfo;
152
+ // Function to log environment details (can be called from anywhere)
153
+ const logEnvironmentDetails = () => {
154
+ // Environment details logging removed for security
155
+ };
156
+ exports.logEnvironmentDetails = logEnvironmentDetails;
157
+ // Export default configuration
158
+ exports.default = exports.getApiConfig;
@@ -0,0 +1,159 @@
1
+ export interface EnvironmentData {
2
+ environment: string;
3
+ apiBaseUrl?: string;
4
+ apiKey?: string;
5
+ encryptionKey?: string;
6
+ enableLogging?: boolean;
7
+ }
8
+ export interface AppData {
9
+ id: string;
10
+ name: string;
11
+ dob: string;
12
+ gender?: string | null;
13
+ mobNo: string;
14
+ email: string;
15
+ panNumber?: string;
16
+ address?: string;
17
+ area?: string;
18
+ city?: string;
19
+ state?: string;
20
+ country?: string;
21
+ pinCode?: string;
22
+ accountNo?: string;
23
+ nameOfBank?: string;
24
+ ifsc?: string;
25
+ typeOfAccount?: string;
26
+ maritalStatus?: string;
27
+ userReferenceId?: string;
28
+ eventNotifyUrl?: string;
29
+ kycRelation?: string;
30
+ kycRelationName?: string;
31
+ poweredByLogo?: string;
32
+ }
33
+ export interface CustomColors {
34
+ primary?: string;
35
+ tabSelected?: string;
36
+ headerBg?: string;
37
+ headerText?: string;
38
+ success?: string;
39
+ textSecondary?: string;
40
+ border?: string;
41
+ shadow?: string;
42
+ background?: string;
43
+ surface?: string;
44
+ text?: string;
45
+ textLight?: string;
46
+ error?: string;
47
+ warning?: string;
48
+ info?: string;
49
+ muted?: string;
50
+ inputBackground?: string;
51
+ inputBorder?: string;
52
+ placeholderColor?: string;
53
+ labelColor?: string;
54
+ buttonBackground?: string;
55
+ buttonTextColor?: string;
56
+ cancelButtonBg?: string;
57
+ }
58
+ /**
59
+ * Initialize the SDK with app data from the main application
60
+ * This should be called when the SDK starts
61
+ */
62
+ export declare const initializeSDK: (appData: AppData, onValidationError?: (errors: string[]) => void) => void;
63
+ /**
64
+ * Initialize the SDK with environment configuration from the main application
65
+ * This should be called to configure SDK environment settings
66
+ */
67
+ export declare const initializeEnvironment: (environmentData: EnvironmentData) => void;
68
+ /**
69
+ * Get the current app data
70
+ */
71
+ export declare const getAppData: () => AppData | null;
72
+ /**
73
+ * Get the current environment data
74
+ */
75
+ export declare const getEnvironmentData: () => EnvironmentData | null;
76
+ /**
77
+ * Check if SDK is initialized with app data
78
+ */
79
+ export declare const isSDKInitialized: () => boolean;
80
+ /**
81
+ * Check if environment is initialized
82
+ */
83
+ export declare const isEnvironmentInitialized: () => boolean;
84
+ /**
85
+ * Get specific user information for API requests
86
+ */
87
+ export declare const getUserInfoForAPI: () => {
88
+ id: string;
89
+ name: string;
90
+ dob: string;
91
+ gender: string | null | undefined;
92
+ panNumber: string | undefined;
93
+ mobileNumber: string;
94
+ email: string;
95
+ eventNotifyUrl: string | undefined;
96
+ userReferenceId: string;
97
+ address: {
98
+ line1: string | undefined;
99
+ area: string | undefined;
100
+ city: string | undefined;
101
+ state: string | undefined;
102
+ country: string | undefined;
103
+ pinCode: string | undefined;
104
+ };
105
+ bankDetails: {
106
+ accountNumber: string | undefined;
107
+ bankName: string | undefined;
108
+ ifsc: string | undefined;
109
+ accountType: string | undefined;
110
+ };
111
+ maritalStatus: string | undefined;
112
+ };
113
+ /**
114
+ * Get user demographics for interest rate calculations
115
+ */
116
+ export declare const getUserDemographics: () => {
117
+ age: number;
118
+ isSeniorCitizen: boolean;
119
+ isWomenDepositor: boolean;
120
+ gender: string | null | undefined;
121
+ maritalStatus: string | undefined;
122
+ dob: string;
123
+ };
124
+ /**
125
+ * Validate app data
126
+ */
127
+ export declare const validateAppData: (appData: AppData) => {
128
+ isValid: boolean;
129
+ errors: string[];
130
+ };
131
+ /**
132
+ * Clear app data (for testing or logout scenarios)
133
+ */
134
+ export declare const clearAppData: () => void;
135
+ /**
136
+ * Clear environment data (for testing or logout scenarios)
137
+ */
138
+ export declare const clearEnvironmentData: () => void;
139
+ /**
140
+ * Clear all data (app data and environment data)
141
+ */
142
+ export declare const clearAllData: () => void;
143
+ /**
144
+ * Set custom color overrides for the SDK theme.
145
+ * Colors defined here will override the corresponding color from the selected theme (primary/dark/etc).
146
+ * Call this before rendering the FDSDK navigator.
147
+ *
148
+ * This also forwards the same colors to Shriram and Mahindra SDKs when they are installed,
149
+ * so a single call centralizes theming across all SDKs.
150
+ */
151
+ export declare const setSDKColors: (customColors: CustomColors) => void;
152
+ /**
153
+ * Get the current custom color overrides
154
+ */
155
+ export declare const getSDKColors: () => CustomColors | null;
156
+ /**
157
+ * Clear custom color overrides
158
+ */
159
+ export declare const clearSDKColors: () => void;
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ // AppData Configuration - Data received from main app when SDK starts
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.clearSDKColors = exports.getSDKColors = exports.setSDKColors = exports.clearAllData = exports.clearEnvironmentData = exports.clearAppData = exports.validateAppData = exports.getUserDemographics = exports.getUserInfoForAPI = exports.isEnvironmentInitialized = exports.isSDKInitialized = exports.getEnvironmentData = exports.getAppData = exports.initializeEnvironment = exports.initializeSDK = void 0;
38
+ // Global app data storage
39
+ let globalAppData = null;
40
+ // Global environment data storage
41
+ let globalEnvironmentData = null;
42
+ let globalCustomColors = null;
43
+ /**
44
+ * Initialize the SDK with app data from the main application
45
+ * This should be called when the SDK starts
46
+ */
47
+ const initializeSDK = (appData, onValidationError) => {
48
+ // Validate required user identification fields
49
+ const requiredFields = [
50
+ { field: 'id', label: 'User ID' },
51
+ { field: 'name', label: 'User Name' },
52
+ { field: 'dob', label: 'Date of Birth' },
53
+ { field: 'gender', label: 'Gender' },
54
+ { field: 'mobNo', label: 'Mobile Number' },
55
+ { field: 'email', label: 'Email' },
56
+ ];
57
+ const missingFields = [];
58
+ requiredFields.forEach(({ field, label }) => {
59
+ const value = appData[field];
60
+ if (!value || (typeof value === 'string' && !value.trim())) {
61
+ missingFields.push(label);
62
+ }
63
+ });
64
+ // If required fields are missing, call error handler
65
+ if (missingFields.length > 0) {
66
+ const errorMessage = `Missing required user information from main app:\n${missingFields.join(', ')}`;
67
+ if (onValidationError) {
68
+ onValidationError(missingFields);
69
+ }
70
+ throw new Error(errorMessage);
71
+ }
72
+ // Validate all fields
73
+ const validation = (0, exports.validateAppData)(appData);
74
+ if (!validation.isValid) {
75
+ if (onValidationError) {
76
+ onValidationError(validation.errors);
77
+ }
78
+ throw new Error(`App data validation failed: ${validation.errors.join(', ')}`);
79
+ }
80
+ globalAppData = appData;
81
+ // SDK initialization started
82
+ try {
83
+ // logging removed
84
+ }
85
+ catch (_a) { }
86
+ // Import and call environment logging
87
+ Promise.resolve().then(() => __importStar(require('./apiConfig'))).then(({ logEnvironmentInfo }) => {
88
+ logEnvironmentInfo();
89
+ });
90
+ };
91
+ exports.initializeSDK = initializeSDK;
92
+ /**
93
+ * Initialize the SDK with environment configuration from the main application
94
+ * This should be called to configure SDK environment settings
95
+ */
96
+ const initializeEnvironment = (environmentData) => {
97
+ globalEnvironmentData = environmentData;
98
+ // Environment initialization started
99
+ try {
100
+ // logging removed
101
+ }
102
+ catch (_a) { }
103
+ // Environment initialized
104
+ };
105
+ exports.initializeEnvironment = initializeEnvironment;
106
+ /**
107
+ * Get the current app data
108
+ */
109
+ const getAppData = () => {
110
+ return globalAppData;
111
+ };
112
+ exports.getAppData = getAppData;
113
+ /**
114
+ * Get the current environment data
115
+ */
116
+ const getEnvironmentData = () => {
117
+ return globalEnvironmentData;
118
+ };
119
+ exports.getEnvironmentData = getEnvironmentData;
120
+ /**
121
+ * Check if SDK is initialized with app data
122
+ */
123
+ const isSDKInitialized = () => {
124
+ return globalAppData !== null;
125
+ };
126
+ exports.isSDKInitialized = isSDKInitialized;
127
+ /**
128
+ * Check if environment is initialized
129
+ */
130
+ const isEnvironmentInitialized = () => {
131
+ return globalEnvironmentData !== null;
132
+ };
133
+ exports.isEnvironmentInitialized = isEnvironmentInitialized;
134
+ /**
135
+ * Get specific user information for API requests
136
+ */
137
+ const getUserInfoForAPI = () => {
138
+ if (!globalAppData) {
139
+ throw new Error('SDK not initialized. Call initializeSDK() first.');
140
+ }
141
+ return {
142
+ id: globalAppData.id,
143
+ name: globalAppData.name,
144
+ dob: globalAppData.dob,
145
+ gender: globalAppData.gender,
146
+ panNumber: globalAppData.panNumber,
147
+ mobileNumber: globalAppData.mobNo,
148
+ email: globalAppData.email,
149
+ eventNotifyUrl: globalAppData.eventNotifyUrl,
150
+ userReferenceId: globalAppData.id, // Use userReferenceId or fallback to id
151
+ address: {
152
+ line1: globalAppData.address,
153
+ area: globalAppData.area,
154
+ city: globalAppData.city,
155
+ state: globalAppData.state,
156
+ country: globalAppData.country,
157
+ pinCode: globalAppData.pinCode,
158
+ },
159
+ bankDetails: {
160
+ accountNumber: globalAppData.accountNo,
161
+ bankName: globalAppData.nameOfBank,
162
+ ifsc: globalAppData.ifsc,
163
+ accountType: globalAppData.typeOfAccount,
164
+ },
165
+ maritalStatus: globalAppData.maritalStatus,
166
+ };
167
+ };
168
+ exports.getUserInfoForAPI = getUserInfoForAPI;
169
+ /**
170
+ * Get user demographics for interest rate calculations
171
+ */
172
+ const getUserDemographics = () => {
173
+ if (!globalAppData) {
174
+ throw new Error('SDK not initialized. Call initializeSDK() first.');
175
+ }
176
+ // Calculate age from DOB
177
+ const calculateAge = (dob) => {
178
+ const today = new Date();
179
+ const birthDate = new Date(dob);
180
+ let age = today.getFullYear() - birthDate.getFullYear();
181
+ const monthDiff = today.getMonth() - birthDate.getMonth();
182
+ if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
183
+ age--;
184
+ }
185
+ return age;
186
+ };
187
+ const age = calculateAge(globalAppData.dob);
188
+ const isSeniorCitizen = age >= 60;
189
+ const isWomenDepositor = globalAppData.gender === 'Female' || globalAppData.gender === 'female';
190
+ return {
191
+ age,
192
+ isSeniorCitizen,
193
+ isWomenDepositor,
194
+ gender: globalAppData.gender,
195
+ maritalStatus: globalAppData.maritalStatus,
196
+ dob: globalAppData.dob,
197
+ };
198
+ };
199
+ exports.getUserDemographics = getUserDemographics;
200
+ /**
201
+ * Validate app data
202
+ */
203
+ const validateAppData = (appData) => {
204
+ var _a, _b, _c, _d, _e;
205
+ const errors = [];
206
+ // Required fields validation
207
+ if (!((_a = appData.id) === null || _a === void 0 ? void 0 : _a.trim()))
208
+ errors.push('ID is required');
209
+ if (!((_b = appData.name) === null || _b === void 0 ? void 0 : _b.trim()))
210
+ errors.push('Name is required');
211
+ if (!((_c = appData.dob) === null || _c === void 0 ? void 0 : _c.trim()))
212
+ errors.push('Date of birth is required');
213
+ if (!appData.gender)
214
+ errors.push('Gender is required');
215
+ if (!((_d = appData.mobNo) === null || _d === void 0 ? void 0 : _d.trim()))
216
+ errors.push('Mobile number is required');
217
+ if (!((_e = appData.email) === null || _e === void 0 ? void 0 : _e.trim()))
218
+ errors.push('Email is required');
219
+ // Format validation (only if fields are provided)
220
+ if (appData.dob && !/^\d{4}-\d{2}-\d{2}$/.test(appData.dob)) {
221
+ errors.push('Date of birth must be in YYYY-MM-DD format');
222
+ }
223
+ if (appData.panNumber && appData.panNumber.trim() && !/^[A-Z]{5}[0-9]{4}[A-Z]{1}$/.test(appData.panNumber)) {
224
+ errors.push('PAN number must be in valid format (e.g., ABCDE1234F)');
225
+ }
226
+ if (appData.mobNo && !/^[6-9]\d{9}$/.test(appData.mobNo)) {
227
+ errors.push('Mobile number must be 10 digits starting with 6-9');
228
+ }
229
+ if (appData.email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(appData.email)) {
230
+ errors.push('Email must be in valid format');
231
+ }
232
+ if (appData.ifsc && appData.ifsc.trim() && !/^[A-Z]{4}0[A-Z0-9]{6}$/.test(appData.ifsc)) {
233
+ errors.push('IFSC code must be in valid format (e.g., SBIN0001234)');
234
+ }
235
+ return {
236
+ isValid: errors.length === 0,
237
+ errors,
238
+ };
239
+ };
240
+ exports.validateAppData = validateAppData;
241
+ /**
242
+ * Clear app data (for testing or logout scenarios)
243
+ */
244
+ const clearAppData = () => {
245
+ globalAppData = null;
246
+ };
247
+ exports.clearAppData = clearAppData;
248
+ /**
249
+ * Clear environment data (for testing or logout scenarios)
250
+ */
251
+ const clearEnvironmentData = () => {
252
+ globalEnvironmentData = null;
253
+ };
254
+ exports.clearEnvironmentData = clearEnvironmentData;
255
+ /**
256
+ * Clear all data (app data and environment data)
257
+ */
258
+ const clearAllData = () => {
259
+ globalAppData = null;
260
+ globalEnvironmentData = null;
261
+ globalCustomColors = null;
262
+ };
263
+ exports.clearAllData = clearAllData;
264
+ /**
265
+ * Set custom color overrides for the SDK theme.
266
+ * Colors defined here will override the corresponding color from the selected theme (primary/dark/etc).
267
+ * Call this before rendering the FDSDK navigator.
268
+ *
269
+ * This also forwards the same colors to Shriram and Mahindra SDKs when they are installed,
270
+ * so a single call centralizes theming across all SDKs.
271
+ */
272
+ const setSDKColors = (customColors) => {
273
+ globalCustomColors = customColors;
274
+ // Best-effort: propagate to external SDKs when they are available
275
+ try {
276
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
277
+ const shriram = require('@finspringinnovations/shriramsdk');
278
+ if (shriram && typeof shriram.setSDKColors === 'function') {
279
+ shriram.setSDKColors(customColors);
280
+ }
281
+ }
282
+ catch (_a) {
283
+ // Ignore if Shriram SDK is not installed
284
+ }
285
+ try {
286
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
287
+ const mahindra = require('@finspringinnovations/mahindrasdk');
288
+ if (mahindra && typeof mahindra.setSDKColors === 'function') {
289
+ mahindra.setSDKColors(customColors);
290
+ }
291
+ }
292
+ catch (_b) {
293
+ // Ignore if Mahindra SDK is not installed
294
+ }
295
+ };
296
+ exports.setSDKColors = setSDKColors;
297
+ /**
298
+ * Get the current custom color overrides
299
+ */
300
+ const getSDKColors = () => {
301
+ return globalCustomColors;
302
+ };
303
+ exports.getSDKColors = getSDKColors;
304
+ /**
305
+ * Clear custom color overrides
306
+ */
307
+ const clearSDKColors = () => {
308
+ globalCustomColors = null;
309
+ };
310
+ exports.clearSDKColors = clearSDKColors;
@@ -0,0 +1,21 @@
1
+ import { EncryptionConfig } from '../utils/encryption';
2
+ export declare const getEncryptionConfig: () => EncryptionConfig;
3
+ export declare const getEncryptionConfigs: () => {
4
+ development: {
5
+ secretKey: string;
6
+ algorithm: "AES";
7
+ ivLength: number;
8
+ };
9
+ staging: {
10
+ secretKey: string;
11
+ algorithm: "AES";
12
+ ivLength: number;
13
+ };
14
+ production: {
15
+ secretKey: string;
16
+ algorithm: "AES";
17
+ ivLength: number;
18
+ };
19
+ };
20
+ export declare const getEnvironmentConfig: (env?: "development" | "staging" | "production") => EncryptionConfig;
21
+ export declare const validateEncryptionConfig: (config: EncryptionConfig) => boolean;