import * as viem from 'viem';
import { Hex, Transport, Client, Prettify, Assign, RpcSchema, ClientConfig, CreateClientErrorType, Chain, Account, Hash, Address as Address$1 } from 'viem';
import { CreateCredentialReturnType, PublicKeyCredential as PublicKeyCredential$1, PublicKey, WebAuthnData } from 'webauthn-p256';
import { WebAuthnAccount as WebAuthnAccount$1 } from 'viem/_types/account-abstraction';
import { Address } from 'abitype';
import { WebAuthnAccount, SmartAccount, SmartAccountImplementation } from 'viem/_types/account-abstraction/accounts/types';
import { entryPoint07Abi } from 'viem/account-abstraction/constants/abis';
import { WebAuthnAccount as WebAuthnAccount$2 } from 'viem/account-abstraction';
import { ErrorType } from 'viem/_types/errors/utils';
import { Web3APISpec, EthExecutionAPI, Web3BaseProvider, Web3APIMethod, Web3APIReturnType, Web3APIPayload, Web3ProviderStatus, JsonRpcResponseWithResult } from 'web3-types';
import { Web3APISpec as Web3APISpec$1, Web3APIMethod as Web3APIMethod$1, Web3APIPayload as Web3APIPayload$1, JsonRpcResponseWithResult as JsonRpcResponseWithResult$1 } from 'web3';

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * The Webauthn owner.
 */
interface WebauthnOwner {
    /**
     * The public key X coordinate.
     */
    publicKeyX: string;
    /**
     * The public key Y coordinate.
     */
    publicKeyY: string;
    /**
     * The weight.
     */
    weight: number;
}
/**
 * The Circle modular wallet weighted multisig.
 */
interface WeightedMultisig {
    /**
     * The Webauthn owners.
     */
    webauthnOwners: WebauthnOwner[];
    /**
     * The threshold weight.
     */
    thresholdWeight: number;
}
/**
 * The Circle modular wallet initial ownership configuration.
 */
interface InitialOwnershipConfiguration {
    /**
     * The ownership contract address.
     */
    ownershipContractAddress: Hex;
    /**
     * The weighted multisig.
     */
    weightedMultisig: WeightedMultisig;
}
/**
 * The Circle modular wallet SCA configuration.
 */
interface ScaConfiguration {
    /**
     * The initial ownership configuration.
     */
    initialOwnershipConfiguration: InitialOwnershipConfiguration;
    /**
     * The initial code.
     */
    initCode: Hex;
}
/**
 * The Circle modular wallet.
 */
interface ModularWallet {
    /**
     * The wallet ID.
     */
    id: string;
    /**
     * The wallet address.
     */
    address: Hex;
    /**
     * The blockchain.
     */
    blockchain: string;
    /**
     * The state.
     */
    state: string;
    /**
     * The SCA core.
     */
    scaCore: string;
    /**
     * The SCA configuration.
     */
    scaConfiguration: ScaConfiguration;
    /**
     * The create date.
     */
    createDate: string;
    /**
     * The update date.
     */
    updateDate: string;
}
/**
 * The Get Circle modular wallet address response.
 */
type GetAddressReturnType = ModularWallet;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare enum WebAuthnMode {
    Login = "Login",
    Register = "Register"
}
interface CreateCredentialParameters {
    credential: PublicKeyCredential;
    rpId: string | undefined;
}
interface CustomPublicKeyCredentialDescriptor extends Omit<PublicKeyCredentialDescriptor, 'id'> {
    id: string;
}
interface CustomPublicKeyCredentialRequestOptions extends Omit<PublicKeyCredentialRequestOptions, 'allowCredentials' | 'challenge'> {
    allowCredentials?: CustomPublicKeyCredentialDescriptor[];
    challenge: string;
}
interface CustomPublicKeyCredentialUserEntity extends Omit<PublicKeyCredentialUserEntity, 'id'> {
    id: string;
}
interface CustomPublicKeyCredentialCreationOptions extends Omit<PublicKeyCredentialCreationOptions, 'challenge' | 'user'> {
    challenge: string;
    user: CustomPublicKeyCredentialUserEntity;
}
interface ToWebAuthnAccountParameters {
    transport: Transport;
    username?: string;
    credentialId?: string;
    mode: WebAuthnMode;
}
/**
 * Available only in secure contexts.
 *
 * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse).
 */
interface AuthenticatorAssertionResponse extends AuthenticatorResponse {
    /**
     * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle).
     */
    readonly userHandle: ArrayBuffer;
}
/**
 * Available only in secure contexts.
 *
 * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse).
 */
interface AuthenticatorAttestationResponse extends AuthenticatorResponse {
    /**
     * Returns Public Key.
     */
    getPublicKey(): ArrayBuffer;
}
interface WebAuthnCredential extends CreateCredentialReturnType {
    rpId: string | undefined;
}
type GetLoginOptionsReturnType = CustomPublicKeyCredentialRequestOptions;
type GetRegistrationOptionsReturnType = CustomPublicKeyCredentialCreationOptions;
interface GetLoginVerificationReturnType {
    publicKey: string;
}
interface GetRegistrationVerificationReturnType {
    verified?: boolean | null;
}

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Generate login options, including a challenge for verification, and return them to the client.
 */
type GetLoginOptionsRpcSchema = {
    Method: 'rp_getLoginOptions';
    Parameters?: [userId: string];
    ReturnType: GetLoginOptionsReturnType;
};
/**
 * Verify the login response (authentication credential) and report the outcome to the client.
 */
type GetLoginVerificationRpcSchema = {
    Method: 'rp_getLoginVerification';
    Parameters?: [authenticationCredential: PublicKeyCredential$1];
    ReturnType: GetLoginVerificationReturnType;
};
/**
 * Generate and return registration options to the client. The client will use these options to prompt the user to create a passkey.
 */
type GetRegistrationOptionsRpcSchema = {
    Method: 'rp_getRegistrationOptions';
    Parameters?: [username: string];
    ReturnType: GetRegistrationOptionsReturnType;
};
/**
 * Verify the registration response (registration credential) and return the results to the client.
 */
type GetRegistrationVerificationRpcSchema = {
    Method: 'rp_getRegistrationVerification';
    Parameters?: [registrationCredential: PublicKeyCredential$1];
    ReturnType: GetRegistrationVerificationReturnType;
};
/**
 * Gets the Circle modular wallet address for the user.
 */
