import type { Effect } from "effect"; import type { Address, Hash } from "viem"; import type { ApprovalCheckError, ApprovalError, ClientNotFoundError, ContractWriteError, InsufficientFundsError, UserRejectedError, WalletNotConnectedError, WrongNetworkError } from "../../core/index.js"; export type CheckAllowanceParams = { readonly chainId: number; readonly owner: Address; readonly spender: Address; readonly tokenAddress: Address; }; export type ApproveParams = { readonly account: Address; readonly amount: bigint; readonly chainId: number; readonly spender: Address; readonly tokenAddress: Address; }; export type EnsureAllowanceParams = { readonly account: Address; readonly chainId: number; readonly required: bigint; readonly spender: Address; readonly tokenAddress: Address; readonly approveAmount?: bigint | undefined; readonly zeroFirst?: boolean | undefined; }; export type EnsureAllowanceResult = { readonly status: "already-sufficient"; readonly currentAllowance: bigint; } | { readonly status: "approved"; readonly approveAmount: bigint; readonly currentAllowance: bigint; readonly hashes: readonly Hash[]; readonly mode: "direct" | "zero-first"; }; export type Erc20AllowanceServiceShape = { readonly checkAllowance: (params: CheckAllowanceParams) => Effect.Effect; readonly approve: (params: ApproveParams) => Effect.Effect; readonly ensureAllowance: (params: EnsureAllowanceParams) => Effect.Effect; readonly getMaxAmount: (decimals: number) => bigint; }; //# sourceMappingURL=types.d.ts.map