import { type MetalGuestResourceTarget, type MetalGuestResourceObservation } from '@forgezero/runtime/metal-resource-evidence'; import { type SignedNodeHttpOptions } from './signed-node-http'; export interface MetalResourcePublisherOptions extends SignedNodeHttpOptions { metalHostname: string; inspect(target: MetalGuestResourceTarget): Promise; now?: () => number; setTimer?: (callback: () => void, milliseconds: number) => unknown; clearTimer?: (handle: unknown) => void; onEvent?: (event: 'recorded' | 'unavailable' | 'paused' | 'retrying') => void; } /** A successful claim is a challenge to inspect, never permission to create or resize. * A lost completion ACK keeps the original receipt and only reads status afterward. */ export declare function startMetalResourcePublisher(options: MetalResourcePublisherOptions): { /** A repeated success cannot rearm a failing endpoint. Only a real heartbeat outage edge can. */ acceptHeartbeat(): void; heartbeatFailed(cause: unknown): void; pause(): Promise; resume(): void; stop(): Promise; idle(): Promise; readonly blocked: boolean; readonly pendingCount: number; };