@nokinc-flur/sdk 1.0.3 → 1.0.5

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.
package/dist/index.d.ts CHANGED
@@ -15,14 +15,14 @@ type FlurClientOptions = {
15
15
  timeoutMs?: number;
16
16
  getExtraHeaders?: () => Record<string, string> | Promise<Record<string, string>>;
17
17
  };
18
- type OnboardingFallback = "SILENT_AUTH" | "OTP";
18
+ type OnboardingFallback = 'SILENT_AUTH' | 'OTP';
19
19
  type OnboardingStartInput = {
20
20
  phoneE164: string;
21
21
  appInstanceId: string;
22
- platform: "android" | "ios" | "web";
22
+ platform: 'android' | 'ios' | 'web';
23
23
  turnstileToken?: string;
24
24
  appAttestation?: {
25
- provider: "android" | "ios" | "web";
25
+ provider: 'android' | 'ios' | 'web';
26
26
  token: string;
27
27
  };
28
28
  firstName?: string;
@@ -34,7 +34,7 @@ type OnboardingStartResponse = {
34
34
  expiresInSec: number;
35
35
  fallback: OnboardingFallback;
36
36
  };
37
- type OnboardingRiskReason = "SIM_SWAP_RECENT" | "ROAMING" | "CARRIER_CHANGED";
37
+ type OnboardingRiskReason = 'SIM_SWAP_RECENT' | 'ROAMING' | 'CARRIER_CHANGED';
38
38
  type OnboardingCompleteInput = {
39
39
  requestId: string;
40
40
  code: string;
@@ -47,7 +47,7 @@ type OnboardingCompleteResponse = {
47
47
  restricted: boolean;
48
48
  risk_reasons: OnboardingRiskReason[];
49
49
  stepUpRequired?: boolean;
50
- riskStatus?: "ok" | "unavailable";
50
+ riskStatus?: 'ok' | 'unavailable';
51
51
  };
52
52
  type RegisterDeviceInput = {
53
53
  userId: string;
@@ -61,7 +61,7 @@ type RegisterDeviceInput = {
61
61
  carrier?: string;
62
62
  };
63
63
  };
64
- type DeviceTrustState = "TRUSTED_PRIMARY" | "TRUSTED_SECONDARY" | "UNVERIFIED";
64
+ type DeviceTrustState = 'TRUSTED_PRIMARY' | 'TRUSTED_SECONDARY' | 'UNVERIFIED';
65
65
  type RegisterDeviceResponse = {
66
66
  deviceId: string;
67
67
  fingerprintHash: string;
@@ -99,6 +99,8 @@ type RegisterSendDeviceKeyInput = {
99
99
  type SendChallengeInput = {
100
100
  userId: string;
101
101
  deviceId: string;
102
+ /** Optional step-up purpose. Backend defaults to 'send_money'. */
103
+ purpose?: 'send_money' | 'offline_revoke';
102
104
  };
103
105
  type SendChallengeResponse = {
104
106
  challengeId: string;
@@ -129,7 +131,7 @@ type TransferInput = {
129
131
  currency: string;
130
132
  sendAuthToken: string;
131
133
  };
132
- type TransferStatus = "SETTLED" | "PENDING_REVIEW" | "DECLINED";
134
+ type TransferStatus = 'SETTLED' | 'PENDING_REVIEW' | 'DECLINED';
133
135
  type TransferResponse = {
134
136
  transactionId: string;
135
137
  status: TransferStatus;
@@ -137,7 +139,7 @@ type TransferResponse = {
137
139
  recipientName: string;
138
140
  timestamp: string;
139
141
  };
140
- type TransactionDirection = "OUTGOING" | "INCOMING";
142
+ type TransactionDirection = 'OUTGOING' | 'INCOMING';
141
143
  type AccountActivityItem = {
142
144
  id: string;
143
145
  type: string;
@@ -173,7 +175,7 @@ type TransactionDetailResponse = {
173
175
  status: string;
174
176
  timestamp: string;
175
177
  };
176
- type PushPlatform = "ios" | "android" | "web";
178
+ type PushPlatform = 'ios' | 'android' | 'web';
177
179
  type PushRegisterInput = {
178
180
  deviceId: string;
179
181
  platform: PushPlatform;
@@ -2054,4 +2056,1335 @@ type AccountsClient = {
2054
2056
  };
2055
2057
  declare function createAccountsClient(opts: AccountsClientOptions): AccountsClient;
2056
2058
 
2057
- export { ACCOUNT_STATUSES, ACCOUNT_TYPES, ADDITIONAL_DATA_SUBFIELD, type Account, type AccountActivityItem, type AccountMembership, AccountMembershipSchema, AccountSchema, type AccountStatus, type AccountSummaryResponse, type AccountType, type AccountsClient, type AccountsClientOptions, type AddMemberInput, type AdditionalData, type ApiCredentialPublic, ApiCredentialPublicSchema, type ApiCredentialsAdminClient, type AtomicRedeemReceiptInput, type AtomicRedeemResponse, type AuthLogoutInput, type AuthRefreshInput, type AuthRefreshResponse, type AuthorizeSendWithBiometricInput, type AuthorizedOptions, type BiometricSigner, type BuildPassInput, type BuildReceiptInput, type BuildRedemptionInput, type CashNamespace, type CreateBusinessAccountInput, type CreatePayLinkResponse, type CreateTransferOptions, type DeviceTrustState, type Ed25519KeyPair, FIELD, FlurApiError, FlurCapExceededError, FlurClient, type FlurClientOptions, FlurError, type FlurErrorCode, FlurExpiredError, type FlurHandle, type FlurInitOptions, type FlurOfflineSettlementsClient, type FlurPartnerClient, type FlurPaymentEvent, FlurReplayError, type HmacFetchOptions, type IssueOfflineTokenInput, type IssuePassInput, type IssueReceiptInput, type ListPassesInput, type ListPassesResponse, type ListReceiptsInput, type ListReceiptsResponse, type ListTransactionsOptions, MEMBERSHIP_ROLES, type MembershipRole, type MerchantAccountInfo, type MintedApiCredential, MintedApiCredentialSchema, type Money, NGN_CURRENCY_CODE, NG_COUNTRY_CODE, NQRParseError, type NQRPayloadInput, type OAC, OACSchema, OAC_DEFAULT_CUMULATIVE_KOBO, OAC_DEFAULT_PER_TX_KOBO, OAC_DEFAULT_VALIDITY_MS, type OfflinePaymentAuthorization, OfflinePaymentAuthorizationSchema, type OfflinePaymentRequest, OfflinePaymentRequestSchema, type OfflineToken, OfflineTokenSchema, type OnboardingCompleteInput, type OnboardingCompleteResponse, type OnboardingFallback, type OnboardingRiskReason, type OnboardingStartInput, type OnboardingStartResponse, PARTNER_SCOPES, PASS_KINDS, PASS_STATES, PAYLOAD_FORMAT_INDICATOR_VALUE, POINT_OF_INITIATION, type ParsedNQR, type PartnerClientOptions, type PartnerScope, type PartnerSignResult, type Pass, type PassKind, type PassMetadata, PassMetadataSchema, PassSchema, type PassState, type PassesClient, type PassesClientOptions, type PaymentClaim, PaymentClaimSchema, type PinSetInput, type PinVerifyInput, type PushPlatform, type PushRegisterInput, RECEIPT_CHANNELS, RECEIPT_KINDS, REPLAY_WINDOW_MS, type Receipt, type ReceiptChannel, type ReceiptKind, type ReceiptPayload, ReceiptPayloadSchema, ReceiptSchema, type ReceiptsClient, type ReceiptsClientOptions, type RecipientResolveInput, type RecipientResolveResponse, type RedeemPassResponse, type Redemption, RedemptionSchema, type RegisterDeviceInput, type RegisterDeviceResponse, type RegisterSendDeviceKeyInput, type ResolvePayLinkResponse, type RevokePassInput, type RoutingHint, type SendChallengeInput, type SendChallengeResponse, type SendMoneyInput, type SendMoneyOptions, type SendVerifyInput, type SendVerifyResponse, type SettleResponse, SettleResponseSchema, type Settlement, SettlementSchema, type SubscribeOptions, type TLVField, type TransactionDetailResponse, type TransactionDirection, type TransactionsListResponse, type TransferInput, type TransferResponse, type TransferStatus, type UnsignedOAC, type UnsignedOfflinePaymentAuthorization, type UnsignedOfflinePaymentRequest, type UnsignedPass, type UnsignedReceipt, type UnsignedRedemption, bodySha256Hex, buildAuthorization, buildOAC, buildPass, buildPaymentRequest, buildReceipt, buildRedemption, canonicalJSONBytes, canonicalJSONStringify, canonicalRequestString, computeEncounterId, constantTimeEqual, crc16ccitt, crc16ccittHex, createAccountsClient, createApiCredentialsAdminClient, createFlurPartnerClient, createHmacFetch, createOfflineSettlementsClient, createPassesClient, createReceiptsClient, decodeAuthorizationQR, decodeBase45, decodePaymentRequestQR, encodeAuthorizationQR, encodeBase45, encodeNQR, encodePaymentRequestQR, formatAmount, generateDynamicQR, generateKeyPair, generateStaticQR, init, isPassWithinValidity, moneyMinorToNumber, normalizeE164, parseAmountInput, parseNQR, parseQR, publicKeyFromPrivate, readTLV, routingHint, sign, signAuthorization, signCanonical, signOAC, signPartnerRequest, signPass, signPaymentRequest, signReceipt, signRedemption, signRequestHMAC, verify, verifyAuthorization, verifyCanonical, verifyOAC, verifyPass, verifyPaymentRequest, verifyReceipt, verifyRedemption, verifyRequestHMAC, writeTLV };
2059
+ /**
2060
+ * Consumer-side offline payments SDK client.
2061
+ *
2062
+ * Wraps the backend `/v1/me/offline/*` routes (session-bearer auth ONLY —
2063
+ * NOT partner HMAC). These power the Flur mobile app's offline-pay flow:
2064
+ * - register/list/revoke device signing keys
2065
+ * - enable / refresh / disable offline mode (real hold + OAC issuance)
2066
+ * - read offline status (current hold + active OAC)
2067
+ * - submit a signed offline payment claim for settlement
2068
+ *
2069
+ * Schemas mirror `flur-backend/src/offline-consumer/types.ts`.
2070
+ */
2071
+
2072
+ declare const RegisterDeviceKeyInputSchema: z.ZodObject<{
2073
+ deviceId: z.ZodString;
2074
+ publicKeyHex: z.ZodString;
2075
+ }, "strip", z.ZodTypeAny, {
2076
+ deviceId: string;
2077
+ publicKeyHex: string;
2078
+ }, {
2079
+ deviceId: string;
2080
+ publicKeyHex: string;
2081
+ }>;
2082
+ type RegisterDeviceKeyInput = z.infer<typeof RegisterDeviceKeyInputSchema>;
2083
+ declare const DeviceKeyRecordSchema: z.ZodObject<{
2084
+ id: z.ZodString;
2085
+ userId: z.ZodString;
2086
+ deviceId: z.ZodString;
2087
+ publicKeyHex: z.ZodString;
2088
+ createdAtMs: z.ZodNumber;
2089
+ revokedAtMs: z.ZodNullable<z.ZodNumber>;
2090
+ }, "strip", z.ZodTypeAny, {
2091
+ userId: string;
2092
+ deviceId: string;
2093
+ id: string;
2094
+ createdAtMs: number;
2095
+ revokedAtMs: number | null;
2096
+ publicKeyHex: string;
2097
+ }, {
2098
+ userId: string;
2099
+ deviceId: string;
2100
+ id: string;
2101
+ createdAtMs: number;
2102
+ revokedAtMs: number | null;
2103
+ publicKeyHex: string;
2104
+ }>;
2105
+ type DeviceKeyRecord = z.infer<typeof DeviceKeyRecordSchema>;
2106
+ declare const ConsumerOACSchema: z.ZodObject<{
2107
+ oacId: z.ZodString;
2108
+ issuerId: z.ZodString;
2109
+ userId: z.ZodString;
2110
+ deviceId: z.ZodString;
2111
+ devicePubkeyHex: z.ZodString;
2112
+ perTxCapKobo: z.ZodNumber;
2113
+ cumulativeCapKobo: z.ZodNumber;
2114
+ currency: z.ZodString;
2115
+ validFromMs: z.ZodNumber;
2116
+ validUntilMs: z.ZodNumber;
2117
+ counterSeed: z.ZodNumber;
2118
+ issuedAtMs: z.ZodNumber;
2119
+ }, "strip", z.ZodTypeAny, {
2120
+ userId: string;
2121
+ deviceId: string;
2122
+ currency: string;
2123
+ perTxCapKobo: number;
2124
+ cumulativeCapKobo: number;
2125
+ validFromMs: number;
2126
+ validUntilMs: number;
2127
+ counterSeed: number;
2128
+ issuedAtMs: number;
2129
+ issuerId: string;
2130
+ oacId: string;
2131
+ devicePubkeyHex: string;
2132
+ }, {
2133
+ userId: string;
2134
+ deviceId: string;
2135
+ currency: string;
2136
+ perTxCapKobo: number;
2137
+ cumulativeCapKobo: number;
2138
+ validFromMs: number;
2139
+ validUntilMs: number;
2140
+ counterSeed: number;
2141
+ issuedAtMs: number;
2142
+ issuerId: string;
2143
+ oacId: string;
2144
+ devicePubkeyHex: string;
2145
+ }>;
2146
+ type ConsumerOAC = z.infer<typeof ConsumerOACSchema>;
2147
+ declare const SignedConsumerOACSchema: z.ZodObject<{
2148
+ oac: z.ZodObject<{
2149
+ oacId: z.ZodString;
2150
+ issuerId: z.ZodString;
2151
+ userId: z.ZodString;
2152
+ deviceId: z.ZodString;
2153
+ devicePubkeyHex: z.ZodString;
2154
+ perTxCapKobo: z.ZodNumber;
2155
+ cumulativeCapKobo: z.ZodNumber;
2156
+ currency: z.ZodString;
2157
+ validFromMs: z.ZodNumber;
2158
+ validUntilMs: z.ZodNumber;
2159
+ counterSeed: z.ZodNumber;
2160
+ issuedAtMs: z.ZodNumber;
2161
+ }, "strip", z.ZodTypeAny, {
2162
+ userId: string;
2163
+ deviceId: string;
2164
+ currency: string;
2165
+ perTxCapKobo: number;
2166
+ cumulativeCapKobo: number;
2167
+ validFromMs: number;
2168
+ validUntilMs: number;
2169
+ counterSeed: number;
2170
+ issuedAtMs: number;
2171
+ issuerId: string;
2172
+ oacId: string;
2173
+ devicePubkeyHex: string;
2174
+ }, {
2175
+ userId: string;
2176
+ deviceId: string;
2177
+ currency: string;
2178
+ perTxCapKobo: number;
2179
+ cumulativeCapKobo: number;
2180
+ validFromMs: number;
2181
+ validUntilMs: number;
2182
+ counterSeed: number;
2183
+ issuedAtMs: number;
2184
+ issuerId: string;
2185
+ oacId: string;
2186
+ devicePubkeyHex: string;
2187
+ }>;
2188
+ issuerSig: z.ZodString;
2189
+ issuerPublicKeyHex: z.ZodString;
2190
+ }, "strip", z.ZodTypeAny, {
2191
+ issuerSig: string;
2192
+ oac: {
2193
+ userId: string;
2194
+ deviceId: string;
2195
+ currency: string;
2196
+ perTxCapKobo: number;
2197
+ cumulativeCapKobo: number;
2198
+ validFromMs: number;
2199
+ validUntilMs: number;
2200
+ counterSeed: number;
2201
+ issuedAtMs: number;
2202
+ issuerId: string;
2203
+ oacId: string;
2204
+ devicePubkeyHex: string;
2205
+ };
2206
+ issuerPublicKeyHex: string;
2207
+ }, {
2208
+ issuerSig: string;
2209
+ oac: {
2210
+ userId: string;
2211
+ deviceId: string;
2212
+ currency: string;
2213
+ perTxCapKobo: number;
2214
+ cumulativeCapKobo: number;
2215
+ validFromMs: number;
2216
+ validUntilMs: number;
2217
+ counterSeed: number;
2218
+ issuedAtMs: number;
2219
+ issuerId: string;
2220
+ oacId: string;
2221
+ devicePubkeyHex: string;
2222
+ };
2223
+ issuerPublicKeyHex: string;
2224
+ }>;
2225
+ type SignedConsumerOAC = z.infer<typeof SignedConsumerOACSchema>;
2226
+ declare const OACRecordSchema: z.ZodObject<{
2227
+ oac: z.ZodObject<{
2228
+ oacId: z.ZodString;
2229
+ issuerId: z.ZodString;
2230
+ userId: z.ZodString;
2231
+ deviceId: z.ZodString;
2232
+ devicePubkeyHex: z.ZodString;
2233
+ perTxCapKobo: z.ZodNumber;
2234
+ cumulativeCapKobo: z.ZodNumber;
2235
+ currency: z.ZodString;
2236
+ validFromMs: z.ZodNumber;
2237
+ validUntilMs: z.ZodNumber;
2238
+ counterSeed: z.ZodNumber;
2239
+ issuedAtMs: z.ZodNumber;
2240
+ }, "strip", z.ZodTypeAny, {
2241
+ userId: string;
2242
+ deviceId: string;
2243
+ currency: string;
2244
+ perTxCapKobo: number;
2245
+ cumulativeCapKobo: number;
2246
+ validFromMs: number;
2247
+ validUntilMs: number;
2248
+ counterSeed: number;
2249
+ issuedAtMs: number;
2250
+ issuerId: string;
2251
+ oacId: string;
2252
+ devicePubkeyHex: string;
2253
+ }, {
2254
+ userId: string;
2255
+ deviceId: string;
2256
+ currency: string;
2257
+ perTxCapKobo: number;
2258
+ cumulativeCapKobo: number;
2259
+ validFromMs: number;
2260
+ validUntilMs: number;
2261
+ counterSeed: number;
2262
+ issuedAtMs: number;
2263
+ issuerId: string;
2264
+ oacId: string;
2265
+ devicePubkeyHex: string;
2266
+ }>;
2267
+ issuerSig: z.ZodString;
2268
+ issuerPublicKeyHex: z.ZodString;
2269
+ } & {
2270
+ currentOfflineSpentKobo: z.ZodNumber;
2271
+ status: z.ZodEnum<["active", "superseded", "expired", "revoked", "disabling", "draining", "closed"]>;
2272
+ supersededAtMs: z.ZodNullable<z.ZodNumber>;
2273
+ revokedAtMs: z.ZodNullable<z.ZodNumber>;
2274
+ holdId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2275
+ }, "strip", z.ZodTypeAny, {
2276
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2277
+ issuerSig: string;
2278
+ revokedAtMs: number | null;
2279
+ oac: {
2280
+ userId: string;
2281
+ deviceId: string;
2282
+ currency: string;
2283
+ perTxCapKobo: number;
2284
+ cumulativeCapKobo: number;
2285
+ validFromMs: number;
2286
+ validUntilMs: number;
2287
+ counterSeed: number;
2288
+ issuedAtMs: number;
2289
+ issuerId: string;
2290
+ oacId: string;
2291
+ devicePubkeyHex: string;
2292
+ };
2293
+ issuerPublicKeyHex: string;
2294
+ currentOfflineSpentKobo: number;
2295
+ supersededAtMs: number | null;
2296
+ holdId?: string | null | undefined;
2297
+ }, {
2298
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2299
+ issuerSig: string;
2300
+ revokedAtMs: number | null;
2301
+ oac: {
2302
+ userId: string;
2303
+ deviceId: string;
2304
+ currency: string;
2305
+ perTxCapKobo: number;
2306
+ cumulativeCapKobo: number;
2307
+ validFromMs: number;
2308
+ validUntilMs: number;
2309
+ counterSeed: number;
2310
+ issuedAtMs: number;
2311
+ issuerId: string;
2312
+ oacId: string;
2313
+ devicePubkeyHex: string;
2314
+ };
2315
+ issuerPublicKeyHex: string;
2316
+ currentOfflineSpentKobo: number;
2317
+ supersededAtMs: number | null;
2318
+ holdId?: string | null | undefined;
2319
+ }>;
2320
+ type OACRecord = z.infer<typeof OACRecordSchema>;
2321
+ declare const IssueOACInputSchema: z.ZodObject<{
2322
+ deviceId: z.ZodString;
2323
+ perTxCapKobo: z.ZodOptional<z.ZodNumber>;
2324
+ cumulativeCapKobo: z.ZodOptional<z.ZodNumber>;
2325
+ ttlMs: z.ZodOptional<z.ZodNumber>;
2326
+ spendableOnlineKobo: z.ZodOptional<z.ZodNumber>;
2327
+ }, "strip", z.ZodTypeAny, {
2328
+ deviceId: string;
2329
+ perTxCapKobo?: number | undefined;
2330
+ cumulativeCapKobo?: number | undefined;
2331
+ ttlMs?: number | undefined;
2332
+ spendableOnlineKobo?: number | undefined;
2333
+ }, {
2334
+ deviceId: string;
2335
+ perTxCapKobo?: number | undefined;
2336
+ cumulativeCapKobo?: number | undefined;
2337
+ ttlMs?: number | undefined;
2338
+ spendableOnlineKobo?: number | undefined;
2339
+ }>;
2340
+ type IssueOACInput = z.infer<typeof IssueOACInputSchema>;
2341
+ declare const EnableOfflineInputSchema: z.ZodObject<{
2342
+ deviceId: z.ZodString;
2343
+ amountKobo: z.ZodNumber;
2344
+ perTxCapKobo: z.ZodOptional<z.ZodNumber>;
2345
+ ttlMs: z.ZodOptional<z.ZodNumber>;
2346
+ installId: z.ZodString;
2347
+ partnerId: z.ZodOptional<z.ZodString>;
2348
+ }, "strip", z.ZodTypeAny, {
2349
+ deviceId: string;
2350
+ amountKobo: number;
2351
+ installId: string;
2352
+ perTxCapKobo?: number | undefined;
2353
+ ttlMs?: number | undefined;
2354
+ partnerId?: string | undefined;
2355
+ }, {
2356
+ deviceId: string;
2357
+ amountKobo: number;
2358
+ installId: string;
2359
+ perTxCapKobo?: number | undefined;
2360
+ ttlMs?: number | undefined;
2361
+ partnerId?: string | undefined;
2362
+ }>;
2363
+ type EnableOfflineInput = z.infer<typeof EnableOfflineInputSchema>;
2364
+ declare const DisableOfflineInputSchema: z.ZodObject<{
2365
+ deviceId: z.ZodString;
2366
+ installId: z.ZodOptional<z.ZodString>;
2367
+ claims: z.ZodOptional<z.ZodArray<z.ZodUnknown, "many">>;
2368
+ }, "strip", z.ZodTypeAny, {
2369
+ deviceId: string;
2370
+ installId?: string | undefined;
2371
+ claims?: unknown[] | undefined;
2372
+ }, {
2373
+ deviceId: string;
2374
+ installId?: string | undefined;
2375
+ claims?: unknown[] | undefined;
2376
+ }>;
2377
+ type DisableOfflineInput = z.infer<typeof DisableOfflineInputSchema>;
2378
+ declare const OfflineHoldRecordSchema: z.ZodObject<{
2379
+ holdId: z.ZodString;
2380
+ userId: z.ZodString;
2381
+ deviceId: z.ZodString;
2382
+ partnerId: z.ZodString;
2383
+ adapterKind: z.ZodString;
2384
+ externalHoldRef: z.ZodNullable<z.ZodString>;
2385
+ amountKobo: z.ZodNumber;
2386
+ capturedKobo: z.ZodNumber;
2387
+ releasedKobo: z.ZodNumber;
2388
+ remainingKobo: z.ZodNumber;
2389
+ currency: z.ZodString;
2390
+ status: z.ZodEnum<["placing", "active", "disabling", "draining", "closed", "revoked", "failed"]>;
2391
+ installId: z.ZodNullable<z.ZodString>;
2392
+ drainDeadlineMs: z.ZodNumber;
2393
+ disableRequestedAtMs: z.ZodNullable<z.ZodNumber>;
2394
+ createdAtMs: z.ZodNumber;
2395
+ closedAtMs: z.ZodNullable<z.ZodNumber>;
2396
+ isTrusted: z.ZodOptional<z.ZodBoolean>;
2397
+ }, "strip", z.ZodTypeAny, {
2398
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2399
+ userId: string;
2400
+ deviceId: string;
2401
+ currency: string;
2402
+ amountKobo: number;
2403
+ createdAtMs: number;
2404
+ holdId: string;
2405
+ installId: string | null;
2406
+ partnerId: string;
2407
+ adapterKind: string;
2408
+ externalHoldRef: string | null;
2409
+ capturedKobo: number;
2410
+ releasedKobo: number;
2411
+ remainingKobo: number;
2412
+ drainDeadlineMs: number;
2413
+ disableRequestedAtMs: number | null;
2414
+ closedAtMs: number | null;
2415
+ isTrusted?: boolean | undefined;
2416
+ }, {
2417
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2418
+ userId: string;
2419
+ deviceId: string;
2420
+ currency: string;
2421
+ amountKobo: number;
2422
+ createdAtMs: number;
2423
+ holdId: string;
2424
+ installId: string | null;
2425
+ partnerId: string;
2426
+ adapterKind: string;
2427
+ externalHoldRef: string | null;
2428
+ capturedKobo: number;
2429
+ releasedKobo: number;
2430
+ remainingKobo: number;
2431
+ drainDeadlineMs: number;
2432
+ disableRequestedAtMs: number | null;
2433
+ closedAtMs: number | null;
2434
+ isTrusted?: boolean | undefined;
2435
+ }>;
2436
+ type OfflineHoldRecord = z.infer<typeof OfflineHoldRecordSchema>;
2437
+ declare const EnableOfflineResultSchema: z.ZodObject<{
2438
+ hold: z.ZodObject<{
2439
+ holdId: z.ZodString;
2440
+ userId: z.ZodString;
2441
+ deviceId: z.ZodString;
2442
+ partnerId: z.ZodString;
2443
+ adapterKind: z.ZodString;
2444
+ externalHoldRef: z.ZodNullable<z.ZodString>;
2445
+ amountKobo: z.ZodNumber;
2446
+ capturedKobo: z.ZodNumber;
2447
+ releasedKobo: z.ZodNumber;
2448
+ remainingKobo: z.ZodNumber;
2449
+ currency: z.ZodString;
2450
+ status: z.ZodEnum<["placing", "active", "disabling", "draining", "closed", "revoked", "failed"]>;
2451
+ installId: z.ZodNullable<z.ZodString>;
2452
+ drainDeadlineMs: z.ZodNumber;
2453
+ disableRequestedAtMs: z.ZodNullable<z.ZodNumber>;
2454
+ createdAtMs: z.ZodNumber;
2455
+ closedAtMs: z.ZodNullable<z.ZodNumber>;
2456
+ isTrusted: z.ZodOptional<z.ZodBoolean>;
2457
+ }, "strip", z.ZodTypeAny, {
2458
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2459
+ userId: string;
2460
+ deviceId: string;
2461
+ currency: string;
2462
+ amountKobo: number;
2463
+ createdAtMs: number;
2464
+ holdId: string;
2465
+ installId: string | null;
2466
+ partnerId: string;
2467
+ adapterKind: string;
2468
+ externalHoldRef: string | null;
2469
+ capturedKobo: number;
2470
+ releasedKobo: number;
2471
+ remainingKobo: number;
2472
+ drainDeadlineMs: number;
2473
+ disableRequestedAtMs: number | null;
2474
+ closedAtMs: number | null;
2475
+ isTrusted?: boolean | undefined;
2476
+ }, {
2477
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2478
+ userId: string;
2479
+ deviceId: string;
2480
+ currency: string;
2481
+ amountKobo: number;
2482
+ createdAtMs: number;
2483
+ holdId: string;
2484
+ installId: string | null;
2485
+ partnerId: string;
2486
+ adapterKind: string;
2487
+ externalHoldRef: string | null;
2488
+ capturedKobo: number;
2489
+ releasedKobo: number;
2490
+ remainingKobo: number;
2491
+ drainDeadlineMs: number;
2492
+ disableRequestedAtMs: number | null;
2493
+ closedAtMs: number | null;
2494
+ isTrusted?: boolean | undefined;
2495
+ }>;
2496
+ oac: z.ZodObject<{
2497
+ oac: z.ZodObject<{
2498
+ oacId: z.ZodString;
2499
+ issuerId: z.ZodString;
2500
+ userId: z.ZodString;
2501
+ deviceId: z.ZodString;
2502
+ devicePubkeyHex: z.ZodString;
2503
+ perTxCapKobo: z.ZodNumber;
2504
+ cumulativeCapKobo: z.ZodNumber;
2505
+ currency: z.ZodString;
2506
+ validFromMs: z.ZodNumber;
2507
+ validUntilMs: z.ZodNumber;
2508
+ counterSeed: z.ZodNumber;
2509
+ issuedAtMs: z.ZodNumber;
2510
+ }, "strip", z.ZodTypeAny, {
2511
+ userId: string;
2512
+ deviceId: string;
2513
+ currency: string;
2514
+ perTxCapKobo: number;
2515
+ cumulativeCapKobo: number;
2516
+ validFromMs: number;
2517
+ validUntilMs: number;
2518
+ counterSeed: number;
2519
+ issuedAtMs: number;
2520
+ issuerId: string;
2521
+ oacId: string;
2522
+ devicePubkeyHex: string;
2523
+ }, {
2524
+ userId: string;
2525
+ deviceId: string;
2526
+ currency: string;
2527
+ perTxCapKobo: number;
2528
+ cumulativeCapKobo: number;
2529
+ validFromMs: number;
2530
+ validUntilMs: number;
2531
+ counterSeed: number;
2532
+ issuedAtMs: number;
2533
+ issuerId: string;
2534
+ oacId: string;
2535
+ devicePubkeyHex: string;
2536
+ }>;
2537
+ issuerSig: z.ZodString;
2538
+ issuerPublicKeyHex: z.ZodString;
2539
+ } & {
2540
+ currentOfflineSpentKobo: z.ZodNumber;
2541
+ status: z.ZodEnum<["active", "superseded", "expired", "revoked", "disabling", "draining", "closed"]>;
2542
+ supersededAtMs: z.ZodNullable<z.ZodNumber>;
2543
+ revokedAtMs: z.ZodNullable<z.ZodNumber>;
2544
+ holdId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2545
+ }, "strip", z.ZodTypeAny, {
2546
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2547
+ issuerSig: string;
2548
+ revokedAtMs: number | null;
2549
+ oac: {
2550
+ userId: string;
2551
+ deviceId: string;
2552
+ currency: string;
2553
+ perTxCapKobo: number;
2554
+ cumulativeCapKobo: number;
2555
+ validFromMs: number;
2556
+ validUntilMs: number;
2557
+ counterSeed: number;
2558
+ issuedAtMs: number;
2559
+ issuerId: string;
2560
+ oacId: string;
2561
+ devicePubkeyHex: string;
2562
+ };
2563
+ issuerPublicKeyHex: string;
2564
+ currentOfflineSpentKobo: number;
2565
+ supersededAtMs: number | null;
2566
+ holdId?: string | null | undefined;
2567
+ }, {
2568
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2569
+ issuerSig: string;
2570
+ revokedAtMs: number | null;
2571
+ oac: {
2572
+ userId: string;
2573
+ deviceId: string;
2574
+ currency: string;
2575
+ perTxCapKobo: number;
2576
+ cumulativeCapKobo: number;
2577
+ validFromMs: number;
2578
+ validUntilMs: number;
2579
+ counterSeed: number;
2580
+ issuedAtMs: number;
2581
+ issuerId: string;
2582
+ oacId: string;
2583
+ devicePubkeyHex: string;
2584
+ };
2585
+ issuerPublicKeyHex: string;
2586
+ currentOfflineSpentKobo: number;
2587
+ supersededAtMs: number | null;
2588
+ holdId?: string | null | undefined;
2589
+ }>;
2590
+ }, "strip", z.ZodTypeAny, {
2591
+ oac: {
2592
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2593
+ issuerSig: string;
2594
+ revokedAtMs: number | null;
2595
+ oac: {
2596
+ userId: string;
2597
+ deviceId: string;
2598
+ currency: string;
2599
+ perTxCapKobo: number;
2600
+ cumulativeCapKobo: number;
2601
+ validFromMs: number;
2602
+ validUntilMs: number;
2603
+ counterSeed: number;
2604
+ issuedAtMs: number;
2605
+ issuerId: string;
2606
+ oacId: string;
2607
+ devicePubkeyHex: string;
2608
+ };
2609
+ issuerPublicKeyHex: string;
2610
+ currentOfflineSpentKobo: number;
2611
+ supersededAtMs: number | null;
2612
+ holdId?: string | null | undefined;
2613
+ };
2614
+ hold: {
2615
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2616
+ userId: string;
2617
+ deviceId: string;
2618
+ currency: string;
2619
+ amountKobo: number;
2620
+ createdAtMs: number;
2621
+ holdId: string;
2622
+ installId: string | null;
2623
+ partnerId: string;
2624
+ adapterKind: string;
2625
+ externalHoldRef: string | null;
2626
+ capturedKobo: number;
2627
+ releasedKobo: number;
2628
+ remainingKobo: number;
2629
+ drainDeadlineMs: number;
2630
+ disableRequestedAtMs: number | null;
2631
+ closedAtMs: number | null;
2632
+ isTrusted?: boolean | undefined;
2633
+ };
2634
+ }, {
2635
+ oac: {
2636
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2637
+ issuerSig: string;
2638
+ revokedAtMs: number | null;
2639
+ oac: {
2640
+ userId: string;
2641
+ deviceId: string;
2642
+ currency: string;
2643
+ perTxCapKobo: number;
2644
+ cumulativeCapKobo: number;
2645
+ validFromMs: number;
2646
+ validUntilMs: number;
2647
+ counterSeed: number;
2648
+ issuedAtMs: number;
2649
+ issuerId: string;
2650
+ oacId: string;
2651
+ devicePubkeyHex: string;
2652
+ };
2653
+ issuerPublicKeyHex: string;
2654
+ currentOfflineSpentKobo: number;
2655
+ supersededAtMs: number | null;
2656
+ holdId?: string | null | undefined;
2657
+ };
2658
+ hold: {
2659
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2660
+ userId: string;
2661
+ deviceId: string;
2662
+ currency: string;
2663
+ amountKobo: number;
2664
+ createdAtMs: number;
2665
+ holdId: string;
2666
+ installId: string | null;
2667
+ partnerId: string;
2668
+ adapterKind: string;
2669
+ externalHoldRef: string | null;
2670
+ capturedKobo: number;
2671
+ releasedKobo: number;
2672
+ remainingKobo: number;
2673
+ drainDeadlineMs: number;
2674
+ disableRequestedAtMs: number | null;
2675
+ closedAtMs: number | null;
2676
+ isTrusted?: boolean | undefined;
2677
+ };
2678
+ }>;
2679
+ type EnableOfflineResult = z.infer<typeof EnableOfflineResultSchema>;
2680
+ declare const DisableOfflineResultSchema: z.ZodObject<{
2681
+ hold: z.ZodObject<{
2682
+ holdId: z.ZodString;
2683
+ userId: z.ZodString;
2684
+ deviceId: z.ZodString;
2685
+ partnerId: z.ZodString;
2686
+ adapterKind: z.ZodString;
2687
+ externalHoldRef: z.ZodNullable<z.ZodString>;
2688
+ amountKobo: z.ZodNumber;
2689
+ capturedKobo: z.ZodNumber;
2690
+ releasedKobo: z.ZodNumber;
2691
+ remainingKobo: z.ZodNumber;
2692
+ currency: z.ZodString;
2693
+ status: z.ZodEnum<["placing", "active", "disabling", "draining", "closed", "revoked", "failed"]>;
2694
+ installId: z.ZodNullable<z.ZodString>;
2695
+ drainDeadlineMs: z.ZodNumber;
2696
+ disableRequestedAtMs: z.ZodNullable<z.ZodNumber>;
2697
+ createdAtMs: z.ZodNumber;
2698
+ closedAtMs: z.ZodNullable<z.ZodNumber>;
2699
+ isTrusted: z.ZodOptional<z.ZodBoolean>;
2700
+ }, "strip", z.ZodTypeAny, {
2701
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2702
+ userId: string;
2703
+ deviceId: string;
2704
+ currency: string;
2705
+ amountKobo: number;
2706
+ createdAtMs: number;
2707
+ holdId: string;
2708
+ installId: string | null;
2709
+ partnerId: string;
2710
+ adapterKind: string;
2711
+ externalHoldRef: string | null;
2712
+ capturedKobo: number;
2713
+ releasedKobo: number;
2714
+ remainingKobo: number;
2715
+ drainDeadlineMs: number;
2716
+ disableRequestedAtMs: number | null;
2717
+ closedAtMs: number | null;
2718
+ isTrusted?: boolean | undefined;
2719
+ }, {
2720
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2721
+ userId: string;
2722
+ deviceId: string;
2723
+ currency: string;
2724
+ amountKobo: number;
2725
+ createdAtMs: number;
2726
+ holdId: string;
2727
+ installId: string | null;
2728
+ partnerId: string;
2729
+ adapterKind: string;
2730
+ externalHoldRef: string | null;
2731
+ capturedKobo: number;
2732
+ releasedKobo: number;
2733
+ remainingKobo: number;
2734
+ drainDeadlineMs: number;
2735
+ disableRequestedAtMs: number | null;
2736
+ closedAtMs: number | null;
2737
+ isTrusted?: boolean | undefined;
2738
+ }>;
2739
+ trusted: z.ZodBoolean;
2740
+ settledClaims: z.ZodNumber;
2741
+ }, "strip", z.ZodTypeAny, {
2742
+ hold: {
2743
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2744
+ userId: string;
2745
+ deviceId: string;
2746
+ currency: string;
2747
+ amountKobo: number;
2748
+ createdAtMs: number;
2749
+ holdId: string;
2750
+ installId: string | null;
2751
+ partnerId: string;
2752
+ adapterKind: string;
2753
+ externalHoldRef: string | null;
2754
+ capturedKobo: number;
2755
+ releasedKobo: number;
2756
+ remainingKobo: number;
2757
+ drainDeadlineMs: number;
2758
+ disableRequestedAtMs: number | null;
2759
+ closedAtMs: number | null;
2760
+ isTrusted?: boolean | undefined;
2761
+ };
2762
+ trusted: boolean;
2763
+ settledClaims: number;
2764
+ }, {
2765
+ hold: {
2766
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2767
+ userId: string;
2768
+ deviceId: string;
2769
+ currency: string;
2770
+ amountKobo: number;
2771
+ createdAtMs: number;
2772
+ holdId: string;
2773
+ installId: string | null;
2774
+ partnerId: string;
2775
+ adapterKind: string;
2776
+ externalHoldRef: string | null;
2777
+ capturedKobo: number;
2778
+ releasedKobo: number;
2779
+ remainingKobo: number;
2780
+ drainDeadlineMs: number;
2781
+ disableRequestedAtMs: number | null;
2782
+ closedAtMs: number | null;
2783
+ isTrusted?: boolean | undefined;
2784
+ };
2785
+ trusted: boolean;
2786
+ settledClaims: number;
2787
+ }>;
2788
+ type DisableOfflineResult = z.infer<typeof DisableOfflineResultSchema>;
2789
+ declare const OfflineStatusResultSchema: z.ZodObject<{
2790
+ hold: z.ZodNullable<z.ZodObject<{
2791
+ holdId: z.ZodString;
2792
+ userId: z.ZodString;
2793
+ deviceId: z.ZodString;
2794
+ partnerId: z.ZodString;
2795
+ adapterKind: z.ZodString;
2796
+ externalHoldRef: z.ZodNullable<z.ZodString>;
2797
+ amountKobo: z.ZodNumber;
2798
+ capturedKobo: z.ZodNumber;
2799
+ releasedKobo: z.ZodNumber;
2800
+ remainingKobo: z.ZodNumber;
2801
+ currency: z.ZodString;
2802
+ status: z.ZodEnum<["placing", "active", "disabling", "draining", "closed", "revoked", "failed"]>;
2803
+ installId: z.ZodNullable<z.ZodString>;
2804
+ drainDeadlineMs: z.ZodNumber;
2805
+ disableRequestedAtMs: z.ZodNullable<z.ZodNumber>;
2806
+ createdAtMs: z.ZodNumber;
2807
+ closedAtMs: z.ZodNullable<z.ZodNumber>;
2808
+ isTrusted: z.ZodOptional<z.ZodBoolean>;
2809
+ }, "strip", z.ZodTypeAny, {
2810
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2811
+ userId: string;
2812
+ deviceId: string;
2813
+ currency: string;
2814
+ amountKobo: number;
2815
+ createdAtMs: number;
2816
+ holdId: string;
2817
+ installId: string | null;
2818
+ partnerId: string;
2819
+ adapterKind: string;
2820
+ externalHoldRef: string | null;
2821
+ capturedKobo: number;
2822
+ releasedKobo: number;
2823
+ remainingKobo: number;
2824
+ drainDeadlineMs: number;
2825
+ disableRequestedAtMs: number | null;
2826
+ closedAtMs: number | null;
2827
+ isTrusted?: boolean | undefined;
2828
+ }, {
2829
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2830
+ userId: string;
2831
+ deviceId: string;
2832
+ currency: string;
2833
+ amountKobo: number;
2834
+ createdAtMs: number;
2835
+ holdId: string;
2836
+ installId: string | null;
2837
+ partnerId: string;
2838
+ adapterKind: string;
2839
+ externalHoldRef: string | null;
2840
+ capturedKobo: number;
2841
+ releasedKobo: number;
2842
+ remainingKobo: number;
2843
+ drainDeadlineMs: number;
2844
+ disableRequestedAtMs: number | null;
2845
+ closedAtMs: number | null;
2846
+ isTrusted?: boolean | undefined;
2847
+ }>>;
2848
+ active: z.ZodNullable<z.ZodObject<{
2849
+ oac: z.ZodObject<{
2850
+ oacId: z.ZodString;
2851
+ issuerId: z.ZodString;
2852
+ userId: z.ZodString;
2853
+ deviceId: z.ZodString;
2854
+ devicePubkeyHex: z.ZodString;
2855
+ perTxCapKobo: z.ZodNumber;
2856
+ cumulativeCapKobo: z.ZodNumber;
2857
+ currency: z.ZodString;
2858
+ validFromMs: z.ZodNumber;
2859
+ validUntilMs: z.ZodNumber;
2860
+ counterSeed: z.ZodNumber;
2861
+ issuedAtMs: z.ZodNumber;
2862
+ }, "strip", z.ZodTypeAny, {
2863
+ userId: string;
2864
+ deviceId: string;
2865
+ currency: string;
2866
+ perTxCapKobo: number;
2867
+ cumulativeCapKobo: number;
2868
+ validFromMs: number;
2869
+ validUntilMs: number;
2870
+ counterSeed: number;
2871
+ issuedAtMs: number;
2872
+ issuerId: string;
2873
+ oacId: string;
2874
+ devicePubkeyHex: string;
2875
+ }, {
2876
+ userId: string;
2877
+ deviceId: string;
2878
+ currency: string;
2879
+ perTxCapKobo: number;
2880
+ cumulativeCapKobo: number;
2881
+ validFromMs: number;
2882
+ validUntilMs: number;
2883
+ counterSeed: number;
2884
+ issuedAtMs: number;
2885
+ issuerId: string;
2886
+ oacId: string;
2887
+ devicePubkeyHex: string;
2888
+ }>;
2889
+ issuerSig: z.ZodString;
2890
+ issuerPublicKeyHex: z.ZodString;
2891
+ } & {
2892
+ currentOfflineSpentKobo: z.ZodNumber;
2893
+ status: z.ZodEnum<["active", "superseded", "expired", "revoked", "disabling", "draining", "closed"]>;
2894
+ supersededAtMs: z.ZodNullable<z.ZodNumber>;
2895
+ revokedAtMs: z.ZodNullable<z.ZodNumber>;
2896
+ holdId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2897
+ }, "strip", z.ZodTypeAny, {
2898
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2899
+ issuerSig: string;
2900
+ revokedAtMs: number | null;
2901
+ oac: {
2902
+ userId: string;
2903
+ deviceId: string;
2904
+ currency: string;
2905
+ perTxCapKobo: number;
2906
+ cumulativeCapKobo: number;
2907
+ validFromMs: number;
2908
+ validUntilMs: number;
2909
+ counterSeed: number;
2910
+ issuedAtMs: number;
2911
+ issuerId: string;
2912
+ oacId: string;
2913
+ devicePubkeyHex: string;
2914
+ };
2915
+ issuerPublicKeyHex: string;
2916
+ currentOfflineSpentKobo: number;
2917
+ supersededAtMs: number | null;
2918
+ holdId?: string | null | undefined;
2919
+ }, {
2920
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2921
+ issuerSig: string;
2922
+ revokedAtMs: number | null;
2923
+ oac: {
2924
+ userId: string;
2925
+ deviceId: string;
2926
+ currency: string;
2927
+ perTxCapKobo: number;
2928
+ cumulativeCapKobo: number;
2929
+ validFromMs: number;
2930
+ validUntilMs: number;
2931
+ counterSeed: number;
2932
+ issuedAtMs: number;
2933
+ issuerId: string;
2934
+ oacId: string;
2935
+ devicePubkeyHex: string;
2936
+ };
2937
+ issuerPublicKeyHex: string;
2938
+ currentOfflineSpentKobo: number;
2939
+ supersededAtMs: number | null;
2940
+ holdId?: string | null | undefined;
2941
+ }>>;
2942
+ }, "strip", z.ZodTypeAny, {
2943
+ active: {
2944
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2945
+ issuerSig: string;
2946
+ revokedAtMs: number | null;
2947
+ oac: {
2948
+ userId: string;
2949
+ deviceId: string;
2950
+ currency: string;
2951
+ perTxCapKobo: number;
2952
+ cumulativeCapKobo: number;
2953
+ validFromMs: number;
2954
+ validUntilMs: number;
2955
+ counterSeed: number;
2956
+ issuedAtMs: number;
2957
+ issuerId: string;
2958
+ oacId: string;
2959
+ devicePubkeyHex: string;
2960
+ };
2961
+ issuerPublicKeyHex: string;
2962
+ currentOfflineSpentKobo: number;
2963
+ supersededAtMs: number | null;
2964
+ holdId?: string | null | undefined;
2965
+ } | null;
2966
+ hold: {
2967
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
2968
+ userId: string;
2969
+ deviceId: string;
2970
+ currency: string;
2971
+ amountKobo: number;
2972
+ createdAtMs: number;
2973
+ holdId: string;
2974
+ installId: string | null;
2975
+ partnerId: string;
2976
+ adapterKind: string;
2977
+ externalHoldRef: string | null;
2978
+ capturedKobo: number;
2979
+ releasedKobo: number;
2980
+ remainingKobo: number;
2981
+ drainDeadlineMs: number;
2982
+ disableRequestedAtMs: number | null;
2983
+ closedAtMs: number | null;
2984
+ isTrusted?: boolean | undefined;
2985
+ } | null;
2986
+ }, {
2987
+ active: {
2988
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
2989
+ issuerSig: string;
2990
+ revokedAtMs: number | null;
2991
+ oac: {
2992
+ userId: string;
2993
+ deviceId: string;
2994
+ currency: string;
2995
+ perTxCapKobo: number;
2996
+ cumulativeCapKobo: number;
2997
+ validFromMs: number;
2998
+ validUntilMs: number;
2999
+ counterSeed: number;
3000
+ issuedAtMs: number;
3001
+ issuerId: string;
3002
+ oacId: string;
3003
+ devicePubkeyHex: string;
3004
+ };
3005
+ issuerPublicKeyHex: string;
3006
+ currentOfflineSpentKobo: number;
3007
+ supersededAtMs: number | null;
3008
+ holdId?: string | null | undefined;
3009
+ } | null;
3010
+ hold: {
3011
+ status: "active" | "revoked" | "closed" | "disabling" | "draining" | "placing" | "failed";
3012
+ userId: string;
3013
+ deviceId: string;
3014
+ currency: string;
3015
+ amountKobo: number;
3016
+ createdAtMs: number;
3017
+ holdId: string;
3018
+ installId: string | null;
3019
+ partnerId: string;
3020
+ adapterKind: string;
3021
+ externalHoldRef: string | null;
3022
+ capturedKobo: number;
3023
+ releasedKobo: number;
3024
+ remainingKobo: number;
3025
+ drainDeadlineMs: number;
3026
+ disableRequestedAtMs: number | null;
3027
+ closedAtMs: number | null;
3028
+ isTrusted?: boolean | undefined;
3029
+ } | null;
3030
+ }>;
3031
+ type OfflineStatusResult = z.infer<typeof OfflineStatusResultSchema>;
3032
+ declare const OfflineStateResultSchema: z.ZodObject<{
3033
+ active: z.ZodNullable<z.ZodObject<{
3034
+ oac: z.ZodObject<{
3035
+ oacId: z.ZodString;
3036
+ issuerId: z.ZodString;
3037
+ userId: z.ZodString;
3038
+ deviceId: z.ZodString;
3039
+ devicePubkeyHex: z.ZodString;
3040
+ perTxCapKobo: z.ZodNumber;
3041
+ cumulativeCapKobo: z.ZodNumber;
3042
+ currency: z.ZodString;
3043
+ validFromMs: z.ZodNumber;
3044
+ validUntilMs: z.ZodNumber;
3045
+ counterSeed: z.ZodNumber;
3046
+ issuedAtMs: z.ZodNumber;
3047
+ }, "strip", z.ZodTypeAny, {
3048
+ userId: string;
3049
+ deviceId: string;
3050
+ currency: string;
3051
+ perTxCapKobo: number;
3052
+ cumulativeCapKobo: number;
3053
+ validFromMs: number;
3054
+ validUntilMs: number;
3055
+ counterSeed: number;
3056
+ issuedAtMs: number;
3057
+ issuerId: string;
3058
+ oacId: string;
3059
+ devicePubkeyHex: string;
3060
+ }, {
3061
+ userId: string;
3062
+ deviceId: string;
3063
+ currency: string;
3064
+ perTxCapKobo: number;
3065
+ cumulativeCapKobo: number;
3066
+ validFromMs: number;
3067
+ validUntilMs: number;
3068
+ counterSeed: number;
3069
+ issuedAtMs: number;
3070
+ issuerId: string;
3071
+ oacId: string;
3072
+ devicePubkeyHex: string;
3073
+ }>;
3074
+ issuerSig: z.ZodString;
3075
+ issuerPublicKeyHex: z.ZodString;
3076
+ } & {
3077
+ currentOfflineSpentKobo: z.ZodNumber;
3078
+ status: z.ZodEnum<["active", "superseded", "expired", "revoked", "disabling", "draining", "closed"]>;
3079
+ supersededAtMs: z.ZodNullable<z.ZodNumber>;
3080
+ revokedAtMs: z.ZodNullable<z.ZodNumber>;
3081
+ holdId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3082
+ }, "strip", z.ZodTypeAny, {
3083
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
3084
+ issuerSig: string;
3085
+ revokedAtMs: number | null;
3086
+ oac: {
3087
+ userId: string;
3088
+ deviceId: string;
3089
+ currency: string;
3090
+ perTxCapKobo: number;
3091
+ cumulativeCapKobo: number;
3092
+ validFromMs: number;
3093
+ validUntilMs: number;
3094
+ counterSeed: number;
3095
+ issuedAtMs: number;
3096
+ issuerId: string;
3097
+ oacId: string;
3098
+ devicePubkeyHex: string;
3099
+ };
3100
+ issuerPublicKeyHex: string;
3101
+ currentOfflineSpentKobo: number;
3102
+ supersededAtMs: number | null;
3103
+ holdId?: string | null | undefined;
3104
+ }, {
3105
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
3106
+ issuerSig: string;
3107
+ revokedAtMs: number | null;
3108
+ oac: {
3109
+ userId: string;
3110
+ deviceId: string;
3111
+ currency: string;
3112
+ perTxCapKobo: number;
3113
+ cumulativeCapKobo: number;
3114
+ validFromMs: number;
3115
+ validUntilMs: number;
3116
+ counterSeed: number;
3117
+ issuedAtMs: number;
3118
+ issuerId: string;
3119
+ oacId: string;
3120
+ devicePubkeyHex: string;
3121
+ };
3122
+ issuerPublicKeyHex: string;
3123
+ currentOfflineSpentKobo: number;
3124
+ supersededAtMs: number | null;
3125
+ holdId?: string | null | undefined;
3126
+ }>>;
3127
+ }, "strip", z.ZodTypeAny, {
3128
+ active: {
3129
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
3130
+ issuerSig: string;
3131
+ revokedAtMs: number | null;
3132
+ oac: {
3133
+ userId: string;
3134
+ deviceId: string;
3135
+ currency: string;
3136
+ perTxCapKobo: number;
3137
+ cumulativeCapKobo: number;
3138
+ validFromMs: number;
3139
+ validUntilMs: number;
3140
+ counterSeed: number;
3141
+ issuedAtMs: number;
3142
+ issuerId: string;
3143
+ oacId: string;
3144
+ devicePubkeyHex: string;
3145
+ };
3146
+ issuerPublicKeyHex: string;
3147
+ currentOfflineSpentKobo: number;
3148
+ supersededAtMs: number | null;
3149
+ holdId?: string | null | undefined;
3150
+ } | null;
3151
+ }, {
3152
+ active: {
3153
+ status: "active" | "expired" | "revoked" | "closed" | "superseded" | "disabling" | "draining";
3154
+ issuerSig: string;
3155
+ revokedAtMs: number | null;
3156
+ oac: {
3157
+ userId: string;
3158
+ deviceId: string;
3159
+ currency: string;
3160
+ perTxCapKobo: number;
3161
+ cumulativeCapKobo: number;
3162
+ validFromMs: number;
3163
+ validUntilMs: number;
3164
+ counterSeed: number;
3165
+ issuedAtMs: number;
3166
+ issuerId: string;
3167
+ oacId: string;
3168
+ devicePubkeyHex: string;
3169
+ };
3170
+ issuerPublicKeyHex: string;
3171
+ currentOfflineSpentKobo: number;
3172
+ supersededAtMs: number | null;
3173
+ holdId?: string | null | undefined;
3174
+ } | null;
3175
+ }>;
3176
+ type OfflineStateResult = z.infer<typeof OfflineStateResultSchema>;
3177
+ declare const ConsumerPaymentClaimSchema: z.ZodObject<{
3178
+ oacId: z.ZodString;
3179
+ encounterId: z.ZodOptional<z.ZodString>;
3180
+ payerUserId: z.ZodString;
3181
+ payeeUserId: z.ZodString;
3182
+ payerDeviceId: z.ZodString;
3183
+ payerNonce: z.ZodString;
3184
+ payeeNonce: z.ZodString;
3185
+ amountKobo: z.ZodNumber;
3186
+ currency: z.ZodDefault<z.ZodString>;
3187
+ occurredAtMs: z.ZodNumber;
3188
+ completedAtMs: z.ZodOptional<z.ZodNumber>;
3189
+ contextId: z.ZodOptional<z.ZodString>;
3190
+ payerPubkeyHex: z.ZodString;
3191
+ payerSignature: z.ZodString;
3192
+ payeePubkeyHex: z.ZodOptional<z.ZodString>;
3193
+ payeeSignature: z.ZodOptional<z.ZodString>;
3194
+ }, "strip", z.ZodTypeAny, {
3195
+ currency: string;
3196
+ amountKobo: number;
3197
+ payerUserId: string;
3198
+ payeeUserId: string;
3199
+ payerNonce: string;
3200
+ payeeNonce: string;
3201
+ occurredAtMs: number;
3202
+ payerSignature: string;
3203
+ oacId: string;
3204
+ payerDeviceId: string;
3205
+ payerPubkeyHex: string;
3206
+ encounterId?: string | undefined;
3207
+ completedAtMs?: number | undefined;
3208
+ contextId?: string | undefined;
3209
+ payeeSignature?: string | undefined;
3210
+ payeePubkeyHex?: string | undefined;
3211
+ }, {
3212
+ amountKobo: number;
3213
+ payerUserId: string;
3214
+ payeeUserId: string;
3215
+ payerNonce: string;
3216
+ payeeNonce: string;
3217
+ occurredAtMs: number;
3218
+ payerSignature: string;
3219
+ oacId: string;
3220
+ payerDeviceId: string;
3221
+ payerPubkeyHex: string;
3222
+ currency?: string | undefined;
3223
+ encounterId?: string | undefined;
3224
+ completedAtMs?: number | undefined;
3225
+ contextId?: string | undefined;
3226
+ payeeSignature?: string | undefined;
3227
+ payeePubkeyHex?: string | undefined;
3228
+ }>;
3229
+ type ConsumerPaymentClaim = z.infer<typeof ConsumerPaymentClaimSchema>;
3230
+ declare const ConsumerSettlementSchema: z.ZodObject<{
3231
+ settlementId: z.ZodString;
3232
+ settlementKey: z.ZodString;
3233
+ encounterId: z.ZodString;
3234
+ oacId: z.ZodString;
3235
+ payerUserId: z.ZodString;
3236
+ payeeUserId: z.ZodString;
3237
+ amountKobo: z.ZodNumber;
3238
+ currency: z.ZodString;
3239
+ status: z.ZodEnum<["SETTLED", "REVIEW"]>;
3240
+ reviewReason: z.ZodNullable<z.ZodString>;
3241
+ ledgerRef: z.ZodNullable<z.ZodString>;
3242
+ issuerSig: z.ZodString;
3243
+ createdAtMs: z.ZodNumber;
3244
+ }, "strip", z.ZodTypeAny, {
3245
+ status: "SETTLED" | "REVIEW";
3246
+ currency: string;
3247
+ issuerSig: string;
3248
+ amountKobo: number;
3249
+ createdAtMs: number;
3250
+ payerUserId: string;
3251
+ encounterId: string;
3252
+ payeeUserId: string;
3253
+ settlementId: string;
3254
+ settlementKey: string;
3255
+ oacId: string;
3256
+ reviewReason: string | null;
3257
+ ledgerRef: string | null;
3258
+ }, {
3259
+ status: "SETTLED" | "REVIEW";
3260
+ currency: string;
3261
+ issuerSig: string;
3262
+ amountKobo: number;
3263
+ createdAtMs: number;
3264
+ payerUserId: string;
3265
+ encounterId: string;
3266
+ payeeUserId: string;
3267
+ settlementId: string;
3268
+ settlementKey: string;
3269
+ oacId: string;
3270
+ reviewReason: string | null;
3271
+ ledgerRef: string | null;
3272
+ }>;
3273
+ type ConsumerSettlement = z.infer<typeof ConsumerSettlementSchema>;
3274
+ declare const ConsumerSettleResultSchema: z.ZodObject<{
3275
+ settlement: z.ZodObject<{
3276
+ settlementId: z.ZodString;
3277
+ settlementKey: z.ZodString;
3278
+ encounterId: z.ZodString;
3279
+ oacId: z.ZodString;
3280
+ payerUserId: z.ZodString;
3281
+ payeeUserId: z.ZodString;
3282
+ amountKobo: z.ZodNumber;
3283
+ currency: z.ZodString;
3284
+ status: z.ZodEnum<["SETTLED", "REVIEW"]>;
3285
+ reviewReason: z.ZodNullable<z.ZodString>;
3286
+ ledgerRef: z.ZodNullable<z.ZodString>;
3287
+ issuerSig: z.ZodString;
3288
+ createdAtMs: z.ZodNumber;
3289
+ }, "strip", z.ZodTypeAny, {
3290
+ status: "SETTLED" | "REVIEW";
3291
+ currency: string;
3292
+ issuerSig: string;
3293
+ amountKobo: number;
3294
+ createdAtMs: number;
3295
+ payerUserId: string;
3296
+ encounterId: string;
3297
+ payeeUserId: string;
3298
+ settlementId: string;
3299
+ settlementKey: string;
3300
+ oacId: string;
3301
+ reviewReason: string | null;
3302
+ ledgerRef: string | null;
3303
+ }, {
3304
+ status: "SETTLED" | "REVIEW";
3305
+ currency: string;
3306
+ issuerSig: string;
3307
+ amountKobo: number;
3308
+ createdAtMs: number;
3309
+ payerUserId: string;
3310
+ encounterId: string;
3311
+ payeeUserId: string;
3312
+ settlementId: string;
3313
+ settlementKey: string;
3314
+ oacId: string;
3315
+ reviewReason: string | null;
3316
+ ledgerRef: string | null;
3317
+ }>;
3318
+ encounterId: z.ZodString;
3319
+ replayed: z.ZodBoolean;
3320
+ }, "strip", z.ZodTypeAny, {
3321
+ encounterId: string;
3322
+ settlement: {
3323
+ status: "SETTLED" | "REVIEW";
3324
+ currency: string;
3325
+ issuerSig: string;
3326
+ amountKobo: number;
3327
+ createdAtMs: number;
3328
+ payerUserId: string;
3329
+ encounterId: string;
3330
+ payeeUserId: string;
3331
+ settlementId: string;
3332
+ settlementKey: string;
3333
+ oacId: string;
3334
+ reviewReason: string | null;
3335
+ ledgerRef: string | null;
3336
+ };
3337
+ replayed: boolean;
3338
+ }, {
3339
+ encounterId: string;
3340
+ settlement: {
3341
+ status: "SETTLED" | "REVIEW";
3342
+ currency: string;
3343
+ issuerSig: string;
3344
+ amountKobo: number;
3345
+ createdAtMs: number;
3346
+ payerUserId: string;
3347
+ encounterId: string;
3348
+ payeeUserId: string;
3349
+ settlementId: string;
3350
+ settlementKey: string;
3351
+ oacId: string;
3352
+ reviewReason: string | null;
3353
+ ledgerRef: string | null;
3354
+ };
3355
+ replayed: boolean;
3356
+ }>;
3357
+ type ConsumerSettleResult = z.infer<typeof ConsumerSettleResultSchema>;
3358
+ declare const RevokeDeviceKeyInputSchema: z.ZodObject<{
3359
+ deviceId: z.ZodString;
3360
+ /** Step-up token from /api/v1/auth/send/verify with purpose='offline_revoke'. */
3361
+ sendAuthToken: z.ZodString;
3362
+ }, "strip", z.ZodTypeAny, {
3363
+ deviceId: string;
3364
+ sendAuthToken: string;
3365
+ }, {
3366
+ deviceId: string;
3367
+ sendAuthToken: string;
3368
+ }>;
3369
+ type RevokeDeviceKeyInput = z.infer<typeof RevokeDeviceKeyInputSchema>;
3370
+ type MeOfflineClientOptions = {
3371
+ baseUrl: string;
3372
+ /** Pre-configured fetch (session bearer attached upstream). */
3373
+ fetchImpl?: typeof fetch;
3374
+ };
3375
+ type MeOfflineClient = {
3376
+ registerDeviceKey: (input: RegisterDeviceKeyInput) => Promise<DeviceKeyRecord>;
3377
+ listDeviceKeys: () => Promise<{
3378
+ items: DeviceKeyRecord[];
3379
+ }>;
3380
+ revokeDeviceKey: (input: RevokeDeviceKeyInput) => Promise<void>;
3381
+ enable: (input: EnableOfflineInput) => Promise<EnableOfflineResult>;
3382
+ refresh: (input: IssueOACInput) => Promise<OACRecord>;
3383
+ disable: (input: DisableOfflineInput) => Promise<DisableOfflineResult>;
3384
+ getStatus: (deviceId?: string) => Promise<OfflineStatusResult>;
3385
+ getState: (deviceId?: string) => Promise<OfflineStateResult>;
3386
+ submitClaim: (claim: ConsumerPaymentClaim) => Promise<ConsumerSettleResult>;
3387
+ };
3388
+ declare function createMeOfflineClient(opts: MeOfflineClientOptions): MeOfflineClient;
3389
+
3390
+ export { ACCOUNT_STATUSES, ACCOUNT_TYPES, ADDITIONAL_DATA_SUBFIELD, type Account, type AccountActivityItem, type AccountMembership, AccountMembershipSchema, AccountSchema, type AccountStatus, type AccountSummaryResponse, type AccountType, type AccountsClient, type AccountsClientOptions, type AddMemberInput, type AdditionalData, type ApiCredentialPublic, ApiCredentialPublicSchema, type ApiCredentialsAdminClient, type AtomicRedeemReceiptInput, type AtomicRedeemResponse, type AuthLogoutInput, type AuthRefreshInput, type AuthRefreshResponse, type AuthorizeSendWithBiometricInput, type AuthorizedOptions, type BiometricSigner, type BuildPassInput, type BuildReceiptInput, type BuildRedemptionInput, type CashNamespace, type ConsumerOAC, type OACRecord as ConsumerOACRecord, OACRecordSchema as ConsumerOACRecordSchema, ConsumerOACSchema, type ConsumerPaymentClaim, ConsumerPaymentClaimSchema, type ConsumerSettleResult, ConsumerSettleResultSchema, type ConsumerSettlement, ConsumerSettlementSchema, type CreateBusinessAccountInput, type CreatePayLinkResponse, type CreateTransferOptions, type DeviceKeyRecord, DeviceKeyRecordSchema, type DeviceTrustState, type DisableOfflineInput, DisableOfflineInputSchema, type DisableOfflineResult, DisableOfflineResultSchema, type Ed25519KeyPair, type EnableOfflineInput, EnableOfflineInputSchema, type EnableOfflineResult, EnableOfflineResultSchema, FIELD, FlurApiError, FlurCapExceededError, FlurClient, type FlurClientOptions, FlurError, type FlurErrorCode, FlurExpiredError, type FlurHandle, type FlurInitOptions, type FlurOfflineSettlementsClient, type FlurPartnerClient, type FlurPaymentEvent, FlurReplayError, type HmacFetchOptions, type IssueOACInput, IssueOACInputSchema, type IssueOfflineTokenInput, type IssuePassInput, type IssueReceiptInput, type ListPassesInput, type ListPassesResponse, type ListReceiptsInput, type ListReceiptsResponse, type ListTransactionsOptions, MEMBERSHIP_ROLES, type MeOfflineClient, type MeOfflineClientOptions, type MembershipRole, type MerchantAccountInfo, type MintedApiCredential, MintedApiCredentialSchema, type Money, NGN_CURRENCY_CODE, NG_COUNTRY_CODE, NQRParseError, type NQRPayloadInput, type OAC, OACSchema, OAC_DEFAULT_CUMULATIVE_KOBO, OAC_DEFAULT_PER_TX_KOBO, OAC_DEFAULT_VALIDITY_MS, type OfflineHoldRecord, OfflineHoldRecordSchema, type OfflinePaymentAuthorization, OfflinePaymentAuthorizationSchema, type OfflinePaymentRequest, OfflinePaymentRequestSchema, type OfflineStateResult, OfflineStateResultSchema, type OfflineStatusResult, OfflineStatusResultSchema, type OfflineToken, OfflineTokenSchema, type OnboardingCompleteInput, type OnboardingCompleteResponse, type OnboardingFallback, type OnboardingRiskReason, type OnboardingStartInput, type OnboardingStartResponse, PARTNER_SCOPES, PASS_KINDS, PASS_STATES, PAYLOAD_FORMAT_INDICATOR_VALUE, POINT_OF_INITIATION, type ParsedNQR, type PartnerClientOptions, type PartnerScope, type PartnerSignResult, type Pass, type PassKind, type PassMetadata, PassMetadataSchema, PassSchema, type PassState, type PassesClient, type PassesClientOptions, type PaymentClaim, PaymentClaimSchema, type PinSetInput, type PinVerifyInput, type PushPlatform, type PushRegisterInput, RECEIPT_CHANNELS, RECEIPT_KINDS, REPLAY_WINDOW_MS, type Receipt, type ReceiptChannel, type ReceiptKind, type ReceiptPayload, ReceiptPayloadSchema, ReceiptSchema, type ReceiptsClient, type ReceiptsClientOptions, type RecipientResolveInput, type RecipientResolveResponse, type RedeemPassResponse, type Redemption, RedemptionSchema, type RegisterDeviceInput, type RegisterDeviceKeyInput, RegisterDeviceKeyInputSchema, type RegisterDeviceResponse, type RegisterSendDeviceKeyInput, type ResolvePayLinkResponse, type RevokeDeviceKeyInput, RevokeDeviceKeyInputSchema, type RevokePassInput, type RoutingHint, type SendChallengeInput, type SendChallengeResponse, type SendMoneyInput, type SendMoneyOptions, type SendVerifyInput, type SendVerifyResponse, type SettleResponse, SettleResponseSchema, type Settlement, SettlementSchema, type SignedConsumerOAC, SignedConsumerOACSchema, type SubscribeOptions, type TLVField, type TransactionDetailResponse, type TransactionDirection, type TransactionsListResponse, type TransferInput, type TransferResponse, type TransferStatus, type UnsignedOAC, type UnsignedOfflinePaymentAuthorization, type UnsignedOfflinePaymentRequest, type UnsignedPass, type UnsignedReceipt, type UnsignedRedemption, bodySha256Hex, buildAuthorization, buildOAC, buildPass, buildPaymentRequest, buildReceipt, buildRedemption, canonicalJSONBytes, canonicalJSONStringify, canonicalRequestString, computeEncounterId, constantTimeEqual, crc16ccitt, crc16ccittHex, createAccountsClient, createApiCredentialsAdminClient, createFlurPartnerClient, createHmacFetch, createMeOfflineClient, createOfflineSettlementsClient, createPassesClient, createReceiptsClient, decodeAuthorizationQR, decodeBase45, decodePaymentRequestQR, encodeAuthorizationQR, encodeBase45, encodeNQR, encodePaymentRequestQR, formatAmount, generateDynamicQR, generateKeyPair, generateStaticQR, init, isPassWithinValidity, moneyMinorToNumber, normalizeE164, parseAmountInput, parseNQR, parseQR, publicKeyFromPrivate, readTLV, routingHint, sign, signAuthorization, signCanonical, signOAC, signPartnerRequest, signPass, signPaymentRequest, signReceipt, signRedemption, signRequestHMAC, verify, verifyAuthorization, verifyCanonical, verifyOAC, verifyPass, verifyPaymentRequest, verifyReceipt, verifyRedemption, verifyRequestHMAC, writeTLV };