type GetAddressRpcSchema = {
    Method: 'circle_getAddress';
    Parameters?: [
        {
            scaConfiguration: {
                initialOwnershipConfiguration: Omit<InitialOwnershipConfiguration, 'ownershipContractAddress'>;
                scaCore: string;
            };
        }
    ];
    ReturnType: GetAddressReturnType;
};
type RpRpcSchema = [
    GetLoginOptionsRpcSchema,
    GetLoginVerificationRpcSchema,
    GetRegistrationOptionsRpcSchema,
    GetRegistrationVerificationRpcSchema
];
type ModularWalletRpcSchema = [GetAddressRpcSchema];

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
declare const CIRCLE_MSCA_6900_V1_EP07_FACTORY_ABI: readonly [{
    readonly type: "constructor";
    readonly inputs: readonly [{
        readonly name: "_owner";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_entryPointAddr";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "_pluginManagerAddr";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "receive";
    readonly stateMutability: "payable";
}, {
    readonly type: "function";
    readonly name: "acceptOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "accountImplementation";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract UpgradableMSCA";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "addStake";
    readonly inputs: readonly [{
        readonly name: "_unstakeDelaySec";
        readonly type: "uint32";
        readonly internalType: "uint32";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "payable";
}, {
    readonly type: "function";
    readonly name: "createAccount";
    readonly inputs: readonly [{
        readonly name: "_sender";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }, {
        readonly name: "_salt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }, {
        readonly name: "_initializingData";
        readonly type: "bytes";
        readonly internalType: "bytes";
    }];
    readonly outputs: readonly [{
        readonly name: "account";
        readonly type: "address";
        readonly internalType: "contract UpgradableMSCA";
    }];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "entryPoint";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "contract IEntryPoint";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "getAddress";
    readonly inputs: readonly [{
        readonly name: "_sender";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }, {
        readonly name: "_salt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }, {
        readonly name: "_initializingData";
        readonly type: "bytes";
        readonly internalType: "bytes";
    }];
    readonly outputs: readonly [{
        readonly name: "addr";
        readonly type: "address";
        readonly internalType: "address";
    }, {
        readonly name: "mixedSalt";
        readonly type: "bytes32";
        readonly internalType: "bytes32";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "isPluginAllowed";
    readonly inputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
        readonly internalType: "bool";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "owner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "pendingOwner";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly stateMutability: "view";
}, {
    readonly type: "function";
    readonly name: "renounceOwnership";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "setPlugins";
    readonly inputs: readonly [{
        readonly name: "_plugins";
        readonly type: "address[]";
        readonly internalType: "address[]";
    }, {
        readonly name: "_permissions";
        readonly type: "bool[]";
        readonly internalType: "bool[]";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "transferOwnership";
    readonly inputs: readonly [{
        readonly name: "newOwner";
        readonly type: "address";
        readonly internalType: "address";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "unlockStake";
    readonly inputs: readonly [];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "function";
    readonly name: "withdrawStake";
    readonly inputs: readonly [{
        readonly name: "_withdrawAddress";
        readonly type: "address";
        readonly internalType: "address payable";
    }];
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
}, {
    readonly type: "event";
    readonly name: "AccountCreated";
    readonly inputs: readonly [{
        readonly name: "proxy";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "sender";
        readonly type: "bytes32";
        readonly indexed: false;
        readonly internalType: "bytes32";
    }, {
        readonly name: "salt";
        readonly type: "bytes32";
        readonly indexed: false;
        readonly internalType: "bytes32";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "FactoryDeployed";
    readonly inputs: readonly [{
        readonly name: "factory";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "accountImplementation";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }, {
        readonly name: "entryPoint";
        readonly type: "address";
        readonly indexed: false;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferStarted";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "event";
    readonly name: "OwnershipTransferred";
    readonly inputs: readonly [{
        readonly name: "previousOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }, {
        readonly name: "newOwner";
        readonly type: "address";
        readonly indexed: true;
        readonly internalType: "address";
    }];
    readonly anonymous: false;
}, {
    readonly type: "error";
    readonly name: "Create2FailedDeployment";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidInitializationInput";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "InvalidLength";
    readonly inputs: readonly [];
}, {
    readonly type: "error";
    readonly name: "OwnableInvalidOwner";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "OwnableUnauthorizedAccount";
    readonly inputs: readonly [{
        readonly name: "account";
        readonly type: "address";
        readonly internalType: "address";
    }];
}, {
    readonly type: "error";
    readonly name: "PluginIsNotAllowed";
    readonly inputs: readonly [{
        readonly name: "plugin";
        readonly type: "address";
        readonly internalType: "address";
    }];
}];

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Parameters to create a Circle smart account.
 */
type ToCircleSmartAccountParameters = {
    /**
     * The address.
     */
    address?: Address;
    /**
     * The client instance.
     */
    client: Client;
    /**
     * The owner.
     */
    owner: WebAuthnAccount;
    /**
     * The Nonce.
     */
    nonce?: bigint;
    /**
     * The Circle Smart Account Wallet Name.
     */
    name?: string;
};
/**
 * Return type of the Circle smart account.
 */
type ToCircleSmartAccountReturnType = Prettify<SmartAccount<CircleSmartAccountImplementation>>;
/**
 * Circle smart account implementation.
 */
type CircleSmartAccountImplementation = Assign<SmartAccountImplementation<typeof entryPoint07Abi, '0.7', {
    abi: typeof entryPoint07Abi;
    factory: {
        abi: typeof CIRCLE_MSCA_6900_V1_EP07_FACTORY_ABI;
        address: Address;
    };
}>, {
    sign: NonNullable<SmartAccountImplementation['sign']>;
    getFactoryArgs: NonNullable<SmartAccountImplementation['getFactoryArgs']>;
}>;

type GetAddressParameters = [
    {
        /**
         * The SCA configuration.
         */
        scaConfiguration: {
            initialOwnershipConfiguration: Omit<InitialOwnershipConfiguration, 'ownershipContractAddress'>;
            scaCore: string;
        };
        /**
         * The metadata.
         */
        metadata?: {
            name?: string;
        };
    }
];
/**
 * Gets the Circle smart wallet address for the user.
 * @param client - Client to use.
 * @param params - Parameters to use. See {@link GetAddressParameters}.
 * @returns Circle smart wallet creation response. See {@link GetAddressReturnType}.
 */
declare function getAddress(client: Client<Transport>, params: GetAddressParameters): Promise<ModularWallet>;

type GetLoginOptionsParameters = {
    userId: string;
};
/**
 * Returns the login options, including a challenge for verification.
 * @param client - Client to use.
 * @param parameters - Parameters to use. See {@link GetLoginOptionsParameters}.
 * @returns Credential Request Options. See {@link GetLoginOptionsReturnType}.
 */
declare function getLoginOptions(client: Client<Transport>, { userId }: GetLoginOptionsParameters): Promise<CustomPublicKeyCredentialRequestOptions>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

type GetLoginVerificationParameters = {
    credential: PublicKeyCredential$1;
};
/**
 * Returns the login verification response to indicate if it's verified or not.
 * @param client - Client to use.
 * @param parameters - Parameters to use. See {@link GetLoginVerificationParameters}.
 * @returns WebAuthn Verification Response. See {@link GetLoginVerificationReturnType}.
 */
declare function getLoginVerification(client: Client<Transport>, { credential }: GetLoginVerificationParameters): Promise<GetLoginVerificationReturnType>;

type GetRegistrationOptionsParameters = {
    username: string;
};
/**
 * Returns the registration options, including a challenge for verification.
 * @param client - Client to use.
 * @param parameters - Parameters to use. See {@link GetRegistrationOptionsParameters}.
 * @returns Credential Creation Options. See {@link GetRegistrationOptionsReturnType}.
 */
declare function getRegistrationOptions(client: Client<Transport>, { username }: GetRegistrationOptionsParameters): Promise<CustomPublicKeyCredentialCreationOptions>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

type GetRegistrationVerificationParameters = {
    credential: PublicKeyCredential$1;
};
/**
 * Returns the registration verification response to indicate if it's verified or not.
 * @param client - Client to use.
 * @param parameters - Parameters to use. See {@link GetRegistrationVerificationParameters}.
 * @returns WebAuthn Verification Response. See {@link GetRegistrationVerificationReturnType}.
 */
declare function getRegistrationVerification(client: Client<Transport>, { credential }: GetRegistrationVerificationParameters): Promise<GetRegistrationVerificationReturnType>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

type ModularWalletActions = {
    /**
     * Gets the modular wallet address for the user.
     * @param parameters - Parameters to use. See {@link GetAddressParameters}.
     * @returns Wallets created. See {@link GetAddressReturnType}.
     */
    getAddress: (parameters: GetAddressParameters) => Promise<GetAddressReturnType>;
};
/**
 * Returns the Modular Wallets actions.
 * @param client - Client to use.
 * @returns Modular Wallets Actions. See {@link ModularWalletActions}.
 */
declare function modularWalletActions<transport extends Transport = Transport>(client: Client<transport>): ModularWalletActions;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

type RpActions = {
    /**
     * Returns the login options, including a challenge for verification.
     * @param parameters - Parameters to use. See {@link GetLoginOptionsParameters}.
     * @returns Credential Request Options. See {@link GetLoginOptionsReturnType}.
     */
    getLoginOptions: (parameters: GetLoginOptionsParameters) => Promise<GetLoginOptionsReturnType>;
    /**
     * Returns the login verification response to indicate if it's verified or not.
     * @param parameters - Parameters to use. See {@link GetLoginVerificationParameters}.
     * @returns WebAuthn Verification Response. See {@link GetLoginVerificationReturnType}.
     */
    getLoginVerification: (parameters: GetLoginVerificationParameters) => Promise<GetLoginVerificationReturnType>;
    /**
     * Returns the registration options, including a challenge for verification.
     * @param parameters - Parameters to use. See {@link GetRegistrationOptionsParameters}.
     * @returns Credential Creation Options. See {@link GetRegistrationOptionsReturnType}.
     */
    getRegistrationOptions: (parameters: GetRegistrationOptionsParameters) => Promise<GetRegistrationOptionsReturnType>;
    /**
     * Returns the registration verification response to indicate if it's verified or not.
     * @param parameters - Parameters to use. See {@link GetRegistrationVerificationParameters}.
     * @returns WebAuthn Verification Response. See {@link GetRegistrationVerificationReturnType}.
     */
    getRegistrationVerification: (parameters: GetRegistrationVerificationParameters) => Promise<GetRegistrationVerificationReturnType>;
};
/**
 * Returns the RP actions.
 * @param client - Client to use.
 * @returns Rp Actions. See.
 */
declare function rpActions<transport extends Transport = Transport>(client: Client<transport>): RpActions;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

type RpClientConfig<transport extends Transport = Transport, rpcSchema extends RpcSchema | undefined = undefined> = Prettify<Pick<ClientConfig<transport, undefined, undefined, rpcSchema>, 'cacheTime' | 'key' | 'name' | 'pollingInterval' | 'rpcSchema' | 'transport'>>;
type RpClient<transport extends Transport = Transport, rpcSchema extends RpcSchema | undefined = undefined> = Prettify<Client<transport, undefined, undefined, rpcSchema extends RpcSchema ? [...RpRpcSchema, ...rpcSchema] : RpRpcSchema, RpActions>>;
type CreateRpClientErrorType = CreateClientErrorType | ErrorType;
/**
 * Creates a RP Client.
 * @param parameters - See {@link RpClientConfig}.
 * @returns A RP Client. See {@link RpClient}.
 */
declare function createRpClient<transport extends Transport, rpcSchema extends RpcSchema | undefined = undefined>(parameters: RpClientConfig<transport, rpcSchema>): RpClient<transport, rpcSchema>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface ToCircleModularWalletClientParameters {
    /**
     * The client instance.
     */
    client: Client;
}
type ExtendedRpcSchema<rpcSchema extends RpcSchema | undefined = undefined> = rpcSchema extends RpcSchema ? [...ModularWalletRpcSchema, ...rpcSchema] : ModularWalletRpcSchema;
type CircleModularWalletClient = Client<Transport, Chain | undefined, Account | undefined, ExtendedRpcSchema<RpcSchema>, ModularWalletActions>;
/**
 * Transforms a client into a Circle modular wallet client using decorators.
 * @param parameters - Parameters to use. See {@link ToCircleModularWalletClientParameters}.
 * @returns A decorated Circle modular wallet client. See {@link CircleModularWalletClient}.
 */
declare function toCircleModularWalletClient({ client, }: ToCircleModularWalletClientParameters): CircleModularWalletClient;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a custom transport instance with the given clientUrl and clientKey.
 * @param clientUrl - The Client URL to use.
 * @param clientKey - The Client key to use.
 * @returns The custom transport instance.
 */
declare const toModularTransport: (clientUrl: string, clientKey: string) => viem.CustomTransport;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Creates a custom transport instance with the given clientUrl and clientKey.
 * @param clientUrl - The Client URL to use.
 * @param clientKey - The Client key to use.
 * @returns The custom transport instance.
 */
declare const toPasskeyTransport: (clientUrl: string, clientKey: string) => viem.CustomTransport;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface GetCircleSmartAccountAddressParameters {
    /**
     * The Circle modular wallet client instance.
     */
    client: CircleModularWalletClient;
    /**
     * The owner.
     */
    owner: WebAuthnAccount$1;
    /**
     * The Circle Smart Account Wallet Name.
     */
    name?: string;
}
/**
 * Gets the Circle modular wallet address.
 * @param parameters - Parameters to use. See {@link GetCircleSmartAccountAddressParameters}.
 * @returns The Circle modular wallet address.
 */
declare function getModularWalletAddress({ client, owner, name, }: GetCircleSmartAccountAddressParameters): Promise<GetAddressReturnType>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Creates a Circle smart account.
 * @param parameters - Parameters to use. See {@link ToCircleSmartAccountParameters}.
 * @returns Circle smart Account. See {@link ToCircleSmartAccountReturnType}.
 */
declare function toCircleSmartAccount(parameters: ToCircleSmartAccountParameters): Promise<ToCircleSmartAccountReturnType>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface WebAuthnSignParameters {
    /**
     * The hash to sign.
     */
    hash: Hash;
    /**
     * The owner of the account.
     */
    owner: WebAuthnAccount$2;
}
/**
 * Signs a hash and parses it to a ABI-encoded  webauthn signature. The dynamic part of the secp256r1 signature.
 * @param parameters - Parameters to use. See {@link WebAuthnSignParameters}.
 * @returns The ABI-encoded webauthn signature.
 */
declare const webAuthnSign: ({ hash, owner, }: WebAuthnSignParameters) => Promise<Hex>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Returns a WebAuthn credential.
 * @param parameters - Parameters to use. See {@link ToWebAuthnAccountParameters}.
 * @returns A WebAuthn credential.
 */
declare function toWebAuthnCredential(parameters: ToWebAuthnAccountParameters): Promise<WebAuthnCredential>;
/**
 * Starts a WebAuthn registration.
 * @param client - RpClient instance.
 * @param username - The username to use.
 * @returns A WebAuthn Credential.
 */
declare function startRegistration(client: RpClient, username?: string | null): Promise<WebAuthnCredential>;
/**
 * Starts a WebAuthn authentication/login.
 * @param client - RpClient instance.
 * @param credentialId - The credential ID to use.
 * @returns A WebAuthn Credential.
 */
declare function startAuthentication(client: RpClient, credentialId?: string | null): Promise<WebAuthnCredential>;
/**
 * Transforms to PublicKeyCredentialCreationOptions.
 * @param options - CustomPublicKeyCredentialCreationOptions instance.
 * @returns PublicKeyCredentialCreationOptions instance.
 */
declare function getCredentialCreationOptions(options: CustomPublicKeyCredentialCreationOptions): PublicKeyCredentialCreationOptions;
/**
 * Transforms to PublicKeyCredentialRequestOptions.
 * @param options - CustomPublicKeyCredentialRequestOptions instance.
 * @returns PublicKeyCredentialRequestOptions instance.
 */
declare function getCredentialRequestOptions(options: CustomPublicKeyCredentialRequestOptions): PublicKeyCredentialRequestOptions;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
declare const DEFAULT_RPC_URL = "https://modular-sdk.circle.com/v1/rpc/w3s/buidl";
declare const MODULAR_WALLETS_TRANSPORT_KEY = "Modular wallets transport";
declare const MODULAR_WALLETS_TRANSPORT_NAME = "Modular wallets transport";

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare const ENTRY_POINT_07: {
    readonly abi: readonly [{
        readonly inputs: readonly [{
            readonly name: "success";
            readonly type: "bool";
        }, {
            readonly name: "ret";
            readonly type: "bytes";
        }];
        readonly name: "DelegateAndRevert";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly name: "opIndex";
            readonly type: "uint256";
        }, {
            readonly name: "reason";
            readonly type: "string";
        }];
        readonly name: "FailedOp";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly name: "opIndex";
            readonly type: "uint256";
        }, {
            readonly name: "reason";
            readonly type: "string";
        }, {
            readonly name: "inner";
            readonly type: "bytes";
        }];
        readonly name: "FailedOpWithRevert";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly name: "returnData";
            readonly type: "bytes";
        }];
        readonly name: "PostOpReverted";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "ReentrancyGuardReentrantCall";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
        }];
        readonly name: "SenderAddressResult";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly name: "aggregator";
            readonly type: "address";
        }];
        readonly name: "SignatureValidationFailed";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly indexed: true;
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "factory";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "paymaster";
            readonly type: "address";
        }];
        readonly name: "AccountDeployed";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [];
        readonly name: "BeforeExecution";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "totalDeposit";
            readonly type: "uint256";
        }];
        readonly name: "Deposited";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly indexed: true;
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "nonce";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "PostOpRevertReason";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "aggregator";
            readonly type: "address";
        }];
        readonly name: "SignatureAggregatorChanged";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "totalStaked";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly name: "unstakeDelaySec";
            readonly type: "uint256";
        }];
        readonly name: "StakeLocked";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "withdrawTime";
            readonly type: "uint256";
        }];
        readonly name: "StakeUnlocked";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "withdrawAddress";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "amount";
            readonly type: "uint256";
        }];
        readonly name: "StakeWithdrawn";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly indexed: true;
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly name: "paymaster";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "nonce";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly name: "success";
            readonly type: "bool";
        }, {
            readonly indexed: false;
            readonly name: "actualGasCost";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly name: "actualGasUsed";
            readonly type: "uint256";
        }];
        readonly name: "UserOperationEvent";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly indexed: true;
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "nonce";
            readonly type: "uint256";
        }];
        readonly name: "UserOperationPrefundTooLow";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly indexed: true;
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "nonce";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "UserOperationRevertReason";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "withdrawAddress";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly name: "amount";
            readonly type: "uint256";
        }];
        readonly name: "Withdrawn";
        readonly type: "event";
    }, {
        readonly inputs: readonly [{
            readonly name: "unstakeDelaySec";
            readonly type: "uint32";
        }];
        readonly name: "addStake";
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
        }];
        readonly name: "balanceOf";
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "target";
            readonly type: "address";
        }, {
            readonly name: "data";
            readonly type: "bytes";
        }];
        readonly name: "delegateAndRevert";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
        }];
        readonly name: "depositTo";
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "address";
        }];
        readonly name: "deposits";
        readonly outputs: readonly [{
            readonly name: "deposit";
            readonly type: "uint256";
        }, {
            readonly name: "staked";
            readonly type: "bool";
        }, {
            readonly name: "stake";
            readonly type: "uint112";
        }, {
            readonly name: "unstakeDelaySec";
            readonly type: "uint32";
        }, {
            readonly name: "withdrawTime";
            readonly type: "uint48";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
        }];
        readonly name: "getDepositInfo";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly name: "deposit";
                readonly type: "uint256";
            }, {
                readonly name: "staked";
                readonly type: "bool";
            }, {
                readonly name: "stake";
                readonly type: "uint112";
            }, {
                readonly name: "unstakeDelaySec";
                readonly type: "uint32";
            }, {
                readonly name: "withdrawTime";
                readonly type: "uint48";
            }];
            readonly name: "info";
            readonly type: "tuple";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "sender";
            readonly type: "address";
        }, {
            readonly name: "key";
            readonly type: "uint192";
        }];
        readonly name: "getNonce";
        readonly outputs: readonly [{
            readonly name: "nonce";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "initCode";
            readonly type: "bytes";
        }];
        readonly name: "getSenderAddress";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly name: "sender";
                readonly type: "address";
            }, {
                readonly name: "nonce";
                readonly type: "uint256";
            }, {
                readonly name: "initCode";
                readonly type: "bytes";
            }, {
                readonly name: "callData";
                readonly type: "bytes";
            }, {
                readonly name: "accountGasLimits";
                readonly type: "bytes32";
            }, {
                readonly name: "preVerificationGas";
                readonly type: "uint256";
            }, {
                readonly name: "gasFees";
                readonly type: "bytes32";
            }, {
                readonly name: "paymasterAndData";
                readonly type: "bytes";
            }, {
                readonly name: "signature";
                readonly type: "bytes";
            }];
            readonly name: "userOp";
            readonly type: "tuple";
        }];
        readonly name: "getUserOpHash";
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bytes32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly components: readonly [{
                    readonly name: "sender";
                    readonly type: "address";
                }, {
                    readonly name: "nonce";
                    readonly type: "uint256";
                }, {
                    readonly name: "initCode";
                    readonly type: "bytes";
                }, {
                    readonly name: "callData";
                    readonly type: "bytes";
                }, {
                    readonly name: "accountGasLimits";
                    readonly type: "bytes32";
                }, {
                    readonly name: "preVerificationGas";
                    readonly type: "uint256";
                }, {
                    readonly name: "gasFees";
                    readonly type: "bytes32";
                }, {
                    readonly name: "paymasterAndData";
                    readonly type: "bytes";
                }, {
                    readonly name: "signature";
                    readonly type: "bytes";
                }];
                readonly name: "userOps";
                readonly type: "tuple[]";
            }, {
                readonly name: "aggregator";
                readonly type: "address";
            }, {
                readonly name: "signature";
                readonly type: "bytes";
            }];
            readonly name: "opsPerAggregator";
            readonly type: "tuple[]";
        }, {
            readonly name: "beneficiary";
            readonly type: "address";
        }];
        readonly name: "handleAggregatedOps";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly name: "sender";
                readonly type: "address";
            }, {
                readonly name: "nonce";
                readonly type: "uint256";
            }, {
                readonly name: "initCode";
                readonly type: "bytes";
            }, {
                readonly name: "callData";
                readonly type: "bytes";
            }, {
                readonly name: "accountGasLimits";
                readonly type: "bytes32";
            }, {
                readonly name: "preVerificationGas";
                readonly type: "uint256";
            }, {
                readonly name: "gasFees";
                readonly type: "bytes32";
            }, {
                readonly name: "paymasterAndData";
                readonly type: "bytes";
            }, {
                readonly name: "signature";
                readonly type: "bytes";
            }];
            readonly name: "ops";
            readonly type: "tuple[]";
        }, {
            readonly name: "beneficiary";
            readonly type: "address";
        }];
        readonly name: "handleOps";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "key";
            readonly type: "uint192";
        }];
        readonly name: "incrementNonce";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "callData";
            readonly type: "bytes";
        }, {
            readonly components: readonly [{
                readonly components: readonly [{
                    readonly name: "sender";
                    readonly type: "address";
                }, {
                    readonly name: "nonce";
                    readonly type: "uint256";
                }, {
                    readonly name: "verificationGasLimit";
                    readonly type: "uint256";
                }, {
                    readonly name: "callGasLimit";
                    readonly type: "uint256";
                }, {
                    readonly name: "paymasterVerificationGasLimit";
                    readonly type: "uint256";
                }, {
                    readonly name: "paymasterPostOpGasLimit";
                    readonly type: "uint256";
                }, {
                    readonly name: "preVerificationGas";
                    readonly type: "uint256";
                }, {
                    readonly name: "paymaster";
                    readonly type: "address";
                }, {
                    readonly name: "maxFeePerGas";
                    readonly type: "uint256";
                }, {
                    readonly name: "maxPriorityFeePerGas";
                    readonly type: "uint256";
                }];
                readonly name: "mUserOp";
                readonly type: "tuple";
            }, {
                readonly name: "userOpHash";
                readonly type: "bytes32";
            }, {
                readonly name: "prefund";
                readonly type: "uint256";
            }, {
                readonly name: "contextOffset";
                readonly type: "uint256";
            }, {
                readonly name: "preOpGas";
                readonly type: "uint256";
            }];
            readonly name: "opInfo";
            readonly type: "tuple";
        }, {
            readonly name: "context";
            readonly type: "bytes";
        }];
        readonly name: "innerHandleOp";
        readonly outputs: readonly [{
            readonly name: "actualGasCost";
            readonly type: "uint256";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "address";
        }, {
            readonly name: "";
            readonly type: "uint192";
        }];
        readonly name: "nonceSequenceNumber";
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "interfaceId";
            readonly type: "bytes4";
        }];
        readonly name: "supportsInterface";
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "unlockStake";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "withdrawAddress";
            readonly type: "address";
        }];
        readonly name: "withdrawStake";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly name: "withdrawAddress";
            readonly type: "address";
        }, {
            readonly name: "withdrawAmount";
            readonly type: "uint256";
        }];
        readonly name: "withdrawTo";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly stateMutability: "payable";
        readonly type: "receive";
    }];
    readonly address: "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
    readonly version: "0.7";
};
/**
 * The Circle Upgradable MSCA Factory.
 * @remarks TODO: Add more information once we publish the public documentation.
 */
