@temboplus/afloat 0.2.1-beta.8 → 0.2.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 (125) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -207
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.d.ts +5 -4
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.esm.js +1 -1
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/lib/api/base-repository.d.ts +2 -2
  10. package/dist/lib/api/base-repository.d.ts.map +1 -0
  11. package/dist/lib/api/index.d.ts +1 -0
  12. package/dist/lib/api/index.d.ts.map +1 -0
  13. package/dist/lib/error/error.api.d.ts +3 -2
  14. package/dist/lib/error/error.api.d.ts.map +1 -0
  15. package/dist/lib/error/error.permission.d.ts +2 -1
  16. package/dist/lib/error/error.permission.d.ts.map +1 -0
  17. package/dist/lib/error/error.utils.d.ts +1 -0
  18. package/dist/lib/error/error.utils.d.ts.map +1 -0
  19. package/dist/lib/error/index.d.ts +1 -0
  20. package/dist/lib/error/index.d.ts.map +1 -0
  21. package/dist/lib/query/index.d.ts +3 -2
  22. package/dist/lib/query/index.d.ts.map +1 -0
  23. package/dist/lib/query/pagination/pagination.d.ts +1 -0
  24. package/dist/lib/query/pagination/pagination.d.ts.map +1 -0
  25. package/dist/lib/query/pagination/pagination.schemas.d.ts +8 -61
  26. package/dist/lib/query/pagination/pagination.schemas.d.ts.map +1 -0
  27. package/dist/lib/query/query.builder.d.ts +10 -3
  28. package/dist/lib/query/query.builder.d.ts.map +1 -0
  29. package/dist/lib/query/query.types.d.ts +1 -0
  30. package/dist/lib/query/query.types.d.ts.map +1 -0
  31. package/dist/modules/auth/auth.contract.d.ts +10 -69
  32. package/dist/modules/auth/auth.contract.d.ts.map +1 -0
  33. package/dist/modules/auth/auth.dtos.d.ts +8 -67
  34. package/dist/modules/auth/auth.dtos.d.ts.map +1 -0
  35. package/dist/modules/auth/auth.repository.d.ts +1 -0
  36. package/dist/modules/auth/auth.repository.d.ts.map +1 -0
  37. package/dist/modules/auth/company-membership.model.d.ts +7 -86
  38. package/dist/modules/auth/company-membership.model.d.ts.map +1 -0
  39. package/dist/modules/auth/index.d.ts +3 -2
  40. package/dist/modules/auth/index.d.ts.map +1 -0
  41. package/dist/modules/auth/user.model.d.ts +26 -163
  42. package/dist/modules/auth/user.model.d.ts.map +1 -0
  43. package/dist/modules/beneficiary/beneficiary-info.model.d.ts +30 -67
  44. package/dist/modules/beneficiary/beneficiary-info.model.d.ts.map +1 -0
  45. package/dist/modules/beneficiary/beneficiary-input-handler.d.ts +3 -2
  46. package/dist/modules/beneficiary/beneficiary-input-handler.d.ts.map +1 -0
  47. package/dist/modules/beneficiary/beneficiary.api-contract.d.ts +16 -115
  48. package/dist/modules/beneficiary/beneficiary.api-contract.d.ts.map +1 -0
  49. package/dist/modules/beneficiary/beneficiary.dtos.d.ts +6 -34
  50. package/dist/modules/beneficiary/beneficiary.dtos.d.ts.map +1 -0
  51. package/dist/modules/beneficiary/beneficiary.model.d.ts +5 -27
  52. package/dist/modules/beneficiary/beneficiary.model.d.ts.map +1 -0
  53. package/dist/modules/beneficiary/beneficiary.repository.d.ts +2 -1
  54. package/dist/modules/beneficiary/beneficiary.repository.d.ts.map +1 -0
  55. package/dist/modules/beneficiary/index.d.ts +5 -4
  56. package/dist/modules/beneficiary/index.d.ts.map +1 -0
  57. package/dist/modules/login/index.d.ts +1 -0
  58. package/dist/modules/login/index.d.ts.map +1 -0
  59. package/dist/modules/login/login.api-contract.d.ts +3 -28
  60. package/dist/modules/login/login.api-contract.d.ts.map +1 -0
  61. package/dist/modules/login/login.dtos.d.ts +5 -56
  62. package/dist/modules/login/login.dtos.d.ts.map +1 -0
  63. package/dist/modules/login/login.model.d.ts +7 -34
  64. package/dist/modules/login/login.model.d.ts.map +1 -0
  65. package/dist/modules/login/login.repository.d.ts +2 -1
  66. package/dist/modules/login/login.repository.d.ts.map +1 -0
  67. package/dist/modules/login/permission.type.d.ts +1 -0
  68. package/dist/modules/login/permission.type.d.ts.map +1 -0
  69. package/dist/modules/payout/index.d.ts +3 -2
  70. package/dist/modules/payout/index.d.ts.map +1 -0
  71. package/dist/modules/payout/payout-channel-handler.d.ts +5 -4
  72. package/dist/modules/payout/payout-channel-handler.d.ts.map +1 -0
  73. package/dist/modules/payout/payout.api-contract.d.ts +78 -666
  74. package/dist/modules/payout/payout.api-contract.d.ts.map +1 -0
  75. package/dist/modules/payout/payout.dtos.d.ts +99 -506
  76. package/dist/modules/payout/payout.dtos.d.ts.map +1 -0
  77. package/dist/modules/payout/payout.model.d.ts +8 -85
  78. package/dist/modules/payout/payout.model.d.ts.map +1 -0
  79. package/dist/modules/payout/payout.query.d.ts +3 -2
  80. package/dist/modules/payout/payout.query.d.ts.map +1 -0
  81. package/dist/modules/payout/payout.repository.d.ts +7 -6
  82. package/dist/modules/payout/payout.repository.d.ts.map +1 -0
  83. package/dist/modules/profile/index.d.ts +1 -0
  84. package/dist/modules/profile/index.d.ts.map +1 -0
  85. package/dist/modules/profile/profile.api-contract.d.ts +2 -19
  86. package/dist/modules/profile/profile.api-contract.d.ts.map +1 -0
  87. package/dist/modules/profile/profile.dtos.d.ts +3 -38
  88. package/dist/modules/profile/profile.dtos.d.ts.map +1 -0
  89. package/dist/modules/profile/profile.model.d.ts +5 -42
  90. package/dist/modules/profile/profile.model.d.ts.map +1 -0
  91. package/dist/modules/profile/profile.repository.d.ts +1 -0
  92. package/dist/modules/profile/profile.repository.d.ts.map +1 -0
  93. package/dist/modules/team-member/index.d.ts +3 -2
  94. package/dist/modules/team-member/index.d.ts.map +1 -0
  95. package/dist/modules/team-member/role.model.d.ts +6 -21
  96. package/dist/modules/team-member/role.model.d.ts.map +1 -0
  97. package/dist/modules/team-member/team-member.contract.d.ts +74 -615
  98. package/dist/modules/team-member/team-member.contract.d.ts.map +1 -0
  99. package/dist/modules/team-member/team-member.dtos.d.ts +15 -162
  100. package/dist/modules/team-member/team-member.dtos.d.ts.map +1 -0
  101. package/dist/modules/team-member/team-member.model.d.ts +7 -66
  102. package/dist/modules/team-member/team-member.model.d.ts.map +1 -0
  103. package/dist/modules/team-member/team-member.repository.d.ts +3 -2
  104. package/dist/modules/team-member/team-member.repository.d.ts.map +1 -0
  105. package/dist/modules/wallet/index.d.ts +4 -2
  106. package/dist/modules/wallet/index.d.ts.map +1 -0
  107. package/dist/modules/wallet/narration.model.d.ts +3 -8
  108. package/dist/modules/wallet/narration.model.d.ts.map +1 -0
  109. package/dist/modules/wallet/statement-entry.model.d.ts +14 -131
  110. package/dist/modules/wallet/statement-entry.model.d.ts.map +1 -0
  111. package/dist/modules/wallet/wallet.contract.d.ts +17 -90
  112. package/dist/modules/wallet/wallet.contract.d.ts.map +1 -0
  113. package/dist/modules/wallet/wallet.dtos.d.ts +33 -138
  114. package/dist/modules/wallet/wallet.dtos.d.ts.map +1 -0
  115. package/dist/modules/wallet/wallet.model.d.ts +5 -26
  116. package/dist/modules/wallet/wallet.model.d.ts.map +1 -0
  117. package/dist/modules/wallet/wallet.query.d.ts +2 -1
  118. package/dist/modules/wallet/wallet.query.d.ts.map +1 -0
  119. package/dist/modules/wallet/wallet.repository.d.ts +49 -25
  120. package/dist/modules/wallet/wallet.repository.d.ts.map +1 -0
  121. package/dist/modules/wallet/wallet.timezone.d.ts +87 -0
  122. package/dist/modules/wallet/wallet.timezone.d.ts.map +1 -0
  123. package/dist/modules/wallet/wallet.utils.d.ts +3 -2
  124. package/dist/modules/wallet/wallet.utils.d.ts.map +1 -0
  125. package/package.json +40 -29
