import { Buffer } from '@craftzdog/react-native-buffer';
import type { AsymmetricKeyType, EncodingOptions, JWK, KeyDetail, KeyObjectHandle, KeyUsage, SubtleAlgorithm } from '../utils';
import { KFormatType, KeyEncoding } from '../utils';
export declare class CryptoKey {
    keyObject: KeyObject;
    keyAlgorithm: SubtleAlgorithm;
    keyUsages: KeyUsage[];
    keyExtractable: boolean;
    get [Symbol.toStringTag](): string;
    constructor(keyObject: KeyObject, keyAlgorithm: SubtleAlgorithm, keyUsages: KeyUsage[], keyExtractable: boolean);
    inspect(_depth: number, _options: unknown): unknown;
    get type(): "public" | "secret" | "private";
    get extractable(): boolean;
    get algorithm(): SubtleAlgorithm;
    get usages(): KeyUsage[];
}
export declare class KeyObject {
    handle: KeyObjectHandle;
    type: 'public' | 'secret' | 'private';
    get [Symbol.toStringTag](): string;
    export(options: {
        format: 'pem';
    } & EncodingOptions): string | Buffer;
    export(options?: {
        format: 'der';
    } & EncodingOptions): Buffer;
    export(options?: {
        format: 'jwk';
    } & EncodingOptions): JWK;
    export(options?: EncodingOptions): string | Buffer | JWK;
    equals(otherKeyObject: KeyObject): boolean;
    constructor(type: string, handle: KeyObjectHandle);
    constructor(type: string, key: ArrayBuffer);
    static from(key: CryptoKey): KeyObject;
    toCryptoKey(algorithm: SubtleAlgorithm, extractable: boolean, keyUsages: KeyUsage[]): CryptoKey;
    static createKeyObject(type: string, key: ArrayBuffer, format?: KFormatType, encoding?: KeyEncoding, passphrase?: ArrayBuffer): KeyObject;
    getAsymmetricKeyType(): undefined;
    getAsymmetricKeyDetails(): undefined;
}
export declare class SecretKeyObject extends KeyObject {
    constructor(handle: KeyObjectHandle);
    get symmetricKeySize(): number;
    export(options: {
        format: 'pem';
    } & EncodingOptions): never;
    export(options: {
        format: 'der';
    } & EncodingOptions): Buffer;
    export(options: {
        format: 'jwk';
    } & EncodingOptions): never;
    export(options?: EncodingOptions): Buffer;
}
export declare class AsymmetricKeyObject extends KeyObject {
    constructor(type: string, handle: KeyObjectHandle);
    private _asymmetricKeyType?;
    get asymmetricKeyType(): AsymmetricKeyType;
    private _asymmetricKeyDetails?;
    get asymmetricKeyDetails(): KeyDetail;
    get namedCurve(): string | undefined;
}
export declare class PublicKeyObject extends AsymmetricKeyObject {
    constructor(handle: KeyObjectHandle);
    export(options: {
        format: 'pem';
    } & EncodingOptions): string;
    export(options: {
        format: 'der';
    } & EncodingOptions): Buffer;
    export(options: {
        format: 'jwk';
    } & EncodingOptions): JWK;
    export(options: {
        format: 'raw-public';
    } & EncodingOptions): Buffer;
}
export declare class PrivateKeyObject extends AsymmetricKeyObject {
    constructor(handle: KeyObjectHandle);
    export(options: {
        format: 'pem';
    } & EncodingOptions): string;
    export(options: {
        format: 'der';
    } & EncodingOptions): Buffer;
    export(options: {
        format: 'jwk';
    } & EncodingOptions): JWK;
    export(options: {
        format: 'raw-private';
    } & EncodingOptions): Buffer;
    export(options: {
        format: 'raw-seed';
    } & EncodingOptions): Buffer;
}
//# sourceMappingURL=classes.d.ts.map