import * as abitype from 'abitype';
import * as viem from 'viem';
import * as viem_accounts from 'viem/accounts';
import { GetKeyResponse, GetTlsKeyResponse } from './index.mjs';
import './get-compose-hash.mjs';
import './verify-env-encrypt-public-key.mjs';

/**
 * @deprecated use toViemAccountSecure instead. This method has security concerns.
 * Current implementation uses raw key material without proper hashing.
 */
declare function toViemAccount(keyResponse: GetKeyResponse | GetTlsKeyResponse): {
    address: viem_accounts.Address;
    nonceManager?: viem_accounts.NonceManager | undefined;
    sign: (parameters: {
        hash: viem.Hash;
    }) => Promise<viem.Hex>;
    signAuthorization: (parameters: viem.AuthorizationRequest) => Promise<viem_accounts.SignAuthorizationReturnType>;
    signMessage: ({ message }: {
        message: viem.SignableMessage;
    }) => Promise<viem.Hex>;
    signTransaction: <serializer extends viem.SerializeTransactionFn<viem.TransactionSerializable> = viem.SerializeTransactionFn<viem.TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
        serializer?: serializer | undefined;
    } | undefined) => Promise<viem.Hex>;
    signTypedData: <const typedData extends abitype.TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: viem.TypedDataDefinition<typedData, primaryType>) => Promise<viem.Hex>;
    publicKey: viem.Hex;
    source: "privateKey";
    type: "local";
};
/**
 * Creates a Viem account from DeriveKeyResponse using secure key derivation.
 * This method applies SHA256 hashing to the complete key material for enhanced security.
 */
declare function toViemAccountSecure(keyResponse: GetKeyResponse | GetTlsKeyResponse): {
    address: viem_accounts.Address;
    nonceManager?: viem_accounts.NonceManager | undefined;
    sign: (parameters: {
        hash: viem.Hash;
    }) => Promise<viem.Hex>;
    signAuthorization: (parameters: viem.AuthorizationRequest) => Promise<viem_accounts.SignAuthorizationReturnType>;
    signMessage: ({ message }: {
        message: viem.SignableMessage;
    }) => Promise<viem.Hex>;
    signTransaction: <serializer extends viem.SerializeTransactionFn<viem.TransactionSerializable> = viem.SerializeTransactionFn<viem.TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
        serializer?: serializer | undefined;
    } | undefined) => Promise<viem.Hex>;
    signTypedData: <const typedData extends abitype.TypedData | Record<string, unknown>, primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: viem.TypedDataDefinition<typedData, primaryType>) => Promise<viem.Hex>;
    publicKey: viem.Hex;
    source: "privateKey";
    type: "local";
};

export { toViemAccount, toViemAccountSecure };