@@ -7,25 +7,9 @@ export declare const contract: {
7
7
  accountNo: z.ZodOptional<z.ZodString>;
8
8
  accountName: z.ZodOptional<z.ZodString>;
9
9
  channel: z.ZodOptional<z.ZodString>;
10
- countryCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
11
- currencyCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
12
- }, "strip", z.ZodTypeAny, {
13
- id?: string | undefined;
14
- accountNo?: string | undefined;
15
- profileId?: string | undefined;
16
- channel?: string | undefined;
17
- countryCode?: string | undefined;
18
- currencyCode?: string | undefined;
19
- accountName?: string | undefined;
20
- }, {
21
- id?: string | undefined;
22
- accountNo?: string | undefined;
23
- profileId?: string | undefined;
24
- channel?: string | undefined;
25
- countryCode?: string | undefined;
26
- currencyCode?: string | undefined;
27
- accountName?: string | undefined;
28
- }>;
10
+ countryCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
11
+ currencyCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
12
+ }, z.core.$strip>;
29
13
  method: "GET";
30
14
  path: "/";
31
15
  responses: {
@@ -35,105 +19,48 @@ export declare const contract: {
35
19
  accountNo: z.ZodString;
36
20
  accountName: z.ZodString;
37
21
  channel: z.ZodString;
38
- countryCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>;
39
- currencyCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").CurrencyCode, string | undefined>;
22
+ countryCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>>;
23
+ currencyCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").CurrencyCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").CurrencyCode, string | undefined>>;
40
24
  createdAt: z.ZodString;
41
25
  updatedAt: z.ZodString;
42
- }, "strip", z.ZodTypeAny, {
43
- createdAt: string;
44
- id: string;
45
- accountNo: string;
46
- profileId: string;
47
- updatedAt: string;
48
- channel: string;
49
- countryCode: import("@temboplus/frontend-core").ISO2CountryCode;
50
- currencyCode: import("@temboplus/frontend-core").CurrencyCode;
51
- accountName: string;
52
- }, {
53
- createdAt: string;
54
- id: string;
55
- accountNo: string;
56
- profileId: string;
57
- updatedAt: string;
58
- channel: string;
59
- accountName: string;
60
- countryCode?: string | undefined;
61
- currencyCode?: string | undefined;
62
- }>, "many">;
26
+ }, z.core.$strip>>;
63
27
  };
