@fiatsend/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4719 @@
1
+ import { PublicClient, WalletClient } from 'viem';
2
+ import { Address, RegisterMobileParams, TransactionResult, RegisterMobileWithSignatureParams, MobileNumberNFT, KYCLevel, OfframpParams, OfframpResult, GatewayConfig, SendPaymentParams, SendToPhoneParams, CreatePaymentRequestParams, Hash, PaymentRequest, Withdrawal, PoolInfo, UserPoolPosition, VaultInfo, UserVaultPosition, CreatePayoutParams, CreateBatchPayoutParams, Payout, CreateP2POrderParams, P2POrder } from '@fiatsend/types';
3
+
4
+ /**
5
+ * Chain configurations and deployed contract addresses.
6
+ *
7
+ * Contract addresses are placeholder `0x0000...` until deployment.
8
+ * Override via `FiatsendClientConfig.contractAddresses` for testnet/mainnet.
9
+ *
10
+ * @module @fiatsend/core/config
11
+ */
12
+
13
+ /** Addresses of all deployed Fiatsend contracts on a given chain */
14
+ interface ContractAddresses {
15
+ mobileNumberNFT: Address;
16
+ gateway: Address;
17
+ paymentRouter: Address;
18
+ withdrawals: Address;
19
+ liquidityPool: Address;
20
+ vaultController: Address;
21
+ ghsFiat: Address;
22
+ /** PayoutEscrow — core B2B payout claim contract */
23
+ payoutEscrow: Address;
24
+ /** P2PExchange — peer-to-peer exchange with payment references */
25
+ p2pExchange: Address;
26
+ }
27
+ /** Full chain configuration including RPC and contract addresses */
28
+ interface ChainConfig {
29
+ chainId: number;
30
+ name: string;
31
+ rpcUrl: string;
32
+ contracts: ContractAddresses;
33
+ }
34
+ /**
35
+ * Pre-configured chain definitions.
36
+ *
37
+ * Contract addresses will be populated after deployment.
38
+ * Override any chain config with `FiatsendClientConfig.contractAddresses`.
39
+ */
40
+ declare const CHAINS: Record<string, ChainConfig>;
41
+ /**
42
+ * Looks up a ChainConfig by chain name or numeric chain ID.
43
+ *
44
+ * @param chainIdOrName - Chain name (e.g., "bsc") or numeric chain ID (e.g., 56)
45
+ * @returns ChainConfig if found
46
+ * @throws Error if the chain is not configured
47
+ */
48
+ declare function getChainConfig(chainIdOrName: string | number): ChainConfig;
49
+
50
+ /**
51
+ * IdentityResource — interactions with the MobileNumberNFT contract.
52
+ *
53
+ * Handles NFT registration (direct and gasless), KYC level queries,
54
+ * and phone-number-to-owner resolution.
55
+ *
56
+ * @module @fiatsend/core/resources/identity
57
+ */
58
+
59
+ /**
60
+ * Resource for MobileNumberNFT contract interactions.
61
+ *
62
+ * Obtained via `client.identity` on a `FiatsendClient` instance.
63
+ */
64
+ declare class IdentityResource {
65
+ private readonly publicClient;
66
+ private readonly walletClient;
67
+ private readonly contractAddress;
68
+ constructor(params: {
69
+ publicClient: PublicClient;
70
+ walletClient?: WalletClient;
71
+ contractAddress: Address;
72
+ });
73
+ private get readContract();
74
+ private requireWallet;
75
+ /**
76
+ * Mints a soulbound MobileNumber NFT for the connected wallet.
77
+ *
78
+ * @param params - Encrypted phone bytes and ISO country code
79
+ * @returns Transaction result with hash and wait() function
80
+ */
81
+ register(params: RegisterMobileParams): Promise<TransactionResult>;
82
+ /**
83
+ * Gasless NFT mint: the authorized minter submits the transaction on behalf
84
+ * of the user. The user must have previously signed the EIP-712 typed data.
85
+ *
86
+ * @param params - User address, encrypted phone, country code, deadline, and signature
87
+ * @returns Transaction result with hash and wait() function
88
+ */
89
+ registerWithSignature(params: RegisterMobileWithSignatureParams): Promise<TransactionResult>;
90
+ /**
91
+ * Returns the MobileNumber NFT data for an address, or null if not registered.
92
+ *
93
+ * @param address - Wallet address to query
94
+ */
95
+ getNFT(address: Address): Promise<MobileNumberNFT | null>;
96
+ /**
97
+ * Returns the KYC level for an address (0 if no NFT).
98
+ *
99
+ * @param address - Wallet address to query
100
+ */
101
+ getKYCLevel(address: Address): Promise<KYCLevel>;
102
+ /**
103
+ * Resolves an encrypted phone hash to the owner address.
104
+ *
105
+ * @param encryptedPhone - Encrypted phone bytes (0x-prefixed)
106
+ * @returns Owner address or null if not registered
107
+ */
108
+ getOwnerByPhone(encryptedPhone: `0x${string}`): Promise<Address | null>;
109
+ /**
110
+ * Returns the token ID for an address (null if not registered).
111
+ *
112
+ * @param address - Wallet address
113
+ */
114
+ getTokenId(address: Address): Promise<bigint | null>;
115
+ /**
116
+ * Returns the user's nonce for EIP-712 replay protection.
117
+ *
118
+ * @param address - Wallet address
119
+ */
120
+ getNonce(address: Address): Promise<bigint>;
121
+ }
122
+
123
+ /**
124
+ * GatewayResource — interactions with the FiatsendGateway contract.
125
+ *
126
+ * Handles offramp (stablecoin → fiat), onramp, token management,
127
+ * KYC status, and gateway configuration reads.
128
+ *
129
+ * @module @fiatsend/core/resources/gateway
130
+ */
131
+
132
+ /**
133
+ * Resource for FiatsendGateway contract interactions.
134
+ *
135
+ * Obtained via `client.gateway` on a `FiatsendClient` instance.
136
+ */
137
+ declare class GatewayResource {
138
+ private readonly publicClient;
139
+ private readonly walletClient;
140
+ private readonly contractAddress;
141
+ constructor(params: {
142
+ publicClient: PublicClient;
143
+ walletClient?: WalletClient;
144
+ contractAddress: Address;
145
+ });
146
+ private get readContract();
147
+ private requireWallet;
148
+ /**
149
+ * Initiates an offramp: converts a supported stablecoin to a mobile money payout.
150
+ *
151
+ * The user must:
152
+ * 1. Have a MobileNumber NFT
153
+ * 2. Pass KYC (if amount >= threshold)
154
+ * 3. Have approved the gateway to spend `params.amount` of `params.token`
155
+ *
156
+ * @param params - Token, amount, and destination phone number
157
+ * @returns Offramp result including the withdrawal ID and fees
158
+ */
159
+ offramp(params: OfframpParams): Promise<OfframpResult>;
160
+ /**
161
+ * Returns the conversion rate for a supported token.
162
+ *
163
+ * @param token - Token address
164
+ * @returns Scaled conversion rate as stored in the contract
165
+ */
166
+ getConversionRate(token: Address): Promise<bigint>;
167
+ /**
168
+ * Checks whether a token is supported by the gateway.
169
+ *
170
+ * @param token - Token address
171
+ */
172
+ isTokenSupported(token: Address): Promise<boolean>;
173
+ /**
174
+ * Checks whether a user has passed KYC verification.
175
+ *
176
+ * @param user - User address
177
+ */
178
+ isKYCPassed(user: Address): Promise<boolean>;
179
+ /**
180
+ * Returns the gateway's full configuration snapshot.
181
+ */
182
+ getConfig(): Promise<GatewayConfig>;
183
+ /**
184
+ * Returns the daily volume used by a user today.
185
+ *
186
+ * @param user - User address
187
+ */
188
+ getDailyVolume(user: Address): Promise<bigint>;
189
+ /**
190
+ * Returns the remaining daily allowance for a user.
191
+ *
192
+ * @param user - User address
193
+ */
194
+ getDailyRemaining(user: Address): Promise<bigint>;
195
+ /**
196
+ * Mints GHSFIAT for a user. Requires the caller to be an authorized onramper.
197
+ *
198
+ * @param user - Recipient address
199
+ * @param amount - Amount to mint
200
+ * @returns Transaction result
201
+ */
202
+ onramp(user: Address, amount: bigint): Promise<TransactionResult>;
203
+ }
204
+
205
+ /**
206
+ * PaymentsResource — interactions with the PaymentRouter contract.
207
+ *
208
+ * Handles direct P2P transfers (by address and by phone number)
209
+ * and the payment request lifecycle.
210
+ *
211
+ * @module @fiatsend/core/resources/payments
212
+ */
213
+
214
+ /**
215
+ * Resource for PaymentRouter contract interactions.
216
+ *
217
+ * Obtained via `client.payments` on a `FiatsendClient` instance.
218
+ */
219
+ declare class PaymentsResource {
220
+ private readonly publicClient;
221
+ private readonly walletClient;
222
+ private readonly contractAddress;
223
+ constructor(params: {
224
+ publicClient: PublicClient;
225
+ walletClient?: WalletClient;
226
+ contractAddress: Address;
227
+ });
228
+ private get readContract();
229
+ private requireWallet;
230
+ /**
231
+ * Sends tokens directly to an address.
232
+ *
233
+ * The caller must have approved `params.amount` of `params.token` to the PaymentRouter.
234
+ *
235
+ * @param params - Token, recipient address, amount, and optional memo
236
+ * @returns Transaction result
237
+ */
238
+ send(params: SendPaymentParams): Promise<TransactionResult>;
239
+ /**
240
+ * Resolves an encrypted phone hash to an address via MobileNumberNFT and sends tokens.
241
+ *
242
+ * @param params - Token, encrypted phone, amount, and optional memo
243
+ * @returns Transaction result
244
+ */
245
+ sendToPhone(params: SendToPhoneParams): Promise<TransactionResult>;
246
+ /**
247
+ * Creates a payment request — asks another address to pay you.
248
+ *
249
+ * @param params - Token, payer address, amount, and optional memo
250
+ * @returns The created request ID and transaction hash
251
+ */
252
+ createRequest(params: CreatePaymentRequestParams): Promise<{
253
+ requestId: bigint;
254
+ hash: Hash;
255
+ }>;
256
+ /**
257
+ * Pays a pending payment request.
258
+ *
259
+ * Only the `to` address on the request can call this.
260
+ * The caller must approve `request.amount` of `request.token` to the PaymentRouter.
261
+ *
262
+ * @param requestId - The payment request ID to pay
263
+ * @returns Transaction result
264
+ */
265
+ payRequest(requestId: bigint): Promise<TransactionResult>;
266
+ /**
267
+ * Cancels a pending payment request.
268
+ *
269
+ * Only the request creator (`from` address) can cancel.
270
+ *
271
+ * @param requestId - The payment request ID to cancel
272
+ * @returns Transaction result
273
+ */
274
+ cancelRequest(requestId: bigint): Promise<TransactionResult>;
275
+ /**
276
+ * Fetches a payment request by ID.
277
+ *
278
+ * @param requestId - Payment request ID
279
+ * @returns PaymentRequest data
280
+ */
281
+ getRequest(requestId: bigint): Promise<PaymentRequest>;
282
+ /**
283
+ * Returns the total number of payment requests created.
284
+ */
285
+ getRequestCount(): Promise<bigint>;
286
+ }
287
+
288
+ /**
289
+ * WithdrawalsResource — read-only interactions with the Withdrawals contract.
290
+ *
291
+ * Tracks the lifecycle of withdrawal records: pending → processing → completed/failed.
292
+ * Write operations (processWithdrawal, completeWithdrawal, failWithdrawal) are admin-only
293
+ * and not exposed in the SDK.
294
+ *
295
+ * @module @fiatsend/core/resources/withdrawals
296
+ */
297
+
298
+ /**
299
+ * Resource for Withdrawals contract read operations.
300
+ *
301
+ * Obtained via `client.withdrawals` on a `FiatsendClient` instance.
302
+ */
303
+ declare class WithdrawalsResource {
304
+ private readonly publicClient;
305
+ private readonly contractAddress;
306
+ constructor(params: {
307
+ publicClient: PublicClient;
308
+ contractAddress: Address;
309
+ });
310
+ private get contract();
311
+ /**
312
+ * Returns a withdrawal record by ID.
313
+ *
314
+ * @param id - Withdrawal ID
315
+ */
316
+ getWithdrawal(id: bigint): Promise<Withdrawal>;
317
+ /**
318
+ * Returns all withdrawal records for a user, resolved from their IDs.
319
+ *
320
+ * @param user - User address
321
+ */
322
+ getUserWithdrawals(user: Address): Promise<Withdrawal[]>;
323
+ /**
324
+ * Returns the total number of withdrawals ever created.
325
+ */
326
+ getWithdrawalCount(): Promise<bigint>;
327
+ }
328
+
329
+ /**
330
+ * LiquidityResource — interactions with the LiquidityPool contract.
331
+ *
332
+ * LP providers deposit stablecoins and earn fee rewards from the gateway.
333
+ * The pool uses a per-share reward accumulator for gas-efficient distribution.
334
+ *
335
+ * @module @fiatsend/core/resources/liquidity
336
+ */
337
+
338
+ /**
339
+ * Resource for LiquidityPool contract interactions.
340
+ *
341
+ * Obtained via `client.liquidity` on a `FiatsendClient` instance.
342
+ */
343
+ declare class LiquidityResource {
344
+ private readonly publicClient;
345
+ private readonly walletClient;
346
+ private readonly contractAddress;
347
+ constructor(params: {
348
+ publicClient: PublicClient;
349
+ walletClient?: WalletClient;
350
+ contractAddress: Address;
351
+ });
352
+ private get readContract();
353
+ private requireWallet;
354
+ /**
355
+ * Deposits stablecoins into the liquidity pool.
356
+ *
357
+ * The caller must approve `amount` of the pool's supported token to this contract.
358
+ *
359
+ * @param amount - Amount to deposit (must be >= pool minDeposit)
360
+ * @returns Transaction result
361
+ */
362
+ deposit(amount: bigint): Promise<TransactionResult>;
363
+ /**
364
+ * Withdraws stablecoins from the pool (after the lock period has elapsed).
365
+ *
366
+ * @param amount - Amount to withdraw
367
+ * @returns Transaction result
368
+ */
369
+ withdraw(amount: bigint): Promise<TransactionResult>;
370
+ /**
371
+ * Claims all pending fee rewards for the caller.
372
+ *
373
+ * @returns Transaction result
374
+ */
375
+ claimRewards(): Promise<TransactionResult>;
376
+ /**
377
+ * Returns pool-level statistics.
378
+ */
379
+ getPoolInfo(): Promise<PoolInfo>;
380
+ /**
381
+ * Returns a user's LP position including deposited balance and pending rewards.
382
+ *
383
+ * @param user - User address
384
+ */
385
+ getPosition(user: Address): Promise<UserPoolPosition>;
386
+ /**
387
+ * Returns pending rewards for a user.
388
+ *
389
+ * @param user - User address
390
+ */
391
+ getPendingRewards(user: Address): Promise<bigint>;
392
+ }
393
+
394
+ /**
395
+ * VaultsResource — interactions with the VaultController contract.
396
+ *
397
+ * Passive yield vault for stablecoin deposits.
398
+ * Yield accrues linearly: (balance × annualYieldRate × timeElapsed) / (365 days × 10000)
399
+ *
400
+ * @module @fiatsend/core/resources/vaults
401
+ */
402
+
403
+ /**
404
+ * Resource for VaultController contract interactions.
405
+ *
406
+ * Obtained via `client.vaults` on a `FiatsendClient` instance.
407
+ */
408
+ declare class VaultsResource {
409
+ private readonly publicClient;
410
+ private readonly walletClient;
411
+ private readonly contractAddress;
412
+ private readonly supportedTokenAddress;
413
+ constructor(params: {
414
+ publicClient: PublicClient;
415
+ walletClient?: WalletClient;
416
+ contractAddress: Address;
417
+ supportedTokenAddress: Address;
418
+ });
419
+ private get readContract();
420
+ private requireWallet;
421
+ /**
422
+ * Deposits stablecoins into the vault.
423
+ *
424
+ * The caller must approve `amount` of the vault's supported token to this contract.
425
+ *
426
+ * @param amount - Amount to deposit (must be >= vault minDeposit)
427
+ * @returns Transaction result
428
+ */
429
+ deposit(amount: bigint): Promise<TransactionResult>;
430
+ /**
431
+ * Withdraws stablecoins from the vault. Accrued yield is claimed automatically.
432
+ *
433
+ * @param amount - Amount to withdraw
434
+ * @returns Transaction result
435
+ */
436
+ withdraw(amount: bigint): Promise<TransactionResult>;
437
+ /**
438
+ * Claims accrued yield without withdrawing principal.
439
+ *
440
+ * @returns Transaction result
441
+ */
442
+ claimYield(): Promise<TransactionResult>;
443
+ /**
444
+ * Returns vault-level configuration.
445
+ */
446
+ getVaultInfo(): Promise<VaultInfo>;
447
+ /**
448
+ * Returns a user's vault position.
449
+ *
450
+ * @param user - User address
451
+ */
452
+ getPosition(user: Address): Promise<UserVaultPosition>;
453
+ /**
454
+ * Returns the pending yield for a user.
455
+ *
456
+ * @param user - User address
457
+ */
458
+ getPendingYield(user: Address): Promise<bigint>;
459
+ }
460
+
461
+ /**
462
+ * PayoutsResource — interactions with the PayoutEscrow contract.
463
+ *
464
+ * The PayoutEscrow is the core B2B payout contract. Businesses deposit stablecoins
465
+ * via the Fiatsend API; funds are held in escrow until the recipient claims using
466
+ * their MobileNumberNFT identity. Recipients can claim to their wallet or
467
+ * immediately offramp to mobile money in a single transaction.
468
+ *
469
+ * @module @fiatsend/core/resources/payouts
470
+ */
471
+
472
+ /**
473
+ * Resource for PayoutEscrow contract interactions.
474
+ *
475
+ * The main interface for the B2B payout claim flow:
476
+ * - Businesses create payouts (requires API authorization)
477
+ * - Recipients claim by proving their phone NFT matches
478
+ * - Recipients can optionally claim directly to mobile money in one tx
479
+ * - Businesses can refund expired unclaimed payouts
480
+ *
481
+ * Obtained via `client.payouts` on a `FiatsendClient` instance.
482
+ */
483
+ declare class PayoutsResource {
484
+ private readonly publicClient;
485
+ private readonly walletClient;
486
+ private readonly contractAddress;
487
+ constructor(params: {
488
+ publicClient: PublicClient;
489
+ walletClient?: WalletClient;
490
+ contractAddress: Address;
491
+ });
492
+ private get readContract();
493
+ private requireWallet;
494
+ private buildTxResult;
495
+ /**
496
+ * Creates a single payout in the escrow.
497
+ *
498
+ * The caller must be an authorized sender (set by the contract owner) and must
499
+ * have approved `amount` of `token` to the PayoutEscrow contract first.
500
+ *
501
+ * @param params - Payout parameters including token, amount, phone hash, and optional expiry
502
+ * @returns Transaction result
503
+ */
504
+ createPayout(params: CreatePayoutParams): Promise<TransactionResult>;
505
+ /**
506
+ * Creates multiple payouts in a single transaction (single token approval).
507
+ *
508
+ * The caller must be an authorized sender and must have approved the total sum
509
+ * of all amounts to the PayoutEscrow contract.
510
+ *
511
+ * @param params - Batch payout parameters
512
+ * @returns Transaction result
513
+ */
514
+ createBatchPayout(params: CreateBatchPayoutParams): Promise<TransactionResult>;
515
+ /**
516
+ * Claims a payout to the caller's wallet.
517
+ *
518
+ * The caller must hold a MobileNumberNFT whose phone hash matches the payout.
519
+ *
520
+ * @param payoutId - ID of the payout to claim
521
+ * @returns Transaction result
522
+ */
523
+ claim(payoutId: Hash): Promise<TransactionResult>;
524
+ /**
525
+ * Claims a payout and immediately routes funds through the gateway to mobile money.
526
+ *
527
+ * Requires the gateway to be set on the PayoutEscrow and the token to be supported.
528
+ * The caller must hold a MobileNumberNFT whose phone hash matches the payout.
529
+ *
530
+ * @param payoutId - ID of the payout to claim
531
+ * @param phoneNumber - Destination MoMo phone number (e.g., "+233241234567")
532
+ * @returns Transaction result
533
+ */
534
+ claimToMoMo(payoutId: Hash, phoneNumber: string): Promise<TransactionResult>;
535
+ /**
536
+ * Refunds an expired pending payout back to the original sender.
537
+ *
538
+ * Only the original sender or contract owner may call this. The payout must
539
+ * be past its expiry timestamp.
540
+ *
541
+ * @param payoutId - ID of the expired payout to refund
542
+ * @returns Transaction result
543
+ */
544
+ refund(payoutId: Hash): Promise<TransactionResult>;
545
+ /**
546
+ * Returns the full payout struct for a given ID.
547
+ *
548
+ * @param payoutId - ID of the payout to look up
549
+ * @returns Full Payout object with TypeScript-mapped status
550
+ */
551
+ getPayout(payoutId: Hash): Promise<Payout>;
552
+ /**
553
+ * Returns all payout IDs associated with a phone hash.
554
+ *
555
+ * @param phoneHash - keccak256 of the recipient's encrypted phone bytes
556
+ * @returns Array of payout IDs (as bytes32 hashes)
557
+ */
558
+ getPayoutsForPhone(phoneHash: Hash): Promise<Hash[]>;
559
+ /**
560
+ * Returns full payout objects that are still pending for a given phone hash.
561
+ *
562
+ * Convenience wrapper around `getPayoutsForPhone` + `getPayout` — fetches all
563
+ * payout IDs for the phone and filters to those with status 'pending'.
564
+ *
565
+ * @param phoneHash - keccak256 of the recipient's encrypted phone bytes
566
+ * @returns Array of pending Payout objects
567
+ */
568
+ getPendingPayouts(phoneHash: Hash): Promise<Payout[]>;
569
+ /**
570
+ * Returns all payouts claimable by a user based on their MobileNumberNFT phone hash.
571
+ *
572
+ * This is a convenience method: it reads the user's NFT phone hash on-chain (if
573
+ * the NFT contract is accessible via the escrow's `mobileNumberNFT` reference),
574
+ * then returns all pending payouts for that phone hash.
575
+ *
576
+ * Note: This requires the MobileNumberNFT to be queryable. If the NFT contract
577
+ * is not set, this will throw. Use `getPendingPayouts(phoneHash)` if you already
578
+ * know the phone hash.
579
+ *
580
+ * @param userAddress - Wallet address of the potential recipient
581
+ * @returns Array of pending Payout objects claimable by this user
582
+ */
583
+ getClaimablePayouts(userAddress: Address): Promise<Payout[]>;
584
+ }
585
+
586
+ /**
587
+ * P2PResource — interactions with the P2PExchange contract.
588
+ *
589
+ * Enables peer-to-peer token exchange with exact payment references for
590
+ * crypto-exchange platform auto-completion (Binance P2P, Paxful, Noones, etc.).
591
+ *
592
+ * Flow:
593
+ * 1. Maker calls `createOrder` — tokens are escrowed on-chain
594
+ * 2. Taker calls `takeOrder` — order is locked; taker pays off-chain via reference
595
+ * 3. Maker calls `confirmPayment` when off-chain payment arrives — tokens go to taker
596
+ * 4. Either party can call `disputeOrder` if there's disagreement
597
+ *
598
+ * @module @fiatsend/core/resources/p2p
599
+ */
600
+
601
+ /**
602
+ * Resource for P2PExchange contract interactions.
603
+ *
604
+ * Obtained via `client.p2p` on a `FiatsendClient` instance.
605
+ */
606
+ declare class P2PResource {
607
+ private readonly publicClient;
608
+ private readonly walletClient;
609
+ private readonly contractAddress;
610
+ constructor(params: {
611
+ publicClient: PublicClient;
612
+ walletClient?: WalletClient;
613
+ contractAddress: Address;
614
+ });
615
+ private get readContract();
616
+ private requireWallet;
617
+ private buildTxResult;
618
+ /**
619
+ * Creates a new P2P order and escrows tokens from the maker.
620
+ *
621
+ * The caller must have approved `amount` of `token` to the P2PExchange contract.
622
+ *
623
+ * @param params - Order parameters
624
+ * @returns Transaction result
625
+ */
626
+ createOrder(params: CreateP2POrderParams): Promise<TransactionResult>;
627
+ /**
628
+ * Locks an open order. Taker commits to pay via the exchange using the payment reference.
629
+ *
630
+ * Once taken, the taker must complete the off-chain payment using the exact reference
631
+ * string from the order. The maker then calls `confirmPayment` to release funds.
632
+ *
633
+ * @param orderId - ID of the order to take
634
+ * @returns Transaction result
635
+ */
636
+ takeOrder(orderId: Hash): Promise<TransactionResult>;
637
+ /**
638
+ * Confirms payment received on the exchange and releases tokens to the taker.
639
+ *
640
+ * Only the maker can call this. After confirmation, the escrowed tokens are
641
+ * transferred to the taker's wallet.
642
+ *
643
+ * @param orderId - ID of the locked order to confirm
644
+ * @returns Transaction result
645
+ */
646
+ confirmPayment(orderId: Hash): Promise<TransactionResult>;
647
+ /**
648
+ * Cancels an open (not yet taken) order and returns tokens to the maker.
649
+ *
650
+ * Only the maker can cancel, and only while the order is still open.
651
+ *
652
+ * @param orderId - ID of the open order to cancel
653
+ * @returns Transaction result
654
+ */
655
+ cancelOrder(orderId: Hash): Promise<TransactionResult>;
656
+ /**
657
+ * Raises a dispute on a locked order.
658
+ *
659
+ * Either the maker or taker can dispute. Once disputed, the order is frozen
660
+ * until the designated dispute resolver calls `resolveDispute`.
661
+ *
662
+ * @param orderId - ID of the locked order to dispute
663
+ * @returns Transaction result
664
+ */
665
+ disputeOrder(orderId: Hash): Promise<TransactionResult>;
666
+ /**
667
+ * Returns the full order struct for a given ID.
668
+ *
669
+ * @param orderId - ID of the order to look up
670
+ * @returns Full P2POrder object with TypeScript-mapped status
671
+ */
672
+ getOrder(orderId: Hash): Promise<P2POrder>;
673
+ /**
674
+ * Returns all order IDs created by a user.
675
+ *
676
+ * @param user - Wallet address of the maker
677
+ * @returns Array of order IDs (as bytes32 hashes)
678
+ */
679
+ getUserOrders(user: Address): Promise<Hash[]>;
680
+ /**
681
+ * Returns open order IDs available for taking.
682
+ *
683
+ * @param limit - Maximum number of order IDs to return (0 = all)
684
+ * @returns Array of open order IDs
685
+ */
686
+ getOpenOrders(limit?: number): Promise<Hash[]>;
687
+ /**
688
+ * Returns full order objects for all currently open orders.
689
+ *
690
+ * Convenience wrapper around `getOpenOrders` + `getOrder` — fetches all
691
+ * open order IDs and resolves each to a full P2POrder.
692
+ *
693
+ * @param limit - Maximum number of orders to fetch (0 = all)
694
+ * @returns Array of full P2POrder objects
695
+ */
696
+ getOpenOrdersDetailed(limit?: number): Promise<P2POrder[]>;
697
+ }
698
+
699
+ /**
700
+ * FiatsendClient — the main entry point for the Fiatsend SDK.
701
+ *
702
+ * Instantiate with a chain name/ID and optional viem clients to get typed
703
+ * access to all Fiatsend contract resources.
704
+ *
705
+ * @example
706
+ * ```typescript
707
+ * import { FiatsendClient } from '@fiatsend/core';
708
+ * import { createPublicClient, createWalletClient, http } from 'viem';
709
+ * import { bsc } from 'viem/chains';
710
+ *
711
+ * const publicClient = createPublicClient({ chain: bsc, transport: http() });
712
+ *
713
+ * const fiatsend = new FiatsendClient({
714
+ * chain: 'bsc',
715
+ * publicClient,
716
+ * });
717
+ *
718
+ * // Business creates a payout
719
+ * await fiatsend.payouts.createPayout({
720
+ * payoutId: '0x...',
721
+ * token: USDC_ADDRESS,
722
+ * amount: parseTokenAmount('500', 6),
723
+ * phoneHash: encodePhoneNumber('+233241234567'),
724
+ * });
725
+ *
726
+ * // Recipient claims directly to mobile money
727
+ * await fiatsend.payouts.claimToMoMo(payoutId, '+233241234567');
728
+ * ```
729
+ *
730
+ * @module @fiatsend/core/client
731
+ */
732
+
733
+ /** Configuration for creating a FiatsendClient */
734
+ interface FiatsendClientConfig {
735
+ /**
736
+ * Chain to connect to. Accepts a chain name (e.g., "bsc", "polygon")
737
+ * or a numeric chain ID (e.g., 56).
738
+ */
739
+ chain: string | number;
740
+ /**
741
+ * Optional RPC URL override. If omitted, uses the default RPC from CHAINS config.
742
+ */
743
+ rpcUrl?: string;
744
+ /**
745
+ * An existing viem PublicClient for read operations.
746
+ * If omitted, one is created automatically using the configured RPC URL.
747
+ */
748
+ publicClient?: PublicClient;
749
+ /**
750
+ * An existing viem WalletClient for write (transaction) operations.
751
+ * Required for any state-changing method (register, offramp, createPayout, etc.).
752
+ */
753
+ walletClient?: WalletClient;
754
+ /**
755
+ * Override any or all contract addresses for the selected chain.
756
+ * Useful during testing or when deploying to a new network.
757
+ */
758
+ contractAddresses?: Partial<ContractAddresses>;
759
+ }
760
+ /**
761
+ * The main Fiatsend SDK client.
762
+ *
763
+ * All contract interactions are grouped into typed resource classes accessible
764
+ * as properties. Read-only operations require only `publicClient`.
765
+ * Write operations additionally require `walletClient`.
766
+ */
767
+ declare class FiatsendClient {
768
+ /** Chain configuration used by this client */
769
+ readonly chainConfig: ChainConfig;
770
+ /** viem PublicClient used for all read operations */
771
+ readonly publicClient: PublicClient;
772
+ /** viem WalletClient (optional) used for write operations */
773
+ readonly walletClient: WalletClient | undefined;
774
+ /** Resolved contract addresses */
775
+ readonly addresses: ContractAddresses;
776
+ /** MobileNumberNFT interactions — register, resolve, KYC */
777
+ readonly identity: IdentityResource;
778
+ /** FiatsendGateway interactions — offramp, onramp, configuration */
779
+ readonly gateway: GatewayResource;
780
+ /** PaymentRouter interactions — send, sendToPhone, payment requests */
781
+ readonly payments: PaymentsResource;
782
+ /** Withdrawals contract — read-only withdrawal tracking */
783
+ readonly withdrawals: WithdrawalsResource;
784
+ /** LiquidityPool interactions — deposit, withdraw, claim rewards */
785
+ readonly liquidity: LiquidityResource;
786
+ /** VaultController interactions — deposit, withdraw, claim yield */
787
+ readonly vaults: VaultsResource;
788
+ /**
789
+ * PayoutEscrow interactions — core B2B payout claim flow.
790
+ *
791
+ * Businesses create payouts; recipients claim via their MobileNumberNFT identity.
792
+ * Supports single-tx `claimToMoMo` for immediate mobile money delivery.
793
+ */
794
+ readonly payouts: PayoutsResource;
795
+ /**
796
+ * P2PExchange interactions — peer-to-peer exchange with payment references.
797
+ *
798
+ * Makers escrow tokens on-chain; takers pay via exchange platforms (Binance P2P,
799
+ * Paxful, Noones) using the exact payment reference; makers confirm receipt.
800
+ */
801
+ readonly p2p: P2PResource;
802
+ constructor(config: FiatsendClientConfig);
803
+ /**
804
+ * Convenience: returns a copy of this client with a new walletClient attached.
805
+ *
806
+ * Useful when the wallet connects after the client is created.
807
+ *
808
+ * @param walletClient - The viem WalletClient to attach
809
+ */
810
+ withWallet(walletClient: WalletClient): FiatsendClient;
811
+ }
812
+
813
+ /**
814
+ * ABI for the MobileNumberNFT contract.
815
+ *
816
+ * Soulbound ERC-721 identity NFT tied to an encrypted phone number.
817
+ * One NFT per user. Non-transferable after mint. Supports KYC tiers (0–2).
818
+ */
819
+ declare const MobileNumberNFTABI: readonly [{
820
+ readonly type: "error";
821
+ readonly name: "AlreadyRegistered";
822
+ readonly inputs: readonly [];
823
+ }, {
824
+ readonly type: "error";
825
+ readonly name: "PhoneAlreadyRegistered";
826
+ readonly inputs: readonly [];
827
+ }, {
828
+ readonly type: "error";
829
+ readonly name: "NotAuthorized";
830
+ readonly inputs: readonly [];
831
+ }, {
832
+ readonly type: "error";
833
+ readonly name: "InvalidKYCLevel";
834
+ readonly inputs: readonly [];
835
+ }, {
836
+ readonly type: "error";
837
+ readonly name: "TransferNotAllowed";
838
+ readonly inputs: readonly [];
839
+ }, {
840
+ readonly type: "error";
841
+ readonly name: "SignatureExpired";
842
+ readonly inputs: readonly [];
843
+ }, {
844
+ readonly type: "error";
845
+ readonly name: "InvalidSignature";
846
+ readonly inputs: readonly [];
847
+ }, {
848
+ readonly type: "error";
849
+ readonly name: "ZeroAddress";
850
+ readonly inputs: readonly [];
851
+ }, {
852
+ readonly type: "event";
853
+ readonly name: "MobileNumberRegistered";
854
+ readonly inputs: readonly [{
855
+ readonly name: "user";
856
+ readonly type: "address";
857
+ readonly indexed: true;
858
+ readonly internalType: "address";
859
+ }, {
860
+ readonly name: "tokenId";
861
+ readonly type: "uint256";
862
+ readonly indexed: true;
863
+ readonly internalType: "uint256";
864
+ }, {
865
+ readonly name: "countryCode";
866
+ readonly type: "string";
867
+ readonly indexed: false;
868
+ readonly internalType: "string";
869
+ }];
870
+ readonly anonymous: false;
871
+ }, {
872
+ readonly type: "event";
873
+ readonly name: "KYCLevelUpdated";
874
+ readonly inputs: readonly [{
875
+ readonly name: "user";
876
+ readonly type: "address";
877
+ readonly indexed: true;
878
+ readonly internalType: "address";
879
+ }, {
880
+ readonly name: "tokenId";
881
+ readonly type: "uint256";
882
+ readonly indexed: true;
883
+ readonly internalType: "uint256";
884
+ }, {
885
+ readonly name: "newLevel";
886
+ readonly type: "uint8";
887
+ readonly indexed: false;
888
+ readonly internalType: "uint8";
889
+ }];
890
+ readonly anonymous: false;
891
+ }, {
892
+ readonly type: "event";
893
+ readonly name: "Transfer";
894
+ readonly inputs: readonly [{
895
+ readonly name: "from";
896
+ readonly type: "address";
897
+ readonly indexed: true;
898
+ readonly internalType: "address";
899
+ }, {
900
+ readonly name: "to";
901
+ readonly type: "address";
902
+ readonly indexed: true;
903
+ readonly internalType: "address";
904
+ }, {
905
+ readonly name: "tokenId";
906
+ readonly type: "uint256";
907
+ readonly indexed: true;
908
+ readonly internalType: "uint256";
909
+ }];
910
+ readonly anonymous: false;
911
+ }, {
912
+ readonly type: "event";
913
+ readonly name: "Approval";
914
+ readonly inputs: readonly [{
915
+ readonly name: "owner";
916
+ readonly type: "address";
917
+ readonly indexed: true;
918
+ readonly internalType: "address";
919
+ }, {
920
+ readonly name: "approved";
921
+ readonly type: "address";
922
+ readonly indexed: true;
923
+ readonly internalType: "address";
924
+ }, {
925
+ readonly name: "tokenId";
926
+ readonly type: "uint256";
927
+ readonly indexed: true;
928
+ readonly internalType: "uint256";
929
+ }];
930
+ readonly anonymous: false;
931
+ }, {
932
+ readonly type: "event";
933
+ readonly name: "ApprovalForAll";
934
+ readonly inputs: readonly [{
935
+ readonly name: "owner";
936
+ readonly type: "address";
937
+ readonly indexed: true;
938
+ readonly internalType: "address";
939
+ }, {
940
+ readonly name: "operator";
941
+ readonly type: "address";
942
+ readonly indexed: true;
943
+ readonly internalType: "address";
944
+ }, {
945
+ readonly name: "approved";
946
+ readonly type: "bool";
947
+ readonly indexed: false;
948
+ readonly internalType: "bool";
949
+ }];
950
+ readonly anonymous: false;
951
+ }, {
952
+ readonly type: "event";
953
+ readonly name: "OwnershipTransferred";
954
+ readonly inputs: readonly [{
955
+ readonly name: "previousOwner";
956
+ readonly type: "address";
957
+ readonly indexed: true;
958
+ readonly internalType: "address";
959
+ }, {
960
+ readonly name: "newOwner";
961
+ readonly type: "address";
962
+ readonly indexed: true;
963
+ readonly internalType: "address";
964
+ }];
965
+ readonly anonymous: false;
966
+ }, {
967
+ readonly type: "constructor";
968
+ readonly inputs: readonly [{
969
+ readonly name: "baseURI";
970
+ readonly type: "string";
971
+ readonly internalType: "string";
972
+ }];
973
+ readonly stateMutability: "nonpayable";
974
+ }, {
975
+ readonly type: "function";
976
+ readonly name: "registerMobile";
977
+ readonly inputs: readonly [{
978
+ readonly name: "encryptedPhone";
979
+ readonly type: "bytes";
980
+ readonly internalType: "bytes";
981
+ }, {
982
+ readonly name: "countryCode";
983
+ readonly type: "string";
984
+ readonly internalType: "string";
985
+ }];
986
+ readonly outputs: readonly [];
987
+ readonly stateMutability: "nonpayable";
988
+ }, {
989
+ readonly type: "function";
990
+ readonly name: "registerMobileWithSignature";
991
+ readonly inputs: readonly [{
992
+ readonly name: "user";
993
+ readonly type: "address";
994
+ readonly internalType: "address";
995
+ }, {
996
+ readonly name: "encryptedPhone";
997
+ readonly type: "bytes";
998
+ readonly internalType: "bytes";
999
+ }, {
1000
+ readonly name: "countryCode";
1001
+ readonly type: "string";
1002
+ readonly internalType: "string";
1003
+ }, {
1004
+ readonly name: "deadline";
1005
+ readonly type: "uint256";
1006
+ readonly internalType: "uint256";
1007
+ }, {
1008
+ readonly name: "signature";
1009
+ readonly type: "bytes";
1010
+ readonly internalType: "bytes";
1011
+ }];
1012
+ readonly outputs: readonly [];
1013
+ readonly stateMutability: "nonpayable";
1014
+ }, {
1015
+ readonly type: "function";
1016
+ readonly name: "updateKYCLevel";
1017
+ readonly inputs: readonly [{
1018
+ readonly name: "tokenId";
1019
+ readonly type: "uint256";
1020
+ readonly internalType: "uint256";
1021
+ }, {
1022
+ readonly name: "newLevel";
1023
+ readonly type: "uint8";
1024
+ readonly internalType: "uint8";
1025
+ }];
1026
+ readonly outputs: readonly [];
1027
+ readonly stateMutability: "nonpayable";
1028
+ }, {
1029
+ readonly type: "function";
1030
+ readonly name: "setAuthorizedMinter";
1031
+ readonly inputs: readonly [{
1032
+ readonly name: "minter";
1033
+ readonly type: "address";
1034
+ readonly internalType: "address";
1035
+ }, {
1036
+ readonly name: "authorized";
1037
+ readonly type: "bool";
1038
+ readonly internalType: "bool";
1039
+ }];
1040
+ readonly outputs: readonly [];
1041
+ readonly stateMutability: "nonpayable";
1042
+ }, {
1043
+ readonly type: "function";
1044
+ readonly name: "setBaseURI";
1045
+ readonly inputs: readonly [{
1046
+ readonly name: "baseURI";
1047
+ readonly type: "string";
1048
+ readonly internalType: "string";
1049
+ }];
1050
+ readonly outputs: readonly [];
1051
+ readonly stateMutability: "nonpayable";
1052
+ }, {
1053
+ readonly type: "function";
1054
+ readonly name: "transferOwnership";
1055
+ readonly inputs: readonly [{
1056
+ readonly name: "newOwner";
1057
+ readonly type: "address";
1058
+ readonly internalType: "address";
1059
+ }];
1060
+ readonly outputs: readonly [];
1061
+ readonly stateMutability: "nonpayable";
1062
+ }, {
1063
+ readonly type: "function";
1064
+ readonly name: "renounceOwnership";
1065
+ readonly inputs: readonly [];
1066
+ readonly outputs: readonly [];
1067
+ readonly stateMutability: "nonpayable";
1068
+ }, {
1069
+ readonly type: "function";
1070
+ readonly name: "getTokenId";
1071
+ readonly inputs: readonly [{
1072
+ readonly name: "user";
1073
+ readonly type: "address";
1074
+ readonly internalType: "address";
1075
+ }];
1076
+ readonly outputs: readonly [{
1077
+ readonly name: "";
1078
+ readonly type: "uint256";
1079
+ readonly internalType: "uint256";
1080
+ }];
1081
+ readonly stateMutability: "view";
1082
+ }, {
1083
+ readonly type: "function";
1084
+ readonly name: "getTokenIdByPhone";
1085
+ readonly inputs: readonly [{
1086
+ readonly name: "encryptedPhone";
1087
+ readonly type: "bytes";
1088
+ readonly internalType: "bytes";
1089
+ }];
1090
+ readonly outputs: readonly [{
1091
+ readonly name: "";
1092
+ readonly type: "uint256";
1093
+ readonly internalType: "uint256";
1094
+ }];
1095
+ readonly stateMutability: "view";
1096
+ }, {
1097
+ readonly type: "function";
1098
+ readonly name: "getKYCLevel";
1099
+ readonly inputs: readonly [{
1100
+ readonly name: "tokenId";
1101
+ readonly type: "uint256";
1102
+ readonly internalType: "uint256";
1103
+ }];
1104
+ readonly outputs: readonly [{
1105
+ readonly name: "";
1106
+ readonly type: "uint8";
1107
+ readonly internalType: "uint8";
1108
+ }];
1109
+ readonly stateMutability: "view";
1110
+ }, {
1111
+ readonly type: "function";
1112
+ readonly name: "getKYCLevelByAddress";
1113
+ readonly inputs: readonly [{
1114
+ readonly name: "user";
1115
+ readonly type: "address";
1116
+ readonly internalType: "address";
1117
+ }];
1118
+ readonly outputs: readonly [{
1119
+ readonly name: "";
1120
+ readonly type: "uint8";
1121
+ readonly internalType: "uint8";
1122
+ }];
1123
+ readonly stateMutability: "view";
1124
+ }, {
1125
+ readonly type: "function";
1126
+ readonly name: "getCountryCode";
1127
+ readonly inputs: readonly [{
1128
+ readonly name: "tokenId";
1129
+ readonly type: "uint256";
1130
+ readonly internalType: "uint256";
1131
+ }];
1132
+ readonly outputs: readonly [{
1133
+ readonly name: "";
1134
+ readonly type: "string";
1135
+ readonly internalType: "string";
1136
+ }];
1137
+ readonly stateMutability: "view";
1138
+ }, {
1139
+ readonly type: "function";
1140
+ readonly name: "getEncryptedPhone";
1141
+ readonly inputs: readonly [{
1142
+ readonly name: "tokenId";
1143
+ readonly type: "uint256";
1144
+ readonly internalType: "uint256";
1145
+ }];
1146
+ readonly outputs: readonly [{
1147
+ readonly name: "";
1148
+ readonly type: "bytes";
1149
+ readonly internalType: "bytes";
1150
+ }];
1151
+ readonly stateMutability: "view";
1152
+ }, {
1153
+ readonly type: "function";
1154
+ readonly name: "nonces";
1155
+ readonly inputs: readonly [{
1156
+ readonly name: "user";
1157
+ readonly type: "address";
1158
+ readonly internalType: "address";
1159
+ }];
1160
+ readonly outputs: readonly [{
1161
+ readonly name: "";
1162
+ readonly type: "uint256";
1163
+ readonly internalType: "uint256";
1164
+ }];
1165
+ readonly stateMutability: "view";
1166
+ }, {
1167
+ readonly type: "function";
1168
+ readonly name: "owner";
1169
+ readonly inputs: readonly [];
1170
+ readonly outputs: readonly [{
1171
+ readonly name: "";
1172
+ readonly type: "address";
1173
+ readonly internalType: "address";
1174
+ }];
1175
+ readonly stateMutability: "view";
1176
+ }, {
1177
+ readonly type: "function";
1178
+ readonly name: "ownerOf";
1179
+ readonly inputs: readonly [{
1180
+ readonly name: "tokenId";
1181
+ readonly type: "uint256";
1182
+ readonly internalType: "uint256";
1183
+ }];
1184
+ readonly outputs: readonly [{
1185
+ readonly name: "";
1186
+ readonly type: "address";
1187
+ readonly internalType: "address";
1188
+ }];
1189
+ readonly stateMutability: "view";
1190
+ }, {
1191
+ readonly type: "function";
1192
+ readonly name: "balanceOf";
1193
+ readonly inputs: readonly [{
1194
+ readonly name: "owner";
1195
+ readonly type: "address";
1196
+ readonly internalType: "address";
1197
+ }];
1198
+ readonly outputs: readonly [{
1199
+ readonly name: "";
1200
+ readonly type: "uint256";
1201
+ readonly internalType: "uint256";
1202
+ }];
1203
+ readonly stateMutability: "view";
1204
+ }, {
1205
+ readonly type: "function";
1206
+ readonly name: "tokenURI";
1207
+ readonly inputs: readonly [{
1208
+ readonly name: "tokenId";
1209
+ readonly type: "uint256";
1210
+ readonly internalType: "uint256";
1211
+ }];
1212
+ readonly outputs: readonly [{
1213
+ readonly name: "";
1214
+ readonly type: "string";
1215
+ readonly internalType: "string";
1216
+ }];
1217
+ readonly stateMutability: "view";
1218
+ }, {
1219
+ readonly type: "function";
1220
+ readonly name: "totalSupply";
1221
+ readonly inputs: readonly [];
1222
+ readonly outputs: readonly [{
1223
+ readonly name: "";
1224
+ readonly type: "uint256";
1225
+ readonly internalType: "uint256";
1226
+ }];
1227
+ readonly stateMutability: "view";
1228
+ }, {
1229
+ readonly type: "function";
1230
+ readonly name: "tokenByIndex";
1231
+ readonly inputs: readonly [{
1232
+ readonly name: "index";
1233
+ readonly type: "uint256";
1234
+ readonly internalType: "uint256";
1235
+ }];
1236
+ readonly outputs: readonly [{
1237
+ readonly name: "";
1238
+ readonly type: "uint256";
1239
+ readonly internalType: "uint256";
1240
+ }];
1241
+ readonly stateMutability: "view";
1242
+ }, {
1243
+ readonly type: "function";
1244
+ readonly name: "tokenOfOwnerByIndex";
1245
+ readonly inputs: readonly [{
1246
+ readonly name: "owner";
1247
+ readonly type: "address";
1248
+ readonly internalType: "address";
1249
+ }, {
1250
+ readonly name: "index";
1251
+ readonly type: "uint256";
1252
+ readonly internalType: "uint256";
1253
+ }];
1254
+ readonly outputs: readonly [{
1255
+ readonly name: "";
1256
+ readonly type: "uint256";
1257
+ readonly internalType: "uint256";
1258
+ }];
1259
+ readonly stateMutability: "view";
1260
+ }, {
1261
+ readonly type: "function";
1262
+ readonly name: "supportsInterface";
1263
+ readonly inputs: readonly [{
1264
+ readonly name: "interfaceId";
1265
+ readonly type: "bytes4";
1266
+ readonly internalType: "bytes4";
1267
+ }];
1268
+ readonly outputs: readonly [{
1269
+ readonly name: "";
1270
+ readonly type: "bool";
1271
+ readonly internalType: "bool";
1272
+ }];
1273
+ readonly stateMutability: "view";
1274
+ }, {
1275
+ readonly type: "function";
1276
+ readonly name: "name";
1277
+ readonly inputs: readonly [];
1278
+ readonly outputs: readonly [{
1279
+ readonly name: "";
1280
+ readonly type: "string";
1281
+ readonly internalType: "string";
1282
+ }];
1283
+ readonly stateMutability: "view";
1284
+ }, {
1285
+ readonly type: "function";
1286
+ readonly name: "symbol";
1287
+ readonly inputs: readonly [];
1288
+ readonly outputs: readonly [{
1289
+ readonly name: "";
1290
+ readonly type: "string";
1291
+ readonly internalType: "string";
1292
+ }];
1293
+ readonly stateMutability: "view";
1294
+ }];
1295
+
1296
+ /**
1297
+ * ABI for the FiatsendGateway contract.
1298
+ *
1299
+ * Core UUPS-upgradeable gateway for onramp/offramp operations.
1300
+ * Handles token conversion, KYC gating, fee collection, and daily limits.
1301
+ */
1302
+ declare const FiatsendGatewayABI: readonly [{
1303
+ readonly type: "error";
1304
+ readonly name: "TokenNotSupported";
1305
+ readonly inputs: readonly [];
1306
+ }, {
1307
+ readonly type: "error";
1308
+ readonly name: "NoMobileNFT";
1309
+ readonly inputs: readonly [];
1310
+ }, {
1311
+ readonly type: "error";
1312
+ readonly name: "KYCRequired";
1313
+ readonly inputs: readonly [];
1314
+ }, {
1315
+ readonly type: "error";
1316
+ readonly name: "BelowMinimum";
1317
+ readonly inputs: readonly [];
1318
+ }, {
1319
+ readonly type: "error";
1320
+ readonly name: "DailyLimitExceeded";
1321
+ readonly inputs: readonly [];
1322
+ }, {
1323
+ readonly type: "error";
1324
+ readonly name: "ZeroAddress";
1325
+ readonly inputs: readonly [];
1326
+ }, {
1327
+ readonly type: "error";
1328
+ readonly name: "ZeroAmount";
1329
+ readonly inputs: readonly [];
1330
+ }, {
1331
+ readonly type: "error";
1332
+ readonly name: "InvalidFeeRate";
1333
+ readonly inputs: readonly [];
1334
+ }, {
1335
+ readonly type: "error";
1336
+ readonly name: "NotAuthorizedOnramp";
1337
+ readonly inputs: readonly [];
1338
+ }, {
1339
+ readonly type: "error";
1340
+ readonly name: "NotAuthorizedContract";
1341
+ readonly inputs: readonly [];
1342
+ }, {
1343
+ readonly type: "event";
1344
+ readonly name: "OfframpInitiated";
1345
+ readonly inputs: readonly [{
1346
+ readonly name: "user";
1347
+ readonly type: "address";
1348
+ readonly indexed: true;
1349
+ readonly internalType: "address";
1350
+ }, {
1351
+ readonly name: "token";
1352
+ readonly type: "address";
1353
+ readonly indexed: true;
1354
+ readonly internalType: "address";
1355
+ }, {
1356
+ readonly name: "amount";
1357
+ readonly type: "uint256";
1358
+ readonly indexed: false;
1359
+ readonly internalType: "uint256";
1360
+ }, {
1361
+ readonly name: "fee";
1362
+ readonly type: "uint256";
1363
+ readonly indexed: false;
1364
+ readonly internalType: "uint256";
1365
+ }, {
1366
+ readonly name: "phoneNumber";
1367
+ readonly type: "string";
1368
+ readonly indexed: false;
1369
+ readonly internalType: "string";
1370
+ }];
1371
+ readonly anonymous: false;
1372
+ }, {
1373
+ readonly type: "event";
1374
+ readonly name: "OnrampCompleted";
1375
+ readonly inputs: readonly [{
1376
+ readonly name: "user";
1377
+ readonly type: "address";
1378
+ readonly indexed: true;
1379
+ readonly internalType: "address";
1380
+ }, {
1381
+ readonly name: "amount";
1382
+ readonly type: "uint256";
1383
+ readonly indexed: false;
1384
+ readonly internalType: "uint256";
1385
+ }];
1386
+ readonly anonymous: false;
1387
+ }, {
1388
+ readonly type: "event";
1389
+ readonly name: "ConversionRateUpdated";
1390
+ readonly inputs: readonly [{
1391
+ readonly name: "token";
1392
+ readonly type: "address";
1393
+ readonly indexed: true;
1394
+ readonly internalType: "address";
1395
+ }, {
1396
+ readonly name: "rate";
1397
+ readonly type: "uint256";
1398
+ readonly indexed: false;
1399
+ readonly internalType: "uint256";
1400
+ }];
1401
+ readonly anonymous: false;
1402
+ }, {
1403
+ readonly type: "event";
1404
+ readonly name: "TokenAdded";
1405
+ readonly inputs: readonly [{
1406
+ readonly name: "token";
1407
+ readonly type: "address";
1408
+ readonly indexed: true;
1409
+ readonly internalType: "address";
1410
+ }];
1411
+ readonly anonymous: false;
1412
+ }, {
1413
+ readonly type: "event";
1414
+ readonly name: "TokenRemoved";
1415
+ readonly inputs: readonly [{
1416
+ readonly name: "token";
1417
+ readonly type: "address";
1418
+ readonly indexed: true;
1419
+ readonly internalType: "address";
1420
+ }];
1421
+ readonly anonymous: false;
1422
+ }, {
1423
+ readonly type: "event";
1424
+ readonly name: "FeeCollected";
1425
+ readonly inputs: readonly [{
1426
+ readonly name: "token";
1427
+ readonly type: "address";
1428
+ readonly indexed: true;
1429
+ readonly internalType: "address";
1430
+ }, {
1431
+ readonly name: "feeAmount";
1432
+ readonly type: "uint256";
1433
+ readonly indexed: false;
1434
+ readonly internalType: "uint256";
1435
+ }, {
1436
+ readonly name: "treasury";
1437
+ readonly type: "address";
1438
+ readonly indexed: false;
1439
+ readonly internalType: "address";
1440
+ }];
1441
+ readonly anonymous: false;
1442
+ }, {
1443
+ readonly type: "event";
1444
+ readonly name: "Paused";
1445
+ readonly inputs: readonly [{
1446
+ readonly name: "account";
1447
+ readonly type: "address";
1448
+ readonly indexed: false;
1449
+ readonly internalType: "address";
1450
+ }];
1451
+ readonly anonymous: false;
1452
+ }, {
1453
+ readonly type: "event";
1454
+ readonly name: "Unpaused";
1455
+ readonly inputs: readonly [{
1456
+ readonly name: "account";
1457
+ readonly type: "address";
1458
+ readonly indexed: false;
1459
+ readonly internalType: "address";
1460
+ }];
1461
+ readonly anonymous: false;
1462
+ }, {
1463
+ readonly type: "event";
1464
+ readonly name: "OwnershipTransferred";
1465
+ readonly inputs: readonly [{
1466
+ readonly name: "previousOwner";
1467
+ readonly type: "address";
1468
+ readonly indexed: true;
1469
+ readonly internalType: "address";
1470
+ }, {
1471
+ readonly name: "newOwner";
1472
+ readonly type: "address";
1473
+ readonly indexed: true;
1474
+ readonly internalType: "address";
1475
+ }];
1476
+ readonly anonymous: false;
1477
+ }, {
1478
+ readonly type: "event";
1479
+ readonly name: "Upgraded";
1480
+ readonly inputs: readonly [{
1481
+ readonly name: "implementation";
1482
+ readonly type: "address";
1483
+ readonly indexed: true;
1484
+ readonly internalType: "address";
1485
+ }];
1486
+ readonly anonymous: false;
1487
+ }, {
1488
+ readonly type: "event";
1489
+ readonly name: "Initialized";
1490
+ readonly inputs: readonly [{
1491
+ readonly name: "version";
1492
+ readonly type: "uint64";
1493
+ readonly indexed: false;
1494
+ readonly internalType: "uint64";
1495
+ }];
1496
+ readonly anonymous: false;
1497
+ }, {
1498
+ readonly type: "function";
1499
+ readonly name: "initialize";
1500
+ readonly inputs: readonly [{
1501
+ readonly name: "_ghsFiatToken";
1502
+ readonly type: "address";
1503
+ readonly internalType: "address";
1504
+ }, {
1505
+ readonly name: "_mobileNumberNFT";
1506
+ readonly type: "address";
1507
+ readonly internalType: "address";
1508
+ }, {
1509
+ readonly name: "_treasury";
1510
+ readonly type: "address";
1511
+ readonly internalType: "address";
1512
+ }, {
1513
+ readonly name: "_feeRate";
1514
+ readonly type: "uint256";
1515
+ readonly internalType: "uint256";
1516
+ }];
1517
+ readonly outputs: readonly [];
1518
+ readonly stateMutability: "nonpayable";
1519
+ }, {
1520
+ readonly type: "function";
1521
+ readonly name: "offrampFor";
1522
+ readonly inputs: readonly [{
1523
+ readonly name: "user";
1524
+ readonly type: "address";
1525
+ readonly internalType: "address";
1526
+ }, {
1527
+ readonly name: "token";
1528
+ readonly type: "address";
1529
+ readonly internalType: "address";
1530
+ }, {
1531
+ readonly name: "amount";
1532
+ readonly type: "uint256";
1533
+ readonly internalType: "uint256";
1534
+ }, {
1535
+ readonly name: "phoneNumber";
1536
+ readonly type: "string";
1537
+ readonly internalType: "string";
1538
+ }];
1539
+ readonly outputs: readonly [];
1540
+ readonly stateMutability: "nonpayable";
1541
+ }, {
1542
+ readonly type: "function";
1543
+ readonly name: "offramp";
1544
+ readonly inputs: readonly [{
1545
+ readonly name: "token";
1546
+ readonly type: "address";
1547
+ readonly internalType: "address";
1548
+ }, {
1549
+ readonly name: "amount";
1550
+ readonly type: "uint256";
1551
+ readonly internalType: "uint256";
1552
+ }, {
1553
+ readonly name: "phoneNumber";
1554
+ readonly type: "string";
1555
+ readonly internalType: "string";
1556
+ }];
1557
+ readonly outputs: readonly [];
1558
+ readonly stateMutability: "nonpayable";
1559
+ }, {
1560
+ readonly type: "function";
1561
+ readonly name: "onramp";
1562
+ readonly inputs: readonly [{
1563
+ readonly name: "user";
1564
+ readonly type: "address";
1565
+ readonly internalType: "address";
1566
+ }, {
1567
+ readonly name: "amount";
1568
+ readonly type: "uint256";
1569
+ readonly internalType: "uint256";
1570
+ }];
1571
+ readonly outputs: readonly [];
1572
+ readonly stateMutability: "nonpayable";
1573
+ }, {
1574
+ readonly type: "function";
1575
+ readonly name: "setConversionRate";
1576
+ readonly inputs: readonly [{
1577
+ readonly name: "token";
1578
+ readonly type: "address";
1579
+ readonly internalType: "address";
1580
+ }, {
1581
+ readonly name: "rate";
1582
+ readonly type: "uint256";
1583
+ readonly internalType: "uint256";
1584
+ }];
1585
+ readonly outputs: readonly [];
1586
+ readonly stateMutability: "nonpayable";
1587
+ }, {
1588
+ readonly type: "function";
1589
+ readonly name: "addSupportedToken";
1590
+ readonly inputs: readonly [{
1591
+ readonly name: "token";
1592
+ readonly type: "address";
1593
+ readonly internalType: "address";
1594
+ }];
1595
+ readonly outputs: readonly [];
1596
+ readonly stateMutability: "nonpayable";
1597
+ }, {
1598
+ readonly type: "function";
1599
+ readonly name: "removeSupportedToken";
1600
+ readonly inputs: readonly [{
1601
+ readonly name: "token";
1602
+ readonly type: "address";
1603
+ readonly internalType: "address";
1604
+ }];
1605
+ readonly outputs: readonly [];
1606
+ readonly stateMutability: "nonpayable";
1607
+ }, {
1608
+ readonly type: "function";
1609
+ readonly name: "setKYC";
1610
+ readonly inputs: readonly [{
1611
+ readonly name: "user";
1612
+ readonly type: "address";
1613
+ readonly internalType: "address";
1614
+ }, {
1615
+ readonly name: "status";
1616
+ readonly type: "bool";
1617
+ readonly internalType: "bool";
1618
+ }];
1619
+ readonly outputs: readonly [];
1620
+ readonly stateMutability: "nonpayable";
1621
+ }, {
1622
+ readonly type: "function";
1623
+ readonly name: "setProtocolFee";
1624
+ readonly inputs: readonly [{
1625
+ readonly name: "newFeeRate";
1626
+ readonly type: "uint256";
1627
+ readonly internalType: "uint256";
1628
+ }];
1629
+ readonly outputs: readonly [];
1630
+ readonly stateMutability: "nonpayable";
1631
+ }, {
1632
+ readonly type: "function";
1633
+ readonly name: "setMinWithdrawAmount";
1634
+ readonly inputs: readonly [{
1635
+ readonly name: "amount";
1636
+ readonly type: "uint256";
1637
+ readonly internalType: "uint256";
1638
+ }];
1639
+ readonly outputs: readonly [];
1640
+ readonly stateMutability: "nonpayable";
1641
+ }, {
1642
+ readonly type: "function";
1643
+ readonly name: "setDailyLimit";
1644
+ readonly inputs: readonly [{
1645
+ readonly name: "limit";
1646
+ readonly type: "uint256";
1647
+ readonly internalType: "uint256";
1648
+ }];
1649
+ readonly outputs: readonly [];
1650
+ readonly stateMutability: "nonpayable";
1651
+ }, {
1652
+ readonly type: "function";
1653
+ readonly name: "setWithdrawalsContract";
1654
+ readonly inputs: readonly [{
1655
+ readonly name: "_withdrawals";
1656
+ readonly type: "address";
1657
+ readonly internalType: "address";
1658
+ }];
1659
+ readonly outputs: readonly [];
1660
+ readonly stateMutability: "nonpayable";
1661
+ }, {
1662
+ readonly type: "function";
1663
+ readonly name: "setAuthorizedOnramper";
1664
+ readonly inputs: readonly [{
1665
+ readonly name: "onramper";
1666
+ readonly type: "address";
1667
+ readonly internalType: "address";
1668
+ }, {
1669
+ readonly name: "authorized";
1670
+ readonly type: "bool";
1671
+ readonly internalType: "bool";
1672
+ }];
1673
+ readonly outputs: readonly [];
1674
+ readonly stateMutability: "nonpayable";
1675
+ }, {
1676
+ readonly type: "function";
1677
+ readonly name: "setAuthorizedContract";
1678
+ readonly inputs: readonly [{
1679
+ readonly name: "contractAddr";
1680
+ readonly type: "address";
1681
+ readonly internalType: "address";
1682
+ }, {
1683
+ readonly name: "authorized";
1684
+ readonly type: "bool";
1685
+ readonly internalType: "bool";
1686
+ }];
1687
+ readonly outputs: readonly [];
1688
+ readonly stateMutability: "nonpayable";
1689
+ }, {
1690
+ readonly type: "function";
1691
+ readonly name: "setProtocolTreasury";
1692
+ readonly inputs: readonly [{
1693
+ readonly name: "treasury";
1694
+ readonly type: "address";
1695
+ readonly internalType: "address";
1696
+ }];
1697
+ readonly outputs: readonly [];
1698
+ readonly stateMutability: "nonpayable";
1699
+ }, {
1700
+ readonly type: "function";
1701
+ readonly name: "emergencyWithdraw";
1702
+ readonly inputs: readonly [{
1703
+ readonly name: "token";
1704
+ readonly type: "address";
1705
+ readonly internalType: "address";
1706
+ }, {
1707
+ readonly name: "amount";
1708
+ readonly type: "uint256";
1709
+ readonly internalType: "uint256";
1710
+ }];
1711
+ readonly outputs: readonly [];
1712
+ readonly stateMutability: "nonpayable";
1713
+ }, {
1714
+ readonly type: "function";
1715
+ readonly name: "pause";
1716
+ readonly inputs: readonly [];
1717
+ readonly outputs: readonly [];
1718
+ readonly stateMutability: "nonpayable";
1719
+ }, {
1720
+ readonly type: "function";
1721
+ readonly name: "unpause";
1722
+ readonly inputs: readonly [];
1723
+ readonly outputs: readonly [];
1724
+ readonly stateMutability: "nonpayable";
1725
+ }, {
1726
+ readonly type: "function";
1727
+ readonly name: "transferOwnership";
1728
+ readonly inputs: readonly [{
1729
+ readonly name: "newOwner";
1730
+ readonly type: "address";
1731
+ readonly internalType: "address";
1732
+ }];
1733
+ readonly outputs: readonly [];
1734
+ readonly stateMutability: "nonpayable";
1735
+ }, {
1736
+ readonly type: "function";
1737
+ readonly name: "renounceOwnership";
1738
+ readonly inputs: readonly [];
1739
+ readonly outputs: readonly [];
1740
+ readonly stateMutability: "nonpayable";
1741
+ }, {
1742
+ readonly type: "function";
1743
+ readonly name: "upgradeTo";
1744
+ readonly inputs: readonly [{
1745
+ readonly name: "newImplementation";
1746
+ readonly type: "address";
1747
+ readonly internalType: "address";
1748
+ }];
1749
+ readonly outputs: readonly [];
1750
+ readonly stateMutability: "nonpayable";
1751
+ }, {
1752
+ readonly type: "function";
1753
+ readonly name: "upgradeToAndCall";
1754
+ readonly inputs: readonly [{
1755
+ readonly name: "newImplementation";
1756
+ readonly type: "address";
1757
+ readonly internalType: "address";
1758
+ }, {
1759
+ readonly name: "data";
1760
+ readonly type: "bytes";
1761
+ readonly internalType: "bytes";
1762
+ }];
1763
+ readonly outputs: readonly [];
1764
+ readonly stateMutability: "payable";
1765
+ }, {
1766
+ readonly type: "function";
1767
+ readonly name: "isTokenSupported";
1768
+ readonly inputs: readonly [{
1769
+ readonly name: "token";
1770
+ readonly type: "address";
1771
+ readonly internalType: "address";
1772
+ }];
1773
+ readonly outputs: readonly [{
1774
+ readonly name: "";
1775
+ readonly type: "bool";
1776
+ readonly internalType: "bool";
1777
+ }];
1778
+ readonly stateMutability: "view";
1779
+ }, {
1780
+ readonly type: "function";
1781
+ readonly name: "getConversionRate";
1782
+ readonly inputs: readonly [{
1783
+ readonly name: "token";
1784
+ readonly type: "address";
1785
+ readonly internalType: "address";
1786
+ }];
1787
+ readonly outputs: readonly [{
1788
+ readonly name: "";
1789
+ readonly type: "uint256";
1790
+ readonly internalType: "uint256";
1791
+ }];
1792
+ readonly stateMutability: "view";
1793
+ }, {
1794
+ readonly type: "function";
1795
+ readonly name: "isKYCPassed";
1796
+ readonly inputs: readonly [{
1797
+ readonly name: "user";
1798
+ readonly type: "address";
1799
+ readonly internalType: "address";
1800
+ }];
1801
+ readonly outputs: readonly [{
1802
+ readonly name: "";
1803
+ readonly type: "bool";
1804
+ readonly internalType: "bool";
1805
+ }];
1806
+ readonly stateMutability: "view";
1807
+ }, {
1808
+ readonly type: "function";
1809
+ readonly name: "getDailyVolume";
1810
+ readonly inputs: readonly [{
1811
+ readonly name: "user";
1812
+ readonly type: "address";
1813
+ readonly internalType: "address";
1814
+ }];
1815
+ readonly outputs: readonly [{
1816
+ readonly name: "";
1817
+ readonly type: "uint256";
1818
+ readonly internalType: "uint256";
1819
+ }];
1820
+ readonly stateMutability: "view";
1821
+ }, {
1822
+ readonly type: "function";
1823
+ readonly name: "isAuthorizedContract";
1824
+ readonly inputs: readonly [{
1825
+ readonly name: "contractAddr";
1826
+ readonly type: "address";
1827
+ readonly internalType: "address";
1828
+ }];
1829
+ readonly outputs: readonly [{
1830
+ readonly name: "";
1831
+ readonly type: "bool";
1832
+ readonly internalType: "bool";
1833
+ }];
1834
+ readonly stateMutability: "view";
1835
+ }, {
1836
+ readonly type: "function";
1837
+ readonly name: "protocolFeeRate";
1838
+ readonly inputs: readonly [];
1839
+ readonly outputs: readonly [{
1840
+ readonly name: "";
1841
+ readonly type: "uint256";
1842
+ readonly internalType: "uint256";
1843
+ }];
1844
+ readonly stateMutability: "view";
1845
+ }, {
1846
+ readonly type: "function";
1847
+ readonly name: "protocolTreasury";
1848
+ readonly inputs: readonly [];
1849
+ readonly outputs: readonly [{
1850
+ readonly name: "";
1851
+ readonly type: "address";
1852
+ readonly internalType: "address";
1853
+ }];
1854
+ readonly stateMutability: "view";
1855
+ }, {
1856
+ readonly type: "function";
1857
+ readonly name: "minWithdrawAmount";
1858
+ readonly inputs: readonly [];
1859
+ readonly outputs: readonly [{
1860
+ readonly name: "";
1861
+ readonly type: "uint256";
1862
+ readonly internalType: "uint256";
1863
+ }];
1864
+ readonly stateMutability: "view";
1865
+ }, {
1866
+ readonly type: "function";
1867
+ readonly name: "dailyLimit";
1868
+ readonly inputs: readonly [];
1869
+ readonly outputs: readonly [{
1870
+ readonly name: "";
1871
+ readonly type: "uint256";
1872
+ readonly internalType: "uint256";
1873
+ }];
1874
+ readonly stateMutability: "view";
1875
+ }, {
1876
+ readonly type: "function";
1877
+ readonly name: "paused";
1878
+ readonly inputs: readonly [];
1879
+ readonly outputs: readonly [{
1880
+ readonly name: "";
1881
+ readonly type: "bool";
1882
+ readonly internalType: "bool";
1883
+ }];
1884
+ readonly stateMutability: "view";
1885
+ }, {
1886
+ readonly type: "function";
1887
+ readonly name: "owner";
1888
+ readonly inputs: readonly [];
1889
+ readonly outputs: readonly [{
1890
+ readonly name: "";
1891
+ readonly type: "address";
1892
+ readonly internalType: "address";
1893
+ }];
1894
+ readonly stateMutability: "view";
1895
+ }, {
1896
+ readonly type: "function";
1897
+ readonly name: "MAX_FEE_RATE";
1898
+ readonly inputs: readonly [];
1899
+ readonly outputs: readonly [{
1900
+ readonly name: "";
1901
+ readonly type: "uint256";
1902
+ readonly internalType: "uint256";
1903
+ }];
1904
+ readonly stateMutability: "view";
1905
+ }, {
1906
+ readonly type: "function";
1907
+ readonly name: "KYC_THRESHOLD";
1908
+ readonly inputs: readonly [];
1909
+ readonly outputs: readonly [{
1910
+ readonly name: "";
1911
+ readonly type: "uint256";
1912
+ readonly internalType: "uint256";
1913
+ }];
1914
+ readonly stateMutability: "view";
1915
+ }, {
1916
+ readonly type: "function";
1917
+ readonly name: "ghsFiatToken";
1918
+ readonly inputs: readonly [];
1919
+ readonly outputs: readonly [{
1920
+ readonly name: "";
1921
+ readonly type: "address";
1922
+ readonly internalType: "address";
1923
+ }];
1924
+ readonly stateMutability: "view";
1925
+ }, {
1926
+ readonly type: "function";
1927
+ readonly name: "mobileNumberNFT";
1928
+ readonly inputs: readonly [];
1929
+ readonly outputs: readonly [{
1930
+ readonly name: "";
1931
+ readonly type: "address";
1932
+ readonly internalType: "address";
1933
+ }];
1934
+ readonly stateMutability: "view";
1935
+ }, {
1936
+ readonly type: "function";
1937
+ readonly name: "withdrawalsContract";
1938
+ readonly inputs: readonly [];
1939
+ readonly outputs: readonly [{
1940
+ readonly name: "";
1941
+ readonly type: "address";
1942
+ readonly internalType: "address";
1943
+ }];
1944
+ readonly stateMutability: "view";
1945
+ }, {
1946
+ readonly type: "function";
1947
+ readonly name: "proxiableUUID";
1948
+ readonly inputs: readonly [];
1949
+ readonly outputs: readonly [{
1950
+ readonly name: "";
1951
+ readonly type: "bytes32";
1952
+ readonly internalType: "bytes32";
1953
+ }];
1954
+ readonly stateMutability: "view";
1955
+ }];
1956
+
1957
+ /**
1958
+ * ABI for the PaymentRouter contract.
1959
+ *
1960
+ * Routes P2P payments and payment requests between users.
1961
+ * Resolves phone-number-based payments via MobileNumberNFT.
1962
+ */
1963
+ declare const PaymentRouterABI: readonly [{
1964
+ readonly type: "error";
1965
+ readonly name: "ZeroAddress";
1966
+ readonly inputs: readonly [];
1967
+ }, {
1968
+ readonly type: "error";
1969
+ readonly name: "ZeroAmount";
1970
+ readonly inputs: readonly [];
1971
+ }, {
1972
+ readonly type: "error";
1973
+ readonly name: "PhoneNotRegistered";
1974
+ readonly inputs: readonly [];
1975
+ }, {
1976
+ readonly type: "error";
1977
+ readonly name: "RequestNotFound";
1978
+ readonly inputs: readonly [];
1979
+ }, {
1980
+ readonly type: "error";
1981
+ readonly name: "RequestNotPending";
1982
+ readonly inputs: readonly [];
1983
+ }, {
1984
+ readonly type: "error";
1985
+ readonly name: "NotRequestOwner";
1986
+ readonly inputs: readonly [];
1987
+ }, {
1988
+ readonly type: "error";
1989
+ readonly name: "NotRequestRecipient";
1990
+ readonly inputs: readonly [];
1991
+ }, {
1992
+ readonly type: "error";
1993
+ readonly name: "SelfPayment";
1994
+ readonly inputs: readonly [];
1995
+ }, {
1996
+ readonly type: "event";
1997
+ readonly name: "PaymentSent";
1998
+ readonly inputs: readonly [{
1999
+ readonly name: "from";
2000
+ readonly type: "address";
2001
+ readonly indexed: true;
2002
+ readonly internalType: "address";
2003
+ }, {
2004
+ readonly name: "to";
2005
+ readonly type: "address";
2006
+ readonly indexed: true;
2007
+ readonly internalType: "address";
2008
+ }, {
2009
+ readonly name: "token";
2010
+ readonly type: "address";
2011
+ readonly indexed: false;
2012
+ readonly internalType: "address";
2013
+ }, {
2014
+ readonly name: "amount";
2015
+ readonly type: "uint256";
2016
+ readonly indexed: false;
2017
+ readonly internalType: "uint256";
2018
+ }, {
2019
+ readonly name: "memo";
2020
+ readonly type: "string";
2021
+ readonly indexed: false;
2022
+ readonly internalType: "string";
2023
+ }];
2024
+ readonly anonymous: false;
2025
+ }, {
2026
+ readonly type: "event";
2027
+ readonly name: "PaymentRequestCreated";
2028
+ readonly inputs: readonly [{
2029
+ readonly name: "requestId";
2030
+ readonly type: "uint256";
2031
+ readonly indexed: true;
2032
+ readonly internalType: "uint256";
2033
+ }, {
2034
+ readonly name: "from";
2035
+ readonly type: "address";
2036
+ readonly indexed: true;
2037
+ readonly internalType: "address";
2038
+ }, {
2039
+ readonly name: "to";
2040
+ readonly type: "address";
2041
+ readonly indexed: true;
2042
+ readonly internalType: "address";
2043
+ }, {
2044
+ readonly name: "token";
2045
+ readonly type: "address";
2046
+ readonly indexed: false;
2047
+ readonly internalType: "address";
2048
+ }, {
2049
+ readonly name: "amount";
2050
+ readonly type: "uint256";
2051
+ readonly indexed: false;
2052
+ readonly internalType: "uint256";
2053
+ }];
2054
+ readonly anonymous: false;
2055
+ }, {
2056
+ readonly type: "event";
2057
+ readonly name: "PaymentRequestPaid";
2058
+ readonly inputs: readonly [{
2059
+ readonly name: "requestId";
2060
+ readonly type: "uint256";
2061
+ readonly indexed: true;
2062
+ readonly internalType: "uint256";
2063
+ }, {
2064
+ readonly name: "paidBy";
2065
+ readonly type: "address";
2066
+ readonly indexed: true;
2067
+ readonly internalType: "address";
2068
+ }];
2069
+ readonly anonymous: false;
2070
+ }, {
2071
+ readonly type: "event";
2072
+ readonly name: "PaymentRequestCancelled";
2073
+ readonly inputs: readonly [{
2074
+ readonly name: "requestId";
2075
+ readonly type: "uint256";
2076
+ readonly indexed: true;
2077
+ readonly internalType: "uint256";
2078
+ }];
2079
+ readonly anonymous: false;
2080
+ }, {
2081
+ readonly type: "event";
2082
+ readonly name: "OwnershipTransferred";
2083
+ readonly inputs: readonly [{
2084
+ readonly name: "previousOwner";
2085
+ readonly type: "address";
2086
+ readonly indexed: true;
2087
+ readonly internalType: "address";
2088
+ }, {
2089
+ readonly name: "newOwner";
2090
+ readonly type: "address";
2091
+ readonly indexed: true;
2092
+ readonly internalType: "address";
2093
+ }];
2094
+ readonly anonymous: false;
2095
+ }, {
2096
+ readonly type: "constructor";
2097
+ readonly inputs: readonly [{
2098
+ readonly name: "_mobileNumberNFT";
2099
+ readonly type: "address";
2100
+ readonly internalType: "address";
2101
+ }, {
2102
+ readonly name: "_feeTreasury";
2103
+ readonly type: "address";
2104
+ readonly internalType: "address";
2105
+ }];
2106
+ readonly stateMutability: "nonpayable";
2107
+ }, {
2108
+ readonly type: "function";
2109
+ readonly name: "send";
2110
+ readonly inputs: readonly [{
2111
+ readonly name: "token";
2112
+ readonly type: "address";
2113
+ readonly internalType: "address";
2114
+ }, {
2115
+ readonly name: "to";
2116
+ readonly type: "address";
2117
+ readonly internalType: "address";
2118
+ }, {
2119
+ readonly name: "amount";
2120
+ readonly type: "uint256";
2121
+ readonly internalType: "uint256";
2122
+ }, {
2123
+ readonly name: "memo";
2124
+ readonly type: "string";
2125
+ readonly internalType: "string";
2126
+ }];
2127
+ readonly outputs: readonly [];
2128
+ readonly stateMutability: "nonpayable";
2129
+ }, {
2130
+ readonly type: "function";
2131
+ readonly name: "sendToPhone";
2132
+ readonly inputs: readonly [{
2133
+ readonly name: "token";
2134
+ readonly type: "address";
2135
+ readonly internalType: "address";
2136
+ }, {
2137
+ readonly name: "encryptedPhone";
2138
+ readonly type: "bytes";
2139
+ readonly internalType: "bytes";
2140
+ }, {
2141
+ readonly name: "amount";
2142
+ readonly type: "uint256";
2143
+ readonly internalType: "uint256";
2144
+ }, {
2145
+ readonly name: "memo";
2146
+ readonly type: "string";
2147
+ readonly internalType: "string";
2148
+ }];
2149
+ readonly outputs: readonly [];
2150
+ readonly stateMutability: "nonpayable";
2151
+ }, {
2152
+ readonly type: "function";
2153
+ readonly name: "createPaymentRequest";
2154
+ readonly inputs: readonly [{
2155
+ readonly name: "token";
2156
+ readonly type: "address";
2157
+ readonly internalType: "address";
2158
+ }, {
2159
+ readonly name: "from";
2160
+ readonly type: "address";
2161
+ readonly internalType: "address";
2162
+ }, {
2163
+ readonly name: "amount";
2164
+ readonly type: "uint256";
2165
+ readonly internalType: "uint256";
2166
+ }, {
2167
+ readonly name: "memo";
2168
+ readonly type: "string";
2169
+ readonly internalType: "string";
2170
+ }];
2171
+ readonly outputs: readonly [{
2172
+ readonly name: "requestId";
2173
+ readonly type: "uint256";
2174
+ readonly internalType: "uint256";
2175
+ }];
2176
+ readonly stateMutability: "nonpayable";
2177
+ }, {
2178
+ readonly type: "function";
2179
+ readonly name: "payRequest";
2180
+ readonly inputs: readonly [{
2181
+ readonly name: "requestId";
2182
+ readonly type: "uint256";
2183
+ readonly internalType: "uint256";
2184
+ }];
2185
+ readonly outputs: readonly [];
2186
+ readonly stateMutability: "nonpayable";
2187
+ }, {
2188
+ readonly type: "function";
2189
+ readonly name: "cancelRequest";
2190
+ readonly inputs: readonly [{
2191
+ readonly name: "requestId";
2192
+ readonly type: "uint256";
2193
+ readonly internalType: "uint256";
2194
+ }];
2195
+ readonly outputs: readonly [];
2196
+ readonly stateMutability: "nonpayable";
2197
+ }, {
2198
+ readonly type: "function";
2199
+ readonly name: "setP2PFeeRate";
2200
+ readonly inputs: readonly [{
2201
+ readonly name: "rate";
2202
+ readonly type: "uint256";
2203
+ readonly internalType: "uint256";
2204
+ }];
2205
+ readonly outputs: readonly [];
2206
+ readonly stateMutability: "nonpayable";
2207
+ }, {
2208
+ readonly type: "function";
2209
+ readonly name: "setFeeTreasury";
2210
+ readonly inputs: readonly [{
2211
+ readonly name: "treasury";
2212
+ readonly type: "address";
2213
+ readonly internalType: "address";
2214
+ }];
2215
+ readonly outputs: readonly [];
2216
+ readonly stateMutability: "nonpayable";
2217
+ }, {
2218
+ readonly type: "function";
2219
+ readonly name: "transferOwnership";
2220
+ readonly inputs: readonly [{
2221
+ readonly name: "newOwner";
2222
+ readonly type: "address";
2223
+ readonly internalType: "address";
2224
+ }];
2225
+ readonly outputs: readonly [];
2226
+ readonly stateMutability: "nonpayable";
2227
+ }, {
2228
+ readonly type: "function";
2229
+ readonly name: "renounceOwnership";
2230
+ readonly inputs: readonly [];
2231
+ readonly outputs: readonly [];
2232
+ readonly stateMutability: "nonpayable";
2233
+ }, {
2234
+ readonly type: "function";
2235
+ readonly name: "getPaymentRequest";
2236
+ readonly inputs: readonly [{
2237
+ readonly name: "requestId";
2238
+ readonly type: "uint256";
2239
+ readonly internalType: "uint256";
2240
+ }];
2241
+ readonly outputs: readonly [{
2242
+ readonly name: "";
2243
+ readonly type: "tuple";
2244
+ readonly internalType: "struct IPaymentRouter.PaymentRequest";
2245
+ readonly components: readonly [{
2246
+ readonly name: "id";
2247
+ readonly type: "uint256";
2248
+ readonly internalType: "uint256";
2249
+ }, {
2250
+ readonly name: "from";
2251
+ readonly type: "address";
2252
+ readonly internalType: "address";
2253
+ }, {
2254
+ readonly name: "to";
2255
+ readonly type: "address";
2256
+ readonly internalType: "address";
2257
+ }, {
2258
+ readonly name: "token";
2259
+ readonly type: "address";
2260
+ readonly internalType: "address";
2261
+ }, {
2262
+ readonly name: "amount";
2263
+ readonly type: "uint256";
2264
+ readonly internalType: "uint256";
2265
+ }, {
2266
+ readonly name: "memo";
2267
+ readonly type: "string";
2268
+ readonly internalType: "string";
2269
+ }, {
2270
+ readonly name: "status";
2271
+ readonly type: "uint8";
2272
+ readonly internalType: "enum IPaymentRouter.RequestStatus";
2273
+ }, {
2274
+ readonly name: "createdAt";
2275
+ readonly type: "uint256";
2276
+ readonly internalType: "uint256";
2277
+ }];
2278
+ }];
2279
+ readonly stateMutability: "view";
2280
+ }, {
2281
+ readonly type: "function";
2282
+ readonly name: "paymentRequestCounter";
2283
+ readonly inputs: readonly [];
2284
+ readonly outputs: readonly [{
2285
+ readonly name: "";
2286
+ readonly type: "uint256";
2287
+ readonly internalType: "uint256";
2288
+ }];
2289
+ readonly stateMutability: "view";
2290
+ }, {
2291
+ readonly type: "function";
2292
+ readonly name: "p2pFeeRate";
2293
+ readonly inputs: readonly [];
2294
+ readonly outputs: readonly [{
2295
+ readonly name: "";
2296
+ readonly type: "uint256";
2297
+ readonly internalType: "uint256";
2298
+ }];
2299
+ readonly stateMutability: "view";
2300
+ }, {
2301
+ readonly type: "function";
2302
+ readonly name: "feeTreasury";
2303
+ readonly inputs: readonly [];
2304
+ readonly outputs: readonly [{
2305
+ readonly name: "";
2306
+ readonly type: "address";
2307
+ readonly internalType: "address";
2308
+ }];
2309
+ readonly stateMutability: "view";
2310
+ }, {
2311
+ readonly type: "function";
2312
+ readonly name: "mobileNumberNFT";
2313
+ readonly inputs: readonly [];
2314
+ readonly outputs: readonly [{
2315
+ readonly name: "";
2316
+ readonly type: "address";
2317
+ readonly internalType: "address";
2318
+ }];
2319
+ readonly stateMutability: "view";
2320
+ }, {
2321
+ readonly type: "function";
2322
+ readonly name: "owner";
2323
+ readonly inputs: readonly [];
2324
+ readonly outputs: readonly [{
2325
+ readonly name: "";
2326
+ readonly type: "address";
2327
+ readonly internalType: "address";
2328
+ }];
2329
+ readonly stateMutability: "view";
2330
+ }];
2331
+
2332
+ /**
2333
+ * ABI for the Withdrawals contract.
2334
+ *
2335
+ * Manages withdrawal lifecycle: pending → processing → completed/failed.
2336
+ * Only the gateway can create withdrawals. Owner manages status transitions.
2337
+ */
2338
+ declare const WithdrawalsABI: readonly [{
2339
+ readonly type: "error";
2340
+ readonly name: "OnlyGateway";
2341
+ readonly inputs: readonly [];
2342
+ }, {
2343
+ readonly type: "error";
2344
+ readonly name: "WithdrawalNotFound";
2345
+ readonly inputs: readonly [];
2346
+ }, {
2347
+ readonly type: "error";
2348
+ readonly name: "InvalidStatus";
2349
+ readonly inputs: readonly [];
2350
+ }, {
2351
+ readonly type: "error";
2352
+ readonly name: "ZeroAddress";
2353
+ readonly inputs: readonly [];
2354
+ }, {
2355
+ readonly type: "error";
2356
+ readonly name: "ZeroAmount";
2357
+ readonly inputs: readonly [];
2358
+ }, {
2359
+ readonly type: "event";
2360
+ readonly name: "WithdrawalCreated";
2361
+ readonly inputs: readonly [{
2362
+ readonly name: "id";
2363
+ readonly type: "uint256";
2364
+ readonly indexed: true;
2365
+ readonly internalType: "uint256";
2366
+ }, {
2367
+ readonly name: "user";
2368
+ readonly type: "address";
2369
+ readonly indexed: true;
2370
+ readonly internalType: "address";
2371
+ }, {
2372
+ readonly name: "token";
2373
+ readonly type: "address";
2374
+ readonly indexed: false;
2375
+ readonly internalType: "address";
2376
+ }, {
2377
+ readonly name: "amount";
2378
+ readonly type: "uint256";
2379
+ readonly indexed: false;
2380
+ readonly internalType: "uint256";
2381
+ }, {
2382
+ readonly name: "fee";
2383
+ readonly type: "uint256";
2384
+ readonly indexed: false;
2385
+ readonly internalType: "uint256";
2386
+ }, {
2387
+ readonly name: "phoneNumber";
2388
+ readonly type: "string";
2389
+ readonly indexed: false;
2390
+ readonly internalType: "string";
2391
+ }];
2392
+ readonly anonymous: false;
2393
+ }, {
2394
+ readonly type: "event";
2395
+ readonly name: "WithdrawalProcessing";
2396
+ readonly inputs: readonly [{
2397
+ readonly name: "id";
2398
+ readonly type: "uint256";
2399
+ readonly indexed: true;
2400
+ readonly internalType: "uint256";
2401
+ }];
2402
+ readonly anonymous: false;
2403
+ }, {
2404
+ readonly type: "event";
2405
+ readonly name: "WithdrawalCompleted";
2406
+ readonly inputs: readonly [{
2407
+ readonly name: "id";
2408
+ readonly type: "uint256";
2409
+ readonly indexed: true;
2410
+ readonly internalType: "uint256";
2411
+ }, {
2412
+ readonly name: "completedAt";
2413
+ readonly type: "uint256";
2414
+ readonly indexed: false;
2415
+ readonly internalType: "uint256";
2416
+ }];
2417
+ readonly anonymous: false;
2418
+ }, {
2419
+ readonly type: "event";
2420
+ readonly name: "WithdrawalFailed";
2421
+ readonly inputs: readonly [{
2422
+ readonly name: "id";
2423
+ readonly type: "uint256";
2424
+ readonly indexed: true;
2425
+ readonly internalType: "uint256";
2426
+ }, {
2427
+ readonly name: "user";
2428
+ readonly type: "address";
2429
+ readonly indexed: true;
2430
+ readonly internalType: "address";
2431
+ }, {
2432
+ readonly name: "refundAmount";
2433
+ readonly type: "uint256";
2434
+ readonly indexed: false;
2435
+ readonly internalType: "uint256";
2436
+ }];
2437
+ readonly anonymous: false;
2438
+ }, {
2439
+ readonly type: "event";
2440
+ readonly name: "GatewayUpdated";
2441
+ readonly inputs: readonly [{
2442
+ readonly name: "gateway";
2443
+ readonly type: "address";
2444
+ readonly indexed: true;
2445
+ readonly internalType: "address";
2446
+ }];
2447
+ readonly anonymous: false;
2448
+ }, {
2449
+ readonly type: "event";
2450
+ readonly name: "OwnershipTransferred";
2451
+ readonly inputs: readonly [{
2452
+ readonly name: "previousOwner";
2453
+ readonly type: "address";
2454
+ readonly indexed: true;
2455
+ readonly internalType: "address";
2456
+ }, {
2457
+ readonly name: "newOwner";
2458
+ readonly type: "address";
2459
+ readonly indexed: true;
2460
+ readonly internalType: "address";
2461
+ }];
2462
+ readonly anonymous: false;
2463
+ }, {
2464
+ readonly type: "constructor";
2465
+ readonly inputs: readonly [];
2466
+ readonly stateMutability: "nonpayable";
2467
+ }, {
2468
+ readonly type: "function";
2469
+ readonly name: "setGateway";
2470
+ readonly inputs: readonly [{
2471
+ readonly name: "_gateway";
2472
+ readonly type: "address";
2473
+ readonly internalType: "address";
2474
+ }];
2475
+ readonly outputs: readonly [];
2476
+ readonly stateMutability: "nonpayable";
2477
+ }, {
2478
+ readonly type: "function";
2479
+ readonly name: "processWithdrawal";
2480
+ readonly inputs: readonly [{
2481
+ readonly name: "id";
2482
+ readonly type: "uint256";
2483
+ readonly internalType: "uint256";
2484
+ }];
2485
+ readonly outputs: readonly [];
2486
+ readonly stateMutability: "nonpayable";
2487
+ }, {
2488
+ readonly type: "function";
2489
+ readonly name: "completeWithdrawal";
2490
+ readonly inputs: readonly [{
2491
+ readonly name: "id";
2492
+ readonly type: "uint256";
2493
+ readonly internalType: "uint256";
2494
+ }];
2495
+ readonly outputs: readonly [];
2496
+ readonly stateMutability: "nonpayable";
2497
+ }, {
2498
+ readonly type: "function";
2499
+ readonly name: "failWithdrawal";
2500
+ readonly inputs: readonly [{
2501
+ readonly name: "id";
2502
+ readonly type: "uint256";
2503
+ readonly internalType: "uint256";
2504
+ }];
2505
+ readonly outputs: readonly [];
2506
+ readonly stateMutability: "nonpayable";
2507
+ }, {
2508
+ readonly type: "function";
2509
+ readonly name: "createWithdrawal";
2510
+ readonly inputs: readonly [{
2511
+ readonly name: "user";
2512
+ readonly type: "address";
2513
+ readonly internalType: "address";
2514
+ }, {
2515
+ readonly name: "token";
2516
+ readonly type: "address";
2517
+ readonly internalType: "address";
2518
+ }, {
2519
+ readonly name: "amount";
2520
+ readonly type: "uint256";
2521
+ readonly internalType: "uint256";
2522
+ }, {
2523
+ readonly name: "fee";
2524
+ readonly type: "uint256";
2525
+ readonly internalType: "uint256";
2526
+ }, {
2527
+ readonly name: "paymentMethod";
2528
+ readonly type: "uint8";
2529
+ readonly internalType: "uint8";
2530
+ }, {
2531
+ readonly name: "phoneNumber";
2532
+ readonly type: "string";
2533
+ readonly internalType: "string";
2534
+ }];
2535
+ readonly outputs: readonly [{
2536
+ readonly name: "id";
2537
+ readonly type: "uint256";
2538
+ readonly internalType: "uint256";
2539
+ }];
2540
+ readonly stateMutability: "nonpayable";
2541
+ }, {
2542
+ readonly type: "function";
2543
+ readonly name: "getWithdrawal";
2544
+ readonly inputs: readonly [{
2545
+ readonly name: "id";
2546
+ readonly type: "uint256";
2547
+ readonly internalType: "uint256";
2548
+ }];
2549
+ readonly outputs: readonly [{
2550
+ readonly name: "";
2551
+ readonly type: "tuple";
2552
+ readonly internalType: "struct Withdrawals.Withdrawal";
2553
+ readonly components: readonly [{
2554
+ readonly name: "id";
2555
+ readonly type: "uint256";
2556
+ readonly internalType: "uint256";
2557
+ }, {
2558
+ readonly name: "user";
2559
+ readonly type: "address";
2560
+ readonly internalType: "address";
2561
+ }, {
2562
+ readonly name: "token";
2563
+ readonly type: "address";
2564
+ readonly internalType: "address";
2565
+ }, {
2566
+ readonly name: "amount";
2567
+ readonly type: "uint256";
2568
+ readonly internalType: "uint256";
2569
+ }, {
2570
+ readonly name: "fee";
2571
+ readonly type: "uint256";
2572
+ readonly internalType: "uint256";
2573
+ }, {
2574
+ readonly name: "status";
2575
+ readonly type: "uint8";
2576
+ readonly internalType: "uint8";
2577
+ }, {
2578
+ readonly name: "paymentMethod";
2579
+ readonly type: "uint8";
2580
+ readonly internalType: "uint8";
2581
+ }, {
2582
+ readonly name: "phoneNumber";
2583
+ readonly type: "string";
2584
+ readonly internalType: "string";
2585
+ }, {
2586
+ readonly name: "createdAt";
2587
+ readonly type: "uint256";
2588
+ readonly internalType: "uint256";
2589
+ }, {
2590
+ readonly name: "completedAt";
2591
+ readonly type: "uint256";
2592
+ readonly internalType: "uint256";
2593
+ }];
2594
+ }];
2595
+ readonly stateMutability: "view";
2596
+ }, {
2597
+ readonly type: "function";
2598
+ readonly name: "getUserWithdrawals";
2599
+ readonly inputs: readonly [{
2600
+ readonly name: "user";
2601
+ readonly type: "address";
2602
+ readonly internalType: "address";
2603
+ }];
2604
+ readonly outputs: readonly [{
2605
+ readonly name: "";
2606
+ readonly type: "uint256[]";
2607
+ readonly internalType: "uint256[]";
2608
+ }];
2609
+ readonly stateMutability: "view";
2610
+ }, {
2611
+ readonly type: "function";
2612
+ readonly name: "withdrawalCounter";
2613
+ readonly inputs: readonly [];
2614
+ readonly outputs: readonly [{
2615
+ readonly name: "";
2616
+ readonly type: "uint256";
2617
+ readonly internalType: "uint256";
2618
+ }];
2619
+ readonly stateMutability: "view";
2620
+ }, {
2621
+ readonly type: "function";
2622
+ readonly name: "gateway";
2623
+ readonly inputs: readonly [];
2624
+ readonly outputs: readonly [{
2625
+ readonly name: "";
2626
+ readonly type: "address";
2627
+ readonly internalType: "address";
2628
+ }];
2629
+ readonly stateMutability: "view";
2630
+ }, {
2631
+ readonly type: "function";
2632
+ readonly name: "STATUS_PENDING";
2633
+ readonly inputs: readonly [];
2634
+ readonly outputs: readonly [{
2635
+ readonly name: "";
2636
+ readonly type: "uint8";
2637
+ readonly internalType: "uint8";
2638
+ }];
2639
+ readonly stateMutability: "view";
2640
+ }, {
2641
+ readonly type: "function";
2642
+ readonly name: "STATUS_PROCESSING";
2643
+ readonly inputs: readonly [];
2644
+ readonly outputs: readonly [{
2645
+ readonly name: "";
2646
+ readonly type: "uint8";
2647
+ readonly internalType: "uint8";
2648
+ }];
2649
+ readonly stateMutability: "view";
2650
+ }, {
2651
+ readonly type: "function";
2652
+ readonly name: "STATUS_COMPLETED";
2653
+ readonly inputs: readonly [];
2654
+ readonly outputs: readonly [{
2655
+ readonly name: "";
2656
+ readonly type: "uint8";
2657
+ readonly internalType: "uint8";
2658
+ }];
2659
+ readonly stateMutability: "view";
2660
+ }, {
2661
+ readonly type: "function";
2662
+ readonly name: "STATUS_FAILED";
2663
+ readonly inputs: readonly [];
2664
+ readonly outputs: readonly [{
2665
+ readonly name: "";
2666
+ readonly type: "uint8";
2667
+ readonly internalType: "uint8";
2668
+ }];
2669
+ readonly stateMutability: "view";
2670
+ }, {
2671
+ readonly type: "function";
2672
+ readonly name: "owner";
2673
+ readonly inputs: readonly [];
2674
+ readonly outputs: readonly [{
2675
+ readonly name: "";
2676
+ readonly type: "address";
2677
+ readonly internalType: "address";
2678
+ }];
2679
+ readonly stateMutability: "view";
2680
+ }];
2681
+
2682
+ /**
2683
+ * ABI for the LiquidityPool contract.
2684
+ *
2685
+ * LPs deposit a supported stablecoin and earn a proportional share of
2686
+ * conversion fees distributed by the gateway.
2687
+ */
2688
+ declare const LiquidityPoolABI: readonly [{
2689
+ readonly type: "error";
2690
+ readonly name: "BelowMinDeposit";
2691
+ readonly inputs: readonly [];
2692
+ }, {
2693
+ readonly type: "error";
2694
+ readonly name: "ZeroAmount";
2695
+ readonly inputs: readonly [];
2696
+ }, {
2697
+ readonly type: "error";
2698
+ readonly name: "LockPeriodActive";
2699
+ readonly inputs: readonly [];
2700
+ }, {
2701
+ readonly type: "error";
2702
+ readonly name: "InsufficientBalance";
2703
+ readonly inputs: readonly [];
2704
+ }, {
2705
+ readonly type: "error";
2706
+ readonly name: "OnlyGateway";
2707
+ readonly inputs: readonly [];
2708
+ }, {
2709
+ readonly type: "error";
2710
+ readonly name: "ZeroAddress";
2711
+ readonly inputs: readonly [];
2712
+ }, {
2713
+ readonly type: "event";
2714
+ readonly name: "Deposited";
2715
+ readonly inputs: readonly [{
2716
+ readonly name: "user";
2717
+ readonly type: "address";
2718
+ readonly indexed: true;
2719
+ readonly internalType: "address";
2720
+ }, {
2721
+ readonly name: "amount";
2722
+ readonly type: "uint256";
2723
+ readonly indexed: false;
2724
+ readonly internalType: "uint256";
2725
+ }];
2726
+ readonly anonymous: false;
2727
+ }, {
2728
+ readonly type: "event";
2729
+ readonly name: "Withdrawn";
2730
+ readonly inputs: readonly [{
2731
+ readonly name: "user";
2732
+ readonly type: "address";
2733
+ readonly indexed: true;
2734
+ readonly internalType: "address";
2735
+ }, {
2736
+ readonly name: "amount";
2737
+ readonly type: "uint256";
2738
+ readonly indexed: false;
2739
+ readonly internalType: "uint256";
2740
+ }];
2741
+ readonly anonymous: false;
2742
+ }, {
2743
+ readonly type: "event";
2744
+ readonly name: "RewardsClaimed";
2745
+ readonly inputs: readonly [{
2746
+ readonly name: "user";
2747
+ readonly type: "address";
2748
+ readonly indexed: true;
2749
+ readonly internalType: "address";
2750
+ }, {
2751
+ readonly name: "amount";
2752
+ readonly type: "uint256";
2753
+ readonly indexed: false;
2754
+ readonly internalType: "uint256";
2755
+ }];
2756
+ readonly anonymous: false;
2757
+ }, {
2758
+ readonly type: "event";
2759
+ readonly name: "RewardsDistributed";
2760
+ readonly inputs: readonly [{
2761
+ readonly name: "amount";
2762
+ readonly type: "uint256";
2763
+ readonly indexed: false;
2764
+ readonly internalType: "uint256";
2765
+ }];
2766
+ readonly anonymous: false;
2767
+ }, {
2768
+ readonly type: "event";
2769
+ readonly name: "OwnershipTransferred";
2770
+ readonly inputs: readonly [{
2771
+ readonly name: "previousOwner";
2772
+ readonly type: "address";
2773
+ readonly indexed: true;
2774
+ readonly internalType: "address";
2775
+ }, {
2776
+ readonly name: "newOwner";
2777
+ readonly type: "address";
2778
+ readonly indexed: true;
2779
+ readonly internalType: "address";
2780
+ }];
2781
+ readonly anonymous: false;
2782
+ }, {
2783
+ readonly type: "constructor";
2784
+ readonly inputs: readonly [{
2785
+ readonly name: "_supportedToken";
2786
+ readonly type: "address";
2787
+ readonly internalType: "address";
2788
+ }, {
2789
+ readonly name: "_gateway";
2790
+ readonly type: "address";
2791
+ readonly internalType: "address";
2792
+ }, {
2793
+ readonly name: "_minDeposit";
2794
+ readonly type: "uint256";
2795
+ readonly internalType: "uint256";
2796
+ }, {
2797
+ readonly name: "_lockPeriod";
2798
+ readonly type: "uint256";
2799
+ readonly internalType: "uint256";
2800
+ }];
2801
+ readonly stateMutability: "nonpayable";
2802
+ }, {
2803
+ readonly type: "function";
2804
+ readonly name: "deposit";
2805
+ readonly inputs: readonly [{
2806
+ readonly name: "amount";
2807
+ readonly type: "uint256";
2808
+ readonly internalType: "uint256";
2809
+ }];
2810
+ readonly outputs: readonly [];
2811
+ readonly stateMutability: "nonpayable";
2812
+ }, {
2813
+ readonly type: "function";
2814
+ readonly name: "withdraw";
2815
+ readonly inputs: readonly [{
2816
+ readonly name: "amount";
2817
+ readonly type: "uint256";
2818
+ readonly internalType: "uint256";
2819
+ }];
2820
+ readonly outputs: readonly [];
2821
+ readonly stateMutability: "nonpayable";
2822
+ }, {
2823
+ readonly type: "function";
2824
+ readonly name: "claimRewards";
2825
+ readonly inputs: readonly [];
2826
+ readonly outputs: readonly [];
2827
+ readonly stateMutability: "nonpayable";
2828
+ }, {
2829
+ readonly type: "function";
2830
+ readonly name: "distributeRewards";
2831
+ readonly inputs: readonly [{
2832
+ readonly name: "amount";
2833
+ readonly type: "uint256";
2834
+ readonly internalType: "uint256";
2835
+ }];
2836
+ readonly outputs: readonly [];
2837
+ readonly stateMutability: "nonpayable";
2838
+ }, {
2839
+ readonly type: "function";
2840
+ readonly name: "setGateway";
2841
+ readonly inputs: readonly [{
2842
+ readonly name: "_gateway";
2843
+ readonly type: "address";
2844
+ readonly internalType: "address";
2845
+ }];
2846
+ readonly outputs: readonly [];
2847
+ readonly stateMutability: "nonpayable";
2848
+ }, {
2849
+ readonly type: "function";
2850
+ readonly name: "setMinDeposit";
2851
+ readonly inputs: readonly [{
2852
+ readonly name: "_minDeposit";
2853
+ readonly type: "uint256";
2854
+ readonly internalType: "uint256";
2855
+ }];
2856
+ readonly outputs: readonly [];
2857
+ readonly stateMutability: "nonpayable";
2858
+ }, {
2859
+ readonly type: "function";
2860
+ readonly name: "setLockPeriod";
2861
+ readonly inputs: readonly [{
2862
+ readonly name: "_lockPeriod";
2863
+ readonly type: "uint256";
2864
+ readonly internalType: "uint256";
2865
+ }];
2866
+ readonly outputs: readonly [];
2867
+ readonly stateMutability: "nonpayable";
2868
+ }, {
2869
+ readonly type: "function";
2870
+ readonly name: "getRewards";
2871
+ readonly inputs: readonly [{
2872
+ readonly name: "user";
2873
+ readonly type: "address";
2874
+ readonly internalType: "address";
2875
+ }];
2876
+ readonly outputs: readonly [{
2877
+ readonly name: "";
2878
+ readonly type: "uint256";
2879
+ readonly internalType: "uint256";
2880
+ }];
2881
+ readonly stateMutability: "view";
2882
+ }, {
2883
+ readonly type: "function";
2884
+ readonly name: "getDeposit";
2885
+ readonly inputs: readonly [{
2886
+ readonly name: "user";
2887
+ readonly type: "address";
2888
+ readonly internalType: "address";
2889
+ }];
2890
+ readonly outputs: readonly [{
2891
+ readonly name: "";
2892
+ readonly type: "uint256";
2893
+ readonly internalType: "uint256";
2894
+ }];
2895
+ readonly stateMutability: "view";
2896
+ }, {
2897
+ readonly type: "function";
2898
+ readonly name: "getPoolInfo";
2899
+ readonly inputs: readonly [];
2900
+ readonly outputs: readonly [{
2901
+ readonly name: "";
2902
+ readonly type: "tuple";
2903
+ readonly internalType: "struct ILiquidityPool.PoolInfo";
2904
+ readonly components: readonly [{
2905
+ readonly name: "totalDeposits";
2906
+ readonly type: "uint256";
2907
+ readonly internalType: "uint256";
2908
+ }, {
2909
+ readonly name: "rewardPerToken";
2910
+ readonly type: "uint256";
2911
+ readonly internalType: "uint256";
2912
+ }, {
2913
+ readonly name: "supportedToken";
2914
+ readonly type: "address";
2915
+ readonly internalType: "address";
2916
+ }, {
2917
+ readonly name: "minDeposit";
2918
+ readonly type: "uint256";
2919
+ readonly internalType: "uint256";
2920
+ }, {
2921
+ readonly name: "lockPeriod";
2922
+ readonly type: "uint256";
2923
+ readonly internalType: "uint256";
2924
+ }];
2925
+ }];
2926
+ readonly stateMutability: "view";
2927
+ }, {
2928
+ readonly type: "function";
2929
+ readonly name: "supportedToken";
2930
+ readonly inputs: readonly [];
2931
+ readonly outputs: readonly [{
2932
+ readonly name: "";
2933
+ readonly type: "address";
2934
+ readonly internalType: "address";
2935
+ }];
2936
+ readonly stateMutability: "view";
2937
+ }, {
2938
+ readonly type: "function";
2939
+ readonly name: "totalDeposits";
2940
+ readonly inputs: readonly [];
2941
+ readonly outputs: readonly [{
2942
+ readonly name: "";
2943
+ readonly type: "uint256";
2944
+ readonly internalType: "uint256";
2945
+ }];
2946
+ readonly stateMutability: "view";
2947
+ }, {
2948
+ readonly type: "function";
2949
+ readonly name: "minDeposit";
2950
+ readonly inputs: readonly [];
2951
+ readonly outputs: readonly [{
2952
+ readonly name: "";
2953
+ readonly type: "uint256";
2954
+ readonly internalType: "uint256";
2955
+ }];
2956
+ readonly stateMutability: "view";
2957
+ }, {
2958
+ readonly type: "function";
2959
+ readonly name: "lockPeriod";
2960
+ readonly inputs: readonly [];
2961
+ readonly outputs: readonly [{
2962
+ readonly name: "";
2963
+ readonly type: "uint256";
2964
+ readonly internalType: "uint256";
2965
+ }];
2966
+ readonly stateMutability: "view";
2967
+ }, {
2968
+ readonly type: "function";
2969
+ readonly name: "accRewardPerShare";
2970
+ readonly inputs: readonly [];
2971
+ readonly outputs: readonly [{
2972
+ readonly name: "";
2973
+ readonly type: "uint256";
2974
+ readonly internalType: "uint256";
2975
+ }];
2976
+ readonly stateMutability: "view";
2977
+ }, {
2978
+ readonly type: "function";
2979
+ readonly name: "gateway";
2980
+ readonly inputs: readonly [];
2981
+ readonly outputs: readonly [{
2982
+ readonly name: "";
2983
+ readonly type: "address";
2984
+ readonly internalType: "address";
2985
+ }];
2986
+ readonly stateMutability: "view";
2987
+ }, {
2988
+ readonly type: "function";
2989
+ readonly name: "owner";
2990
+ readonly inputs: readonly [];
2991
+ readonly outputs: readonly [{
2992
+ readonly name: "";
2993
+ readonly type: "address";
2994
+ readonly internalType: "address";
2995
+ }];
2996
+ readonly stateMutability: "view";
2997
+ }];
2998
+
2999
+ /**
3000
+ * ABI for the VaultController contract.
3001
+ *
3002
+ * Passive yield vault for stablecoin deposits.
3003
+ * Yield accrues linearly based on an annual rate (basis points).
3004
+ */
3005
+ declare const VaultControllerABI: readonly [{
3006
+ readonly type: "error";
3007
+ readonly name: "BelowMinDeposit";
3008
+ readonly inputs: readonly [];
3009
+ }, {
3010
+ readonly type: "error";
3011
+ readonly name: "ZeroAmount";
3012
+ readonly inputs: readonly [];
3013
+ }, {
3014
+ readonly type: "error";
3015
+ readonly name: "InsufficientBalance";
3016
+ readonly inputs: readonly [];
3017
+ }, {
3018
+ readonly type: "error";
3019
+ readonly name: "NoYieldAvailable";
3020
+ readonly inputs: readonly [];
3021
+ }, {
3022
+ readonly type: "error";
3023
+ readonly name: "ZeroAddress";
3024
+ readonly inputs: readonly [];
3025
+ }, {
3026
+ readonly type: "error";
3027
+ readonly name: "InvalidYieldRate";
3028
+ readonly inputs: readonly [];
3029
+ }, {
3030
+ readonly type: "event";
3031
+ readonly name: "VaultDeposited";
3032
+ readonly inputs: readonly [{
3033
+ readonly name: "user";
3034
+ readonly type: "address";
3035
+ readonly indexed: true;
3036
+ readonly internalType: "address";
3037
+ }, {
3038
+ readonly name: "amount";
3039
+ readonly type: "uint256";
3040
+ readonly indexed: false;
3041
+ readonly internalType: "uint256";
3042
+ }];
3043
+ readonly anonymous: false;
3044
+ }, {
3045
+ readonly type: "event";
3046
+ readonly name: "VaultWithdrawn";
3047
+ readonly inputs: readonly [{
3048
+ readonly name: "user";
3049
+ readonly type: "address";
3050
+ readonly indexed: true;
3051
+ readonly internalType: "address";
3052
+ }, {
3053
+ readonly name: "amount";
3054
+ readonly type: "uint256";
3055
+ readonly indexed: false;
3056
+ readonly internalType: "uint256";
3057
+ }];
3058
+ readonly anonymous: false;
3059
+ }, {
3060
+ readonly type: "event";
3061
+ readonly name: "YieldClaimed";
3062
+ readonly inputs: readonly [{
3063
+ readonly name: "user";
3064
+ readonly type: "address";
3065
+ readonly indexed: true;
3066
+ readonly internalType: "address";
3067
+ }, {
3068
+ readonly name: "yieldAmount";
3069
+ readonly type: "uint256";
3070
+ readonly indexed: false;
3071
+ readonly internalType: "uint256";
3072
+ }];
3073
+ readonly anonymous: false;
3074
+ }, {
3075
+ readonly type: "event";
3076
+ readonly name: "YieldRateUpdated";
3077
+ readonly inputs: readonly [{
3078
+ readonly name: "newRate";
3079
+ readonly type: "uint256";
3080
+ readonly indexed: false;
3081
+ readonly internalType: "uint256";
3082
+ }];
3083
+ readonly anonymous: false;
3084
+ }, {
3085
+ readonly type: "event";
3086
+ readonly name: "OwnershipTransferred";
3087
+ readonly inputs: readonly [{
3088
+ readonly name: "previousOwner";
3089
+ readonly type: "address";
3090
+ readonly indexed: true;
3091
+ readonly internalType: "address";
3092
+ }, {
3093
+ readonly name: "newOwner";
3094
+ readonly type: "address";
3095
+ readonly indexed: true;
3096
+ readonly internalType: "address";
3097
+ }];
3098
+ readonly anonymous: false;
3099
+ }, {
3100
+ readonly type: "constructor";
3101
+ readonly inputs: readonly [{
3102
+ readonly name: "_supportedToken";
3103
+ readonly type: "address";
3104
+ readonly internalType: "address";
3105
+ }, {
3106
+ readonly name: "_annualYieldRate";
3107
+ readonly type: "uint256";
3108
+ readonly internalType: "uint256";
3109
+ }, {
3110
+ readonly name: "_minDeposit";
3111
+ readonly type: "uint256";
3112
+ readonly internalType: "uint256";
3113
+ }];
3114
+ readonly stateMutability: "nonpayable";
3115
+ }, {
3116
+ readonly type: "function";
3117
+ readonly name: "deposit";
3118
+ readonly inputs: readonly [{
3119
+ readonly name: "amount";
3120
+ readonly type: "uint256";
3121
+ readonly internalType: "uint256";
3122
+ }];
3123
+ readonly outputs: readonly [];
3124
+ readonly stateMutability: "nonpayable";
3125
+ }, {
3126
+ readonly type: "function";
3127
+ readonly name: "withdraw";
3128
+ readonly inputs: readonly [{
3129
+ readonly name: "amount";
3130
+ readonly type: "uint256";
3131
+ readonly internalType: "uint256";
3132
+ }];
3133
+ readonly outputs: readonly [];
3134
+ readonly stateMutability: "nonpayable";
3135
+ }, {
3136
+ readonly type: "function";
3137
+ readonly name: "claimYield";
3138
+ readonly inputs: readonly [];
3139
+ readonly outputs: readonly [];
3140
+ readonly stateMutability: "nonpayable";
3141
+ }, {
3142
+ readonly type: "function";
3143
+ readonly name: "setAnnualYieldRate";
3144
+ readonly inputs: readonly [{
3145
+ readonly name: "rate";
3146
+ readonly type: "uint256";
3147
+ readonly internalType: "uint256";
3148
+ }];
3149
+ readonly outputs: readonly [];
3150
+ readonly stateMutability: "nonpayable";
3151
+ }, {
3152
+ readonly type: "function";
3153
+ readonly name: "setMinDeposit";
3154
+ readonly inputs: readonly [{
3155
+ readonly name: "amount";
3156
+ readonly type: "uint256";
3157
+ readonly internalType: "uint256";
3158
+ }];
3159
+ readonly outputs: readonly [];
3160
+ readonly stateMutability: "nonpayable";
3161
+ }, {
3162
+ readonly type: "function";
3163
+ readonly name: "transferOwnership";
3164
+ readonly inputs: readonly [{
3165
+ readonly name: "newOwner";
3166
+ readonly type: "address";
3167
+ readonly internalType: "address";
3168
+ }];
3169
+ readonly outputs: readonly [];
3170
+ readonly stateMutability: "nonpayable";
3171
+ }, {
3172
+ readonly type: "function";
3173
+ readonly name: "renounceOwnership";
3174
+ readonly inputs: readonly [];
3175
+ readonly outputs: readonly [];
3176
+ readonly stateMutability: "nonpayable";
3177
+ }, {
3178
+ readonly type: "function";
3179
+ readonly name: "getVault";
3180
+ readonly inputs: readonly [{
3181
+ readonly name: "user";
3182
+ readonly type: "address";
3183
+ readonly internalType: "address";
3184
+ }];
3185
+ readonly outputs: readonly [{
3186
+ readonly name: "";
3187
+ readonly type: "tuple";
3188
+ readonly internalType: "struct IVault.VaultInfo";
3189
+ readonly components: readonly [{
3190
+ readonly name: "balance";
3191
+ readonly type: "uint256";
3192
+ readonly internalType: "uint256";
3193
+ }, {
3194
+ readonly name: "depositedAt";
3195
+ readonly type: "uint256";
3196
+ readonly internalType: "uint256";
3197
+ }, {
3198
+ readonly name: "lastYieldClaim";
3199
+ readonly type: "uint256";
3200
+ readonly internalType: "uint256";
3201
+ }];
3202
+ }];
3203
+ readonly stateMutability: "view";
3204
+ }, {
3205
+ readonly type: "function";
3206
+ readonly name: "calculateYield";
3207
+ readonly inputs: readonly [{
3208
+ readonly name: "user";
3209
+ readonly type: "address";
3210
+ readonly internalType: "address";
3211
+ }];
3212
+ readonly outputs: readonly [{
3213
+ readonly name: "";
3214
+ readonly type: "uint256";
3215
+ readonly internalType: "uint256";
3216
+ }];
3217
+ readonly stateMutability: "view";
3218
+ }, {
3219
+ readonly type: "function";
3220
+ readonly name: "annualYieldRate";
3221
+ readonly inputs: readonly [];
3222
+ readonly outputs: readonly [{
3223
+ readonly name: "";
3224
+ readonly type: "uint256";
3225
+ readonly internalType: "uint256";
3226
+ }];
3227
+ readonly stateMutability: "view";
3228
+ }, {
3229
+ readonly type: "function";
3230
+ readonly name: "minDeposit";
3231
+ readonly inputs: readonly [];
3232
+ readonly outputs: readonly [{
3233
+ readonly name: "";
3234
+ readonly type: "uint256";
3235
+ readonly internalType: "uint256";
3236
+ }];
3237
+ readonly stateMutability: "view";
3238
+ }, {
3239
+ readonly type: "function";
3240
+ readonly name: "totalDeposited";
3241
+ readonly inputs: readonly [];
3242
+ readonly outputs: readonly [{
3243
+ readonly name: "";
3244
+ readonly type: "uint256";
3245
+ readonly internalType: "uint256";
3246
+ }];
3247
+ readonly stateMutability: "view";
3248
+ }, {
3249
+ readonly type: "function";
3250
+ readonly name: "supportedToken";
3251
+ readonly inputs: readonly [];
3252
+ readonly outputs: readonly [{
3253
+ readonly name: "";
3254
+ readonly type: "address";
3255
+ readonly internalType: "address";
3256
+ }];
3257
+ readonly stateMutability: "view";
3258
+ }, {
3259
+ readonly type: "function";
3260
+ readonly name: "MAX_YIELD_RATE";
3261
+ readonly inputs: readonly [];
3262
+ readonly outputs: readonly [{
3263
+ readonly name: "";
3264
+ readonly type: "uint256";
3265
+ readonly internalType: "uint256";
3266
+ }];
3267
+ readonly stateMutability: "view";
3268
+ }, {
3269
+ readonly type: "function";
3270
+ readonly name: "owner";
3271
+ readonly inputs: readonly [];
3272
+ readonly outputs: readonly [{
3273
+ readonly name: "";
3274
+ readonly type: "address";
3275
+ readonly internalType: "address";
3276
+ }];
3277
+ readonly stateMutability: "view";
3278
+ }];
3279
+
3280
+ /**
3281
+ * ABI for the GHSFIAT token contract.
3282
+ *
3283
+ * ERC-20 stablecoin pegged to the Ghana Cedi (GHS).
3284
+ * Role-based minting/burning. Pausable for emergency stops.
3285
+ */
3286
+ declare const GHSFIATABI: readonly [{
3287
+ readonly type: "error";
3288
+ readonly name: "ZeroAddress";
3289
+ readonly inputs: readonly [];
3290
+ }, {
3291
+ readonly type: "error";
3292
+ readonly name: "ZeroAmount";
3293
+ readonly inputs: readonly [];
3294
+ }, {
3295
+ readonly type: "event";
3296
+ readonly name: "Transfer";
3297
+ readonly inputs: readonly [{
3298
+ readonly name: "from";
3299
+ readonly type: "address";
3300
+ readonly indexed: true;
3301
+ readonly internalType: "address";
3302
+ }, {
3303
+ readonly name: "to";
3304
+ readonly type: "address";
3305
+ readonly indexed: true;
3306
+ readonly internalType: "address";
3307
+ }, {
3308
+ readonly name: "value";
3309
+ readonly type: "uint256";
3310
+ readonly indexed: false;
3311
+ readonly internalType: "uint256";
3312
+ }];
3313
+ readonly anonymous: false;
3314
+ }, {
3315
+ readonly type: "event";
3316
+ readonly name: "Approval";
3317
+ readonly inputs: readonly [{
3318
+ readonly name: "owner";
3319
+ readonly type: "address";
3320
+ readonly indexed: true;
3321
+ readonly internalType: "address";
3322
+ }, {
3323
+ readonly name: "spender";
3324
+ readonly type: "address";
3325
+ readonly indexed: true;
3326
+ readonly internalType: "address";
3327
+ }, {
3328
+ readonly name: "value";
3329
+ readonly type: "uint256";
3330
+ readonly indexed: false;
3331
+ readonly internalType: "uint256";
3332
+ }];
3333
+ readonly anonymous: false;
3334
+ }, {
3335
+ readonly type: "event";
3336
+ readonly name: "Paused";
3337
+ readonly inputs: readonly [{
3338
+ readonly name: "account";
3339
+ readonly type: "address";
3340
+ readonly indexed: false;
3341
+ readonly internalType: "address";
3342
+ }];
3343
+ readonly anonymous: false;
3344
+ }, {
3345
+ readonly type: "event";
3346
+ readonly name: "Unpaused";
3347
+ readonly inputs: readonly [{
3348
+ readonly name: "account";
3349
+ readonly type: "address";
3350
+ readonly indexed: false;
3351
+ readonly internalType: "address";
3352
+ }];
3353
+ readonly anonymous: false;
3354
+ }, {
3355
+ readonly type: "event";
3356
+ readonly name: "RoleGranted";
3357
+ readonly inputs: readonly [{
3358
+ readonly name: "role";
3359
+ readonly type: "bytes32";
3360
+ readonly indexed: true;
3361
+ readonly internalType: "bytes32";
3362
+ }, {
3363
+ readonly name: "account";
3364
+ readonly type: "address";
3365
+ readonly indexed: true;
3366
+ readonly internalType: "address";
3367
+ }, {
3368
+ readonly name: "sender";
3369
+ readonly type: "address";
3370
+ readonly indexed: true;
3371
+ readonly internalType: "address";
3372
+ }];
3373
+ readonly anonymous: false;
3374
+ }, {
3375
+ readonly type: "event";
3376
+ readonly name: "RoleRevoked";
3377
+ readonly inputs: readonly [{
3378
+ readonly name: "role";
3379
+ readonly type: "bytes32";
3380
+ readonly indexed: true;
3381
+ readonly internalType: "bytes32";
3382
+ }, {
3383
+ readonly name: "account";
3384
+ readonly type: "address";
3385
+ readonly indexed: true;
3386
+ readonly internalType: "address";
3387
+ }, {
3388
+ readonly name: "sender";
3389
+ readonly type: "address";
3390
+ readonly indexed: true;
3391
+ readonly internalType: "address";
3392
+ }];
3393
+ readonly anonymous: false;
3394
+ }, {
3395
+ readonly type: "constructor";
3396
+ readonly inputs: readonly [{
3397
+ readonly name: "admin";
3398
+ readonly type: "address";
3399
+ readonly internalType: "address";
3400
+ }];
3401
+ readonly stateMutability: "nonpayable";
3402
+ }, {
3403
+ readonly type: "function";
3404
+ readonly name: "mint";
3405
+ readonly inputs: readonly [{
3406
+ readonly name: "to";
3407
+ readonly type: "address";
3408
+ readonly internalType: "address";
3409
+ }, {
3410
+ readonly name: "amount";
3411
+ readonly type: "uint256";
3412
+ readonly internalType: "uint256";
3413
+ }];
3414
+ readonly outputs: readonly [];
3415
+ readonly stateMutability: "nonpayable";
3416
+ }, {
3417
+ readonly type: "function";
3418
+ readonly name: "burn";
3419
+ readonly inputs: readonly [{
3420
+ readonly name: "amount";
3421
+ readonly type: "uint256";
3422
+ readonly internalType: "uint256";
3423
+ }];
3424
+ readonly outputs: readonly [];
3425
+ readonly stateMutability: "nonpayable";
3426
+ }, {
3427
+ readonly type: "function";
3428
+ readonly name: "burnFrom";
3429
+ readonly inputs: readonly [{
3430
+ readonly name: "account";
3431
+ readonly type: "address";
3432
+ readonly internalType: "address";
3433
+ }, {
3434
+ readonly name: "amount";
3435
+ readonly type: "uint256";
3436
+ readonly internalType: "uint256";
3437
+ }];
3438
+ readonly outputs: readonly [];
3439
+ readonly stateMutability: "nonpayable";
3440
+ }, {
3441
+ readonly type: "function";
3442
+ readonly name: "pause";
3443
+ readonly inputs: readonly [];
3444
+ readonly outputs: readonly [];
3445
+ readonly stateMutability: "nonpayable";
3446
+ }, {
3447
+ readonly type: "function";
3448
+ readonly name: "unpause";
3449
+ readonly inputs: readonly [];
3450
+ readonly outputs: readonly [];
3451
+ readonly stateMutability: "nonpayable";
3452
+ }, {
3453
+ readonly type: "function";
3454
+ readonly name: "transfer";
3455
+ readonly inputs: readonly [{
3456
+ readonly name: "to";
3457
+ readonly type: "address";
3458
+ readonly internalType: "address";
3459
+ }, {
3460
+ readonly name: "value";
3461
+ readonly type: "uint256";
3462
+ readonly internalType: "uint256";
3463
+ }];
3464
+ readonly outputs: readonly [{
3465
+ readonly name: "";
3466
+ readonly type: "bool";
3467
+ readonly internalType: "bool";
3468
+ }];
3469
+ readonly stateMutability: "nonpayable";
3470
+ }, {
3471
+ readonly type: "function";
3472
+ readonly name: "transferFrom";
3473
+ readonly inputs: readonly [{
3474
+ readonly name: "from";
3475
+ readonly type: "address";
3476
+ readonly internalType: "address";
3477
+ }, {
3478
+ readonly name: "to";
3479
+ readonly type: "address";
3480
+ readonly internalType: "address";
3481
+ }, {
3482
+ readonly name: "value";
3483
+ readonly type: "uint256";
3484
+ readonly internalType: "uint256";
3485
+ }];
3486
+ readonly outputs: readonly [{
3487
+ readonly name: "";
3488
+ readonly type: "bool";
3489
+ readonly internalType: "bool";
3490
+ }];
3491
+ readonly stateMutability: "nonpayable";
3492
+ }, {
3493
+ readonly type: "function";
3494
+ readonly name: "approve";
3495
+ readonly inputs: readonly [{
3496
+ readonly name: "spender";
3497
+ readonly type: "address";
3498
+ readonly internalType: "address";
3499
+ }, {
3500
+ readonly name: "value";
3501
+ readonly type: "uint256";
3502
+ readonly internalType: "uint256";
3503
+ }];
3504
+ readonly outputs: readonly [{
3505
+ readonly name: "";
3506
+ readonly type: "bool";
3507
+ readonly internalType: "bool";
3508
+ }];
3509
+ readonly stateMutability: "nonpayable";
3510
+ }, {
3511
+ readonly type: "function";
3512
+ readonly name: "grantRole";
3513
+ readonly inputs: readonly [{
3514
+ readonly name: "role";
3515
+ readonly type: "bytes32";
3516
+ readonly internalType: "bytes32";
3517
+ }, {
3518
+ readonly name: "account";
3519
+ readonly type: "address";
3520
+ readonly internalType: "address";
3521
+ }];
3522
+ readonly outputs: readonly [];
3523
+ readonly stateMutability: "nonpayable";
3524
+ }, {
3525
+ readonly type: "function";
3526
+ readonly name: "revokeRole";
3527
+ readonly inputs: readonly [{
3528
+ readonly name: "role";
3529
+ readonly type: "bytes32";
3530
+ readonly internalType: "bytes32";
3531
+ }, {
3532
+ readonly name: "account";
3533
+ readonly type: "address";
3534
+ readonly internalType: "address";
3535
+ }];
3536
+ readonly outputs: readonly [];
3537
+ readonly stateMutability: "nonpayable";
3538
+ }, {
3539
+ readonly type: "function";
3540
+ readonly name: "renounceRole";
3541
+ readonly inputs: readonly [{
3542
+ readonly name: "role";
3543
+ readonly type: "bytes32";
3544
+ readonly internalType: "bytes32";
3545
+ }, {
3546
+ readonly name: "callerConfirmation";
3547
+ readonly type: "address";
3548
+ readonly internalType: "address";
3549
+ }];
3550
+ readonly outputs: readonly [];
3551
+ readonly stateMutability: "nonpayable";
3552
+ }, {
3553
+ readonly type: "function";
3554
+ readonly name: "balanceOf";
3555
+ readonly inputs: readonly [{
3556
+ readonly name: "account";
3557
+ readonly type: "address";
3558
+ readonly internalType: "address";
3559
+ }];
3560
+ readonly outputs: readonly [{
3561
+ readonly name: "";
3562
+ readonly type: "uint256";
3563
+ readonly internalType: "uint256";
3564
+ }];
3565
+ readonly stateMutability: "view";
3566
+ }, {
3567
+ readonly type: "function";
3568
+ readonly name: "allowance";
3569
+ readonly inputs: readonly [{
3570
+ readonly name: "owner";
3571
+ readonly type: "address";
3572
+ readonly internalType: "address";
3573
+ }, {
3574
+ readonly name: "spender";
3575
+ readonly type: "address";
3576
+ readonly internalType: "address";
3577
+ }];
3578
+ readonly outputs: readonly [{
3579
+ readonly name: "";
3580
+ readonly type: "uint256";
3581
+ readonly internalType: "uint256";
3582
+ }];
3583
+ readonly stateMutability: "view";
3584
+ }, {
3585
+ readonly type: "function";
3586
+ readonly name: "totalSupply";
3587
+ readonly inputs: readonly [];
3588
+ readonly outputs: readonly [{
3589
+ readonly name: "";
3590
+ readonly type: "uint256";
3591
+ readonly internalType: "uint256";
3592
+ }];
3593
+ readonly stateMutability: "view";
3594
+ }, {
3595
+ readonly type: "function";
3596
+ readonly name: "name";
3597
+ readonly inputs: readonly [];
3598
+ readonly outputs: readonly [{
3599
+ readonly name: "";
3600
+ readonly type: "string";
3601
+ readonly internalType: "string";
3602
+ }];
3603
+ readonly stateMutability: "view";
3604
+ }, {
3605
+ readonly type: "function";
3606
+ readonly name: "symbol";
3607
+ readonly inputs: readonly [];
3608
+ readonly outputs: readonly [{
3609
+ readonly name: "";
3610
+ readonly type: "string";
3611
+ readonly internalType: "string";
3612
+ }];
3613
+ readonly stateMutability: "view";
3614
+ }, {
3615
+ readonly type: "function";
3616
+ readonly name: "decimals";
3617
+ readonly inputs: readonly [];
3618
+ readonly outputs: readonly [{
3619
+ readonly name: "";
3620
+ readonly type: "uint8";
3621
+ readonly internalType: "uint8";
3622
+ }];
3623
+ readonly stateMutability: "view";
3624
+ }, {
3625
+ readonly type: "function";
3626
+ readonly name: "paused";
3627
+ readonly inputs: readonly [];
3628
+ readonly outputs: readonly [{
3629
+ readonly name: "";
3630
+ readonly type: "bool";
3631
+ readonly internalType: "bool";
3632
+ }];
3633
+ readonly stateMutability: "view";
3634
+ }, {
3635
+ readonly type: "function";
3636
+ readonly name: "MINTER_ROLE";
3637
+ readonly inputs: readonly [];
3638
+ readonly outputs: readonly [{
3639
+ readonly name: "";
3640
+ readonly type: "bytes32";
3641
+ readonly internalType: "bytes32";
3642
+ }];
3643
+ readonly stateMutability: "view";
3644
+ }, {
3645
+ readonly type: "function";
3646
+ readonly name: "PAUSER_ROLE";
3647
+ readonly inputs: readonly [];
3648
+ readonly outputs: readonly [{
3649
+ readonly name: "";
3650
+ readonly type: "bytes32";
3651
+ readonly internalType: "bytes32";
3652
+ }];
3653
+ readonly stateMutability: "view";
3654
+ }, {
3655
+ readonly type: "function";
3656
+ readonly name: "DEFAULT_ADMIN_ROLE";
3657
+ readonly inputs: readonly [];
3658
+ readonly outputs: readonly [{
3659
+ readonly name: "";
3660
+ readonly type: "bytes32";
3661
+ readonly internalType: "bytes32";
3662
+ }];
3663
+ readonly stateMutability: "view";
3664
+ }, {
3665
+ readonly type: "function";
3666
+ readonly name: "hasRole";
3667
+ readonly inputs: readonly [{
3668
+ readonly name: "role";
3669
+ readonly type: "bytes32";
3670
+ readonly internalType: "bytes32";
3671
+ }, {
3672
+ readonly name: "account";
3673
+ readonly type: "address";
3674
+ readonly internalType: "address";
3675
+ }];
3676
+ readonly outputs: readonly [{
3677
+ readonly name: "";
3678
+ readonly type: "bool";
3679
+ readonly internalType: "bool";
3680
+ }];
3681
+ readonly stateMutability: "view";
3682
+ }, {
3683
+ readonly type: "function";
3684
+ readonly name: "getRoleAdmin";
3685
+ readonly inputs: readonly [{
3686
+ readonly name: "role";
3687
+ readonly type: "bytes32";
3688
+ readonly internalType: "bytes32";
3689
+ }];
3690
+ readonly outputs: readonly [{
3691
+ readonly name: "";
3692
+ readonly type: "bytes32";
3693
+ readonly internalType: "bytes32";
3694
+ }];
3695
+ readonly stateMutability: "view";
3696
+ }, {
3697
+ readonly type: "function";
3698
+ readonly name: "supportsInterface";
3699
+ readonly inputs: readonly [{
3700
+ readonly name: "interfaceId";
3701
+ readonly type: "bytes4";
3702
+ readonly internalType: "bytes4";
3703
+ }];
3704
+ readonly outputs: readonly [{
3705
+ readonly name: "";
3706
+ readonly type: "bool";
3707
+ readonly internalType: "bool";
3708
+ }];
3709
+ readonly stateMutability: "view";
3710
+ }];
3711
+
3712
+ /**
3713
+ * ABI for the PayoutEscrow contract.
3714
+ *
3715
+ * Core B2B payout contract. Businesses deposit stablecoins via the Fiatsend API;
3716
+ * funds are held here until the recipient claims using their MobileNumberNFT identity.
3717
+ * Recipients can claim to their wallet or immediately offramp to mobile money in one tx.
3718
+ */
3719
+ declare const PayoutEscrowABI: readonly [{
3720
+ readonly type: "error";
3721
+ readonly name: "PayoutAlreadyExists";
3722
+ readonly inputs: readonly [];
3723
+ }, {
3724
+ readonly type: "error";
3725
+ readonly name: "PayoutNotFound";
3726
+ readonly inputs: readonly [];
3727
+ }, {
3728
+ readonly type: "error";
3729
+ readonly name: "NotAuthorizedSender";
3730
+ readonly inputs: readonly [];
3731
+ }, {
3732
+ readonly type: "error";
3733
+ readonly name: "NotPending";
3734
+ readonly inputs: readonly [];
3735
+ }, {
3736
+ readonly type: "error";
3737
+ readonly name: "NotExpiredYet";
3738
+ readonly inputs: readonly [];
3739
+ }, {
3740
+ readonly type: "error";
3741
+ readonly name: "NotRefundEligible";
3742
+ readonly inputs: readonly [];
3743
+ }, {
3744
+ readonly type: "error";
3745
+ readonly name: "PhoneHashMismatch";
3746
+ readonly inputs: readonly [];
3747
+ }, {
3748
+ readonly type: "error";
3749
+ readonly name: "NoMobileNFT";
3750
+ readonly inputs: readonly [];
3751
+ }, {
3752
+ readonly type: "error";
3753
+ readonly name: "ZeroAddress";
3754
+ readonly inputs: readonly [];
3755
+ }, {
3756
+ readonly type: "error";
3757
+ readonly name: "ZeroAmount";
3758
+ readonly inputs: readonly [];
3759
+ }, {
3760
+ readonly type: "error";
3761
+ readonly name: "ArrayLengthMismatch";
3762
+ readonly inputs: readonly [];
3763
+ }, {
3764
+ readonly type: "error";
3765
+ readonly name: "InvalidExpiry";
3766
+ readonly inputs: readonly [];
3767
+ }, {
3768
+ readonly type: "error";
3769
+ readonly name: "GatewayNotSet";
3770
+ readonly inputs: readonly [];
3771
+ }, {
3772
+ readonly type: "error";
3773
+ readonly name: "TokenNotSupportedByGateway";
3774
+ readonly inputs: readonly [];
3775
+ }, {
3776
+ readonly type: "event";
3777
+ readonly name: "PayoutCreated";
3778
+ readonly inputs: readonly [{
3779
+ readonly name: "payoutId";
3780
+ readonly type: "bytes32";
3781
+ readonly indexed: true;
3782
+ readonly internalType: "bytes32";
3783
+ }, {
3784
+ readonly name: "sender";
3785
+ readonly type: "address";
3786
+ readonly indexed: true;
3787
+ readonly internalType: "address";
3788
+ }, {
3789
+ readonly name: "token";
3790
+ readonly type: "address";
3791
+ readonly indexed: false;
3792
+ readonly internalType: "address";
3793
+ }, {
3794
+ readonly name: "amount";
3795
+ readonly type: "uint256";
3796
+ readonly indexed: false;
3797
+ readonly internalType: "uint256";
3798
+ }, {
3799
+ readonly name: "phoneHash";
3800
+ readonly type: "bytes32";
3801
+ readonly indexed: true;
3802
+ readonly internalType: "bytes32";
3803
+ }];
3804
+ readonly anonymous: false;
3805
+ }, {
3806
+ readonly type: "event";
3807
+ readonly name: "PayoutClaimed";
3808
+ readonly inputs: readonly [{
3809
+ readonly name: "payoutId";
3810
+ readonly type: "bytes32";
3811
+ readonly indexed: true;
3812
+ readonly internalType: "bytes32";
3813
+ }, {
3814
+ readonly name: "recipient";
3815
+ readonly type: "address";
3816
+ readonly indexed: true;
3817
+ readonly internalType: "address";
3818
+ }, {
3819
+ readonly name: "amount";
3820
+ readonly type: "uint256";
3821
+ readonly indexed: false;
3822
+ readonly internalType: "uint256";
3823
+ }];
3824
+ readonly anonymous: false;
3825
+ }, {
3826
+ readonly type: "event";
3827
+ readonly name: "PayoutRefunded";
3828
+ readonly inputs: readonly [{
3829
+ readonly name: "payoutId";
3830
+ readonly type: "bytes32";
3831
+ readonly indexed: true;
3832
+ readonly internalType: "bytes32";
3833
+ }, {
3834
+ readonly name: "sender";
3835
+ readonly type: "address";
3836
+ readonly indexed: true;
3837
+ readonly internalType: "address";
3838
+ }, {
3839
+ readonly name: "amount";
3840
+ readonly type: "uint256";
3841
+ readonly indexed: false;
3842
+ readonly internalType: "uint256";
3843
+ }];
3844
+ readonly anonymous: false;
3845
+ }, {
3846
+ readonly type: "event";
3847
+ readonly name: "PayoutExpired";
3848
+ readonly inputs: readonly [{
3849
+ readonly name: "payoutId";
3850
+ readonly type: "bytes32";
3851
+ readonly indexed: true;
3852
+ readonly internalType: "bytes32";
3853
+ }];
3854
+ readonly anonymous: false;
3855
+ }, {
3856
+ readonly type: "event";
3857
+ readonly name: "AuthorizedSenderSet";
3858
+ readonly inputs: readonly [{
3859
+ readonly name: "sender";
3860
+ readonly type: "address";
3861
+ readonly indexed: true;
3862
+ readonly internalType: "address";
3863
+ }, {
3864
+ readonly name: "authorized";
3865
+ readonly type: "bool";
3866
+ readonly indexed: false;
3867
+ readonly internalType: "bool";
3868
+ }];
3869
+ readonly anonymous: false;
3870
+ }, {
3871
+ readonly type: "event";
3872
+ readonly name: "GatewaySet";
3873
+ readonly inputs: readonly [{
3874
+ readonly name: "gateway";
3875
+ readonly type: "address";
3876
+ readonly indexed: true;
3877
+ readonly internalType: "address";
3878
+ }];
3879
+ readonly anonymous: false;
3880
+ }, {
3881
+ readonly type: "event";
3882
+ readonly name: "DefaultExpiryDurationSet";
3883
+ readonly inputs: readonly [{
3884
+ readonly name: "duration";
3885
+ readonly type: "uint256";
3886
+ readonly indexed: false;
3887
+ readonly internalType: "uint256";
3888
+ }];
3889
+ readonly anonymous: false;
3890
+ }, {
3891
+ readonly type: "event";
3892
+ readonly name: "OwnershipTransferred";
3893
+ readonly inputs: readonly [{
3894
+ readonly name: "previousOwner";
3895
+ readonly type: "address";
3896
+ readonly indexed: true;
3897
+ readonly internalType: "address";
3898
+ }, {
3899
+ readonly name: "newOwner";
3900
+ readonly type: "address";
3901
+ readonly indexed: true;
3902
+ readonly internalType: "address";
3903
+ }];
3904
+ readonly anonymous: false;
3905
+ }, {
3906
+ readonly type: "event";
3907
+ readonly name: "Paused";
3908
+ readonly inputs: readonly [{
3909
+ readonly name: "account";
3910
+ readonly type: "address";
3911
+ readonly indexed: false;
3912
+ readonly internalType: "address";
3913
+ }];
3914
+ readonly anonymous: false;
3915
+ }, {
3916
+ readonly type: "event";
3917
+ readonly name: "Unpaused";
3918
+ readonly inputs: readonly [{
3919
+ readonly name: "account";
3920
+ readonly type: "address";
3921
+ readonly indexed: false;
3922
+ readonly internalType: "address";
3923
+ }];
3924
+ readonly anonymous: false;
3925
+ }, {
3926
+ readonly type: "constructor";
3927
+ readonly inputs: readonly [{
3928
+ readonly name: "_mobileNumberNFT";
3929
+ readonly type: "address";
3930
+ readonly internalType: "address";
3931
+ }, {
3932
+ readonly name: "_gateway";
3933
+ readonly type: "address";
3934
+ readonly internalType: "address";
3935
+ }, {
3936
+ readonly name: "_expiryDuration";
3937
+ readonly type: "uint256";
3938
+ readonly internalType: "uint256";
3939
+ }];
3940
+ readonly stateMutability: "nonpayable";
3941
+ }, {
3942
+ readonly type: "function";
3943
+ readonly name: "createPayout";
3944
+ readonly inputs: readonly [{
3945
+ readonly name: "payoutId";
3946
+ readonly type: "bytes32";
3947
+ readonly internalType: "bytes32";
3948
+ }, {
3949
+ readonly name: "token";
3950
+ readonly type: "address";
3951
+ readonly internalType: "address";
3952
+ }, {
3953
+ readonly name: "amount";
3954
+ readonly type: "uint256";
3955
+ readonly internalType: "uint256";
3956
+ }, {
3957
+ readonly name: "phoneHash";
3958
+ readonly type: "bytes32";
3959
+ readonly internalType: "bytes32";
3960
+ }, {
3961
+ readonly name: "expiresAt";
3962
+ readonly type: "uint256";
3963
+ readonly internalType: "uint256";
3964
+ }];
3965
+ readonly outputs: readonly [];
3966
+ readonly stateMutability: "nonpayable";
3967
+ }, {
3968
+ readonly type: "function";
3969
+ readonly name: "createBatchPayout";
3970
+ readonly inputs: readonly [{
3971
+ readonly name: "payoutIds";
3972
+ readonly type: "bytes32[]";
3973
+ readonly internalType: "bytes32[]";
3974
+ }, {
3975
+ readonly name: "token";
3976
+ readonly type: "address";
3977
+ readonly internalType: "address";
3978
+ }, {
3979
+ readonly name: "amounts";
3980
+ readonly type: "uint256[]";
3981
+ readonly internalType: "uint256[]";
3982
+ }, {
3983
+ readonly name: "phoneHashes";
3984
+ readonly type: "bytes32[]";
3985
+ readonly internalType: "bytes32[]";
3986
+ }, {
3987
+ readonly name: "expiresAt";
3988
+ readonly type: "uint256";
3989
+ readonly internalType: "uint256";
3990
+ }];
3991
+ readonly outputs: readonly [];
3992
+ readonly stateMutability: "nonpayable";
3993
+ }, {
3994
+ readonly type: "function";
3995
+ readonly name: "claim";
3996
+ readonly inputs: readonly [{
3997
+ readonly name: "payoutId";
3998
+ readonly type: "bytes32";
3999
+ readonly internalType: "bytes32";
4000
+ }];
4001
+ readonly outputs: readonly [];
4002
+ readonly stateMutability: "nonpayable";
4003
+ }, {
4004
+ readonly type: "function";
4005
+ readonly name: "claimToMoMo";
4006
+ readonly inputs: readonly [{
4007
+ readonly name: "payoutId";
4008
+ readonly type: "bytes32";
4009
+ readonly internalType: "bytes32";
4010
+ }, {
4011
+ readonly name: "phoneNumber";
4012
+ readonly type: "string";
4013
+ readonly internalType: "string";
4014
+ }];
4015
+ readonly outputs: readonly [];
4016
+ readonly stateMutability: "nonpayable";
4017
+ }, {
4018
+ readonly type: "function";
4019
+ readonly name: "refund";
4020
+ readonly inputs: readonly [{
4021
+ readonly name: "payoutId";
4022
+ readonly type: "bytes32";
4023
+ readonly internalType: "bytes32";
4024
+ }];
4025
+ readonly outputs: readonly [];
4026
+ readonly stateMutability: "nonpayable";
4027
+ }, {
4028
+ readonly type: "function";
4029
+ readonly name: "getPayout";
4030
+ readonly inputs: readonly [{
4031
+ readonly name: "payoutId";
4032
+ readonly type: "bytes32";
4033
+ readonly internalType: "bytes32";
4034
+ }];
4035
+ readonly outputs: readonly [{
4036
+ readonly name: "";
4037
+ readonly type: "tuple";
4038
+ readonly internalType: "struct IPayoutEscrow.Payout";
4039
+ readonly components: readonly [{
4040
+ readonly name: "id";
4041
+ readonly type: "bytes32";
4042
+ readonly internalType: "bytes32";
4043
+ }, {
4044
+ readonly name: "sender";
4045
+ readonly type: "address";
4046
+ readonly internalType: "address";
4047
+ }, {
4048
+ readonly name: "recipient";
4049
+ readonly type: "address";
4050
+ readonly internalType: "address";
4051
+ }, {
4052
+ readonly name: "token";
4053
+ readonly type: "address";
4054
+ readonly internalType: "address";
4055
+ }, {
4056
+ readonly name: "amount";
4057
+ readonly type: "uint256";
4058
+ readonly internalType: "uint256";
4059
+ }, {
4060
+ readonly name: "phoneHash";
4061
+ readonly type: "bytes32";
4062
+ readonly internalType: "bytes32";
4063
+ }, {
4064
+ readonly name: "status";
4065
+ readonly type: "uint8";
4066
+ readonly internalType: "enum IPayoutEscrow.PayoutStatus";
4067
+ }, {
4068
+ readonly name: "expiresAt";
4069
+ readonly type: "uint256";
4070
+ readonly internalType: "uint256";
4071
+ }, {
4072
+ readonly name: "createdAt";
4073
+ readonly type: "uint256";
4074
+ readonly internalType: "uint256";
4075
+ }, {
4076
+ readonly name: "claimedAt";
4077
+ readonly type: "uint256";
4078
+ readonly internalType: "uint256";
4079
+ }];
4080
+ }];
4081
+ readonly stateMutability: "view";
4082
+ }, {
4083
+ readonly type: "function";
4084
+ readonly name: "getPayoutsForPhone";
4085
+ readonly inputs: readonly [{
4086
+ readonly name: "phoneHash";
4087
+ readonly type: "bytes32";
4088
+ readonly internalType: "bytes32";
4089
+ }];
4090
+ readonly outputs: readonly [{
4091
+ readonly name: "";
4092
+ readonly type: "bytes32[]";
4093
+ readonly internalType: "bytes32[]";
4094
+ }];
4095
+ readonly stateMutability: "view";
4096
+ }, {
4097
+ readonly type: "function";
4098
+ readonly name: "getPayoutsByStatus";
4099
+ readonly inputs: readonly [{
4100
+ readonly name: "phoneHash";
4101
+ readonly type: "bytes32";
4102
+ readonly internalType: "bytes32";
4103
+ }, {
4104
+ readonly name: "status";
4105
+ readonly type: "uint8";
4106
+ readonly internalType: "enum IPayoutEscrow.PayoutStatus";
4107
+ }];
4108
+ readonly outputs: readonly [{
4109
+ readonly name: "";
4110
+ readonly type: "bytes32[]";
4111
+ readonly internalType: "bytes32[]";
4112
+ }];
4113
+ readonly stateMutability: "view";
4114
+ }, {
4115
+ readonly type: "function";
4116
+ readonly name: "setAuthorizedSender";
4117
+ readonly inputs: readonly [{
4118
+ readonly name: "sender";
4119
+ readonly type: "address";
4120
+ readonly internalType: "address";
4121
+ }, {
4122
+ readonly name: "authorized";
4123
+ readonly type: "bool";
4124
+ readonly internalType: "bool";
4125
+ }];
4126
+ readonly outputs: readonly [];
4127
+ readonly stateMutability: "nonpayable";
4128
+ }, {
4129
+ readonly type: "function";
4130
+ readonly name: "setDefaultExpiryDuration";
4131
+ readonly inputs: readonly [{
4132
+ readonly name: "duration";
4133
+ readonly type: "uint256";
4134
+ readonly internalType: "uint256";
4135
+ }];
4136
+ readonly outputs: readonly [];
4137
+ readonly stateMutability: "nonpayable";
4138
+ }, {
4139
+ readonly type: "function";
4140
+ readonly name: "setGateway";
4141
+ readonly inputs: readonly [{
4142
+ readonly name: "_gateway";
4143
+ readonly type: "address";
4144
+ readonly internalType: "address";
4145
+ }];
4146
+ readonly outputs: readonly [];
4147
+ readonly stateMutability: "nonpayable";
4148
+ }, {
4149
+ readonly type: "function";
4150
+ readonly name: "pause";
4151
+ readonly inputs: readonly [];
4152
+ readonly outputs: readonly [];
4153
+ readonly stateMutability: "nonpayable";
4154
+ }, {
4155
+ readonly type: "function";
4156
+ readonly name: "unpause";
4157
+ readonly inputs: readonly [];
4158
+ readonly outputs: readonly [];
4159
+ readonly stateMutability: "nonpayable";
4160
+ }, {
4161
+ readonly type: "function";
4162
+ readonly name: "transferOwnership";
4163
+ readonly inputs: readonly [{
4164
+ readonly name: "newOwner";
4165
+ readonly type: "address";
4166
+ readonly internalType: "address";
4167
+ }];
4168
+ readonly outputs: readonly [];
4169
+ readonly stateMutability: "nonpayable";
4170
+ }, {
4171
+ readonly type: "function";
4172
+ readonly name: "renounceOwnership";
4173
+ readonly inputs: readonly [];
4174
+ readonly outputs: readonly [];
4175
+ readonly stateMutability: "nonpayable";
4176
+ }, {
4177
+ readonly type: "function";
4178
+ readonly name: "mobileNumberNFT";
4179
+ readonly inputs: readonly [];
4180
+ readonly outputs: readonly [{
4181
+ readonly name: "";
4182
+ readonly type: "address";
4183
+ readonly internalType: "address";
4184
+ }];
4185
+ readonly stateMutability: "view";
4186
+ }, {
4187
+ readonly type: "function";
4188
+ readonly name: "gateway";
4189
+ readonly inputs: readonly [];
4190
+ readonly outputs: readonly [{
4191
+ readonly name: "";
4192
+ readonly type: "address";
4193
+ readonly internalType: "address";
4194
+ }];
4195
+ readonly stateMutability: "view";
4196
+ }, {
4197
+ readonly type: "function";
4198
+ readonly name: "defaultExpiryDuration";
4199
+ readonly inputs: readonly [];
4200
+ readonly outputs: readonly [{
4201
+ readonly name: "";
4202
+ readonly type: "uint256";
4203
+ readonly internalType: "uint256";
4204
+ }];
4205
+ readonly stateMutability: "view";
4206
+ }, {
4207
+ readonly type: "function";
4208
+ readonly name: "authorizedSenders";
4209
+ readonly inputs: readonly [{
4210
+ readonly name: "sender";
4211
+ readonly type: "address";
4212
+ readonly internalType: "address";
4213
+ }];
4214
+ readonly outputs: readonly [{
4215
+ readonly name: "";
4216
+ readonly type: "bool";
4217
+ readonly internalType: "bool";
4218
+ }];
4219
+ readonly stateMutability: "view";
4220
+ }, {
4221
+ readonly type: "function";
4222
+ readonly name: "owner";
4223
+ readonly inputs: readonly [];
4224
+ readonly outputs: readonly [{
4225
+ readonly name: "";
4226
+ readonly type: "address";
4227
+ readonly internalType: "address";
4228
+ }];
4229
+ readonly stateMutability: "view";
4230
+ }, {
4231
+ readonly type: "function";
4232
+ readonly name: "paused";
4233
+ readonly inputs: readonly [];
4234
+ readonly outputs: readonly [{
4235
+ readonly name: "";
4236
+ readonly type: "bool";
4237
+ readonly internalType: "bool";
4238
+ }];
4239
+ readonly stateMutability: "view";
4240
+ }];
4241
+
4242
+ /**
4243
+ * ABI for the P2PExchange contract.
4244
+ *
4245
+ * Peer-to-peer token exchange with exact payment references for crypto-exchange
4246
+ * auto-completion. A maker escrows tokens on-chain; a taker pays off-chain using
4247
+ * the exact reference; the maker confirms receipt and tokens are released — or
4248
+ * a dispute resolver adjudicates disagreements.
4249
+ */
4250
+ declare const P2PExchangeABI: readonly [{
4251
+ readonly type: "error";
4252
+ readonly name: "OrderAlreadyExists";
4253
+ readonly inputs: readonly [];
4254
+ }, {
4255
+ readonly type: "error";
4256
+ readonly name: "OrderNotFound";
4257
+ readonly inputs: readonly [];
4258
+ }, {
4259
+ readonly type: "error";
4260
+ readonly name: "NotMaker";
4261
+ readonly inputs: readonly [];
4262
+ }, {
4263
+ readonly type: "error";
4264
+ readonly name: "NotParty";
4265
+ readonly inputs: readonly [];
4266
+ }, {
4267
+ readonly type: "error";
4268
+ readonly name: "NotDisputeResolver";
4269
+ readonly inputs: readonly [];
4270
+ }, {
4271
+ readonly type: "error";
4272
+ readonly name: "OrderNotOpen";
4273
+ readonly inputs: readonly [];
4274
+ }, {
4275
+ readonly type: "error";
4276
+ readonly name: "OrderNotLocked";
4277
+ readonly inputs: readonly [];
4278
+ }, {
4279
+ readonly type: "error";
4280
+ readonly name: "OrderNotDisputed";
4281
+ readonly inputs: readonly [];
4282
+ }, {
4283
+ readonly type: "error";
4284
+ readonly name: "AlreadyTaken";
4285
+ readonly inputs: readonly [];
4286
+ }, {
4287
+ readonly type: "error";
4288
+ readonly name: "SelfTake";
4289
+ readonly inputs: readonly [];
4290
+ }, {
4291
+ readonly type: "error";
4292
+ readonly name: "ZeroAddress";
4293
+ readonly inputs: readonly [];
4294
+ }, {
4295
+ readonly type: "error";
4296
+ readonly name: "ZeroAmount";
4297
+ readonly inputs: readonly [];
4298
+ }, {
4299
+ readonly type: "error";
4300
+ readonly name: "ZeroExpiryDuration";
4301
+ readonly inputs: readonly [];
4302
+ }, {
4303
+ readonly type: "error";
4304
+ readonly name: "InvalidWinner";
4305
+ readonly inputs: readonly [];
4306
+ }, {
4307
+ readonly type: "event";
4308
+ readonly name: "OrderCreated";
4309
+ readonly inputs: readonly [{
4310
+ readonly name: "orderId";
4311
+ readonly type: "bytes32";
4312
+ readonly indexed: true;
4313
+ readonly internalType: "bytes32";
4314
+ }, {
4315
+ readonly name: "maker";
4316
+ readonly type: "address";
4317
+ readonly indexed: true;
4318
+ readonly internalType: "address";
4319
+ }, {
4320
+ readonly name: "token";
4321
+ readonly type: "address";
4322
+ readonly indexed: false;
4323
+ readonly internalType: "address";
4324
+ }, {
4325
+ readonly name: "amount";
4326
+ readonly type: "uint256";
4327
+ readonly indexed: false;
4328
+ readonly internalType: "uint256";
4329
+ }, {
4330
+ readonly name: "paymentReference";
4331
+ readonly type: "string";
4332
+ readonly indexed: false;
4333
+ readonly internalType: "string";
4334
+ }, {
4335
+ readonly name: "exchangePlatform";
4336
+ readonly type: "string";
4337
+ readonly indexed: false;
4338
+ readonly internalType: "string";
4339
+ }];
4340
+ readonly anonymous: false;
4341
+ }, {
4342
+ readonly type: "event";
4343
+ readonly name: "OrderTaken";
4344
+ readonly inputs: readonly [{
4345
+ readonly name: "orderId";
4346
+ readonly type: "bytes32";
4347
+ readonly indexed: true;
4348
+ readonly internalType: "bytes32";
4349
+ }, {
4350
+ readonly name: "taker";
4351
+ readonly type: "address";
4352
+ readonly indexed: true;
4353
+ readonly internalType: "address";
4354
+ }];
4355
+ readonly anonymous: false;
4356
+ }, {
4357
+ readonly type: "event";
4358
+ readonly name: "OrderCompleted";
4359
+ readonly inputs: readonly [{
4360
+ readonly name: "orderId";
4361
+ readonly type: "bytes32";
4362
+ readonly indexed: true;
4363
+ readonly internalType: "bytes32";
4364
+ }, {
4365
+ readonly name: "taker";
4366
+ readonly type: "address";
4367
+ readonly indexed: true;
4368
+ readonly internalType: "address";
4369
+ }, {
4370
+ readonly name: "amount";
4371
+ readonly type: "uint256";
4372
+ readonly indexed: false;
4373
+ readonly internalType: "uint256";
4374
+ }];
4375
+ readonly anonymous: false;
4376
+ }, {
4377
+ readonly type: "event";
4378
+ readonly name: "OrderCancelled";
4379
+ readonly inputs: readonly [{
4380
+ readonly name: "orderId";
4381
+ readonly type: "bytes32";
4382
+ readonly indexed: true;
4383
+ readonly internalType: "bytes32";
4384
+ }];
4385
+ readonly anonymous: false;
4386
+ }, {
4387
+ readonly type: "event";
4388
+ readonly name: "OrderDisputed";
4389
+ readonly inputs: readonly [{
4390
+ readonly name: "orderId";
4391
+ readonly type: "bytes32";
4392
+ readonly indexed: true;
4393
+ readonly internalType: "bytes32";
4394
+ }, {
4395
+ readonly name: "disputedBy";
4396
+ readonly type: "address";
4397
+ readonly indexed: true;
4398
+ readonly internalType: "address";
4399
+ }];
4400
+ readonly anonymous: false;
4401
+ }, {
4402
+ readonly type: "event";
4403
+ readonly name: "DisputeResolved";
4404
+ readonly inputs: readonly [{
4405
+ readonly name: "orderId";
4406
+ readonly type: "bytes32";
4407
+ readonly indexed: true;
4408
+ readonly internalType: "bytes32";
4409
+ }, {
4410
+ readonly name: "winner";
4411
+ readonly type: "address";
4412
+ readonly indexed: true;
4413
+ readonly internalType: "address";
4414
+ }, {
4415
+ readonly name: "amount";
4416
+ readonly type: "uint256";
4417
+ readonly indexed: false;
4418
+ readonly internalType: "uint256";
4419
+ }];
4420
+ readonly anonymous: false;
4421
+ }, {
4422
+ readonly type: "event";
4423
+ readonly name: "DisputeResolverSet";
4424
+ readonly inputs: readonly [{
4425
+ readonly name: "resolver";
4426
+ readonly type: "address";
4427
+ readonly indexed: true;
4428
+ readonly internalType: "address";
4429
+ }];
4430
+ readonly anonymous: false;
4431
+ }, {
4432
+ readonly type: "event";
4433
+ readonly name: "OwnershipTransferred";
4434
+ readonly inputs: readonly [{
4435
+ readonly name: "previousOwner";
4436
+ readonly type: "address";
4437
+ readonly indexed: true;
4438
+ readonly internalType: "address";
4439
+ }, {
4440
+ readonly name: "newOwner";
4441
+ readonly type: "address";
4442
+ readonly indexed: true;
4443
+ readonly internalType: "address";
4444
+ }];
4445
+ readonly anonymous: false;
4446
+ }, {
4447
+ readonly type: "event";
4448
+ readonly name: "Paused";
4449
+ readonly inputs: readonly [{
4450
+ readonly name: "account";
4451
+ readonly type: "address";
4452
+ readonly indexed: false;
4453
+ readonly internalType: "address";
4454
+ }];
4455
+ readonly anonymous: false;
4456
+ }, {
4457
+ readonly type: "event";
4458
+ readonly name: "Unpaused";
4459
+ readonly inputs: readonly [{
4460
+ readonly name: "account";
4461
+ readonly type: "address";
4462
+ readonly indexed: false;
4463
+ readonly internalType: "address";
4464
+ }];
4465
+ readonly anonymous: false;
4466
+ }, {
4467
+ readonly type: "constructor";
4468
+ readonly inputs: readonly [{
4469
+ readonly name: "_disputeResolver";
4470
+ readonly type: "address";
4471
+ readonly internalType: "address";
4472
+ }];
4473
+ readonly stateMutability: "nonpayable";
4474
+ }, {
4475
+ readonly type: "function";
4476
+ readonly name: "createOrder";
4477
+ readonly inputs: readonly [{
4478
+ readonly name: "orderId";
4479
+ readonly type: "bytes32";
4480
+ readonly internalType: "bytes32";
4481
+ }, {
4482
+ readonly name: "token";
4483
+ readonly type: "address";
4484
+ readonly internalType: "address";
4485
+ }, {
4486
+ readonly name: "amount";
4487
+ readonly type: "uint256";
4488
+ readonly internalType: "uint256";
4489
+ }, {
4490
+ readonly name: "paymentReference";
4491
+ readonly type: "string";
4492
+ readonly internalType: "string";
4493
+ }, {
4494
+ readonly name: "exchangePlatform";
4495
+ readonly type: "string";
4496
+ readonly internalType: "string";
4497
+ }, {
4498
+ readonly name: "expiryDuration";
4499
+ readonly type: "uint256";
4500
+ readonly internalType: "uint256";
4501
+ }];
4502
+ readonly outputs: readonly [];
4503
+ readonly stateMutability: "nonpayable";
4504
+ }, {
4505
+ readonly type: "function";
4506
+ readonly name: "takeOrder";
4507
+ readonly inputs: readonly [{
4508
+ readonly name: "orderId";
4509
+ readonly type: "bytes32";
4510
+ readonly internalType: "bytes32";
4511
+ }];
4512
+ readonly outputs: readonly [];
4513
+ readonly stateMutability: "nonpayable";
4514
+ }, {
4515
+ readonly type: "function";
4516
+ readonly name: "confirmPayment";
4517
+ readonly inputs: readonly [{
4518
+ readonly name: "orderId";
4519
+ readonly type: "bytes32";
4520
+ readonly internalType: "bytes32";
4521
+ }];
4522
+ readonly outputs: readonly [];
4523
+ readonly stateMutability: "nonpayable";
4524
+ }, {
4525
+ readonly type: "function";
4526
+ readonly name: "cancelOrder";
4527
+ readonly inputs: readonly [{
4528
+ readonly name: "orderId";
4529
+ readonly type: "bytes32";
4530
+ readonly internalType: "bytes32";
4531
+ }];
4532
+ readonly outputs: readonly [];
4533
+ readonly stateMutability: "nonpayable";
4534
+ }, {
4535
+ readonly type: "function";
4536
+ readonly name: "disputeOrder";
4537
+ readonly inputs: readonly [{
4538
+ readonly name: "orderId";
4539
+ readonly type: "bytes32";
4540
+ readonly internalType: "bytes32";
4541
+ }];
4542
+ readonly outputs: readonly [];
4543
+ readonly stateMutability: "nonpayable";
4544
+ }, {
4545
+ readonly type: "function";
4546
+ readonly name: "resolveDispute";
4547
+ readonly inputs: readonly [{
4548
+ readonly name: "orderId";
4549
+ readonly type: "bytes32";
4550
+ readonly internalType: "bytes32";
4551
+ }, {
4552
+ readonly name: "winner";
4553
+ readonly type: "address";
4554
+ readonly internalType: "address";
4555
+ }];
4556
+ readonly outputs: readonly [];
4557
+ readonly stateMutability: "nonpayable";
4558
+ }, {
4559
+ readonly type: "function";
4560
+ readonly name: "getOrder";
4561
+ readonly inputs: readonly [{
4562
+ readonly name: "orderId";
4563
+ readonly type: "bytes32";
4564
+ readonly internalType: "bytes32";
4565
+ }];
4566
+ readonly outputs: readonly [{
4567
+ readonly name: "";
4568
+ readonly type: "tuple";
4569
+ readonly internalType: "struct IP2PExchange.P2POrder";
4570
+ readonly components: readonly [{
4571
+ readonly name: "id";
4572
+ readonly type: "bytes32";
4573
+ readonly internalType: "bytes32";
4574
+ }, {
4575
+ readonly name: "maker";
4576
+ readonly type: "address";
4577
+ readonly internalType: "address";
4578
+ }, {
4579
+ readonly name: "taker";
4580
+ readonly type: "address";
4581
+ readonly internalType: "address";
4582
+ }, {
4583
+ readonly name: "token";
4584
+ readonly type: "address";
4585
+ readonly internalType: "address";
4586
+ }, {
4587
+ readonly name: "amount";
4588
+ readonly type: "uint256";
4589
+ readonly internalType: "uint256";
4590
+ }, {
4591
+ readonly name: "paymentReference";
4592
+ readonly type: "string";
4593
+ readonly internalType: "string";
4594
+ }, {
4595
+ readonly name: "exchangePlatform";
4596
+ readonly type: "string";
4597
+ readonly internalType: "string";
4598
+ }, {
4599
+ readonly name: "status";
4600
+ readonly type: "uint8";
4601
+ readonly internalType: "enum IP2PExchange.OrderStatus";
4602
+ }, {
4603
+ readonly name: "createdAt";
4604
+ readonly type: "uint256";
4605
+ readonly internalType: "uint256";
4606
+ }, {
4607
+ readonly name: "lockedAt";
4608
+ readonly type: "uint256";
4609
+ readonly internalType: "uint256";
4610
+ }, {
4611
+ readonly name: "completedAt";
4612
+ readonly type: "uint256";
4613
+ readonly internalType: "uint256";
4614
+ }, {
4615
+ readonly name: "expiryDuration";
4616
+ readonly type: "uint256";
4617
+ readonly internalType: "uint256";
4618
+ }];
4619
+ }];
4620
+ readonly stateMutability: "view";
4621
+ }, {
4622
+ readonly type: "function";
4623
+ readonly name: "getUserOrders";
4624
+ readonly inputs: readonly [{
4625
+ readonly name: "user";
4626
+ readonly type: "address";
4627
+ readonly internalType: "address";
4628
+ }];
4629
+ readonly outputs: readonly [{
4630
+ readonly name: "";
4631
+ readonly type: "bytes32[]";
4632
+ readonly internalType: "bytes32[]";
4633
+ }];
4634
+ readonly stateMutability: "view";
4635
+ }, {
4636
+ readonly type: "function";
4637
+ readonly name: "getOpenOrders";
4638
+ readonly inputs: readonly [{
4639
+ readonly name: "limit";
4640
+ readonly type: "uint256";
4641
+ readonly internalType: "uint256";
4642
+ }];
4643
+ readonly outputs: readonly [{
4644
+ readonly name: "";
4645
+ readonly type: "bytes32[]";
4646
+ readonly internalType: "bytes32[]";
4647
+ }];
4648
+ readonly stateMutability: "view";
4649
+ }, {
4650
+ readonly type: "function";
4651
+ readonly name: "setDisputeResolver";
4652
+ readonly inputs: readonly [{
4653
+ readonly name: "resolver";
4654
+ readonly type: "address";
4655
+ readonly internalType: "address";
4656
+ }];
4657
+ readonly outputs: readonly [];
4658
+ readonly stateMutability: "nonpayable";
4659
+ }, {
4660
+ readonly type: "function";
4661
+ readonly name: "pause";
4662
+ readonly inputs: readonly [];
4663
+ readonly outputs: readonly [];
4664
+ readonly stateMutability: "nonpayable";
4665
+ }, {
4666
+ readonly type: "function";
4667
+ readonly name: "unpause";
4668
+ readonly inputs: readonly [];
4669
+ readonly outputs: readonly [];
4670
+ readonly stateMutability: "nonpayable";
4671
+ }, {
4672
+ readonly type: "function";
4673
+ readonly name: "transferOwnership";
4674
+ readonly inputs: readonly [{
4675
+ readonly name: "newOwner";
4676
+ readonly type: "address";
4677
+ readonly internalType: "address";
4678
+ }];
4679
+ readonly outputs: readonly [];
4680
+ readonly stateMutability: "nonpayable";
4681
+ }, {
4682
+ readonly type: "function";
4683
+ readonly name: "renounceOwnership";
4684
+ readonly inputs: readonly [];
4685
+ readonly outputs: readonly [];
4686
+ readonly stateMutability: "nonpayable";
4687
+ }, {
4688
+ readonly type: "function";
4689
+ readonly name: "disputeResolver";
4690
+ readonly inputs: readonly [];
4691
+ readonly outputs: readonly [{
4692
+ readonly name: "";
4693
+ readonly type: "address";
4694
+ readonly internalType: "address";
4695
+ }];
4696
+ readonly stateMutability: "view";
4697
+ }, {
4698
+ readonly type: "function";
4699
+ readonly name: "owner";
4700
+ readonly inputs: readonly [];
4701
+ readonly outputs: readonly [{
4702
+ readonly name: "";
4703
+ readonly type: "address";
4704
+ readonly internalType: "address";
4705
+ }];
4706
+ readonly stateMutability: "view";
4707
+ }, {
4708
+ readonly type: "function";
4709
+ readonly name: "paused";
4710
+ readonly inputs: readonly [];
4711
+ readonly outputs: readonly [{
4712
+ readonly name: "";
4713
+ readonly type: "bool";
4714
+ readonly internalType: "bool";
4715
+ }];
4716
+ readonly stateMutability: "view";
4717
+ }];
4718
+
4719
+ export { CHAINS, type ChainConfig, type ContractAddresses, FiatsendClient, type FiatsendClientConfig, FiatsendGatewayABI, GHSFIATABI, GatewayResource, IdentityResource, LiquidityPoolABI, LiquidityResource, MobileNumberNFTABI, P2PExchangeABI, P2PResource, PaymentRouterABI, PaymentsResource, PayoutEscrowABI, PayoutsResource, VaultControllerABI, VaultsResource, WithdrawalsABI, WithdrawalsResource, getChainConfig };