import { SignatureBase } from './SignatureBase.js';
import { WithHeaders } from './WithHeaders.js';
import { KeyLike } from 'jose';
import { COSEVerifyGetKey } from '../jwks/local.js';
import { UnprotectedHeaders, ProtectedHeaders } from '../headers.js';
export declare class Sign extends WithHeaders {
    readonly payload: Uint8Array;
    readonly signatures: Signature[];
    constructor(protectedHeaders: Uint8Array | Map<number, unknown>, unprotectedHeaders: Map<number, unknown>, payload: Uint8Array, signatures: Signature[]);
    getContentForEncoding(): (Uint8Array | Map<number, unknown> | (Uint8Array | Map<number, unknown>)[][] | undefined)[];
    encode(): Buffer;
    verify(keys: KeyLike[] | Uint8Array[] | COSEVerifyGetKey): Promise<boolean>;
    verifyX509(roots: string[]): Promise<boolean>;
    static sign(bodyProtectedHeader: ProtectedHeaders, unprotectedHeaders: UnprotectedHeaders | undefined, payload: Uint8Array, signers: {
        key: KeyLike | Uint8Array;
        protectedHeaders: ProtectedHeaders;
        unprotectedHeaders?: UnprotectedHeaders;
    }[]): Promise<Sign>;
}
export declare class Signature extends SignatureBase {
    readonly unprotectedHeaders: Map<number, unknown>;
    readonly signature: Uint8Array;
    constructor(protectedHeaders: Uint8Array | Map<number, unknown>, unprotectedHeaders: Map<number, unknown>, signature: Uint8Array);
    private static Signature;
    verify(key: KeyLike | Uint8Array | COSEVerifyGetKey, bodyProtectedHeaders: Uint8Array | undefined, payload: Uint8Array): Promise<boolean>;
    static sign(bodyProtectedHeaders: Uint8Array | undefined, protectedHeaders: ProtectedHeaders, unprotectedHeaders: UnprotectedHeaders | undefined, payload: Uint8Array, key: KeyLike | Uint8Array): Promise<Signature>;
}
