import { Authorization7702Hex } from "./utils7702";
export interface BaseUserOperation {
    sender: string;
    nonce: bigint;
    callData: string;
    callGasLimit: bigint;
    verificationGasLimit: bigint;
    preVerificationGas: bigint;
    maxFeePerGas: bigint;
    maxPriorityFeePerGas: bigint;
    signature: string;
}
export interface UserOperationV6 extends BaseUserOperation {
    initCode: string;
    paymasterAndData: string;
}
export interface UserOperationV7 extends BaseUserOperation {
    factory: string | null;
    factoryData: string | null;
    paymaster: string | null;
    paymasterVerificationGasLimit: bigint | null;
    paymasterPostOpGasLimit: bigint | null;
    paymasterData: string | null;
}
export interface UserOperationV8 extends BaseUserOperation {
    factory: string | null;
    factoryData: string | null;
    paymaster: string | null;
    paymasterVerificationGasLimit: bigint | null;
    paymasterPostOpGasLimit: bigint | null;
    paymasterData: string | null;
    eip7702Auth: Authorization7702Hex | null;
}
export type AbiInputValue = string | bigint | number | boolean | AbiInputValue[];
export type JsonRpcParam = string | bigint | boolean | object | JsonRpcParam[];
export type JsonRpcResponse = {
    id: number | null;
    jsonrpc: string;
    result?: JsonRpcResult;
    simulation_results?: JsonRpcResult;
    error?: JsonRpcError;
};
export type ChainIdResult = string;
export type SupportedEntryPointsResult = string[];
export type SingleTransactionTenderlySimulationResult = {
    transaction: any;
    simulation: any;
};
export type TenderlySimulationResult = SingleTransactionTenderlySimulationResult[];
export type JsonRpcResult = ChainIdResult | SupportedEntryPointsResult | GasEstimationResult | UserOperationByHashResult | UserOperationReceipt | UserOperationReceiptResult | SupportedERC20TokensAndMetadataV7 | SupportedERC20TokensAndMetadataV6 | PmUserOperationV7Result | PmUserOperationV6Result | TenderlySimulationResult;
export type JsonRpcError = {
    code: number;
    message: string;
    data: object;
};
export type GasEstimationResult = {
    callGasLimit: bigint;
    preVerificationGas: bigint;
    verificationGasLimit: bigint;
};
export type UserOperationByHashResult = {
    userOperation: UserOperationV6 | UserOperationV7;
    entryPoint: string;
    blockNumber: bigint | null;
    blockHash: string | null;
    transactionHash: string | null;
} | null;
export type UserOperationReceipt = {
    blockHash: string;
    blockNumber: bigint;
    from: string;
    cumulativeGasUsed: bigint;
    gasUsed: bigint;
    logs: string;
    logsBloom: string;
    transactionHash: string;
    transactionIndex: bigint;
    effectiveGasPrice?: bigint;
};
export type UserOperationReceiptResult = {
    userOpHash: string;
    entryPoint: string;
    sender: string;
    nonce: bigint;
    paymaster: string;
    actualGasCost: bigint;
    actualGasUsed: bigint;
    success: boolean;
    logs: string;
    receipt: UserOperationReceipt;
} | null;
export type SponsorMetadata = {
    name: string;
    description: string;
    url: string;
    icons: string[];
};
export type PmUserOperationV7Result = {
    paymaster: string;
    paymasterVerificationGasLimit: bigint;
    paymasterPostOpGasLimit: bigint;
    paymasterData: string;
    callGasLimit?: bigint;
    verificationGasLimit?: bigint;
    preVerificationGas?: bigint;
    maxFeePerGas?: bigint;
    maxPriorityFeePerGas?: bigint;
    sponsorMetadata?: SponsorMetadata;
};
export type PmUserOperationV8Result = PmUserOperationV7Result;
export type PmUserOperationV6Result = {
    paymasterAndData: string;
    callGasLimit?: bigint;
    preVerificationGas?: bigint;
    verificationGasLimit?: bigint;
    maxFeePerGas?: bigint;
    maxPriorityFeePerGas?: bigint;
    sponsorMetadata?: SponsorMetadata;
};
export declare enum Operation {
    Call = 0,
    Delegate = 1
}
export interface MetaTransaction {
    to: string;
    value: bigint;
    data: string;
    operation?: Operation;
}
export interface ERC20Token {
    name: string;
    symbol: string;
    address: string;
    decimals: number;
}
export interface ERC20TokenWithExchangeRate extends ERC20Token {
    exchangeRate: bigint;
}
interface BasePaymasterMetadata {
    name: string;
    description: string;
    icons: string[];
    address: string;
    sponsoredEventTopic: string;
}
export interface PaymasterMetadataV7 extends BasePaymasterMetadata {
    dummyPaymasterAndData: {
        paymaster: string;
        paymasterVerificationGasLimit: bigint;
        paymasterPostOpGasLimit: bigint;
        paymasterData: string;
    };
}
export interface PaymasterMetadataV8 extends PaymasterMetadataV7 {
}
export interface PaymasterMetadataV6 extends BasePaymasterMetadata {
    dummyPaymasterAndData: string;
}
export interface SupportedERC20TokensAndMetadataV7 {
    paymasterMetadata: PaymasterMetadataV7;
    tokens: ERC20Token[];
}
export interface SupportedERC20TokensAndMetadataV8 extends SupportedERC20TokensAndMetadataV7 {
}
export interface SupportedERC20TokensAndMetadataV6 {
    paymasterMetadata: PaymasterMetadataV6;
    tokens: ERC20Token[];
}
export interface SupportedERC20TokensAndMetadataV7WithExchangeRate {
    paymasterMetadata: PaymasterMetadataV7;
    tokens: ERC20TokenWithExchangeRate[];
}
export interface SupportedERC20TokensAndMetadataV8WithExchangeRate extends SupportedERC20TokensAndMetadataV7WithExchangeRate {
}
export interface SupportedERC20TokensAndMetadataV6WithExchangeRate {
    paymasterMetadata: PaymasterMetadataV6;
    tokens: ERC20TokenWithExchangeRate[];
}
export interface Dictionary<T> {
    [Key: string]: T;
}
export type AddressToState = {
    balance?: bigint;
    nonce?: bigint;
    code?: string;
    state?: Dictionary<string>;
    stateDiff?: Dictionary<string>;
};
export type StateOverrideSet = {
    [key: string]: AddressToState;
};
export declare enum GasOption {
    Slow = 1,
    Medium = 1.2,
    Fast = 1.5
}
export declare enum PolygonChain {
    Mainnet = "v2",
    ZkMainnet = "zkevm",
    Amoy = "amoy",
    Cardona = "cardona"
}
export type GasPrice = {
    maxPriorityFee: number;
    maxFee: number;
};
export type PolygonGasStationJsonRpcResponse = {
    safeLow: GasPrice;
    standard: GasPrice;
    fast: GasPrice;
    estimatedBaseFee: string;
    blockTime: number;
    blockNumber: number;
};
export type OnChainIdentifierParamsType = {
    project: string;
    platform?: "Web" | "Mobile" | "Safe App" | "Widget";
    tool?: string;
    toolVersion?: string;
};
export {};
//# sourceMappingURL=types.d.ts.map