declare const FACTORY: {
    readonly abi: readonly [{
        readonly type: "constructor";
        readonly inputs: readonly [{
            readonly name: "_owner";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_entryPointAddr";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "_pluginManagerAddr";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "receive";
        readonly stateMutability: "payable";
    }, {
        readonly type: "function";
        readonly name: "acceptOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "accountImplementation";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract UpgradableMSCA";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "addStake";
        readonly inputs: readonly [{
            readonly name: "_unstakeDelaySec";
            readonly type: "uint32";
            readonly internalType: "uint32";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
    }, {
        readonly type: "function";
        readonly name: "createAccount";
        readonly inputs: readonly [{
            readonly name: "_sender";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }, {
            readonly name: "_salt";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }, {
            readonly name: "_initializingData";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "contract UpgradableMSCA";
        }];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "entryPoint";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "contract IEntryPoint";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "getAddress";
        readonly inputs: readonly [{
            readonly name: "_sender";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }, {
            readonly name: "_salt";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }, {
            readonly name: "_initializingData";
            readonly type: "bytes";
            readonly internalType: "bytes";
        }];
        readonly outputs: readonly [{
            readonly name: "addr";
            readonly type: "address";
            readonly internalType: "address";
        }, {
            readonly name: "mixedSalt";
            readonly type: "bytes32";
            readonly internalType: "bytes32";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "isPluginAllowed";
        readonly inputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "bool";
            readonly internalType: "bool";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "owner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "pendingOwner";
        readonly inputs: readonly [];
        readonly outputs: readonly [{
            readonly name: "";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly stateMutability: "view";
    }, {
        readonly type: "function";
        readonly name: "renounceOwnership";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "setPlugins";
        readonly inputs: readonly [{
            readonly name: "_plugins";
            readonly type: "address[]";
            readonly internalType: "address[]";
        }, {
            readonly name: "_permissions";
            readonly type: "bool[]";
            readonly internalType: "bool[]";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "transferOwnership";
        readonly inputs: readonly [{
            readonly name: "newOwner";
            readonly type: "address";
            readonly internalType: "address";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "unlockStake";
        readonly inputs: readonly [];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "function";
        readonly name: "withdrawStake";
        readonly inputs: readonly [{
            readonly name: "_withdrawAddress";
            readonly type: "address";
            readonly internalType: "address payable";
        }];
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
    }, {
        readonly type: "event";
        readonly name: "AccountCreated";
        readonly inputs: readonly [{
            readonly name: "proxy";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "sender";
            readonly type: "bytes32";
            readonly indexed: false;
            readonly internalType: "bytes32";
        }, {
            readonly name: "salt";
            readonly type: "bytes32";
            readonly indexed: false;
            readonly internalType: "bytes32";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "FactoryDeployed";
        readonly inputs: readonly [{
            readonly name: "factory";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "accountImplementation";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }, {
            readonly name: "entryPoint";
            readonly type: "address";
            readonly indexed: false;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferStarted";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "event";
        readonly name: "OwnershipTransferred";
        readonly inputs: readonly [{
            readonly name: "previousOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }, {
            readonly name: "newOwner";
            readonly type: "address";
            readonly indexed: true;
            readonly internalType: "address";
        }];
        readonly anonymous: false;
    }, {
        readonly type: "error";
        readonly name: "Create2FailedDeployment";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "InvalidInitializationInput";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "InvalidLength";
        readonly inputs: readonly [];
    }, {
        readonly type: "error";
        readonly name: "OwnableInvalidOwner";
        readonly inputs: readonly [{
            readonly name: "owner";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "OwnableUnauthorizedAccount";
        readonly inputs: readonly [{
            readonly name: "account";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }, {
        readonly type: "error";
        readonly name: "PluginIsNotAllowed";
        readonly inputs: readonly [{
            readonly name: "plugin";
            readonly type: "address";
            readonly internalType: "address";
        }];
    }];
    readonly address: Hex;
    readonly bytecode: `0x${string}`;
};
declare const UPGRADABLE_MSCA: {
    readonly abi: readonly [{
        readonly inputs: readonly [{
            readonly internalType: "contract IEntryPoint";
            readonly name: "_newEntryPoint";
            readonly type: "address";
        }, {
            readonly internalType: "contract PluginManager";
            readonly name: "_newPluginManager";
            readonly type: "address";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "constructor";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }];
        readonly name: "AddressEmptyCode";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "implementation";
            readonly type: "address";
        }];
        readonly name: "ERC1967InvalidImplementation";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "ERC1967NonPayable";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "ExecFromPluginToSelectorNotPermitted";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "ExecuteFromPluginToExternalNotPermitted";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "FailedInnerCall";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "InvalidAuthorizer";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "InvalidExecutionFunction";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }];
        readonly name: "InvalidHookFunctionId";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "InvalidInitialization";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "InvalidInitializationInput";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "InvalidLimit";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }];
        readonly name: "InvalidValidationFunctionId";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }];
        readonly name: "NativeTokenSpendingNotPermitted";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "NotFoundSelector";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "NotInitializing";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "NotNativeFunctionSelector";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }, {
            readonly internalType: "bytes";
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "PostExecHookFailed";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }, {
            readonly internalType: "bytes";
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "PreExecHookFailed";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }, {
            readonly internalType: "bytes";
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "PreRuntimeValidationHookFailed";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "uint8";
            readonly name: "functionId";
            readonly type: "uint8";
        }, {
            readonly internalType: "bytes";
            readonly name: "revertReason";
            readonly type: "bytes";
        }];
        readonly name: "RuntimeValidationFailed";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }];
        readonly name: "TargetIsPlugin";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "UUPSUnauthorizedCallContext";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "slot";
            readonly type: "bytes32";
        }];
        readonly name: "UUPSUnsupportedProxiableUUID";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "UnauthorizedCaller";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "WalletStorageIsInitialized";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "WalletStorageIsInitializing";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "WalletStorageIsNotInitializing";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "WrongTimeBounds";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: false;
            readonly internalType: "uint64";
            readonly name: "version";
            readonly type: "uint64";
        }];
        readonly name: "Initialized";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "bytes32";
            readonly name: "manifestHash";
            readonly type: "bytes32";
        }, {
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "plugin";
                readonly type: "address";
            }, {
                readonly internalType: "uint8";
                readonly name: "functionId";
                readonly type: "uint8";
            }];
            readonly indexed: false;
            readonly internalType: "struct FunctionReference[]";
            readonly name: "dependencies";
            readonly type: "tuple[]";
        }];
        readonly name: "PluginInstalled";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "bool";
            readonly name: "onUninstallSucceeded";
            readonly type: "bool";
        }];
        readonly name: "PluginUninstalled";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "entryPointAddress";
            readonly type: "address";
        }];
        readonly name: "UpgradableMSCAInitialized";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "implementation";
            readonly type: "address";
        }];
        readonly name: "Upgraded";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [];
        readonly name: "WalletStorageInitialized";
        readonly type: "event";
    }, {
        readonly stateMutability: "payable";
        readonly type: "fallback";
    }, {
        readonly inputs: readonly [];
        readonly name: "UPGRADE_INTERFACE_VERSION";
        readonly outputs: readonly [{
            readonly internalType: "string";
            readonly name: "";
            readonly type: "string";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "addDeposit";
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "author";
        readonly outputs: readonly [{
            readonly internalType: "string";
            readonly name: "";
            readonly type: "string";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "entryPoint";
        readonly outputs: readonly [{
            readonly internalType: "contract IEntryPoint";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }, {
            readonly internalType: "uint256";
            readonly name: "value";
            readonly type: "uint256";
        }, {
            readonly internalType: "bytes";
            readonly name: "data";
            readonly type: "bytes";
        }];
        readonly name: "execute";
        readonly outputs: readonly [{
            readonly internalType: "bytes";
            readonly name: "returnData";
            readonly type: "bytes";
        }];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "target";
                readonly type: "address";
            }, {
                readonly internalType: "uint256";
                readonly name: "value";
                readonly type: "uint256";
            }, {
                readonly internalType: "bytes";
                readonly name: "data";
                readonly type: "bytes";
            }];
            readonly internalType: "struct Call[]";
            readonly name: "calls";
            readonly type: "tuple[]";
        }];
        readonly name: "executeBatch";
        readonly outputs: readonly [{
            readonly internalType: "bytes[]";
            readonly name: "returnData";
            readonly type: "bytes[]";
        }];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes";
            readonly name: "data";
            readonly type: "bytes";
        }];
        readonly name: "executeFromPlugin";
        readonly outputs: readonly [{
            readonly internalType: "bytes";
            readonly name: "";
            readonly type: "bytes";
        }];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "target";
            readonly type: "address";
        }, {
            readonly internalType: "uint256";
            readonly name: "value";
            readonly type: "uint256";
        }, {
            readonly internalType: "bytes";
            readonly name: "data";
            readonly type: "bytes";
        }];
        readonly name: "executeFromPluginExternal";
        readonly outputs: readonly [{
            readonly internalType: "bytes";
            readonly name: "";
            readonly type: "bytes";
        }];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getDeposit";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getEntryPoint";
        readonly outputs: readonly [{
            readonly internalType: "contract IEntryPoint";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "getExecutionFunctionConfig";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "plugin";
                readonly type: "address";
            }, {
                readonly components: readonly [{
                    readonly internalType: "address";
                    readonly name: "plugin";
                    readonly type: "address";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "functionId";
                    readonly type: "uint8";
                }];
                readonly internalType: "struct FunctionReference";
                readonly name: "userOpValidationFunction";
                readonly type: "tuple";
            }, {
                readonly components: readonly [{
                    readonly internalType: "address";
                    readonly name: "plugin";
                    readonly type: "address";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "functionId";
                    readonly type: "uint8";
                }];
                readonly internalType: "struct FunctionReference";
                readonly name: "runtimeValidationFunction";
                readonly type: "tuple";
            }];
            readonly internalType: "struct ExecutionFunctionConfig";
            readonly name: "executionFunctionConfig";
            readonly type: "tuple";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "getExecutionHooks";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly components: readonly [{
                    readonly internalType: "address";
                    readonly name: "plugin";
                    readonly type: "address";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "functionId";
                    readonly type: "uint8";
                }];
                readonly internalType: "struct FunctionReference";
                readonly name: "preExecHook";
                readonly type: "tuple";
            }, {
                readonly components: readonly [{
                    readonly internalType: "address";
                    readonly name: "plugin";
                    readonly type: "address";
                }, {
                    readonly internalType: "uint8";
                    readonly name: "functionId";
                    readonly type: "uint8";
                }];
                readonly internalType: "struct FunctionReference";
                readonly name: "postExecHook";
                readonly type: "tuple";
            }];
            readonly internalType: "struct ExecutionHooks[]";
            readonly name: "executionHooks";
            readonly type: "tuple[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getInstalledPlugins";
        readonly outputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "pluginAddresses";
            readonly type: "address[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "getNonce";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "selector";
            readonly type: "bytes4";
        }];
        readonly name: "getPreValidationHooks";
        readonly outputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "plugin";
                readonly type: "address";
            }, {
                readonly internalType: "uint8";
                readonly name: "functionId";
                readonly type: "uint8";
            }];
            readonly internalType: "struct FunctionReference[]";
            readonly name: "preUserOpValidationHooks";
            readonly type: "tuple[]";
        }, {
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "plugin";
                readonly type: "address";
            }, {
                readonly internalType: "uint8";
                readonly name: "functionId";
                readonly type: "uint8";
            }];
            readonly internalType: "struct FunctionReference[]";
            readonly name: "preRuntimeValidationHooks";
            readonly type: "tuple[]";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "plugins";
            readonly type: "address[]";
        }, {
            readonly internalType: "bytes32[]";
            readonly name: "manifestHashes";
            readonly type: "bytes32[]";
        }, {
            readonly internalType: "bytes[]";
            readonly name: "pluginInstallData";
            readonly type: "bytes[]";
        }];
        readonly name: "initializeUpgradableMSCA";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "bytes32";
            readonly name: "manifestHash";
            readonly type: "bytes32";
        }, {
            readonly internalType: "bytes";
            readonly name: "pluginInstallData";
            readonly type: "bytes";
        }, {
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "plugin";
                readonly type: "address";
            }, {
                readonly internalType: "uint8";
                readonly name: "functionId";
                readonly type: "uint8";
            }];
            readonly internalType: "struct FunctionReference[]";
            readonly name: "dependencies";
            readonly type: "tuple[]";
        }];
        readonly name: "installPlugin";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "pluginManager";
        readonly outputs: readonly [{
            readonly internalType: "contract PluginManager";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "proxiableUUID";
        readonly outputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "";
            readonly type: "bytes32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes4";
            readonly name: "interfaceId";
            readonly type: "bytes4";
        }];
        readonly name: "supportsInterface";
        readonly outputs: readonly [{
            readonly internalType: "bool";
            readonly name: "";
            readonly type: "bool";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "plugin";
            readonly type: "address";
        }, {
            readonly internalType: "bytes";
            readonly name: "config";
            readonly type: "bytes";
        }, {
            readonly internalType: "bytes";
            readonly name: "pluginUninstallData";
            readonly type: "bytes";
        }];
        readonly name: "uninstallPlugin";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "newImplementation";
            readonly type: "address";
        }, {
            readonly internalType: "bytes";
            readonly name: "data";
            readonly type: "bytes";
        }];
        readonly name: "upgradeToAndCall";
        readonly outputs: readonly [];
        readonly stateMutability: "payable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly components: readonly [{
                readonly internalType: "address";
                readonly name: "sender";
                readonly type: "address";
            }, {
                readonly internalType: "uint256";
                readonly name: "nonce";
                readonly type: "uint256";
            }, {
                readonly internalType: "bytes";
                readonly name: "initCode";
                readonly type: "bytes";
            }, {
                readonly internalType: "bytes";
                readonly name: "callData";
                readonly type: "bytes";
            }, {
                readonly internalType: "bytes32";
                readonly name: "accountGasLimits";
                readonly type: "bytes32";
            }, {
                readonly internalType: "uint256";
                readonly name: "preVerificationGas";
                readonly type: "uint256";
            }, {
                readonly internalType: "bytes32";
                readonly name: "gasFees";
                readonly type: "bytes32";
            }, {
                readonly internalType: "bytes";
                readonly name: "paymasterAndData";
                readonly type: "bytes";
            }, {
                readonly internalType: "bytes";
                readonly name: "signature";
                readonly type: "bytes";
            }];
            readonly internalType: "struct PackedUserOperation";
            readonly name: "userOp";
            readonly type: "tuple";
        }, {
            readonly internalType: "bytes32";
            readonly name: "userOpHash";
            readonly type: "bytes32";
        }, {
            readonly internalType: "uint256";
            readonly name: "missingAccountFunds";
            readonly type: "uint256";
        }];
        readonly name: "validateUserOp";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "validationData";
            readonly type: "uint256";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "version";
        readonly outputs: readonly [{
            readonly internalType: "string";
            readonly name: "";
            readonly type: "string";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address payable";
            readonly name: "withdrawAddress";
            readonly type: "address";
        }, {
            readonly internalType: "uint256";
            readonly name: "amount";
            readonly type: "uint256";
        }];
        readonly name: "withdrawDepositTo";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly stateMutability: "payable";
        readonly type: "receive";
    }];
    /**
     * The address of the upgradable MSCA account implementation.
     * @remarks This address is from https://sepolia.etherscan.io/address/0xc83d88c018d143d08afe910221d445189fc6817a#readContract `accountImplementation` value.
     */
    readonly address: Hex;
};
/**
 * The Circle Weighted Multisig Plugin.
 * @remarks TODO: Add more information once we publish the public documentation.
 */
