import type { JsonObject } from "#shared/json.js";
import type { DurableDynamicToolCallbacks } from "#tools/durable-callbacks.js";
interface DynamicToolMetadataBase {
    readonly name: string;
    readonly description: string;
    readonly execution?: "background";
    readonly inputSchema: JsonObject;
    readonly outputSchema?: JsonObject;
    readonly resolverSlug: string;
    readonly entryKey: string;
}
/** Callback identity is supplied by the surrounding session, scope, and resolver metadata. */
export interface CurrentDynamicToolMetadata extends DynamicToolMetadataBase {
    readonly callbacks: DurableDynamicToolCallbacks;
}
/** Old schema written before callback descriptors existed. */
export interface OldStepFunctionDynamicToolMetadata extends DynamicToolMetadataBase {
    readonly callbacks?: never;
    readonly executeStepFnName?: string;
    readonly approvalStepFnName?: string;
    readonly approvalResponseStepFnName?: string;
    readonly closureVars?: Record<string, unknown>;
}
interface OldSourceOffsetDynamicCallbackReference {
    readonly closure: JsonObject;
    readonly stepId: string;
}
/** Old schema whose callback identity was a generated source offset. */
export interface OldSourceOffsetDynamicToolMetadata extends DynamicToolMetadataBase {
    readonly callbacks: {
        readonly execute: OldSourceOffsetDynamicCallbackReference;
        readonly approvalRequest?: OldSourceOffsetDynamicCallbackReference;
        readonly approvalResponse?: OldSourceOffsetDynamicCallbackReference;
        readonly toModelOutput?: OldSourceOffsetDynamicCallbackReference;
    };
}
export type OldDynamicToolMetadata = OldStepFunctionDynamicToolMetadata | OldSourceOffsetDynamicToolMetadata;
export type PersistedDynamicToolMetadata = CurrentDynamicToolMetadata | OldDynamicToolMetadata;
export declare function isOldSourceOffsetDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is OldSourceOffsetDynamicToolMetadata;
export declare function isCurrentDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is CurrentDynamicToolMetadata;
export declare function isOldStepFunctionDynamicToolMetadata(metadata: PersistedDynamicToolMetadata): metadata is OldStepFunctionDynamicToolMetadata;
/** Converts persisted metadata without changing already-persisted callback closures. */
export declare function toCurrentDynamicToolMetadata(persisted: PersistedDynamicToolMetadata, resolved?: CurrentDynamicToolMetadata): CurrentDynamicToolMetadata;
export declare function toCurrentDynamicToolMetadataList(persisted: readonly PersistedDynamicToolMetadata[], resolved?: readonly CurrentDynamicToolMetadata[]): readonly CurrentDynamicToolMetadata[];
export {};
