/**
 * COSE_Sign multi-signature structures (RFC 8152).
 *
 * Implements COSE_Sign for multi-signature messages with separate signature headers.
 *
 * @since 2.0.0
 * @category Sign Data
 */
import { Equal, Hash, Inspectable, Schema } from "effect";
import * as CBOR from "../CBOR.js";
import * as Ed25519Signature from "../Ed25519Signature.js";
import { Headers } from "./Header.js";
declare const COSESignature_base: Schema.Class<COSESignature, {
    headers: Schema.instanceOf<Headers>;
    signature: Schema.instanceOf<Ed25519Signature.Ed25519Signature>;
}, Schema.Struct.Encoded<{
    headers: Schema.instanceOf<Headers>;
    signature: Schema.instanceOf<Ed25519Signature.Ed25519Signature>;
}>, never, {
    readonly signature: Ed25519Signature.Ed25519Signature;
} & {
    readonly headers: Headers;
}, {}, {}>;
/**
 * Single COSE signature (for multi-signature COSESign).
 *
 * @since 2.0.0
 * @category Model
 */
export declare class COSESignature extends COSESignature_base {
    toJSON(): {
        _tag: "COSESignature";
        headers: {
            _tag: "Headers";
            protected: {
                _tag: "HeaderMap";
                headers: any[][];
            };
            unprotected: {
                _tag: "HeaderMap";
                headers: any[][];
            };
        };
        signature: string;
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * Create a new COSESignature.
 *
 * @since 2.0.0
 * @category Constructors
 */
export declare const coseSignatureNew: (headers: Headers, signature: Ed25519Signature.Ed25519Signature) => COSESignature;
/**
 * CBOR bytes transformation schema for COSESignature.
 *
 * @since 2.0.0
 * @category Schemas
 */
export declare const COSESignatureFromCBORBytes: (options?: CBOR.CodecOptions) => Schema.transformOrFail<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.SchemaClass<COSESignature, COSESignature, never>, never>;
declare const COSESign_base: Schema.Class<COSESign, {
    headers: Schema.instanceOf<Headers>;
    payload: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    signatures: Schema.Array$<Schema.instanceOf<COSESignature>>;
}, Schema.Struct.Encoded<{
    headers: Schema.instanceOf<Headers>;
    payload: Schema.UndefinedOr<typeof Schema.Uint8ArrayFromSelf>;
    signatures: Schema.Array$<Schema.instanceOf<COSESignature>>;
}>, never, {
    readonly headers: Headers;
} & {
    readonly payload: Uint8Array<ArrayBufferLike> | undefined;
} & {
    readonly signatures: readonly COSESignature[];
}, {}, {}>;
/**
 * COSE_Sign structure (RFC 8152) - multi-signature message.
 *
 * @since 2.0.0
 * @category Model
 */
export declare class COSESign extends COSESign_base {
    toJSON(): {
        _tag: "COSESign";
        headers: {
            _tag: "Headers";
            protected: {
                _tag: "HeaderMap";
                headers: any[][];
            };
            unprotected: {
                _tag: "HeaderMap";
                headers: any[][];
            };
        };
        payload: string | undefined;
        signatures: {
            _tag: "COSESignature";
            headers: {
                _tag: "Headers";
                protected: {
                    _tag: "HeaderMap";
                    headers: any[][];
                };
                unprotected: {
                    _tag: "HeaderMap";
                    headers: any[][];
                };
            };
            signature: string;
        }[];
    };
    toString(): string;
    [Inspectable.NodeInspectSymbol](): unknown;
    [Equal.symbol](that: unknown): boolean;
    [Hash.symbol](): number;
}
/**
 * Create a new COSESign.
 *
 * @since 2.0.0
 * @category Constructors
 */
export declare const coseSignNew: (headers: Headers, payload: Uint8Array | undefined, signatures: ReadonlyArray<COSESignature>) => COSESign;
/**
 * CBOR bytes transformation schema for COSESign.
 *
 * @since 2.0.0
 * @category Schemas
 */
export declare const COSESignFromCBORBytes: (options?: CBOR.CodecOptions) => Schema.transformOrFail<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.SchemaClass<COSESign, COSESign, never>, never>;
/**
 * CBOR hex transformation schema for COSESign.
 *
 * @since 2.0.0
 * @category Schemas
 */
export declare const COSESignFromCBORHex: (options?: CBOR.CodecOptions) => Schema.transform<Schema.Schema<Uint8Array<ArrayBufferLike>, string, never>, Schema.transformOrFail<Schema.transformOrFail<typeof Schema.Uint8ArrayFromSelf, Schema.declare<CBOR.CBOR, CBOR.CBOR, readonly [], never>, never>, Schema.SchemaClass<COSESign, COSESign, never>, never>>;
declare const COSESignBuilder_base: Schema.Class<COSESignBuilder, {
    externalAad: typeof Schema.Uint8ArrayFromSelf;
    hashPayload: typeof Schema.Boolean;
    headers: Schema.instanceOf<Headers>;
    isPayloadExternal: typeof Schema.Boolean;
    payload: typeof Schema.Uint8ArrayFromSelf;
}, Schema.Struct.Encoded<{
    externalAad: typeof Schema.Uint8ArrayFromSelf;
    hashPayload: typeof Schema.Boolean;
    headers: Schema.instanceOf<Headers>;
    isPayloadExternal: typeof Schema.Boolean;
    payload: typeof Schema.Uint8ArrayFromSelf;
}>, never, {
    readonly headers: Headers;
} & {
    readonly payload: Uint8Array<ArrayBufferLike>;
} & {
    readonly externalAad: Uint8Array<ArrayBufferLike>;
} & {
    readonly hashPayload: boolean;
} & {
    readonly isPayloadExternal: boolean;
}, {}, {}>;
/**
 * Builder for creating COSE_Sign structures (multi-signature).
 *
 * @since 2.0.0
 * @category Model
 */
export declare class COSESignBuilder extends COSESignBuilder_base {
    /**
     * Set external additional authenticated data.
     *
     * @since 2.0.0
     * @category Mutators
     */
    setExternalAad(externalAad: Uint8Array): this;
    /**
     * Hash the payload with blake2b-224 and update headers.
     *
     * @since 2.0.0
     * @category Mutators
     */
    hashPayloadWith224(): this;
    /**
     * Create the data that needs to be signed (Sig_structure).
     *
     * @since 2.0.0
     * @category Building
     */
    makeDataToSign(): Uint8Array;
    /**
     * Build the final COSESign structure with the provided signatures.
     *
     * @since 2.0.0
     * @category Building
     */
    build(signatures: ReadonlyArray<COSESignature>): COSESign;
}
/**
 * Create a new COSESignBuilder.
 *
 * @since 2.0.0
 * @category Constructors
 */
export declare const coseSignBuilderNew: (headers: Headers, payload: Uint8Array, isPayloadExternal: boolean) => COSESignBuilder;
export {};
//# sourceMappingURL=Sign.d.ts.map