declare const CIRCLE_WEIGHTED_WEB_AUTHN_MULTISIG_PLUGIN: {
    readonly address: Hex;
    readonly manifestHash: Hex;
};
/**
 * The Circle Default Token Callback Plugin.
 * @remarks TODO: Add more information once we publish the public documentation.
 */
declare const CIRCLE_DEFAULT_TOKEN_CALLBACK_PLUGIN: {
    readonly address: Hex;
    readonly manifestHash: Hex;
    readonly installData: Hex;
};
/**
 * The ERC1769 Proxy. The creation code is used for computing the smart account address.
 */
declare const ERC1769_PROXY: {
    readonly creationCode: Hex;
};
declare const PUBLIC_KEY_OWN_WEIGHTS: bigint[];
declare const THRESHOLD_WEIGHT = 1n;
declare const STUB_SIGNATURE = "0x0000be58786f7ae825e097256fc83a4749b95189e03e9963348373e9c595b15200000000000000000000000000000000000000000000000000000000000000412200000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006091077742edaf8be2fa866827236532ec2a5547fe2721e606ba591d1ffae7a15c022e5f8fe5614bbf65ea23ad3781910eb04a1a60fae88190001ecf46e5f5680a00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a224b6d62474d316a4d554b57794d6352414c6774553953537144384841744867486178564b6547516b503541222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a35313733222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000";
declare const REPLAY_SAFE_HASH_V1: {
    readonly name: "Weighted Multisig Webauthn Plugin";
    readonly primaryType: "CircleWeightedWebauthnMultisigMessage";
    readonly domainSeparatorType: "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)";
    readonly moduleType: "CircleWeightedWebauthnMultisigMessage(bytes32 hash)";
    readonly version: "1.0.0";
};
declare const EIP712_PREFIX = "0x1901";
declare const MINIMUM_VERIFICATION_GAS_LIMIT = 600000;
declare const MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT = 1500000;
declare const SEPOLIA_MINIMUM_VERIFICATION_GAS_LIMIT = 600000;
declare const SEPOLIA_MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT = 2000000;
declare const MAINNET_MINIMUM_VERIFICATION_GAS_LIMIT = 1000000;
declare const MAINNET_MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT = 2500000;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * A Web3 provider that connects to the Modular Wallets API.
 * @param clientUrl - The client URL.
 * @param clientKey - The API key.
 */