64
28
  };
65
29
  getBalance: {
66
30
  method: "POST";
67
31
  body: z.ZodObject<{
68
32
  accountNo: z.ZodOptional<z.ZodString>;
69
- }, "strip", z.ZodTypeAny, {
70
- accountNo?: string | undefined;
71
- }, {
72
- accountNo?: string | undefined;
73
- }>;
33
+ }, z.core.$strip>;
74
34
  path: "/balance";
75
35
  responses: {
76
36
  201: z.ZodObject<{
77
37
  availableBalance: z.ZodNumber;
78
- }, "strip", z.ZodTypeAny, {
79
- availableBalance: number;
80
- }, {
81
- availableBalance: number;
82
- }>;
38
+ }, z.core.$strip>;
83
39
  };
84
40
  };
85
41
  getStatement: {
86
42
  summary: "Get Wallet Statement";
87
43
  method: "POST";
88
44
  body: z.ZodObject<{
89
- endDate: z.ZodDate;
90
- startDate: z.ZodDate;
45
+ endDate: z.ZodString;
46
+ startDate: z.ZodString;
91
47
  accountNo: z.ZodOptional<z.ZodString>;
92
- }, "strip", z.ZodTypeAny, {
93
- startDate: Date;
94
- endDate: Date;
95
- accountNo?: string | undefined;
96
- }, {
97
- startDate: Date;
98
- endDate: Date;
99
- accountNo?: string | undefined;
100
- }>;
48
+ }, z.core.$strip>;
101
49
  path: "/statement";
