import type { GasOption, StateOverrideSet, PolygonChain } from "../../types";
export interface CreateBaseUserOperationOverrides {
    nonce?: bigint;
    callData?: string;
    callGasLimit?: bigint;
    verificationGasLimit?: bigint;
    preVerificationGas?: bigint;
    maxFeePerGas?: bigint;
    maxPriorityFeePerGas?: bigint;
    callGasLimitPercentageMultiplier?: number;
    verificationGasLimitPercentageMultiplier?: number;
    preVerificationGasPercentageMultiplier?: number;
    maxFeePerGasPercentageMultiplier?: number;
    maxPriorityFeePerGasPercentageMultiplier?: number;
    state_override_set?: StateOverrideSet;
    dummySignerSignaturePairs?: SignerSignaturePair[];
    webAuthnSharedSigner?: string;
    webAuthnSignerFactory?: string;
    webAuthnSignerSingleton?: string;
    eip7212WebAuthnPrecompileVerifier?: string;
    eip7212WebAuthnContractVerifier?: string;
    safeModuleExecutorFunctionSelector?: SafeModuleExecutorFunctionSelector;
    multisendContractAddress?: string;
    gasLevel?: GasOption;
    polygonGasStation?: PolygonChain;
    expectedSigners?: Signer[];
}
export interface CreateUserOperationV6Overrides extends CreateBaseUserOperationOverrides {
    initCode?: string;
}
export interface CreateUserOperationV7Overrides extends CreateBaseUserOperationOverrides {
    factory?: string;
    factoryData?: string;
}
export interface SafeAccountSingleton {
    singletonAddress: string;
    singletonInitHash: string;
}
export interface InitCodeOverrides {
    threshold?: number;
    c2Nonce?: bigint;
    safe4337ModuleAddress?: string;
    safeModuleSetupddress?: string;
    entrypointAddress?: string;
    safeAccountSingleton?: SafeAccountSingleton;
    safeAccountFactoryAddress?: string;
    multisendContractAddress?: string;
    webAuthnSharedSigner?: string;
    eip7212WebAuthnPrecompileVerifierForSharedSigner?: string;
    eip7212WebAuthnContractVerifierForSharedSigner?: string;
}
export interface BaseInitOverrides {
    threshold?: number;
    c2Nonce?: bigint;
    safeAccountSingleton?: SafeAccountSingleton;
    safeAccountFactoryAddress?: string;
    multisendContractAddress?: string;
    webAuthnSharedSigner?: string;
    eip7212WebAuthnPrecompileVerifierForSharedSigner?: string;
    eip7212WebAuthnContractVerifierForSharedSigner?: string;
}
export interface WebAuthnSignatureOverrides {
    isInit?: boolean;
    webAuthnSharedSigner?: string;
    eip7212WebAuthnPrecompileVerifier?: string;
    eip7212WebAuthnContractVerifier?: string;
    webAuthnSignerFactory?: string;
    webAuthnSignerSingleton?: string;
    validAfter?: bigint;
    validUntil?: bigint;
}
export declare enum SafeModuleExecutorFunctionSelector {
    executeUserOpWithErrorString = "0x541d63c8",
    executeUserOp = "0x7bb37428"
}
export interface SafeUserOperationTypedDataDomain {
    chainId: number;
    verifyingContract: string;
}
export interface SafeUserOperationV6TypedMessageValue {
    safe: string;
    nonce: bigint;
    initCode: string;
    callData: string;
    callGasLimit: bigint;
    verificationGasLimit: bigint;
    preVerificationGas: bigint;
    maxFeePerGas: bigint;
    maxPriorityFeePerGas: bigint;
    paymasterAndData: string;
    validAfter: bigint;
    validUntil: bigint;
    entryPoint: string;
}
export interface SafeUserOperationV7TypedMessageValue {
    safe: string;
    nonce: bigint;
    initCode: string;
    callData: string;
    verificationGasLimit: bigint;
    callGasLimit: bigint;
    preVerificationGas: bigint;
    maxPriorityFeePerGas: bigint;
    maxFeePerGas: bigint;
    paymasterAndData: string;
    validAfter: bigint;
    validUntil: bigint;
    entryPoint: string;
}
export type ECDSAPublicAddress = string;
export interface WebauthnPublicKey {
    x: bigint;
    y: bigint;
}
export type Signer = ECDSAPublicAddress | WebauthnPublicKey;
export type ECDSASignature = string;
export interface WebauthnSignatureData {
    authenticatorData: ArrayBuffer;
    clientDataFields: string;
    rs: [bigint, bigint];
}
export interface SignerSignaturePair {
    signer: Signer;
    signature: string;
    isContractSignature?: boolean;
}
export declare const EOADummySignerSignaturePair: SignerSignaturePair;
export declare const WebauthnDummySignerSignaturePair: SignerSignaturePair;
//# sourceMappingURL=types.d.ts.map