import { DerivationNonce, IAsymmetricKey, IDerivedKey, IKeyDerivationStrategy, IPublicKey, KeyInformation } from './interfaces.js';
import { PrivKey, PubKey } from '@ts-bitcoin/core';
export declare class Secp256k1KeyDerivationStrategy implements IKeyDerivationStrategy {
    fromRaw(rawKey: Uint8Array): Promise<Secp256k1Key>;
    create(masterKey: CryptoKey, salt: string): Promise<Secp256k1Key>;
    hydrate(masterKey: CryptoKey, nonce: DerivationNonce): Promise<IDerivedKey>;
}
export declare class Secp256k1PublicKey implements IPublicKey {
    private pubKey;
    constructor(pubKey: PubKey);
    getPublicKeyHex(): Promise<string>;
    getPublicKeyBytes(): Promise<Uint8Array>;
    verify(signature: Uint8Array, message: Uint8Array): Promise<boolean>;
}
export declare class Secp256k1Key implements IAsymmetricKey, IDerivedKey {
    private key;
    private secret?;
    private derivation_path?;
    constructor(key: PrivKey, secret?: Uint8Array | undefined, derivation_path?: DerivationNonce | undefined);
    getPublicKeyBytes(): Promise<Uint8Array>;
    getPrivateKeyBytes(): Promise<Uint8Array>;
    toJWK({ includePrivate }: {
        includePrivate: boolean;
    }): Promise<{
        kid: string;
        d?: string | undefined;
        kty: string;
        crv: string;
        alg: string;
        use: string;
        x: string;
        y: string;
    }>;
    toCryptoKey(): Promise<CryptoKey>;
    exportKeyInformation(): Promise<KeyInformation>;
    toBitcoinKey(): PrivKey;
    sign(message: Uint8Array): Promise<Uint8Array>;
    verify(signature: Uint8Array, message: Uint8Array): Promise<boolean>;
    getPath(): DerivationNonce;
    getFingerprint(): Promise<Uint8Array>;
    getPublicKey(): Promise<Secp256k1PublicKey>;
}