102
50
  responses: {
103
51
  201: z.ZodArray<z.ZodObject<{
104
- accountNo: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
52
+ accountNo: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
105
53
  debitOrCredit: z.ZodString;
106
54
  tranRefNo: z.ZodString;
107
55
  narration: z.ZodString;
108
- txnDate: z.ZodDate;
109
- valueDate: z.ZodDate;
56
+ txnDate: z.ZodCoercedDate<unknown>;
57
+ valueDate: z.ZodCoercedDate<unknown>;
110
58
  amountCredited: z.ZodNumber;
111
59
  amountDebited: z.ZodNumber;
112
60
  balance: z.ZodNumber;
113
- currencyCode: z.ZodDefault<z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>>;
114
- }, "strip", z.ZodTypeAny, {
115
- currencyCode: string;
116
- debitOrCredit: string;
117
- tranRefNo: string;
118
- narration: string;
119
- txnDate: Date;
120
- valueDate: Date;
121
- amountCredited: number;
122
- amountDebited: number;
123
- balance: number;
124
- accountNo?: string | undefined;
125
- }, {
126
- debitOrCredit: string;
127
- tranRefNo: string;
128
- narration: string;
129
- txnDate: Date;
130
- valueDate: Date;
131
- amountCredited: number;
132
- amountDebited: number;
133
- balance: number;
134
- accountNo?: string | undefined;
135
- currencyCode?: string | undefined;
136
- }>, "many">;
61
+ currencyCode: z.ZodDefault<z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>>;
62
+ }, z.core.$strip>>;
137
63
  };
138
64
  };
139
65
  };
66
+ //# sourceMappingURL=wallet.contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.contract.d.ts","sourceRoot":"","sources":["../../../src/modules/wallet/wallet.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCnB,CAAC"}
@@ -10,31 +10,11 @@ declare const walletSchema: z.ZodObject<{
10
10
  accountNo: z.ZodString;
11
11
  accountName: z.ZodString;
12
12
  channel: z.ZodString;
13
- countryCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>;
14
- currencyCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").CurrencyCode, string | undefined>;
13
+ countryCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>>;
14
+ currencyCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").CurrencyCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").CurrencyCode, string | undefined>>;
15
15
  createdAt: z.ZodString;
16
16
  updatedAt: z.ZodString;
17
- }, "strip", z.ZodTypeAny, {
18
- createdAt: string;
19
- id: string;
20
- accountNo: string;
21
- profileId: string;
22
- updatedAt: string;
23
- channel: string;
24
- countryCode: import("@temboplus/frontend-core").ISO2CountryCode;
25
- currencyCode: import("@temboplus/frontend-core").CurrencyCode;
26
- accountName: string;
27
- }, {
28
- createdAt: string;
29
- id: string;
30
- accountNo: string;
31
- profileId: string;
32
- updatedAt: string;
33
- channel: string;
34
- accountName: string;
35
- countryCode?: string | undefined;
36
- currencyCode?: string | undefined;
37
- }>;
17
+ }, z.core.$strip>;
38
18
  /**
39
19
  * Zod schema definition for validating Wallet data structures.
40
20
  * Ensures data integrity for wallet objects, including runtime validation
@@ -46,62 +26,32 @@ declare const walletQuerySchema: z.ZodObject<{
46
26
  accountNo: z.ZodOptional<z.ZodString>;
47
27
  accountName: z.ZodOptional<z.ZodString>;
48
28
  channel: z.ZodOptional<z.ZodString>;
49
- countryCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
50
- currencyCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
51
- }, "strip", z.ZodTypeAny, {
52
- id?: string | undefined;
53
- accountNo?: string | undefined;
54
- profileId?: string | undefined;
55
- channel?: string | undefined;
56
- countryCode?: string | undefined;
57
- currencyCode?: string | undefined;
58
- accountName?: string | undefined;
59
- }, {
60
- id?: string | undefined;
61
- accountNo?: string | undefined;
62
- profileId?: string | undefined;
63
- channel?: string | undefined;
64
- countryCode?: string | undefined;
65
- currencyCode?: string | undefined;
66
- accountName?: string | undefined;
67
- }>;
29
+ countryCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
30
+ currencyCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
31
+ }, z.core.$strip>;
68
32
  /**
69
33
  * Schema definition for a statement entry.
70
34
  */
