import type { CrossIssuerAttestationEnvelope, UnsignedCrossIssuerAttestationEnvelope } from './types.js';
/**
 * Canonicalize an envelope for signing. The signature field is set to
 * the empty string before serialization so that signing and
 * verification agree on the bytes-under-signature without either side
 * having to reconstruct the envelope from a partial shape.
 */
export declare function canonicalizeForSignature(envelope: UnsignedCrossIssuerAttestationEnvelope | CrossIssuerAttestationEnvelope): string;
/**
 * Sign an unsigned envelope with the composer's Ed25519 private key
 * (hex). Derives the public key from the private key and writes it
 * into `composer_id` on the returned envelope. This guarantees that
 * the embedded composer_id matches the signing key, which the verifier
 * checks against; divergence between the two is always a bug, so a
 * caller-supplied composer_id is overwritten here. Use
 * `publicKeyFromPrivate` upstream if a pre-flight check is needed.
 */
export declare function signCrossIssuerAttestation<T extends UnsignedCrossIssuerAttestationEnvelope>(privateKeyHex: string, unsigned: T): T & {
    readonly signature: string;
    readonly composer_id: string;
};
//# sourceMappingURL=envelope.d.ts.map