export type SkillInvocationEventPhase = "planned" | "started" | "completed" | "failed";
export type SkillInvocationEventBoundary = "input" | "contract" | "governance" | "runtime-state" | "scope";
export type SkillInvocationEventErrorCode = "MISSING_RUNTIME_ID" | "MISSING_SESSION_ID" | "MISSING_INVOCATION_ID" | "MISSING_SKILL_ID" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_EXECUTION_BLOCKED";
export type SkillInvocationEventGate = {
    accepted: boolean;
    reason?: string;
};
export type SkillInvocationEventTrace = {
    correlationId?: string;
    callerId?: string;
    sessionId?: string;
};
export type SkillInvocationEventRequest = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    skillId?: string;
    action?: string;
    phase?: SkillInvocationEventPhase;
    runtimeReady?: boolean;
    dryRun?: boolean;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: SkillInvocationEventGate;
    governance?: SkillInvocationEventGate;
    trace?: SkillInvocationEventTrace;
    observedAt?: string;
};
export type SkillInvocationEvent = {
    kind: "basicTool.skill.invocation";
    tool: "skill";
    eventId: string;
    runtimeId: string;
    sessionId: string;
    invocationId: string;
    skillId: string;
    action?: string;
    phase: SkillInvocationEventPhase;
    requestedScopes: readonly string[];
    grantedScopes: readonly string[];
    deniedScopes: readonly string[];
    trace: SkillInvocationEventTrace;
    observedAt: string;
    dryRun: true;
    skillExecutionPlanned: false;
    unsafeSideEffects: false;
};
export type SkillInvocationEventError = {
    code: SkillInvocationEventErrorCode;
    message: string;
    boundary: SkillInvocationEventBoundary;
    publicSafe: true;
};
export type SkillInvocationEventResult = {
    ok: true;
    event: SkillInvocationEvent;
    events: readonly string[];
} | {
    ok: false;
    error: SkillInvocationEventError;
    events: readonly string[];
};
export declare function exposeSkillInvocationEvent(request?: SkillInvocationEventRequest): SkillInvocationEventResult;
