import { ExtendedPrivateKey } from './types';
import BN from 'bn.js';
export type CurveName = 'p256' | 'secp256k1';
export declare class PrivateKey implements ExtendedPrivateKey {
    readonly priv: {
        curve: CurveName;
        secretKey: BN;
    };
    readonly chainCode: Uint8Array;
    readonly keyPair: {
        curve: CurveName;
        secretKey: BN;
        publicKey: Uint8Array;
    };
    /**
     *
     * @param priv { secretKey: BN, curve: 'p256' | 'secp256k1' }
     * @param chainCode slice 32->n HMAC hash key and seedkey (first instance curve default seedKey. after hmac value slice 32->n)
     */
    constructor(priv: {
        curve: CurveName;
        secretKey: BN;
    }, chainCode: Uint8Array);
    /**
     * @param seedSrc result of Bip39.mnemonicToSeed
     * @param curve known supported curve p256 or secp256k1
     * @returns instance of PrivateKey non-HD keys derived
     * @throws InvalidBitSize | InvalidCurveError | InvalidSeedLengthError
     */
    static fromSeed(seedSrc: Uint8Array | string, curve: CurveName): PrivateKey;
    /**
     *
     * @param index derivation path item pre-hardened if applicable ie: 44' -> 2^31 + 44
     * @returns child PrivateKey of the current PrivateKey
     */
    derive(index: number): PrivateKey;
    /**
     *
     * @param path pre-hardened (if applicable) derivation path items ie 44'/1729'/0/0 -> 2^31 + 44/2^31 + 1729/0/0
     * @returns final child of the full HD keys derivation
     */
    derivePath(path: Iterable<number>): PrivateKey;
    /**
     *
     * @returns Uint8Array (if contains a private key)
     * @throws InvalidKeyError
     */
    bytes(): Uint8Array;
}
