export type AgentCoreReuseTargetKind = "agent-core-instance" | "capability-set" | "runtime-object";
export type AgentCoreReuseCaller = "application" | "cmp" | "mp" | "tap" | "multiagent" | "runtime";
export type AgentCoreReuseBoundary = "input" | "contract" | "governance" | "scope";
export type AgentCoreReuseGate = {
    accepted: boolean;
    reason?: string;
};
export type AgentCoreReuseTrace = {
    correlationId?: string;
    sessionId?: string;
    callerId?: string;
};
export type AgentCoreReuseRequest = {
    reuseId?: string;
    targetKind?: AgentCoreReuseTargetKind;
    caller?: AgentCoreReuseCaller;
    requestedCapabilities?: readonly string[];
    allowedCapabilities?: readonly string[];
    invocationPayload?: unknown;
    trace?: AgentCoreReuseTrace;
    contract?: AgentCoreReuseGate;
    governance?: AgentCoreReuseGate;
};
export type AgentCoreReuseErrorCode = "MISSING_REUSE_ID" | "MISSING_TARGET_KIND" | "MISSING_CALLER" | "CAPABILITY_SCOPE_DENIED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED";
export type AgentCoreReuseError = {
    code: AgentCoreReuseErrorCode;
    message: string;
    boundary: AgentCoreReuseBoundary;
    stateSafe: true;
};
export type AgentCoreReusePlan = {
    reuseId: string;
    targetKind: AgentCoreReuseTargetKind;
    caller: AgentCoreReuseCaller;
    requestedCapabilities: readonly string[];
    grantedCapabilities: readonly string[];
    deniedCapabilities: readonly string[];
    invocationPayload?: unknown;
    trace: AgentCoreReuseTrace;
    reuseMode: "existing-object";
    dryRun: true;
    unsafeSideEffects: false;
};
export type AgentCoreReuseResult = {
    ok: true;
    plan: AgentCoreReusePlan;
    events: readonly string[];
} | {
    ok: false;
    error: AgentCoreReuseError;
    events: readonly string[];
};
export declare function createAgentCoreReuseInvocation(request: AgentCoreReuseRequest): AgentCoreReuseResult;