71
35
  declare const statementEntrySchema: z.ZodObject<{
72
- accountNo: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
36
+ accountNo: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
73
37
  debitOrCredit: z.ZodString;
74
38
  tranRefNo: z.ZodString;
75
39
  narration: z.ZodString;
76
- txnDate: z.ZodDate;
77
- valueDate: z.ZodDate;
40
+ txnDate: z.ZodCoercedDate<unknown>;
41
+ valueDate: z.ZodCoercedDate<unknown>;
78
42
  amountCredited: z.ZodNumber;
79
43
  amountDebited: z.ZodNumber;
80
44
  balance: z.ZodNumber;
81
- currencyCode: z.ZodDefault<z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>>;
82
- }, "strip", z.ZodTypeAny, {
83
- currencyCode: string;
84
- debitOrCredit: string;
85
- tranRefNo: string;
86
- narration: string;
87
- txnDate: Date;
88
- valueDate: Date;
89
- amountCredited: number;
90
- amountDebited: number;
91
- balance: number;
92
- accountNo?: string | undefined;
93
- }, {
94
- debitOrCredit: string;
95
- tranRefNo: string;
96
- narration: string;
97
- txnDate: Date;
98
- valueDate: Date;
99
- amountCredited: number;
100
- amountDebited: number;
101
- balance: number;
102
- accountNo?: string | undefined;
103
- currencyCode?: string | undefined;
104
- }>;
45
+ currencyCode: z.ZodDefault<z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>>;
46
+ }, z.core.$strip>;
47
+ /**
48
+ * Plain calendar date as a `YYYY-MM-DD` string. Used by endpoints that
49
+ * filter against a calendar day rather than a moment in time — e.g. the
50
+ * statement endpoint, which the server evaluates against EAT-anchored
51
+ * data. Validated by regex to avoid silently sending a full ISO
52
+ * timestamp where a date-only string is expected.
53
+ */
54
+ declare const plainDateSchema: z.ZodString;
105
55
  /**
106
56
  * Collection of wallet-related schemas for export.
107
57
  * Provides access to both wallet and statement entry validation schemas.
@@ -113,92 +63,37 @@ export declare const WalletDTOSchemas: {
113
63
  accountNo: z.ZodString;
114
64
  accountName: z.ZodString;
115
65
  channel: z.ZodString;
116
- countryCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>;
117
- currencyCode: z.ZodEffects<z.ZodDefault<z.ZodString>, import("@temboplus/frontend-core").CurrencyCode, string | undefined>;
66
+ countryCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").ISO2CountryCode, string | undefined>>;
67
+ currencyCode: z.ZodDefault<z.ZodString> & z.ZodType<import("@temboplus/frontend-core").CurrencyCode, string | undefined, z.core.$ZodTypeInternals<import("@temboplus/frontend-core").CurrencyCode, string | undefined>>;
118
68
  createdAt: z.ZodString;
119
69
  updatedAt: z.ZodString;
120
- }, "strip", z.ZodTypeAny, {
121
- createdAt: string;
122
- id: string;
123
- accountNo: string;
124
- profileId: string;
125
- updatedAt: string;
126
- channel: string;
127
- countryCode: import("@temboplus/frontend-core").ISO2CountryCode;
128
- currencyCode: import("@temboplus/frontend-core").CurrencyCode;
129
- accountName: string;
130
- }, {
131
- createdAt: string;
132
- id: string;
133
- accountNo: string;
134
- profileId: string;
135
- updatedAt: string;
136
- channel: string;
137
- accountName: string;
138
- countryCode?: string | undefined;
139
- currencyCode?: string | undefined;
140
- }>;
70
+ }, z.core.$strip>;
141
71
  walletQuery: z.ZodObject<{
142
72
  id: z.ZodOptional<z.ZodString>;
143
73
  profileId: z.ZodOptional<z.ZodString>;
144
74
  accountNo: z.ZodOptional<z.ZodString>;
145
75
  accountName: z.ZodOptional<z.ZodString>;
146
76
  channel: z.ZodOptional<z.ZodString>;
147
- countryCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
148
- currencyCode: z.ZodOptional<z.ZodEffects<z.ZodDefault<z.ZodString>, string, string | undefined>>;
149
- }, "strip", z.ZodTypeAny, {
150
- id?: string | undefined;
151
- accountNo?: string | undefined;
152
- profileId?: string | undefined;
153
- channel?: string | undefined;
154
- countryCode?: string | undefined;
155
- currencyCode?: string | undefined;
156
- accountName?: string | undefined;
157
- }, {
158
- id?: string | undefined;
159
- accountNo?: string | undefined;
160
- profileId?: string | undefined;
161
- channel?: string | undefined;
162
- countryCode?: string | undefined;
163
- currencyCode?: string | undefined;
164
- accountName?: string | undefined;
165
- }>;
77
+ countryCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
78
+ currencyCode: z.ZodOptional<z.ZodDefault<z.ZodString>>;
79
+ }, z.core.$strip>;
166
80
  statementEntry: z.ZodObject<{
167
- accountNo: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
81
+ accountNo: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
168
82
  debitOrCredit: z.ZodString;
169
83
  tranRefNo: z.ZodString;
170
84
  narration: z.ZodString;
171
- txnDate: z.ZodDate;
172
- valueDate: z.ZodDate;
85
+ txnDate: z.ZodCoercedDate<unknown>;
86
+ valueDate: z.ZodCoercedDate<unknown>;
173
87
  amountCredited: z.ZodNumber;
174
88
  amountDebited: z.ZodNumber;
175
89
  balance: z.ZodNumber;
176
- currencyCode: z.ZodDefault<z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>>;
177
- }, "strip", z.ZodTypeAny, {
178
- currencyCode: string;
179
- debitOrCredit: string;
180
- tranRefNo: string;
181
- narration: string;
182
- txnDate: Date;
183
- valueDate: Date;
184
- amountCredited: number;
185
- amountDebited: number;
186
- balance: number;
187
- accountNo?: string | undefined;
188
- }, {
189
- debitOrCredit: string;
190
- tranRefNo: string;
191
- narration: string;
192
- txnDate: Date;
193
- valueDate: Date;
194
- amountCredited: number;
195
- amountDebited: number;
196
- balance: number;
197
- accountNo?: string | undefined;
198
- currencyCode?: string | undefined;
199
- }>;
90
+ currencyCode: z.ZodDefault<z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>>;
91
+ }, z.core.$strip>;
92
+ plainDate: z.ZodString;
200
93
  };
201
94
  export type WalletDTO = z.infer<typeof walletSchema>;
202
95
  export type WalletQueryDTO = z.infer<typeof walletQuerySchema>;
203
96
  export type WalletStatementEntryDTO = z.infer<typeof statementEntrySchema>;
97
+ export type PlainDate = z.infer<typeof plainDateSchema>;
204
98
  export {};
99
+ //# sourceMappingURL=wallet.dtos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.dtos.d.ts","sourceRoot":"","sources":["../../../src/modules/wallet/wallet.dtos.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;iBA0BhB,CAAC;AAEH;;;;GAIG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;iBAwBrB,CAAC;AAUH;;GAEG;AACH,QAAA,MAAM,oBAAoB;;;;;;;;;;;iBAexB,CAAC;AAEH;;;;;;GAMG;AACH,QAAA,MAAM,eAAe,aAEnB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACrD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC/D,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC3E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type CurrencyCode, type ISO2CountryCode } from "@temboplus/frontend-core";
2
- import { WalletDTOSchemas } from "@/modules/wallet/wallet.dtos.js";
3
2
  import z from "zod";
3
+ import { WalletDTOSchemas } from "@/modules/wallet/wallet.dtos.js";
4
4
  /**
5
5
  * Zod schema for Wallet JSON serialization
6
6
  */
