/** Which app to open the project in. */
export type OpenTarget = 'files' | 'editor';
/** A known editor: its launcher CLI plus a human label for the picker (#727). */
export interface EditorInfo {
    bin: string;
    label: string;
}
/**
 * The editors the picker can offer (#727), probed by their CLI launcher on PATH. Order is the
 * display order. `$FRAMEWORK_EDITOR` and a hand-typed value stay valid beyond this list; this is
 * only what auto-detection looks for.
 */
export declare const KNOWN_EDITORS: EditorInfo[];
/** Whether an editor launcher is installed (on PATH). A seam so detection is unit-testable. */
export type EditorProbe = (bin: string) => Promise<boolean>;
/** The installed subset of {@link KNOWN_EDITORS}, in display order (#727). */
export declare function detectEditors(probe?: EditorProbe): Promise<EditorInfo[]>;
/** The outcome of an open attempt. */
export type OpenResult = {
    ok: true;
} | {
    ok: false;
    error: string;
};
/** Spawns a command, resolving once it launches (not on exit) and rejecting if it can't start. */
export type SpawnRunner = (command: string, args: string[]) => Promise<void>;
/** The OS command that reveals a path in the file manager. */
export declare function fileManagerCommand(path: string, os?: NodeJS.Platform): {
    command: string;
    args: string[];
};
/** The command to open a path in an editor: `$FRAMEWORK_EDITOR` when set, else the VS Code CLI. */
export declare function editorCommand(path: string, editor?: string | undefined): {
    command: string;
    args: string[];
};
/**
 * Open the project at `cwd` in the file manager or an editor. Failures are values, never throws.
 * `editor` (#727) is the stored preference; when unset {@link editorCommand} falls back to
 * `$FRAMEWORK_EDITOR`, then `code`.
 */
export declare function openInApp(cwd: string, target: OpenTarget, agent?: SpawnRunner, editor?: string): Promise<OpenResult>;
//# sourceMappingURL=open-in-app.d.ts.map