import { TypedDataField } from "ethers";
export type CreateWalletResponse = {
    referenceId: string;
    address: string;
};
export type WalletResponse = {
    referenceId: string;
    address: string;
    status: 'CREATED' | 'AWAITING_RETRY' | 'CREATING_VAULT_KEYS';
    created: string;
};
export type DataStructureItem = {
    type: string;
    name: string;
};
export type TypedMessage = {
    typeName: string;
    domainName: string;
    domainVersion: string;
    dataStructure?: DataStructureItem[];
    types?: Record<string, TypedDataField[]>;
};
export type SignedMessage = {
    v: 27 | 28;
    r: string;
    s: string;
};
export type SignedTypedMessage = SignedMessage & {
    [key: string]: unknown;
};
declare const _default: (api: any, network: string) => {
    /**
     * @param referenceId Your reference id for this user
     * @param type The signer type, can be 'VAULT' or 'SMART_ACCOUNT'
     * @param network If the signer type is 'SMART_ACCOUNT', you can specify the network
     * @returns {Promise<CreateWalletResponse>}
     */
    create: (referenceId: string, signerType?: 'VAULT' | 'SMART_ACCOUNT', network?: string) => Promise<CreateWalletResponse>;
    batchCreate: (referenceIds: string[], signerType?: 'VAULT' | 'SMART_ACCOUNT', network?: string) => Promise<CreateWalletResponse[]>;
    createVaultAccount: (referenceId: string) => Promise<CreateWalletResponse>;
    createSmartAccount: (referenceId: string, network: string) => Promise<CreateWalletResponse>;
    get: (referenceId?: string) => Promise<WalletResponse>;
    signTypedMessage: (typedData: TypedMessage, message: any, signerWallet: string, contractAddress: string) => Promise<SignedTypedMessage>;
    signMessage: (message: any, signerWallet: string) => Promise<SignedMessage>;
};
export default _default;