@@ -15,29 +15,7 @@ export declare const WalletJSONSchema: z.ZodObject<{
15
15
  createdAt: z.ZodString;
16
16
  updatedAt: z.ZodString;
17
17
  _version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
18
- }, "strip", z.ZodTypeAny, {
19
- createdAt: string;
20
- id: string;
21
- accountNo: string;
22
- _version: string;
23
- profileId: string;
24
- updatedAt: string;
25
- channel: string;
26
- countryCode: string;
27
- currencyCode: string;
28
- accountName: string;
29
- }, {
30
- createdAt: string;
31
- id: string;
32
- accountNo: string;
33
- profileId: string;
34
- updatedAt: string;
35
- channel: string;
36
- countryCode: string;
37
- currencyCode: string;
38
- accountName: string;
39
- _version?: string | undefined;
40
- }>;
18
+ }, z.z.core.$strip>;
41
19
  export type WalletJSON = z.infer<typeof WalletJSONSchema>;
42
20
  /**
43
21
  * Represents a digital Wallet entity.
@@ -123,8 +101,8 @@ export declare class Wallet {
123
101
  */
124
102
  static is(obj: unknown): obj is Wallet;
125
103
  /**
126
- * Serializes the Wallet instance to a JSON-compatible object
127
- */
104
+ * Serializes the Wallet instance to a JSON-compatible object
105
+ */
128
106
  toJSON(): WalletJSON;
129
107
  /**
130
108
  * Serializes the Wallet instance to a JSON string
@@ -139,3 +117,4 @@ export declare class Wallet {
139
117
  */
140
118
  static isWalletJSON(obj: unknown): obj is WalletJSON;
141
119
  }
