@pafi-dev/core 0.3.0-beta.4 → 0.3.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/abi/index.cjs +2 -6
  2. package/dist/abi/index.cjs.map +1 -1
  3. package/dist/abi/index.d.cts +1 -286
  4. package/dist/abi/index.d.ts +1 -286
  5. package/dist/abi/index.js +1 -5
  6. package/dist/{chunk-5YH4D7QF.js → chunk-7UBO7DY5.js} +1 -1
  7. package/dist/{chunk-FGKLDKJK.cjs → chunk-ALCWYDVG.cjs} +1 -1
  8. package/dist/{chunk-FGKLDKJK.cjs.map → chunk-ALCWYDVG.cjs.map} +1 -1
  9. package/dist/{chunk-X3I5XWAR.cjs → chunk-CQCSQPWG.cjs} +2 -15
  10. package/dist/chunk-CQCSQPWG.cjs.map +1 -0
  11. package/dist/{chunk-CXFUP2YK.cjs → chunk-EDR5SFJN.cjs} +46 -6
  12. package/dist/chunk-EDR5SFJN.cjs.map +1 -0
  13. package/dist/{chunk-VQSRCMMK.js → chunk-QGO6X6LG.js} +2 -15
  14. package/dist/chunk-QGO6X6LG.js.map +1 -0
  15. package/dist/{chunk-IK4UK7KT.js → chunk-W23EJNYG.js} +44 -4
  16. package/dist/chunk-W23EJNYG.js.map +1 -0
  17. package/dist/contract/index.cjs +2 -5
  18. package/dist/contract/index.cjs.map +1 -1
  19. package/dist/contract/index.d.cts +2 -4
  20. package/dist/contract/index.d.ts +2 -4
  21. package/dist/contract/index.js +1 -4
  22. package/dist/eip712/index.d.cts +1 -1
  23. package/dist/eip712/index.d.ts +1 -1
  24. package/dist/{index-BYL8Nn-n.d.ts → index-B06IJlHe.d.ts} +1 -1
  25. package/dist/{index-B5OJ9Kcx.d.cts → index-B7pGBych.d.cts} +1 -1
  26. package/dist/index.cjs +47 -130
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +67 -116
  29. package/dist/index.d.ts +67 -116
  30. package/dist/index.js +44 -127
  31. package/dist/index.js.map +1 -1
  32. package/dist/quoting/index.d.cts +1 -1
  33. package/dist/quoting/index.d.ts +1 -1
  34. package/dist/swap/index.cjs +2 -3
  35. package/dist/swap/index.cjs.map +1 -1
  36. package/dist/swap/index.d.cts +2 -2
  37. package/dist/swap/index.d.ts +2 -2
  38. package/dist/swap/index.js +1 -2
  39. package/dist/{types-DGDlKiDe.d.ts → types-b5_Tokjl.d.cts} +1 -17
  40. package/dist/{types-DGDlKiDe.d.cts → types-b5_Tokjl.d.ts} +1 -17
  41. package/package.json +1 -1
  42. package/dist/chunk-27V32VNM.cjs +0 -370
  43. package/dist/chunk-27V32VNM.cjs.map +0 -1
  44. package/dist/chunk-4RYBJLF3.js +0 -370
  45. package/dist/chunk-4RYBJLF3.js.map +0 -1
  46. package/dist/chunk-5QJZT7VB.cjs +0 -46
  47. package/dist/chunk-5QJZT7VB.cjs.map +0 -1
  48. package/dist/chunk-CXFUP2YK.cjs.map +0 -1
  49. package/dist/chunk-IK4UK7KT.js.map +0 -1
  50. package/dist/chunk-L74CZAVQ.cjs +0 -99
  51. package/dist/chunk-L74CZAVQ.cjs.map +0 -1
  52. package/dist/chunk-P56TUGTS.js +0 -46
  53. package/dist/chunk-P56TUGTS.js.map +0 -1
  54. package/dist/chunk-VQSRCMMK.js.map +0 -1
  55. package/dist/chunk-X3I5XWAR.cjs.map +0 -1
  56. package/dist/chunk-X4IXUTTD.js +0 -99
  57. package/dist/chunk-X4IXUTTD.js.map +0 -1
  58. package/dist/relay/index.cjs +0 -19
  59. package/dist/relay/index.cjs.map +0 -1
  60. package/dist/relay/index.d.cts +0 -75
  61. package/dist/relay/index.d.ts +0 -75
  62. package/dist/relay/index.js +0 -19
  63. package/dist/relay/index.js.map +0 -1
  64. /package/dist/{chunk-5YH4D7QF.js.map → chunk-7UBO7DY5.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -1,14 +1,12 @@
1
1
  import { Address, Hex, PublicClient, WalletClient } from 'viem';
2
- import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification, c as MintParams, d as SwapParams, B as BestQuote, Q as QuoteResult, e as PathKey } from './types-DGDlKiDe.cjs';
3
- export { f as BurnRequest, I as Issuer } from './types-DGDlKiDe.cjs';
4
- export { erc20Abi, issuerRegistryAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, relayAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.cjs';
2
+ import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification, B as BestQuote, Q as QuoteResult } from './types-b5_Tokjl.cjs';
3
+ export { c as BurnRequest, I as Issuer, d as PathKey } from './types-b5_Tokjl.cjs';
4
+ export { erc20Abi, issuerRegistryAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.cjs';
5
5
  export { buildBurnRequestTypedData, buildDomain, buildMintRequestTypedData, buildReceiverConsentTypedData, signBurnRequest, signMintRequest, signReceiverConsent, verifyBurnRequest, verifyMintRequest, verifyReceiverConsent } from './eip712/index.cjs';
6
- import { SimulationResult } from './relay/index.cjs';
7
- export { buildRelaySwapParams, decodeExtData, decodeMintAndSwap, encodeExtData, encodeMintAndSwap, simulateMintAndSwap } from './relay/index.cjs';
8
- export { getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, getUsdt, isActiveIssuer, isMinter, verifyMintCap } from './contract/index.cjs';
6
+ export { getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, isActiveIssuer, isMinter, verifyMintCap } from './contract/index.cjs';
9
7
  export { buildAllPaths, combineRoutes, findBestQuote, quoteBestRoute, quoteExactInput, quoteExactInputSingle } from './quoting/index.cjs';
10
- import { O as Operation, P as PartialUserOperation, U as UserOperation, S as SwapSimulationResult } from './index-B5OJ9Kcx.cjs';
11
- export { B as BuildSwapWithGasDeductionParams, E as ENTRY_POINT_V07, a as PaymasterFields, b as SETTLE_ALL, c as SWAP_EXACT_IN, T as TAKE_ALL, d as UserOpReceipt, V as V4_SWAP, Z as ZERO_VALUE, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from './index-B5OJ9Kcx.cjs';
8
+ import { O as Operation, P as PartialUserOperation, U as UserOperation, S as SwapSimulationResult } from './index-B7pGBych.cjs';
9
+ export { B as BuildSwapWithGasDeductionParams, E as ENTRY_POINT_V07, a as PaymasterFields, b as SETTLE_ALL, c as SWAP_EXACT_IN, T as TAKE_ALL, d as UserOpReceipt, V as V4_SWAP, Z as ZERO_VALUE, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from './index-B7pGBych.cjs';
12
10
  import { LoginMessageParams } from './auth/index.cjs';
13
11
  export { VerifyLoginResult, createLoginMessage, parseLoginMessage, verifyLoginMessage } from './auth/index.cjs';
14
12
 
@@ -291,13 +289,9 @@ interface CheckEthAndBranchParams {
291
289
  declare function checkEthAndBranch(params: CheckEthAndBranchParams): Promise<SubmissionPath>;
292
290
 
293
291
  /**
294
- * ⚠️ PARTIAL MOCK`PointToken` ABI.
295
- *
296
- * As of 2026-04-21 this matches the deployed Base mainnet contract
297
- * (POINT at `0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e`). The ABI
298
- * itself is no longer mocked — kept under `mocks/` only because the
299
- * rest of the folder is still mock (pending BatchExecutor real address).
300
- * Once Phase B completes, this file moves to `contracts/real/`.
292
+ * Real `PointToken` ABImatches the contract deployed on Base mainnet
293
+ * (POINT at `0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e`). Sourced from
294
+ * the Solidity contract shipped by the SC team 2026-04-21.
301
295
  *
302
296
  * ## Mint — two paths
303
297
  *
@@ -332,7 +326,7 @@ declare function checkEthAndBranch(params: CheckEthAndBranchParams): Promise<Sub
332
326
  * Domain: EIP-712 standard — name = ERC-20 token name, version = "1",
333
327
  * chainId, verifyingContract = this PointToken address.
334
328
  */
335
- declare const MOCK_POINT_TOKEN_V2_ABI: readonly [{
329
+ declare const POINT_TOKEN_ABI: readonly [{
336
330
  readonly name: "mint";
337
331
  readonly type: "function";
338
332
  readonly stateMutability: "nonpayable";
@@ -633,50 +627,51 @@ declare const MOCK_POINT_TOKEN_V2_ABI: readonly [{
633
627
  }];
634
628
 
635
629
  /**
636
- * ⚠️ MOCK placeholder BatchExecutor address.
630
+ * BatchExecutor delegation target addresses.
631
+ *
632
+ * ## Status
637
633
  *
638
- * Real deployment:
639
- * - Coinbase may pre-deploy a canonical BatchExecutor that we target
640
- * via EIP-7702 delegation (see blocker B2 in V1.4_V1.5_READINESS.md)
641
- * - Otherwise PAFI deploys a minimal one and publishes the address
634
+ * Base mainnet: points at **Coinbase Smart Wallet v2**
635
+ * (`0x7702cb554e6bFb442cb743A7dF23154544a7176C`). Coinbase publishes
636
+ * this as the canonical EIP-7702 delegation target on Base every
637
+ * user that wants gas sponsorship via Coinbase Paymaster delegates to
638
+ * this single contract. One contract, all issuers.
642
639
  *
643
- * The ABI itself (`execute(Call[])`) is stable and lives under
644
- * `../../userop/batchExecute.ts` — that's the real one, unchanged
645
- * by the mock swap. Only the **address** is mocked here.
640
+ * Base Sepolia: placeholder; Sepolia is not in active use for PAFI.
646
641
  *
647
- * Pattern: checksum address with hex "DEAD0001" suffix per chain so
648
- * it's obvious in logs which chain is using a mock.
642
+ * The ABI (`execute(Call[])`) is exported from
643
+ * `../../userop/batchExecute.ts` and works against the Coinbase
644
+ * contract without change — Coinbase Smart Wallet v2 implements the
645
+ * same call-array signature we already use.
649
646
  */
650
- declare const MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: Address;
651
- declare const MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: Address;
647
+ declare const BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: Address;
648
+ declare const BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: Address;
652
649
 
653
650
  /**
654
- * ⚠️ PARTIAL MOCK — per-chain contract addresses for the v1.4 flow.
651
+ * Per-chain deployed contract addresses v1.4 flow.
655
652
  *
656
- * As of 2026-04-21 SC team delivered the first round of deployed
657
- * addresses on Base mainnet. `batchExecutor` is still pending (not
658
- * part of the first deploy batch) so that single field remains a
659
- * placeholder until Phase B.
653
+ * ## Status (2026-04-22)
660
654
  *
661
- * Chain id map:
662
- * - 8453 Base mainnet SC-delivered (see below)
663
- * - 84532 Base Sepolia not in use; placeholders only
655
+ * Base mainnet (8453): **all real**. BatchExecutor now points at the
656
+ * canonical Coinbase Smart Wallet v2 contract which PAFI reuses as the
657
+ * EIP-7702 delegation target (no per-app deploy required one
658
+ * contract, every issuer).
664
659
  *
665
- * v1.4 notes:
666
- * - No `relayerV2` — flow dropped the intermediate Relayer contract.
667
- * User submits UserOp that calls `PointToken.mint(...)` directly.
668
- * - `pointToken` here is the live deployed POINT instance (clone
669
- * from PointTokenFactory) — not the implementation. The impl
670
- * lives at tokenImpl and is only referenced by the factory.
671
- * - `usdt` is the MockERC20 (dev USDT) used by Uniswap pools.
660
+ * Base Sepolia (84532): entire row is placeholder — not in active use.
672
661
  *
673
- * Swap workflow when BatchExecutor lands:
674
- * 1. Replace `batchExecutor` placeholder with real address
675
- * 2. Keep structure consumers already import from the same key
676
- * 3. Bump core to `0.3.0-beta.N+1`
677
- */
678
- /**
679
- * Per-chain contract addresses.
662
+ * ## What lives where
663
+ *
664
+ * pointToken live POINT instance (clone of PointToken impl)
665
+ * batchExecutor — EIP-7702 delegation target (Coinbase Smart Wallet v2)
666
+ * usdt — MockERC20 used by Uniswap pools
667
+ * issuerRegistry — registry of all issuers on this chain
668
+ * mintingOracle — per-issuer mint cap enforcer
669
+ * pafiHook — Uniswap V4 hook enforcing the 10% PT→USDT fee
670
+ *
671
+ * PointTokenFactory + PointToken implementation addresses live in
672
+ * separate exports below — they're only needed at provisioning /
673
+ * observability time, not in the hot mint/burn path, so excluded from
674
+ * the per-chain bundle.
680
675
  */
681
676
  interface ContractAddresses {
682
677
  pointToken: Address;
@@ -684,12 +679,19 @@ interface ContractAddresses {
684
679
  usdt: Address;
685
680
  issuerRegistry: Address;
686
681
  mintingOracle: Address;
682
+ /**
683
+ * Uniswap V4 hook that enforces the 10% fee on PT→USDT swaps
684
+ * (USDT→PT is free). FE reads this to build `PoolKey.hooks` when
685
+ * constructing a swap; quoters + routers need it to resolve the
686
+ * correct pool.
687
+ */
688
+ pafiHook: Address;
687
689
  }
688
- declare const MOCK_ADDRESSES: Record<number, ContractAddresses>;
690
+ declare const CONTRACT_ADDRESSES: Record<number, ContractAddresses>;
689
691
  /**
690
- * PointTokenFactory address — separate from `ContractAddresses`
691
- * because it's only used at provisioning time (issuer onboard +
692
- * token creation), not in the hot mint/burn path.
692
+ * PointTokenFactory address — separate from `ContractAddresses` because
693
+ * it's only used at provisioning time (issuer onboard + token creation),
694
+ * not in the hot mint/burn path.
693
695
  */
694
696
  declare const POINT_TOKEN_FACTORY_ADDRESSES: Record<number, Address>;
695
697
  /**
@@ -702,7 +704,7 @@ declare const POINT_TOKEN_IMPL_ADDRESSES: Record<number, Address>;
702
704
  * Lookup helper — throws if the chain isn't in the map so callers fail
703
705
  * loudly on misconfiguration instead of silently using `undefined`.
704
706
  */
705
- declare function getMockAddresses(chainId: number): ContractAddresses;
707
+ declare function getContractAddresses(chainId: number): ContractAddresses;
706
708
 
707
709
  /**
708
710
  * Public contract surface for `@pafi-dev/core/contracts`.
@@ -722,18 +724,17 @@ declare function getMockAddresses(chainId: number): ContractAddresses;
722
724
  * deadline, burnerSig)`.
723
725
  *
724
726
  * Exports:
725
- * - `POINT_TOKEN_V2_ABI` — full mint + burn + admin surface
726
- * - `BATCH_EXECUTOR_*` — EIP-7702 delegation target (ABI real,
727
- * address placeholder on all chains until
728
- * SC delivers)
729
- * - `CONTRACT_ADDRESSES` — per-chain map (real on 8453 except
730
- * `batchExecutor` — pending SC)
727
+ * - `POINT_TOKEN_V2_ABI` — full mint + burn + admin surface
728
+ * - `BATCH_EXECUTOR_*` — EIP-7702 delegation target (ABI real,
729
+ * address still placeholder on all
730
+ * chains until SC delivers)
731
+ * - `CONTRACT_ADDRESSES` — per-chain map (real on 8453 except
732
+ * `batchExecutor` — pending SC)
731
733
  * - `POINT_TOKEN_FACTORY_ADDRESSES`, `POINT_TOKEN_IMPL_ADDRESSES`
732
- * — provisioning / observability helpers
734
+ * — provisioning / observability helpers
733
735
  *
734
- * Status: PARTIAL mock. Only `batchExecutor` on Base mainnet + the
735
- * entire Base Sepolia row are still placeholder. See mocks/README.md
736
- * for the deletion checklist.
736
+ * Status: all real except BatchExecutor address (single remaining
737
+ * placeholder, flagged inline in `real/addresses.ts`).
737
738
  */
738
739
 
739
740
  /**
@@ -932,13 +933,11 @@ declare function openPafiWebModal(url: string, options?: ModalOpenOptions): Prom
932
933
 
933
934
  declare class PafiSDK {
934
935
  private _pointTokenAddress?;
935
- private _relayContractAddress?;
936
936
  private _signer?;
937
937
  private _provider?;
938
938
  private _chainId?;
939
939
  constructor(config: PafiSDKConfig);
940
940
  setPointTokenAddress(address: Address): void;
941
- setRelayContractAddress(address: Address): void;
942
941
  setSigner(signer: WalletClient): void;
943
942
  setProvider(provider: PublicClient): void;
944
943
  private requirePointToken;
@@ -946,10 +945,6 @@ declare class PafiSDK {
946
945
  private requireSigner;
947
946
  private requireChainId;
948
947
  getDomain(): Promise<PointTokenDomainConfig>;
949
- /**
950
- * Build the EIP-712 typed data for a MintRequest.
951
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
952
- */
953
948
  buildMintRequestTypedData(message: MintRequest): Promise<{
954
949
  domain: {
955
950
  name: string;
@@ -975,10 +970,6 @@ declare class PafiSDK {
975
970
  primaryType: "MintRequest";
976
971
  message: MintRequest;
977
972
  }>;
978
- /**
979
- * Build the EIP-712 typed data for a ReceiverConsent.
980
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
981
- */
982
973
  buildReceiverConsentTypedData(message: ReceiverConsent): Promise<{
983
974
  domain: {
984
975
  name: string;
@@ -1016,11 +1007,6 @@ declare class PafiSDK {
1016
1007
  verifyReceiverConsent(message: ReceiverConsent, signature: Hex, expectedReceiver: Address): Promise<SignatureVerification>;
1017
1008
  getMintRequestNonce(receiver: Address): Promise<bigint>;
1018
1009
  getReceiverConsentNonce(receiver: Address): Promise<bigint>;
1019
- encodeMintAndSwap(mint: MintParams, swap: SwapParams): Hex;
1020
- decodeMintAndSwap(calldata: Hex): {
1021
- mint: MintParams;
1022
- swap: SwapParams;
1023
- };
1024
1010
  /**
1025
1011
  * Find the best swap route from `tokenIn` to `tokenOut`.
1026
1012
  * Merges `pools` with COMMON_POOLS for the configured chain, builds all
@@ -1041,36 +1027,6 @@ declare class PafiSDK {
1041
1027
  commands: Hex;
1042
1028
  inputs: Hex[];
1043
1029
  };
1044
- /**
1045
- * Build Relay SwapParams + extData from a quote result.
1046
- * Returns ready-to-use args for `Relay.mintAndSwap`.
1047
- */
1048
- buildRelaySwapParams(params: {
1049
- quote: {
1050
- path: PathKey[];
1051
- };
1052
- minAmountOut: bigint;
1053
- feeInUsdt: bigint;
1054
- deadline: bigint;
1055
- }): {
1056
- swapParams: SwapParams;
1057
- extData: Hex;
1058
- };
1059
- /**
1060
- * Encode extData for ReceiverConsent and MintParams.
1061
- * extData = abi.encode(minAmountOut, feeInUsdt)
1062
- */
1063
- encodeExtData(minAmountOut: bigint, feeInUsdt: bigint): Hex;
1064
- /**
1065
- * Simulate a Relay.mintAndSwap call. Catches reverts (bad signatures,
1066
- * expired deadlines, insufficient mint cap, pool errors) before submitting.
1067
- *
1068
- * @param relayAddress - Relay contract address
1069
- * @param mint - MintParams with real signatures
1070
- * @param swap - SwapParams (path + deadline)
1071
- * @param from - Relayer address that will submit the tx
1072
- */
1073
- simulateMintAndSwap(relayAddress: Address, mint: MintParams, swap: SwapParams, from: Address): Promise<SimulationResult>;
1074
1030
  /**
1075
1031
  * Simulate a UniversalRouter.execute swap call. Catches reverts (bad
1076
1032
  * approvals, insufficient balance, pool errors) before submitting.
@@ -1082,14 +1038,9 @@ declare class PafiSDK {
1082
1038
  * @param from - Address that will execute the swap
1083
1039
  */
1084
1040
  simulateSwap(routerAddress: Address, commands: Hex, inputs: Hex[], deadline: bigint, from: Address): Promise<SwapSimulationResult>;
1085
- /**
1086
- * Build an EIP-4361 login message for the current signer + chain. The
1087
- * caller supplies the issuer-specific fields (domain, nonce, uri); the SDK
1088
- * fills in the wallet address and chain id from its own config.
1089
- */
1090
1041
  createLoginMessage(params: Omit<LoginMessageParams, "address" | "chainId">): Promise<string>;
1091
1042
  /** Sign a login message string with the current signer (personal_sign) */
1092
1043
  signLoginMessage(message: string): Promise<Hex>;
1093
1044
  }
1094
1045
 
1095
- export { ApiError, BATCH_EXECUTOR_ABI, MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET as BATCH_EXECUTOR_ADDRESS_BASE_MAINNET, MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA as BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA, BestQuote, type BuildPartialUserOpParams, COMMON_POOLS, COMMON_TOKENS, MOCK_ADDRESSES as CONTRACT_ADDRESSES, ChainConfig, type CheckEthAndBranchParams, ConfigurationError, type ContractAddresses, EIP712Signature, LoginMessageParams, MintParams, MintRequest, type ModalOpenOptions, Operation, POINT_TOKEN_FACTORY_ADDRESSES, POINT_TOKEN_IMPL_ADDRESSES, POINT_TOKEN_POOLS, MOCK_POINT_TOKEN_V2_ABI as POINT_TOKEN_V2_ABI, PafiSDK, PafiSDKConfig, PafiSDKError, type PafiWebModalAdapter, type PafiWebModalHandle, PartialUserOperation, PathKey, type PaymasterConfig, PointTokenDomainConfig, PoolKey, QuoteResult, ReceiverConsent, SUPPORTED_CHAINS, type SignatureStruct, SignatureVerification, SigningError, SimulationError, SimulationResult, type SponsorshipScenario, type SubmissionPath, SwapParams, SwapSimulationResult, UNIVERSAL_ROUTER_ADDRESSES, UserOperation, V4_QUOTER_ADDRESSES, _resetPaymasterConfigForTests, assembleUserOperation, buildPartialUserOperation, burnRequestTypes, checkEthAndBranch, encodeBatchExecute, erc20ApproveOp, erc20BurnOp, erc20TransferOp, getMockAddresses as getContractAddresses, getPafiWebModalAdapter, getPaymasterConfig, isPaymasterConfigured, mintRequestTypes, openPafiWebModal, openWebPopup, rawCallOp, receiverConsentTypes, setPafiWebModalAdapter, setPaymasterConfig, webPopupAdapter };
1046
+ export { ApiError, BATCH_EXECUTOR_ABI, BATCH_EXECUTOR_ADDRESS_BASE_MAINNET, BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA, BestQuote, type BuildPartialUserOpParams, COMMON_POOLS, COMMON_TOKENS, CONTRACT_ADDRESSES, ChainConfig, type CheckEthAndBranchParams, ConfigurationError, type ContractAddresses, EIP712Signature, LoginMessageParams, MintRequest, type ModalOpenOptions, Operation, POINT_TOKEN_FACTORY_ADDRESSES, POINT_TOKEN_IMPL_ADDRESSES, POINT_TOKEN_POOLS, POINT_TOKEN_ABI as POINT_TOKEN_V2_ABI, PafiSDK, PafiSDKConfig, PafiSDKError, type PafiWebModalAdapter, type PafiWebModalHandle, PartialUserOperation, type PaymasterConfig, PointTokenDomainConfig, PoolKey, QuoteResult, ReceiverConsent, SUPPORTED_CHAINS, type SignatureStruct, SignatureVerification, SigningError, SimulationError, type SponsorshipScenario, type SubmissionPath, SwapSimulationResult, UNIVERSAL_ROUTER_ADDRESSES, UserOperation, V4_QUOTER_ADDRESSES, _resetPaymasterConfigForTests, assembleUserOperation, buildPartialUserOperation, burnRequestTypes, checkEthAndBranch, encodeBatchExecute, erc20ApproveOp, erc20BurnOp, erc20TransferOp, getContractAddresses, getPafiWebModalAdapter, getPaymasterConfig, isPaymasterConfigured, mintRequestTypes, openPafiWebModal, openWebPopup, rawCallOp, receiverConsentTypes, setPafiWebModalAdapter, setPaymasterConfig, webPopupAdapter };
package/dist/index.d.ts CHANGED
@@ -1,14 +1,12 @@
1
1
  import { Address, Hex, PublicClient, WalletClient } from 'viem';
2
- import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification, c as MintParams, d as SwapParams, B as BestQuote, Q as QuoteResult, e as PathKey } from './types-DGDlKiDe.js';
3
- export { f as BurnRequest, I as Issuer } from './types-DGDlKiDe.js';
4
- export { erc20Abi, issuerRegistryAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, relayAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.js';
2
+ import { P as PoolKey, C as ChainConfig, a as PafiSDKConfig, b as PointTokenDomainConfig, M as MintRequest, R as ReceiverConsent, E as EIP712Signature, S as SignatureVerification, B as BestQuote, Q as QuoteResult } from './types-b5_Tokjl.js';
3
+ export { c as BurnRequest, I as Issuer, d as PathKey } from './types-b5_Tokjl.js';
4
+ export { erc20Abi, issuerRegistryAbi, mintingOracleAbi, permit2Abi, pointTokenAbi, pointTokenFactoryAbi, universalRouterAbi, v4QuoterAbi } from './abi/index.js';
5
5
  export { buildBurnRequestTypedData, buildDomain, buildMintRequestTypedData, buildReceiverConsentTypedData, signBurnRequest, signMintRequest, signReceiverConsent, verifyBurnRequest, verifyMintRequest, verifyReceiverConsent } from './eip712/index.js';
6
- import { SimulationResult } from './relay/index.js';
7
- export { buildRelaySwapParams, decodeExtData, decodeMintAndSwap, encodeExtData, encodeMintAndSwap, simulateMintAndSwap } from './relay/index.js';
8
- export { getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, getUsdt, isActiveIssuer, isMinter, verifyMintCap } from './contract/index.js';
6
+ export { getIssuer, getMintRequestNonce, getPointTokenBalance, getPointTokenIssuer, getPointTokenIssuerAddress, getReceiverConsentNonce, getTokenName, isActiveIssuer, isMinter, verifyMintCap } from './contract/index.js';
9
7
  export { buildAllPaths, combineRoutes, findBestQuote, quoteBestRoute, quoteExactInput, quoteExactInputSingle } from './quoting/index.js';
10
- import { O as Operation, P as PartialUserOperation, U as UserOperation, S as SwapSimulationResult } from './index-BYL8Nn-n.js';
11
- export { B as BuildSwapWithGasDeductionParams, E as ENTRY_POINT_V07, a as PaymasterFields, b as SETTLE_ALL, c as SWAP_EXACT_IN, T as TAKE_ALL, d as UserOpReceipt, V as V4_SWAP, Z as ZERO_VALUE, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from './index-BYL8Nn-n.js';
8
+ import { O as Operation, P as PartialUserOperation, U as UserOperation, S as SwapSimulationResult } from './index-B06IJlHe.js';
9
+ export { B as BuildSwapWithGasDeductionParams, E as ENTRY_POINT_V07, a as PaymasterFields, b as SETTLE_ALL, c as SWAP_EXACT_IN, T as TAKE_ALL, d as UserOpReceipt, V as V4_SWAP, Z as ZERO_VALUE, e as buildErc20ApprovalCalldata, f as buildPermit2ApprovalCalldata, g as buildSwapFromQuote, h as buildSwapWithGasDeduction, i as buildUniversalRouterExecuteArgs, j as buildV4SwapInput, k as checkAllowance, s as simulateSwap } from './index-B06IJlHe.js';
12
10
  import { LoginMessageParams } from './auth/index.js';
13
11
  export { VerifyLoginResult, createLoginMessage, parseLoginMessage, verifyLoginMessage } from './auth/index.js';
14
12
 
@@ -291,13 +289,9 @@ interface CheckEthAndBranchParams {
291
289
  declare function checkEthAndBranch(params: CheckEthAndBranchParams): Promise<SubmissionPath>;
292
290
 
293
291
  /**
294
- * ⚠️ PARTIAL MOCK`PointToken` ABI.
295
- *
296
- * As of 2026-04-21 this matches the deployed Base mainnet contract
297
- * (POINT at `0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e`). The ABI
298
- * itself is no longer mocked — kept under `mocks/` only because the
299
- * rest of the folder is still mock (pending BatchExecutor real address).
300
- * Once Phase B completes, this file moves to `contracts/real/`.
292
+ * Real `PointToken` ABImatches the contract deployed on Base mainnet
293
+ * (POINT at `0x7d25E7156E51F865D522fd3ef257a6B5DD41b97e`). Sourced from
294
+ * the Solidity contract shipped by the SC team 2026-04-21.
301
295
  *
302
296
  * ## Mint — two paths
303
297
  *
@@ -332,7 +326,7 @@ declare function checkEthAndBranch(params: CheckEthAndBranchParams): Promise<Sub
332
326
  * Domain: EIP-712 standard — name = ERC-20 token name, version = "1",
333
327
  * chainId, verifyingContract = this PointToken address.
334
328
  */
335
- declare const MOCK_POINT_TOKEN_V2_ABI: readonly [{
329
+ declare const POINT_TOKEN_ABI: readonly [{
336
330
  readonly name: "mint";
337
331
  readonly type: "function";
338
332
  readonly stateMutability: "nonpayable";
@@ -633,50 +627,51 @@ declare const MOCK_POINT_TOKEN_V2_ABI: readonly [{
633
627
  }];
634
628
 
635
629
  /**
636
- * ⚠️ MOCK placeholder BatchExecutor address.
630
+ * BatchExecutor delegation target addresses.
631
+ *
632
+ * ## Status
637
633
  *
638
- * Real deployment:
639
- * - Coinbase may pre-deploy a canonical BatchExecutor that we target
640
- * via EIP-7702 delegation (see blocker B2 in V1.4_V1.5_READINESS.md)
641
- * - Otherwise PAFI deploys a minimal one and publishes the address
634
+ * Base mainnet: points at **Coinbase Smart Wallet v2**
635
+ * (`0x7702cb554e6bFb442cb743A7dF23154544a7176C`). Coinbase publishes
636
+ * this as the canonical EIP-7702 delegation target on Base every
637
+ * user that wants gas sponsorship via Coinbase Paymaster delegates to
638
+ * this single contract. One contract, all issuers.
642
639
  *
643
- * The ABI itself (`execute(Call[])`) is stable and lives under
644
- * `../../userop/batchExecute.ts` — that's the real one, unchanged
645
- * by the mock swap. Only the **address** is mocked here.
640
+ * Base Sepolia: placeholder; Sepolia is not in active use for PAFI.
646
641
  *
647
- * Pattern: checksum address with hex "DEAD0001" suffix per chain so
648
- * it's obvious in logs which chain is using a mock.
642
+ * The ABI (`execute(Call[])`) is exported from
643
+ * `../../userop/batchExecute.ts` and works against the Coinbase
644
+ * contract without change — Coinbase Smart Wallet v2 implements the
645
+ * same call-array signature we already use.
649
646
  */
650
- declare const MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: Address;
651
- declare const MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: Address;
647
+ declare const BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA: Address;
648
+ declare const BATCH_EXECUTOR_ADDRESS_BASE_MAINNET: Address;
652
649
 
653
650
  /**
654
- * ⚠️ PARTIAL MOCK — per-chain contract addresses for the v1.4 flow.
651
+ * Per-chain deployed contract addresses v1.4 flow.
655
652
  *
656
- * As of 2026-04-21 SC team delivered the first round of deployed
657
- * addresses on Base mainnet. `batchExecutor` is still pending (not
658
- * part of the first deploy batch) so that single field remains a
659
- * placeholder until Phase B.
653
+ * ## Status (2026-04-22)
660
654
  *
661
- * Chain id map:
662
- * - 8453 Base mainnet SC-delivered (see below)
663
- * - 84532 Base Sepolia not in use; placeholders only
655
+ * Base mainnet (8453): **all real**. BatchExecutor now points at the
656
+ * canonical Coinbase Smart Wallet v2 contract which PAFI reuses as the
657
+ * EIP-7702 delegation target (no per-app deploy required one
658
+ * contract, every issuer).
664
659
  *
665
- * v1.4 notes:
666
- * - No `relayerV2` — flow dropped the intermediate Relayer contract.
667
- * User submits UserOp that calls `PointToken.mint(...)` directly.
668
- * - `pointToken` here is the live deployed POINT instance (clone
669
- * from PointTokenFactory) — not the implementation. The impl
670
- * lives at tokenImpl and is only referenced by the factory.
671
- * - `usdt` is the MockERC20 (dev USDT) used by Uniswap pools.
660
+ * Base Sepolia (84532): entire row is placeholder — not in active use.
672
661
  *
673
- * Swap workflow when BatchExecutor lands:
674
- * 1. Replace `batchExecutor` placeholder with real address
675
- * 2. Keep structure consumers already import from the same key
676
- * 3. Bump core to `0.3.0-beta.N+1`
677
- */
678
- /**
679
- * Per-chain contract addresses.
662
+ * ## What lives where
663
+ *
664
+ * pointToken live POINT instance (clone of PointToken impl)
665
+ * batchExecutor — EIP-7702 delegation target (Coinbase Smart Wallet v2)
666
+ * usdt — MockERC20 used by Uniswap pools
667
+ * issuerRegistry — registry of all issuers on this chain
668
+ * mintingOracle — per-issuer mint cap enforcer
669
+ * pafiHook — Uniswap V4 hook enforcing the 10% PT→USDT fee
670
+ *
671
+ * PointTokenFactory + PointToken implementation addresses live in
672
+ * separate exports below — they're only needed at provisioning /
673
+ * observability time, not in the hot mint/burn path, so excluded from
674
+ * the per-chain bundle.
680
675
  */
681
676
  interface ContractAddresses {
682
677
  pointToken: Address;
@@ -684,12 +679,19 @@ interface ContractAddresses {
684
679
  usdt: Address;
685
680
  issuerRegistry: Address;
686
681
  mintingOracle: Address;
682
+ /**
683
+ * Uniswap V4 hook that enforces the 10% fee on PT→USDT swaps
684
+ * (USDT→PT is free). FE reads this to build `PoolKey.hooks` when
685
+ * constructing a swap; quoters + routers need it to resolve the
686
+ * correct pool.
687
+ */
688
+ pafiHook: Address;
687
689
  }
688
- declare const MOCK_ADDRESSES: Record<number, ContractAddresses>;
690
+ declare const CONTRACT_ADDRESSES: Record<number, ContractAddresses>;
689
691
  /**
690
- * PointTokenFactory address — separate from `ContractAddresses`
691
- * because it's only used at provisioning time (issuer onboard +
692
- * token creation), not in the hot mint/burn path.
692
+ * PointTokenFactory address — separate from `ContractAddresses` because
693
+ * it's only used at provisioning time (issuer onboard + token creation),
694
+ * not in the hot mint/burn path.
693
695
  */
694
696
  declare const POINT_TOKEN_FACTORY_ADDRESSES: Record<number, Address>;
695
697
  /**
@@ -702,7 +704,7 @@ declare const POINT_TOKEN_IMPL_ADDRESSES: Record<number, Address>;
702
704
  * Lookup helper — throws if the chain isn't in the map so callers fail
703
705
  * loudly on misconfiguration instead of silently using `undefined`.
704
706
  */
705
- declare function getMockAddresses(chainId: number): ContractAddresses;
707
+ declare function getContractAddresses(chainId: number): ContractAddresses;
706
708
 
707
709
  /**
708
710
  * Public contract surface for `@pafi-dev/core/contracts`.
@@ -722,18 +724,17 @@ declare function getMockAddresses(chainId: number): ContractAddresses;
722
724
  * deadline, burnerSig)`.
723
725
  *
724
726
  * Exports:
725
- * - `POINT_TOKEN_V2_ABI` — full mint + burn + admin surface
726
- * - `BATCH_EXECUTOR_*` — EIP-7702 delegation target (ABI real,
727
- * address placeholder on all chains until
728
- * SC delivers)
729
- * - `CONTRACT_ADDRESSES` — per-chain map (real on 8453 except
730
- * `batchExecutor` — pending SC)
727
+ * - `POINT_TOKEN_V2_ABI` — full mint + burn + admin surface
728
+ * - `BATCH_EXECUTOR_*` — EIP-7702 delegation target (ABI real,
729
+ * address still placeholder on all
730
+ * chains until SC delivers)
731
+ * - `CONTRACT_ADDRESSES` — per-chain map (real on 8453 except
732
+ * `batchExecutor` — pending SC)
731
733
  * - `POINT_TOKEN_FACTORY_ADDRESSES`, `POINT_TOKEN_IMPL_ADDRESSES`
732
- * — provisioning / observability helpers
734
+ * — provisioning / observability helpers
733
735
  *
734
- * Status: PARTIAL mock. Only `batchExecutor` on Base mainnet + the
735
- * entire Base Sepolia row are still placeholder. See mocks/README.md
736
- * for the deletion checklist.
736
+ * Status: all real except BatchExecutor address (single remaining
737
+ * placeholder, flagged inline in `real/addresses.ts`).
737
738
  */
738
739
 
739
740
  /**
@@ -932,13 +933,11 @@ declare function openPafiWebModal(url: string, options?: ModalOpenOptions): Prom
932
933
 
933
934
  declare class PafiSDK {
934
935
  private _pointTokenAddress?;
935
- private _relayContractAddress?;
936
936
  private _signer?;
937
937
  private _provider?;
938
938
  private _chainId?;
939
939
  constructor(config: PafiSDKConfig);
940
940
  setPointTokenAddress(address: Address): void;
941
- setRelayContractAddress(address: Address): void;
942
941
  setSigner(signer: WalletClient): void;
943
942
  setProvider(provider: PublicClient): void;
944
943
  private requirePointToken;
@@ -946,10 +945,6 @@ declare class PafiSDK {
946
945
  private requireSigner;
947
946
  private requireChainId;
948
947
  getDomain(): Promise<PointTokenDomainConfig>;
949
- /**
950
- * Build the EIP-712 typed data for a MintRequest.
951
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
952
- */
953
948
  buildMintRequestTypedData(message: MintRequest): Promise<{
954
949
  domain: {
955
950
  name: string;
@@ -975,10 +970,6 @@ declare class PafiSDK {
975
970
  primaryType: "MintRequest";
976
971
  message: MintRequest;
977
972
  }>;
978
- /**
979
- * Build the EIP-712 typed data for a ReceiverConsent.
980
- * Pass the result to any external signer (Privy, WalletConnect, etc.).
981
- */
982
973
  buildReceiverConsentTypedData(message: ReceiverConsent): Promise<{
983
974
  domain: {
984
975
  name: string;
@@ -1016,11 +1007,6 @@ declare class PafiSDK {
1016
1007
  verifyReceiverConsent(message: ReceiverConsent, signature: Hex, expectedReceiver: Address): Promise<SignatureVerification>;
1017
1008
  getMintRequestNonce(receiver: Address): Promise<bigint>;
1018
1009
  getReceiverConsentNonce(receiver: Address): Promise<bigint>;
1019
- encodeMintAndSwap(mint: MintParams, swap: SwapParams): Hex;
1020
- decodeMintAndSwap(calldata: Hex): {
1021
- mint: MintParams;
1022
- swap: SwapParams;
1023
- };
1024
1010
  /**
1025
1011
  * Find the best swap route from `tokenIn` to `tokenOut`.
1026
1012
  * Merges `pools` with COMMON_POOLS for the configured chain, builds all
@@ -1041,36 +1027,6 @@ declare class PafiSDK {
1041
1027
  commands: Hex;
1042
1028
  inputs: Hex[];
1043
1029
  };
1044
- /**
1045
- * Build Relay SwapParams + extData from a quote result.
1046
- * Returns ready-to-use args for `Relay.mintAndSwap`.
1047
- */
1048
- buildRelaySwapParams(params: {
1049
- quote: {
1050
- path: PathKey[];
1051
- };
1052
- minAmountOut: bigint;
1053
- feeInUsdt: bigint;
1054
- deadline: bigint;
1055
- }): {
1056
- swapParams: SwapParams;
1057
- extData: Hex;
1058
- };
1059
- /**
1060
- * Encode extData for ReceiverConsent and MintParams.
1061
- * extData = abi.encode(minAmountOut, feeInUsdt)
1062
- */
1063
- encodeExtData(minAmountOut: bigint, feeInUsdt: bigint): Hex;
1064
- /**
1065
- * Simulate a Relay.mintAndSwap call. Catches reverts (bad signatures,
1066
- * expired deadlines, insufficient mint cap, pool errors) before submitting.
1067
- *
1068
- * @param relayAddress - Relay contract address
1069
- * @param mint - MintParams with real signatures
1070
- * @param swap - SwapParams (path + deadline)
1071
- * @param from - Relayer address that will submit the tx
1072
- */
1073
- simulateMintAndSwap(relayAddress: Address, mint: MintParams, swap: SwapParams, from: Address): Promise<SimulationResult>;
1074
1030
  /**
1075
1031
  * Simulate a UniversalRouter.execute swap call. Catches reverts (bad
1076
1032
  * approvals, insufficient balance, pool errors) before submitting.
@@ -1082,14 +1038,9 @@ declare class PafiSDK {
1082
1038
  * @param from - Address that will execute the swap
1083
1039
  */
1084
1040
  simulateSwap(routerAddress: Address, commands: Hex, inputs: Hex[], deadline: bigint, from: Address): Promise<SwapSimulationResult>;
1085
- /**
1086
- * Build an EIP-4361 login message for the current signer + chain. The
1087
- * caller supplies the issuer-specific fields (domain, nonce, uri); the SDK
1088
- * fills in the wallet address and chain id from its own config.
1089
- */
1090
1041
  createLoginMessage(params: Omit<LoginMessageParams, "address" | "chainId">): Promise<string>;
1091
1042
  /** Sign a login message string with the current signer (personal_sign) */
1092
1043
  signLoginMessage(message: string): Promise<Hex>;
1093
1044
  }
1094
1045
 
1095
- export { ApiError, BATCH_EXECUTOR_ABI, MOCK_BATCH_EXECUTOR_ADDRESS_BASE_MAINNET as BATCH_EXECUTOR_ADDRESS_BASE_MAINNET, MOCK_BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA as BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA, BestQuote, type BuildPartialUserOpParams, COMMON_POOLS, COMMON_TOKENS, MOCK_ADDRESSES as CONTRACT_ADDRESSES, ChainConfig, type CheckEthAndBranchParams, ConfigurationError, type ContractAddresses, EIP712Signature, LoginMessageParams, MintParams, MintRequest, type ModalOpenOptions, Operation, POINT_TOKEN_FACTORY_ADDRESSES, POINT_TOKEN_IMPL_ADDRESSES, POINT_TOKEN_POOLS, MOCK_POINT_TOKEN_V2_ABI as POINT_TOKEN_V2_ABI, PafiSDK, PafiSDKConfig, PafiSDKError, type PafiWebModalAdapter, type PafiWebModalHandle, PartialUserOperation, PathKey, type PaymasterConfig, PointTokenDomainConfig, PoolKey, QuoteResult, ReceiverConsent, SUPPORTED_CHAINS, type SignatureStruct, SignatureVerification, SigningError, SimulationError, SimulationResult, type SponsorshipScenario, type SubmissionPath, SwapParams, SwapSimulationResult, UNIVERSAL_ROUTER_ADDRESSES, UserOperation, V4_QUOTER_ADDRESSES, _resetPaymasterConfigForTests, assembleUserOperation, buildPartialUserOperation, burnRequestTypes, checkEthAndBranch, encodeBatchExecute, erc20ApproveOp, erc20BurnOp, erc20TransferOp, getMockAddresses as getContractAddresses, getPafiWebModalAdapter, getPaymasterConfig, isPaymasterConfigured, mintRequestTypes, openPafiWebModal, openWebPopup, rawCallOp, receiverConsentTypes, setPafiWebModalAdapter, setPaymasterConfig, webPopupAdapter };
1046
+ export { ApiError, BATCH_EXECUTOR_ABI, BATCH_EXECUTOR_ADDRESS_BASE_MAINNET, BATCH_EXECUTOR_ADDRESS_BASE_SEPOLIA, BestQuote, type BuildPartialUserOpParams, COMMON_POOLS, COMMON_TOKENS, CONTRACT_ADDRESSES, ChainConfig, type CheckEthAndBranchParams, ConfigurationError, type ContractAddresses, EIP712Signature, LoginMessageParams, MintRequest, type ModalOpenOptions, Operation, POINT_TOKEN_FACTORY_ADDRESSES, POINT_TOKEN_IMPL_ADDRESSES, POINT_TOKEN_POOLS, POINT_TOKEN_ABI as POINT_TOKEN_V2_ABI, PafiSDK, PafiSDKConfig, PafiSDKError, type PafiWebModalAdapter, type PafiWebModalHandle, PartialUserOperation, type PaymasterConfig, PointTokenDomainConfig, PoolKey, QuoteResult, ReceiverConsent, SUPPORTED_CHAINS, type SignatureStruct, SignatureVerification, SigningError, SimulationError, type SponsorshipScenario, type SubmissionPath, SwapSimulationResult, UNIVERSAL_ROUTER_ADDRESSES, UserOperation, V4_QUOTER_ADDRESSES, _resetPaymasterConfigForTests, assembleUserOperation, buildPartialUserOperation, burnRequestTypes, checkEthAndBranch, encodeBatchExecute, erc20ApproveOp, erc20BurnOp, erc20TransferOp, getContractAddresses, getPafiWebModalAdapter, getPaymasterConfig, isPaymasterConfigured, mintRequestTypes, openPafiWebModal, openWebPopup, rawCallOp, receiverConsentTypes, setPafiWebModalAdapter, setPaymasterConfig, webPopupAdapter };