declare class ModularWalletsProvider<API extends Web3APISpec = EthExecutionAPI> extends Web3BaseProvider<API> {
    readonly clientUrl: string;
    private readonly clientKey;
    constructor(clientUrl: string, clientKey: string);
    request<Method extends Web3APIMethod<API>, ResultType = Web3APIReturnType<API, Method>>(payload: Web3APIPayload<API, Method>, requestOptions?: RequestInit): Promise<ResultType>;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    getStatus(): Web3ProviderStatus;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @Returns false.
     */
    supportsSubscriptions(): boolean;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    on(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeListener(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    once(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeAllListeners(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    connect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    disconnect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reset(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reconnect(): void;
}

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * A Web3 provider that connects to the Paymaster API.
 * @param clientUrl - The client URL.
 * @param clientKey - The API key.
 */
declare class PaymasterProvider<API extends Web3APISpec = EthExecutionAPI> extends Web3BaseProvider<API> {
    readonly clientUrl: string;
    private readonly clientKey;
    constructor(clientUrl: string, clientKey: string);
    request<Method extends Web3APIMethod<API>, ResultType = Web3APIReturnType<API, Method>>(payload: Web3APIPayload<API, Method>, requestOptions?: RequestInit): Promise<ResultType>;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    getStatus(): Web3ProviderStatus;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @Returns false.
     */
    supportsSubscriptions(): boolean;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    on(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeListener(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    once(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeAllListeners(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    connect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    disconnect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reset(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reconnect(): void;
}

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * A Web3 provider that connects to the RP API.
 * @param clientUrl - The Client URL.
 * @param clientKey - The Client key.
 */
declare class RpProvider<API extends Web3APISpec = EthExecutionAPI> extends Web3BaseProvider<API> {
    readonly clientUrl: string;
    private readonly clientKey;
    constructor(clientUrl: string, clientKey: string);
    request<Method extends Web3APIMethod<API>, ResultType = Web3APIReturnType<API, Method>>(payload: Web3APIPayload<API, Method>, requestOptions?: RequestInit): Promise<ResultType>;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    getStatus(): Web3ProviderStatus;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @Returns false.
     */
    supportsSubscriptions(): boolean;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    on(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeListener(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    once(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    removeAllListeners(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    connect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    disconnect(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reset(): void;
    /**
     * This is an abstract method from the parent class but we don't need it for this provider.
     * @throws MethodNotImplementedError.
     */
    reconnect(): void;
}

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Computes the address of a contract.
 * @param owner - The owner.
 * @returns The computed address.
 */
declare function computeAddress(owner: WebAuthnAccount$2): Address$1;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Gets the public key parameters from an owner.
 * @param owner - The owner.
 * @returns The public key parameters.
 */
declare function getPublicKeyParamsFromOwner(owner: WebAuthnAccount$2): {
    sender: Address$1;
    initialPublicKeyOwners: PublicKey[];
};

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Get the salt for the MSCA factory contract.
 * @returns The salt.
 */
declare function getSalt(): `0x${string}`;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Gets the encoded initializeUpgradableMSCA function data from an owner.
 * @param owner - The owner.
 * @returns The encoded initializeUpgradableMSCA function data.
 */
declare function getInitializeUpgradableMSCAData(owner: WebAuthnAccount$2): Hex;
/**
 * Gets the encoded initializeUpgradableMSCA function parameters from an owner.
 * @param owner - The owner.
 * @returns The encoded initializeUpgradableMSCA function parameters.
 */
declare function getInitializeUpgradableMSCAParams(owner: WebAuthnAccount$2): Hex;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Returns a JSON-RPC response with the given result.
 */
declare function getJsonRpcResponse<API extends Web3APISpec, Method extends Web3APIMethod<API>, ResultType = Web3APIReturnType<API, Method>>(payload: Web3APIPayload<API, Method>, result: unknown): Promise<JsonRpcResponseWithResult<ResultType>>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Get JSON RPC stringified response.
 * @param result - The result to be stringified.
 * @param id - The id of the response.
 */
declare function getJsonRpcStringifyResponse(result: unknown, id?: number): string;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Parses a base64Url encoded (PEM) public key into x and y coordinates from the public key
 * defined on the credential.
 * @param base64Url - Base64Url encoded public key.
 * @returns PublicKey for credential.
 */
declare function parseBase64EncodedPublicKey(base64Url: string): Promise<PublicKey>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Fetches response from the specified client URL.
 * @param clientUrl - The URL of the API client.
 * @param clientKey - The authorization Client key.
 * @param payload - The payload to send in the request.
 * @param requestOptions - Optional request options for the fetch call.
 * @returns The JSON-RPC response from the API.
 * @throws \{ResponseError\} If the fetch call fails.
 */
declare function fetchFromApi<API extends Web3APISpec$1, Method extends Web3APIMethod$1<API>, ResultType>(clientUrl: string, clientKey: string, payload: Web3APIPayload$1<API, Method>, requestOptions?: RequestInit): Promise<JsonRpcResponseWithResult$1<ResultType>>;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Check if the URL is a Circle URL.
 * @param url - The URL to check.
 * @returns True if the URL is a Circle URL, false otherwise.
 */
declare function isCircleUrl(url: string): boolean;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Validate a client URL.
 */
declare function validateClientUrl(clientUrl: string): boolean;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface ReplaySafeHashParameters {
    /**
     * The address.
     */
    address: Address$1;
    /**
     * The chain ID.
     */
    chainId: number;
    /**
     * The hash.
     */
    hash: Hash;
}
/**
 * Converts the given data to a replay-safe hash.
 * @param parameters - Parameters to use. See {@link ReplaySafeHashParameters}.
 * @returns The replay-safe hash.
 */
declare function toReplaySafeHash({ address, chainId, hash, }: ReplaySafeHashParameters): Hash;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface WebAuthnSignatureParameters {
    /**
     * The WebAuthn data.
     */
    webauthn: WebAuthnData;
    /**
     * The signature.
     */
    signature: Hex;
}
/**
 * Regarding the ABI type of clientDataJSON, it must be either string or bytes.
 *
 * We found that the calculation results are the same, because when the encodeAbiParameters receives a string,
 * it also automatically hex-encodes it once. Therefore:
 * - If the ABI type is a string, it needs to be hex-encoded once during encoding,
 * which is equivalent to when the ABI type is bytes; during encoding, it can be used directly.
 * - The results of the encodeABIParams operations for both cases will be completely the same.
 *
 * Proof:.
 *
 * ```typescript
 * import { encodeAbiParameters, stringToHex } from "viem"
 *
 * const encode1 = encodeAbiParameters(
 *   [
 *     {
 *       type: "string",
 *     },
 *   ],
 *   [`{"type":"webauthn.get","challenge":"test-challenge","origin":"http://localhost:3005","crossOrigin":false}`]
 * )
 * const encode2 = encodeAbiParameters(
 *   [
 *     {
 *       type: "bytes",
 *     },
 *   ],
 *   [
 *     stringToHex(
 *       `{"type":"webauthn.get","challenge":"test-challenge","origin":"http://localhost:3005","crossOrigin":false}`
 *     ),
 *   ]
 * )
 * console.log("same?", encode1 === encode2)
 * ```
 *
 * Run the code snippet to see the console.log, you will see it's true.
 */
/**
 * Converts a WebAuthn signature to an ABI-encoded signature, which is the dynamic part of the secp256r1 signature.
 * @param parameters - Parameters to use. See {@link WebAuthnSignatureParameters}.
 * @returns The ABI-encoded signature.
 */
declare function toWebAuthnSignature({ webauthn, signature, }: WebAuthnSignatureParameters): Hex;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

interface WrapSignatureParameters {
    /**
     * The public key on-chain id.
     * A.k.a. The result of `keccak256(abi.encode(x, y))` where `x` and `y` are the x and y coordinates of the public key.
     */
    sender: Hex;
    /**
     * The signature to wrap.
     */
    signature: Hex;
    /**
     * Whether the signature is for a user operation.
     */
    hasUserOpGas?: boolean;
}
/**
 * Wraps a signature with the sender and the signature type.
 * @param parameters - Parameters to use. See {@link WrapSignatureParameters}.
 * @returns The wrapped signature.
 */
declare function wrapSignature({ sender, signature, hasUserOpGas, }: WrapSignatureParameters): Hex;

/**
 * Copyright 2025 Circle Internet Group, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at.
 *
 * Http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Gets the minimum verification gas limit for a given chain.
 * @param deployed - Whether the smart account is deployed.
 * @param chainId - The chain id.
 * @returns The chain-specific minimum verification gas limit or the default value if the chain is not supported.
 */
declare const getMinimumVerificationGasLimit: (deployed: boolean, chainId?: number) => number;

export { type AuthenticatorAssertionResponse, type AuthenticatorAttestationResponse, CIRCLE_DEFAULT_TOKEN_CALLBACK_PLUGIN, CIRCLE_WEIGHTED_WEB_AUTHN_MULTISIG_PLUGIN, type CircleModularWalletClient, type CircleSmartAccountImplementation, type CreateCredentialParameters, type CreateRpClientErrorType, type CustomPublicKeyCredentialCreationOptions, type CustomPublicKeyCredentialDescriptor, type CustomPublicKeyCredentialRequestOptions, type CustomPublicKeyCredentialUserEntity, DEFAULT_RPC_URL, EIP712_PREFIX, ENTRY_POINT_07, ERC1769_PROXY, type ExtendedRpcSchema, FACTORY, type GetAddressParameters, type GetAddressReturnType, type GetAddressRpcSchema, type GetLoginOptionsParameters, type GetLoginOptionsReturnType, type GetLoginOptionsRpcSchema, type GetLoginVerificationParameters, type GetLoginVerificationReturnType, type GetLoginVerificationRpcSchema, type GetRegistrationOptionsParameters, type GetRegistrationOptionsReturnType, type GetRegistrationOptionsRpcSchema, type GetRegistrationVerificationParameters, type GetRegistrationVerificationReturnType, type GetRegistrationVerificationRpcSchema, type InitialOwnershipConfiguration, MAINNET_MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT, MAINNET_MINIMUM_VERIFICATION_GAS_LIMIT, MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT, MINIMUM_VERIFICATION_GAS_LIMIT, MODULAR_WALLETS_TRANSPORT_KEY, MODULAR_WALLETS_TRANSPORT_NAME, type ModularWallet, type ModularWalletActions, type ModularWalletRpcSchema, ModularWalletsProvider, PUBLIC_KEY_OWN_WEIGHTS, PaymasterProvider, REPLAY_SAFE_HASH_V1, type RpActions, type RpClient, type RpClientConfig, RpProvider, type RpRpcSchema, SEPOLIA_MINIMUM_UNDEPLOY_VERIFICATION_GAS_LIMIT, SEPOLIA_MINIMUM_VERIFICATION_GAS_LIMIT, STUB_SIGNATURE, type ScaConfiguration, THRESHOLD_WEIGHT, type ToCircleModularWalletClientParameters, type ToCircleSmartAccountParameters, type ToCircleSmartAccountReturnType, type ToWebAuthnAccountParameters, UPGRADABLE_MSCA, type WebAuthnCredential, WebAuthnMode, type WebauthnOwner, type WeightedMultisig, computeAddress, createRpClient, fetchFromApi, getAddress, getCredentialCreationOptions, getCredentialRequestOptions, getInitializeUpgradableMSCAData, getInitializeUpgradableMSCAParams, getJsonRpcResponse, getJsonRpcStringifyResponse, getLoginOptions, getLoginVerification, getMinimumVerificationGasLimit, getModularWalletAddress, getPublicKeyParamsFromOwner, getRegistrationOptions, getRegistrationVerification, getSalt, isCircleUrl, modularWalletActions, parseBase64EncodedPublicKey, rpActions, startAuthentication, startRegistration, toCircleModularWalletClient, toCircleSmartAccount, toModularTransport, toPasskeyTransport, toReplaySafeHash, toWebAuthnCredential, toWebAuthnSignature, validateClientUrl, webAuthnSign, wrapSignature };