120
+ //# sourceMappingURL=wallet.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.model.d.ts","sourceRoot":"","sources":["../../../src/modules/wallet/wallet.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,YAAY,EAAmB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACpH,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAkB,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;mBAW3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;OAGG;IACH,MAAM,KAAK,MAAM,IAAI,OAAO,gBAAgB,CAAC,SAAS,CAErD;IAED;;;OAGG;IACH,OAAO;IAYP;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM,GAAG,SAAS;IActB,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,WAAW,IAAI,MAAM,CAExB;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,WAAW,IAAI,eAAe,CAEjC;IACD,IAAI,YAAY,IAAI,YAAY,CAE/B;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,IAAI,CAExB;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,IAAI,CAExB;IAED;;;;OAIG;IACH,QAAQ,IAAI,OAAO;IAQnB;;;;;OAKG;IAEH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAmB1C;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM;IAwBtC;;OAEG;IACH,MAAM,IAAI,UAAU;IAepB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAkB9D;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU;CAGrD"}
@@ -1,5 +1,5 @@
1
1
  import { QueryBuilder } from "@/lib/query/index.js";
2
- import { WalletQueryDTO } from "./wallet.dtos.js";
2
+ import { type WalletQueryDTO } from "./wallet.dtos.js";
3
3
  /**
4
4
  * Wallet-specific query builder that extends the base QueryBuilder
5
5
  * and handles all possible input conversions (DTOs, URL params, etc.)
@@ -124,3 +124,4 @@ export declare class WalletQuery extends QueryBuilder {
124
124
  */
125
125
  private extractFilterValues;
126
126
  }
127
+ //# sourceMappingURL=wallet.query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.query.d.ts","sourceRoot":"","sources":["../../../src/modules/wallet/wallet.query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;;GAGG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAG3C;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,WAAW;IAI5B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,WAAW;IAKxD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW;IASjE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,eAAe,GAAG,WAAW;IAKnE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW;IAKjD;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,KAAK,EAAE,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,GACjG,WAAW;IA0Bd;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIvC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAM7C;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,SAAS,IAAI,cAAc;IAc3B;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAarC;;OAEG;IACH,cAAc,IAAI,eAAe;IAIjC;;OAEG;IACH,aAAa,IAAI,MAAM;IAMvB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW;IAM/B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAM7C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAM7C;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW;IAMjD;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW;IAQnD;;OAEG;IACH,UAAU,IAAI,OAAO;IAarB;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAe5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
@@ -1,10 +1,10 @@
1
1
  import { Amount } from "@temboplus/frontend-core";
2
+ import { BaseRepository } from "@/lib/api/base-repository.js";
2
3
  import { WalletStatementEntry } from "./statement-entry.model.js";
3
- import { Wallet } from "./wallet.model.js";
4
4
  import { contract } from "./wallet.contract.js";
5
- import { BaseRepository } from "@/lib/api/base-repository.js";
5
+ import type { WalletQueryDTO } from "./wallet.dtos.js";
6
+ import { Wallet } from "./wallet.model.js";
6
7
  import { WalletQuery } from "./wallet.query.js";
7
- import { WalletQueryDTO } from "./wallet.dtos.js";
8
8
  /**
9
9
  * Flexible query input type - supports the class, filters interface, URL params, etc.
10
10
  */
