import type { TAPGuardFromBaseResult, TAPTransferBoundary, TAPTransferGate, TAPTransferTrace } from "./TAP_guard_fromBase.js";
import type { TAPMigratedBaseCapability } from "./TAP_migrator_fromBase.js";
export type TAPInvokerFromBaseRequest = {
    invocationId?: string;
    migratedCapability?: TAPMigratedBaseCapability;
    guard?: TAPGuardFromBaseResult;
    input?: unknown;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: TAPTransferGate;
    governance?: TAPTransferGate;
    dryRun?: boolean;
    trace?: TAPTransferTrace;
};
export type TAPInvokerFromBaseErrorCode = "MISSING_INVOCATION_ID" | "MISSING_MIGRATED_CAPABILITY" | "MISSING_TAP_CAPABILITY_ID" | "GUARD_NOT_ALLOWED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_INVOCATION_BLOCKED";
export type TAPInvokerFromBaseError = {
    code: TAPInvokerFromBaseErrorCode;
    message: string;
    boundary: TAPTransferBoundary;
    publicSafe: true;
};
export type TAPBaseReusableInvocation = {
    kind: "tap.reuseTransfer.baseInvocation";
    invocationId: string;
    tapCapabilityId: string;
    sourceCapabilityId: string;
    sourceBaseToolName: string;
    input?: unknown;
    requestedScopes: readonly string[];
    grantedScopes: readonly string[];
    deniedScopes: readonly string[];
    trace: TAPTransferTrace;
    dryRun: true;
    baseToolExecutionPlanned: false;
    unsafeSideEffects: false;
};
export type TAPInvokerFromBaseResult = {
    ok: true;
    invocation: TAPBaseReusableInvocation;
    events: readonly string[];
} | {
    ok: false;
    error: TAPInvokerFromBaseError;
    events: readonly string[];
};
export declare function createTAPReusableInvocationFromBase(request?: TAPInvokerFromBaseRequest): TAPInvokerFromBaseResult;
