/**
 * Manifest Push Emitter — customer-side helper that signs a manifest and
 * POSTs it to the receive endpoint.
 *
 * Wraps:
 *   - W2.1 discovery output (AgentManifest)
 *   - signed-manifest helper (Ed25519 + canonical JSON)
 *   - retry with exponential backoff for transient failures (5xx / network)
 *
 * Honors Invariant 10 — push-only, fire-and-forget from the customer side.
 * Local backpressure queue (in-memory) is left to the caller; this helper
 * focuses on the single push lifecycle.
 *
 * @connexum/ai-governance  F-NEW-PRODUCT-AGENT-DISCOVERY-CLI (client push)
 */
import * as crypto from 'node:crypto';
import { type SignedManifest } from './signed-manifest.js';
import type { AgentManifest } from './owasp-agentic-scanner.js';
import type { HttpsTransport } from './approval-channel-adapters.js';
export interface PushEmitterOptions {
    orgId: string;
    privateKey: crypto.KeyObject;
    /** Receive endpoint URL (e.g. https://proxy.my-cc.io/api/v1/manifests). */
    endpoint: string;
    /** Max retries on transient (5xx / network) failure. Default 3. */
    maxRetries?: number;
    /** Base backoff in ms (multiplied by 2^attempt). Default 500. */
    baseBackoffMs?: number;
    /** Injectable transport for tests. Defaults to nodeHttpsTransport. */
    transport?: HttpsTransport;
    /** Injectable sleep for tests. Defaults to globalThis.setTimeout. */
    sleep?: (ms: number) => Promise<void>;
}
export interface PushResult {
    ok: boolean;
    status?: number;
    attempts: number;
    /** Server-returned receipt id, if any (parsed from JSON response body). */
    receiptId?: string;
    /** Error message on final failure. */
    error?: string;
}
export declare class ManifestPushEmitter {
    private readonly options;
    constructor(options: PushEmitterOptions);
    /** Sign and push a single manifest. */
    push(manifest: AgentManifest): Promise<PushResult>;
    /** Push a manifest you have already signed (e.g. signed on a different host). */
    pushSigned(signed: SignedManifest): Promise<PushResult>;
}
//# sourceMappingURL=manifest-push-emitter.d.ts.map