export interface LocalMockDecl {
    mode?: ExternalMode;
    src?: string;
    compose?: string;
    openapi?: string;
    sandbox?: boolean;
    remote?: {
        env?: string;
        credentials?: Record<string, string>;
        profile?: string;
    };
    displayName?: string;
    docs?: string | {
        url: string;
        provider?: string;
    };
    port?: number;
    command?: string[];
    env?: Record<string, string>;
    external?: string;
    credentials?: Record<string, string>;
    type?: string;
    healthPath?: string;
    probe?: "http" | "tcp";
}
export type ExternalMode = "mock" | "local" | "remote";
export declare function externalMode(name: string, decl: LocalMockDecl): ExternalMode;
export interface ExternalsSelection {
    names: string[];
    overrides: Map<string, ExternalMode>;
}
export declare function parseExternalsSelection(input: string): ExternalsSelection;
export declare function remoteInlineCredentials(decl: LocalMockDecl): Record<string, string> | undefined;
export declare function isServiceMode(name: string, decl: LocalMockDecl): boolean;
export interface MockEndpoint {
    url: string;
    host: string;
    port: number;
}
export declare function interpolateCredentialValue(raw: string, endpoint: MockEndpoint | undefined, env?: NodeJS.ProcessEnv): string;
export declare function openapiMockCommand(decl: LocalMockDecl): string[];
export declare function composeProjectName(sessionName: string, mockName: string): string;
export interface ComposeExternalRef {
    name: string;
    composeFile: string;
    project: string;
}
export type ComposeExternalPlan = {
    action: "up";
} | {
    action: "adopt-served";
    container: string;
} | {
    action: "adopt-stopped";
    container: string;
} | {
    action: "conflict";
    container?: string;
};
export interface ComposeExternalProbes {
    ownsRunning(composeFile: string, project: string): boolean;
    portServed(port: number): Promise<boolean>;
    foreignPinned(composeFile: string, project: string): string | undefined;
    portPublisher(composeFile: string, port: number): {
        container: string;
        definedByFile: boolean;
    } | undefined;
}
export declare function planComposeExternal(composeFile: string, project: string, port: number, probes: ComposeExternalProbes): Promise<ComposeExternalPlan>;
export declare function composeExternalUp(appRoot: string, sessionName: string, name: string, decl: LocalMockDecl, probes?: ComposeExternalProbes): Promise<ComposeExternalRef | undefined>;
export declare function composeExternalsDown(refs: ComposeExternalRef[] | undefined): void;
export declare function readLocalMocks(appRoot: string): Record<string, LocalMockDecl>;
export declare function externalSecretPath(tenant: string, external: string): string;
export declare function fetchRemoteExternalCredentials(tenant: string, env: string, external: string, profile?: string): Promise<Record<string, string>>;
export declare function resolveProbeTarget(mode: ExternalMode, decl: LocalMockDecl, endpoint: MockEndpoint | undefined, creds: Record<string, string>): {
    target: string;
    module?: "tcp_connect";
} | undefined;
export declare function externalDisplayName(name: string, decl: LocalMockDecl): string;
export declare function externalDocs(decl: LocalMockDecl): {
    url: string;
    provider?: string;
} | undefined;
export declare function localProbeFile(tenant: string, app: string, external: string): string;
export declare function localProbesRemove(files: string[] | undefined): void;
export declare function seedLocalMock(args: {
    tenant: string;
    app: string;
    name: string;
    decl: LocalMockDecl;
    endpoint?: MockEndpoint;
}): Promise<string | undefined>;
