/**
 * LocalKeyVault
 *
 * In-process KeyVault that wraps the WASM PrivacyBoost module directly.
 * Keys live in the same JS context. This is the backward-compatible default.
 */
import type * as Wasm from '../wasm/privacy_boost_wasm';
import type { WasmModule } from '../core/wasm-loader';
import type { KeyVault, KeyStatus, PublicKeys, StoredSession, BuildShieldCommitmentParams, ShieldCommitmentResult, EncryptDepositCiphertextParams, DepositCiphertextResult, NullifierInput, DeriveEcdhKeysParams, EcdhKeysResult, EncryptTransferCiphertextParams, TransferCiphertextResult, SpendingSignatureResult, TransferDigestParams, WithdrawalDigestParams, DigestResult, ViewAuthSignatureResult, RegistrationData, AuthenticateResult } from './types';
import type { ShieldRawProgress, UnshieldRawProgress } from '../types/eth';
export declare class LocalKeyVault implements KeyVault {
    private wasmModule;
    private wasm;
    private _chainId;
    private _serverUrl;
    private _appId;
    private _rpcUrl?;
    private _publicClient;
    private walletBridge;
    constructor(wasmModule: WasmModule);
    private ensureWasm;
    /** @internal Used by PrivacyBoost.ts for non-crypto operations (balances, etc.) */
    getWasmInstance(): Wasm.PrivacyBoost | null;
    initialize(config: {
        serverUrl: string;
        chainId: number;
        shieldContractAddress: string;
        wethContractAddress?: string;
        appId?: string;
        rpcUrl?: string;
        tokenRegistryAddress?: string;
        persistence?: {
            storage: 'localStorage' | 'indexedDB' | 'osKeychain';
            unlock?: 'none' | 'pin' | 'password';
        };
        autoConsolidate?: boolean;
        autoConsolidateThreshold?: number;
        autoConsolidateMaxRounds?: number;
    }): Promise<void>;
    private getOrCreatePublicClient;
    dispose(): void;
    authenticate(keySource: unknown, tokenProviderCallback: ((payload: unknown) => Promise<{
        token: string;
        expiresIn: number;
    }>) | null): Promise<AuthenticateResult>;
    submitCredential(credential: string, tokenProviderCallback: ((payload: unknown) => Promise<{
        token: string;
        expiresIn: number;
    }>) | null): Promise<AuthenticateResult>;
    proceedAfterMnemonic(credential: string | null, tokenProviderCallback: ((payload: unknown) => Promise<{
        token: string;
        expiresIn: number;
    }>) | null): Promise<AuthenticateResult>;
    logout(): Promise<void>;
    clearSession(): Promise<void>;
    getStoredSession(): Promise<StoredSession | null>;
    getKeyStatus(): Promise<KeyStatus>;
    getPublicKeys(): Promise<PublicKeys>;
    isAuthenticated(): boolean;
    getPrivacyAddress(): string | null;
    getMpk(): string | null;
    deleteVault(): Promise<void>;
    buildShieldCommitment(params: BuildShieldCommitmentParams): Promise<ShieldCommitmentResult>;
    encryptDepositCiphertext(params: EncryptDepositCiphertextParams): Promise<DepositCiphertextResult>;
    computeNullifiers(notes: NullifierInput[]): Promise<string[]>;
    generateNpk(recipientMpk: string, randomIn: string): Promise<string>;
    computeOutputCommitment(npk: string, tokenId: number, amount: string): Promise<string>;
    deriveEcdhKeys(params: DeriveEcdhKeysParams): Promise<EcdhKeysResult>;
    encryptTransferCiphertext(params: EncryptTransferCiphertextParams): Promise<TransferCiphertextResult>;
    signSpending(digestHi: string, digestLo: string): Promise<SpendingSignatureResult>;
    computeTransferDigest(params: TransferDigestParams): Promise<DigestResult>;
    computeWithdrawalDigest(params: WithdrawalDigestParams): Promise<DigestResult>;
    computeWithdrawalCommitment(recipientAddr: string, tokenId: number, amount: string): Promise<string>;
    signViewAuth(mpk: string, nonce: string): Promise<ViewAuthSignatureResult>;
    getRegistrationData(): Promise<RegistrationData>;
    shield(tokenAddress: string, amount: string, onProgress?: (event: ShieldRawProgress) => void): Promise<unknown>;
    sendTransfer(tokenAddress: string, amount: string, recipientPrivacyAddress: string): Promise<unknown>;
    unshield(tokenAddress: string, amount: string, recipientAddress: string, onProgress?: (event: UnshieldRawProgress) => void): Promise<unknown>;
    consolidateNotes(tokenAddress: string, maxRounds: number): Promise<unknown>;
    unwrapWeth(amount: string, recipientAddress: string): Promise<string>;
    setWalletBridge(bridge: {
        signMessage(message: string): Promise<string>;
        signTypedData(typedData: string): Promise<string>;
        sendTransaction(tx: unknown): Promise<string>;
        getAddress(): Promise<string>;
        getChainId(): Promise<number>;
    }): void;
}
//# sourceMappingURL=LocalKeyVault.d.ts.map