import { MatrixActor } from '../../core/MatrixActor';
import type { SExpr } from '../SExpr';
import type { IVLMTrace } from './IVLMTrace';
import { getVLMNamespace } from './VLMRouter';
/**
 * VLMJoinCoordinator - Waits for N slot results, then continues computation
 *
 * When all children complete, combines their results using the parent operator
 * and sends the final result to either:
 * - A parent join (for nested parallel operations)
 * - The entry point (for top-level results)
 *
 * Mount: {namespace}.vlm-join
 */
export declare class VLMJoinCoordinator extends MatrixActor {
    static accepts: {
        createJoin: {
            id: string;
            totalSlots: string;
            parentOp: string;
            parentContinuation: string;
            travelingEval: string;
            trace: string;
        };
        slotResult: {
            joinId: string;
            slot: string;
            value: string;
        };
        getJoinState: {
            joinId: string;
        };
        listJoins: {};
    };
    static emits: {
        joinCreated: {
            id: string;
            totalSlots: string;
        };
        slotReceived: {
            joinId: string;
            slot: string;
            value: string;
            received: string;
            total: string;
        };
        joinComplete: {
            joinId: string;
            result: string;
            durationMs: string;
        };
        joinTimeout: {
            joinId: string;
            receivedSlots: string;
            missingSlots: string;
        };
    };
    private _joins;
    private _timeoutMs;
    protected _ns: ReturnType<typeof getVLMNamespace>;
    protected onBootstrap(): Promise<void>;
    onCreateJoin(params: {
        id: string;
        totalSlots: number;
        parentOp: string;
        parentContinuation: string;
        travelingEval: SExpr;
        trace?: IVLMTrace;
    }): Promise<{
        success: boolean;
    }>;
    onSlotResult(params: {
        joinId: string;
        slot: number;
        value: unknown;
    }): Promise<void>;
    onGetJoinState(params: {
        joinId: string;
    }): Promise<{
        id: string;
        totalSlots: number;
        receivedCount: number;
        slots: Record<string, unknown>;
    } | null>;
    onListJoins(): Promise<{
        joins: Array<{
            id: string;
            totalSlots: number;
            receivedCount: number;
            createdAt: number;
        }>;
    }>;
    private _completeJoin;
    private _evalPrimitive;
    private _checkTimeout;
}
//# sourceMappingURL=VLMJoinCoordinator.d.ts.map