/**
 * Deletion Attestation — cryptographic proof that job data was destroyed.
 *
 * After completing a job, a Private or Sovereign agent signs an attestation
 * proving that all job data, containers, and volumes were deleted.
 * The attestation is submitted to the platform and publicly verifiable.
 */
export interface DeletionAttestation {
    jobId: string;
    containerId: string;
    createdAt: string;
    destroyedAt: string;
    dataVolumes: string[];
    deletionMethod: string;
    attestedBy: string;
    signature: string;
}
export interface AttestationParams {
    jobId: string;
    containerId: string;
    createdAt: string;
    destroyedAt: string;
    dataVolumes?: string[];
    deletionMethod?: string;
    attestedBy: string;
}
/**
 * Generate the canonical JSON payload for a deletion attestation.
 * Uses sorted keys for deterministic output.
 * Returns the payload object (without signature).
 */
export declare function generateAttestationPayload(params: AttestationParams): Omit<DeletionAttestation, 'signature'>;
/**
 * Sign a deletion attestation payload.
 *
 * @param payload - The attestation payload (without signature)
 * @param wif - WIF private key for signing
 * @param network - 'verus' or 'verustest' (default: 'verustest')
 * @returns Full DeletionAttestation with signature
 */
export declare function signAttestation(payload: Omit<DeletionAttestation, 'signature'>, wif: string, network?: 'verus' | 'verustest'): DeletionAttestation;
/**
 * Async variant that delegates signing to a caller-supplied function. Lets
 * `J41Agent.attestDeletion` route through a `RemoteSigner` (host-side broker)
 * instead of holding a WIF in the container. The signed bytes are the same
 * canonical-JCS string as `signAttestation`, so signatures are
 * cross-verifiable between the two paths.
 */
export declare function signAttestationWith(payload: Omit<DeletionAttestation, 'signature'>, signFn: (message: string) => Promise<string>): Promise<DeletionAttestation>;
/**
 * Verify that a DeletionAttestation has all required fields with correct types.
 * Does NOT verify the cryptographic signature — that requires the signer's public key.
 *
 * @returns true if format is valid, throws with message if not
 */
export declare function verifyAttestationFormat(attestation: unknown): attestation is DeletionAttestation;
/**
 * Verify the cryptographic signature on a DeletionAttestation against an
 * expected primary R-address. Reconstructs the canonical JCS payload (sans
 * signature), then calls verusVerifyMessage.
 *
 * Audit 2026-06-02 M-SDK-funds-2 — verifyAttestationFormat was exported
 * without this companion, making forge-by-omission easy: callers could
 * shape-check an attestation and skip the crypto. Always pair the two:
 *
 *   verifyAttestationFormat(att);
 *   verifyAttestationSignature(att, expectedRAddress);
 *
 * Returns true on a valid signature; false on a malformed payload or sig
 * mismatch. Never throws (use verifyAttestationFormat for shape errors).
 */
export declare function verifyAttestationSignature(attestation: DeletionAttestation, expectedAddress: string): boolean;
//# sourceMappingURL=attestation.d.ts.map