export type OfficeInvocationBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type OfficeInvocationSource = "mainLoop" | "stateEngine" | "basicToolLayer" | "officialModuleBridge" | "runtime";
export type OfficeInvocationGate = {
    accepted: boolean;
    reason?: string;
};
export type OfficeInvocationTrace = {
    correlationId?: string;
    callerId?: string;
};
export type OfficeInvocationRequest = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    source?: OfficeInvocationSource;
    documentId?: string;
    action?: string;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    runtimeReady?: boolean;
    contract?: OfficeInvocationGate;
    governance?: OfficeInvocationGate;
    trace?: OfficeInvocationTrace;
    emittedAt?: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type OfficeInvocationErrorCode = "MISSING_RUNTIME_ID" | "MISSING_SESSION_ID" | "MISSING_INVOCATION_ID" | "MISSING_EVENT_SOURCE" | "MISSING_OFFICE_TARGET" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED";
export type OfficeInvocationError = {
    code: OfficeInvocationErrorCode;
    message: string;
    boundary: OfficeInvocationBoundary;
    safeForRuntimeInspection: true;
};
export type OfficeInvocationEvent = {
    eventId: string;
    kind: "basicToolInvocation.office";
    runtimeId: string;
    sessionId: string;
    invocationId: string;
    source: OfficeInvocationSource;
    office: {
        documentId: string;
        action: string;
    };
    requestedScopes: readonly string[];
    grantedScopes: readonly string[];
    trace: OfficeInvocationTrace;
    emittedAt: string;
    route: "runtime.execEngine.eventExposurePlane";
    dispatch: "dry-run";
    unsafeSideEffects: false;
    metadata: Readonly<Record<string, unknown>>;
};
export type OfficeInvocationResult = {
    ok: true;
    event: OfficeInvocationEvent;
    events: readonly string[];
} | {
    ok: false;
    error: OfficeInvocationError;
    events: readonly string[];
};
export declare const officeInvocationDescriptor: {
    readonly kind: "basicToolInvocation.office";
    readonly route: "runtime.execEngine.eventExposurePlane";
    readonly purpose: "expose Office basic tool invocation events without touching documents";
    readonly dispatch: "dry-run";
    readonly unsafeSideEffects: false;
};
export declare function exposeOfficeInvocationEvent(request?: OfficeInvocationRequest): OfficeInvocationResult;