@@ -144,55 +144,66 @@ export declare class WalletRepository extends BaseRepository<typeof contract> {
144
144
  * 1. Direct wallet object (preferred for performance and currency context)
145
145
  * 2. Account number lookup (requires additional API call to determine currency)
146
146
  *
147
- * If no date range is provided, defaults to the current month.
148
- * Returns statement entries with enhanced narration objects containing payout detection
149
- * and parsing capabilities.
147
+ * The statement endpoint filters by calendar day, evaluated against
148
+ * the EAT-anchored database. Bounds are therefore *plain* date strings
149
+ * (`YYYY-MM-DD`), not full timestamps — sending a datetime gets
150
+ * rejected upstream.
151
+ *
152
+ * When `timezone` is provided (and not EAT), `range` is interpreted as
153
+ * calendar days in that zone: the SDK pads the upstream EAT request
154
+ * by ±1 day and then post-filters entries whose `valueDate` (an
155
+ * absolute instant, parsed from the API's offset-carrying ISO string)
156
+ * falls outside the caller's window when rendered in `timezone`. The
157
+ * server's own filter is on `valueDate`, so this is consistent.
150
158
  *
151
159
  * @param props - The statement request properties
152
160
  * @param props.wallet - The wallet to get statement for (preferred method)
153
161
  * @param props.accountNo - Alternative: account number to lookup wallet and fetch statement
154
- * @param props.range - Optional date range (defaults to current month)
155
- * @param props.range.startDate - Start date for statement period
156
- * @param props.range.endDate - End date for statement period
162
+ * @param props.range - Required date range. Both bounds are `YYYY-MM-DD`
163
+ * strings. Without `timezone`, they correspond to calendar days in
164
+ * EAT (unchanged legacy behavior). With `timezone`, they correspond
165
+ * to calendar days in that zone.
166
+ * @param props.range.startDate - Start of statement period (inclusive), `YYYY-MM-DD`
167
+ * @param props.range.endDate - End of statement period (inclusive), `YYYY-MM-DD`
168
+ * @param props.timezone - Optional IANA timezone id (e.g.
169
+ * `"America/New_York"`). When omitted or set to `"Africa/Nairobi"`,
170
+ * behavior is byte-identical to before this option existed.
157
171
  * @returns Promise that resolves to an array of validated WalletStatementEntry instances with Narration objects
158
172
  * @throws {Error} If neither wallet nor accountNo is provided
159
173
  * @throws {Error} If accountNo is provided but no matching wallet is found
174
+ * @throws {Error} If either `range` bound isn't a valid `YYYY-MM-DD` string
160
175
  * @throws {Error} If the statement fetch operation fails or data is invalid
161
176
  *
162
177
  * @example
163
178
  * ```typescript
164
179
  * // Method 1: Using wallet object (recommended)
165
180
  * const wallet = await repo.getWallets().then(w => w[0]);
166
- * const currentMonthEntries = await repo.getStatement({ wallet });
167
- *
168
- * // Method 2: Using account number
169
- * const entriesForAccount = await repo.getStatement({
170
- * accountNo: '123456789'
181
+ * const entries = await repo.getStatement({
182
+ * wallet,
183
+ * range: { startDate: "2024-01-01", endDate: "2024-01-31" },
171
184
  * });
172
185
  *
173
- * // Custom date range with wallet
174
- * const customRangeEntries = await repo.getStatement({
175
- * wallet,
176
- * range: {
177
- * startDate: new Date('2024-01-01'),
178
- * endDate: new Date('2024-01-31')
179
- * }
186
+ * // Method 2: Using account number
187
+ * const byAccount = await repo.getStatement({
188
+ * accountNo: '123456789',
189
+ * range: { startDate: "2024-01-01", endDate: "2024-01-31" },
180
190
  * });
181
191
  *
182
192
  * // Process payout transactions
183
- * const payoutEntries = currentMonthEntries.filter(entry => entry.isPayout);
193
+ * const payoutEntries = entries.filter(entry => entry.isPayout);
184
194
  * payoutEntries.forEach(entry => {
185
195
  * console.log(`Payout ID: ${entry.payoutId}, Amount: ${entry.amountDebited.label}`);
186
196
  * });
187
197
  * ```
188
198
  */
189
199
  getStatement(props: {
190
- range?: {
191
- startDate: Date;
192
- endDate: Date;
200
+ range: {
201
+ startDate: string;
202
+ endDate: string;
193
203
  };
194
204
  wallet?: Wallet;
195
205
  accountNo?: string;
206
+ timezone?: string;
196
207
  }): Promise<WalletStatementEntry[]>;
197
208
  /**
198
209
  * Check if a wallet exists with the given query
@@ -203,3 +214,16 @@ export declare class WalletRepository extends BaseRepository<typeof contract> {
203
214
  */
204
215
  count(query?: WalletQueryInput): Promise<number>;
205
216
  }
217
+ /**
218
+ * Format a `Date` as `YYYY-MM-DD` using its local (browser/runtime)
219
+ * Y/M/D fields. Use this to convert a picker-emitted `Date` into the
220
+ * plain-date string `getStatement` expects.
221
+ *
222
+ * The local-field choice is intentional: a `react-day-picker` (or any
223
+ * grid-based) calendar picks a wall-clock day in the runtime's clock,
224
+ * and that's the calendar day the user expects to filter against. If
225
+ * you need to bias the conversion toward a specific zone, pre-position
226
+ * the `Date` (e.g. via `@date-fns/tz`'s `TZDate`) before calling this.
227
+ */
228
+ export declare function toPlainDate(date: Date): string;
229
+ //# sourceMappingURL=wallet.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.repository.d.ts","sourceRoot":"","sources":["../../../src/modules/wallet/wallet.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,cAAc,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,eAAe,GACf,IAAI,GACJ,SAAS,CAAC;AAEd;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,OAAO,QAAQ,CAAC;IACnE;;;;;;;;;;;;;;OAcG;gBACS,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAIvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,UAAU,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCjF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,UAAU,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B7D;;;;;;;;;;;;;;;;;;;OAmBG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0DG;IACG,YAAY,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAoEnC;;OAEG;IACG,MAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD;;OAEG;IACG,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;CAIvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK9C"}