export type GitInvocationBoundary = "input" | "contract" | "governance" | "scope" | "runtime-state";
export type GitInvocationGate = {
    accepted: boolean;
    reason?: string;
};
export type GitInvocationRequest = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    operation?: string;
    eventSource?: string;
    repositoryHint?: string;
    payload?: Record<string, unknown>;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    subscribers?: readonly string[];
    runtimeReady?: boolean;
    dryRun?: boolean;
    contract?: GitInvocationGate;
    governance?: GitInvocationGate;
};
export type GitInvocationErrorCode = "MISSING_RUNTIME_ID" | "MISSING_SESSION_ID" | "MISSING_OPERATION" | "MISSING_EVENT_SOURCE" | "INVALID_INVOCATION_PAYLOAD" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_SIDE_EFFECT_NOT_ALLOWED";
export type GitInvocationError = {
    code: GitInvocationErrorCode;
    message: string;
    boundary: GitInvocationBoundary;
    safeForRuntimeInspection: true;
    internalDetailExposed: false;
};
export type GitInvocationEvent = {
    plane: "eventExposurePlane";
    category: "basic-tool-invocation";
    toolKind: "git";
    runtimeId: string;
    sessionId: string;
    invocationId: string;
    operation: string;
    eventSource: string;
    repositoryHint?: string;
    payload: Readonly<Record<string, unknown>>;
    acceptedScopes: readonly string[];
    subscribers: readonly string[];
    execution: {
        dryRun: true;
        invoked: false;
        unsafeSideEffects: false;
    };
    audit: {
        contractSurface: "runtime.contractSurface";
        governanceRequired: true;
    };
};
export type GitInvocationExposureResult = {
    ok: true;
    invocation: GitInvocationEvent;
    events: readonly string[];
} | {
    ok: false;
    error: GitInvocationError;
    events: readonly string[];
};
export declare const gitInvocationDescriptor: {
    readonly plane: "eventExposurePlane";
    readonly category: "basic-tool-invocation";
    readonly toolKind: "git";
    readonly purpose: "expose git tool invocation events without running git commands";
    readonly unsafeSideEffects: false;
};
export declare function exposeGitInvocationEvent(request?: GitInvocationRequest): GitInvocationExposureResult;
