/**
 * COSE key structures (RFC 8152).
 *
 * @since 2.0.0
 * @category Message Signing
 */
import { Equal, Hash, Inspectable, Schema } from "effect";
import * as CBOR from "../CBOR.js";
import * as PrivateKey from "../PrivateKey.js";
import * as VKey from "../VKey.js";
import { HeaderMap } from "./Header.js";
import { AlgorithmId, KeyOperation, KeyType } from "./Label.js";
declare const COSEKey_base: Schema.Class<COSEKey, {
    keyType: Schema.UndefinedOr<Schema.Enums<typeof KeyType>>;
    keyId: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    algorithmId: Schema.UndefinedOr<Schema.Enums<typeof AlgorithmId>>;
    keyOps: Schema.UndefinedOr<Schema.Array$<Schema.Enums<typeof KeyOperation>>>;
    baseInitVector: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    headers: Schema.instanceOf<HeaderMap>;
}, Schema.Struct.Encoded<{
    keyType: Schema.UndefinedOr<Schema.Enums<typeof KeyType>>;
    keyId: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    algorithmId: Schema.UndefinedOr<Schema.Enums<typeof AlgorithmId>>;
    keyOps: Schema.UndefinedOr<Schema.Array$<Schema.Enums<typeof KeyOperation>>>;
    baseInitVector: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    headers: Schema.instanceOf<HeaderMap>;
}>, never, {
    readonly headers: HeaderMap;
} & {
    readonly keyType: KeyType | undefined;
} & {
    readonly keyId: Uint8Array<ArrayBufferLike> | undefined;
} & {
    readonly algorithmId: AlgorithmId.EdDSA | undefined;
} & {
    readonly keyOps: readonly KeyOperation[] | undefined;
} & {
    readonly baseInitVector: Uint8Array<ArrayBufferLike> | undefined;
}, {}, {}>;
/**
 * COSE key representation (RFC 8152).
 *
 * @since 2.0.0
 * @category Model
 */
export declare class COSEKey extends COSEKey_base {
    toJSON(): {
        _tag: "COSEKey";
        keyType: string | undefined;
        keyId: string | undefined;
        algorithmId: string | undefined;
        keyOps: string[] | undefined;
        baseInitVector: string | undefined;
        headers: {
            _tag: "HeaderMap";
            headers: any[][];
        };
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * CBOR bytes transformation schema for COSEKey.
 * Encodes COSEKey as a CBOR Map compatible with CSL.
 *
 * @since 2.0.0
 * @category Schemas
 */
export declare const COSEKeyFromCBORBytes: (options?: CBOR.CodecOptions) => Schema.transformOrFail<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.SchemaClass<COSEKey, COSEKey, never>, never>;
declare const EdDSA25519Key_base: Schema.Class<EdDSA25519Key, {
    privateKey: Schema.UndefinedOr<Schema.instanceOf<PrivateKey.PrivateKey>>;
    publicKey: Schema.UndefinedOr<Schema.instanceOf<VKey.VKey>>;
}, Schema.Struct.Encoded<{
    privateKey: Schema.UndefinedOr<Schema.instanceOf<PrivateKey.PrivateKey>>;
    publicKey: Schema.UndefinedOr<Schema.instanceOf<VKey.VKey>>;
}>, never, {
    readonly publicKey: VKey.VKey | undefined;
} & {
    readonly privateKey: PrivateKey.PrivateKey | undefined;
}, {}, {}>;
/**
 * Ed25519 key for signing and verification.
 *
 * @since 2.0.0
 * @category Model
 */
export declare class EdDSA25519Key extends EdDSA25519Key_base {
    toJSON(): {
        _tag: "EdDSA25519Key";
        hasPrivateKey: boolean;
        hasPublicKey: boolean;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
    /**
     * Set the private key for signing.
     *
     * @since 2.0.0
     * @category Mutators
     */
    setPrivateKey(privateKey: PrivateKey.PrivateKey): this;
    /**
     * Check if key can be used for signing.
     *
     * @since 2.0.0
     * @category Predicates
     */
    isForSigning(): boolean;
    /**
     * Check if key can be used for verification.
     *
     * @since 2.0.0
     * @category Predicates
     */
    isForVerifying(): boolean;
    /**
     * Build a COSEKey from this Ed25519 key.
     *
     * @since 2.0.0
     * @category Conversion
     */
    build(): COSEKey;
}
export {};
//# sourceMappingURL=Key.d.ts.map