import type { EntryPoint, EntryPointVersion, GetEntryPointVersion } from "permissionless/types"; import type { Address, Hex } from "viem"; export type PartialPick = Partial>; export type NonEmptyArray = [T, ...T[]]; export type CAB_VERSION = "0.0.1" | "0.0.2" | "0.2.1"; export type AllTokens = "ETH" | "MATIC" | "USDC" | "6TEST" | "USDT"; export type CABToken = { chainId: number; address: Address; }; export type CABVault = { chainId: number; vaultAddress: Address; tokenAddress: Address; }; export type SponsorTokenInfo = { amount: bigint; address: Address; }; export type SwapTokenInfo = { router: Address; tokenIn: Address; tokenOut: Address; amountIn: bigint; amountOut: bigint; approveAndSwapCalls: Call[]; }; export type RepayToken = { address: Address; chainId: number; }; export type RepayTokenName = string; export type RepayTokens = RepayToken[] | RepayTokenName[]; export type RepayTokenInfo = { vault: Address; amount: bigint; chainId: number; }; export type Call = { to: Address; data: Hex; value: bigint; }; export type UserOperationWithBigIntAsHex = entryPointVersion extends "v0.6" ? { sender: Address; nonce: Hex; initCode: Hex; callData: Hex; callGasLimit: Hex; verificationGasLimit: Hex; preVerificationGas: Hex; maxFeePerGas: Hex; maxPriorityFeePerGas: Hex; paymasterAndData: Hex; signature: Hex; factory?: never; factoryData?: never; paymaster?: never; paymasterVerificationGasLimit?: never; paymasterPostOpGasLimit?: never; paymasterData?: never; } : { sender: Address; nonce: Hex; factory: Address; factoryData: Hex; callData: Hex; callGasLimit: Hex; verificationGasLimit: Hex; preVerificationGas: Hex; maxFeePerGas: Hex; maxPriorityFeePerGas: Hex; paymaster: Address; paymasterVerificationGasLimit: Hex; paymasterPostOpGasLimit: Hex; paymasterData: Hex; signature: Hex; initCode?: never; paymasterAndData?: never; }; export type GetRpcCabPaymasterAllTokensParameters = [] | [chainId: number | null]; export type GetRpcCabPaymasterAllTokensReturnType = { tokens: CABToken[]; }; export type GetRpcCabPaymasterAllVaultsParameters = [] | [chainId: number | null] | [chainId: number | null, token: Address | null]; export type GetRpcCabPaymasterAllVaultsReturnType = { vaults: CABVault[]; }; export type GetRpcCabPaymasterBalanceParameters = [ address: Address, token?: AllTokens | AllTokens[] | null, repayTokens?: RepayToken[] | null ]; export type GetRpcCabPaymasterBalanceReturnType = Hex; export type GetRpcCabPaymasterSponsorTokensParameters = [ userOperation: UserOperationWithBigIntAsHex>, entryPoint: TEntryPoint, sponsorChainId: number, paymaster: Address ]; export type GetRpcCabPaymasterSponsorTokensReturnType = { paymaster: Address; sponsorTokensInfo: SponsorTokenInfo[]; swapTokensInfo: SwapTokenInfo[]; repayTokensInfo: RepayTokenInfo[]; }; export type GetRpcCabPaymasterStubDataParameters = [ userOperation: UserOperationWithBigIntAsHex>, entryPoint: TEntryPoint, sponsorChainId: number, repayTokens: RepayTokens, paymaster: Address ]; export type GetRpcCabPaymasterStubDataReturnType = GetEntryPointVersion extends "v0.6" ? { paymasterAndData: Hex; repayTokensInfo: RepayTokenInfo[]; preVerificationGas?: Hex; verificationGasLimit?: Hex; callGasLimit?: Hex; } : { paymaster: Hex; paymasterData: Hex; repayTokensInfo: RepayTokenInfo[]; preVerificationGas?: Hex; verificationGasLimit?: Hex; callGasLimit?: Hex; paymasterVerificationGasLimit?: Hex; paymasterPostOpGasLimit?: Hex; }; export type GetRpcCabPaymasterDataParameters = [ userOperation: UserOperationWithBigIntAsHex>, entryPoint: TEntryPoint, sponsorChainId: number, depreciatedRepayTokens: unknown, paymaster: Address ]; export type GetRpcCabPaymasterDataReturnType = GetEntryPointVersion extends "v0.6" ? { paymasterAndData: Hex; } : { paymaster: Hex; paymasterData: Hex; }; export type CabPaymasterRpcScheme = [ { Method: "pm_getCabAllTokens"; Parameters: GetRpcCabPaymasterAllTokensParameters; ReturnType: GetRpcCabPaymasterAllTokensReturnType; }, { Method: "pm_getCabAllVaults"; Parameters: GetRpcCabPaymasterAllVaultsParameters; ReturnType: GetRpcCabPaymasterAllVaultsReturnType; }, { Method: "pm_getCabBalance"; Parameters: GetRpcCabPaymasterBalanceParameters; ReturnType: GetRpcCabPaymasterBalanceReturnType; }, { Method: "pm_getCabPaymasterSponsorTokens"; Parameters: GetRpcCabPaymasterSponsorTokensParameters; ReturnType: GetRpcCabPaymasterSponsorTokensReturnType; }, { Method: "pm_getCabPaymasterStubData"; Parameters: GetRpcCabPaymasterStubDataParameters; ReturnType: GetRpcCabPaymasterStubDataReturnType; }, { Method: "pm_getCabPaymasterData"; Parameters: GetRpcCabPaymasterDataParameters; ReturnType: GetRpcCabPaymasterDataReturnType; } ]; export type StateOverrides = { [x: string]: { balance?: bigint | undefined; nonce?: bigint | number | undefined; code?: Hex | undefined; state?: { [x: Hex]: Hex; }; stateDiff?: { [x: Hex]: Hex; }; }; }; //# sourceMappingURL=types.d.ts.map