import { type Address, type Hex } from "viem"; export declare enum SessionKeyAccessListType { ALLOWLIST = 0, DENYLIST = 1, ALLOW_ALL_ACCESS = 2 } export type ContractAccessEntry = { contractAddress: Address; isOnList: boolean; checkSelectors: boolean; }; export type ContractMethodEntry = { contractAddress: Address; methodSelector: Hex; isOnList: boolean; }; export type TimeRange = { validFrom: number; validUntil: number; }; export type NativeTokenLimit = { spendLimit: bigint; refreshInterval?: number; }; export type Erc20TokenLimit = { tokenAddress: Address; spendLimit: bigint; refreshInterval?: number; }; export type GasSpendLimit = { spendLimit: bigint; refreshInterval?: number; }; export declare class SessionKeyPermissionsBuilder { private _contractAccessControlType; private _contractAddressAccessEntrys; private _contractMethodAccessEntrys; private _timeRange?; private _nativeTokenSpendLimit?; private _erc20TokenSpendLimits; private _gasSpendLimit?; private _requiredPaymaster?; setContractAccessControlType(aclType: SessionKeyAccessListType): this; addContractAddressAccessEntry(entry: ContractAccessEntry): this; addContractFunctionAccessEntry(entry: ContractMethodEntry): this; setTimeRange(timeRange: TimeRange): this; setNativeTokenSpendLimit(limit: NativeTokenLimit): this; addErc20TokenSpendLimit(limit: Erc20TokenLimit): this; setGasSpendLimit(limit: GasSpendLimit): this; setRequiredPaymaster(paymaster: Address): this; encode(): Hex[]; private encodeIfDefined; }