import type { CommandSpec } from '../../commands/spec.js'; export declare const completionShells: readonly ["bash", "fish", "zsh"]; export type CompletionShell = (typeof completionShells)[number]; export declare const isCompletionShell: (shell: unknown) => shell is CompletionShell; export declare const renderCompletion: (shell: CompletionShell, spec: CommandSpec) => string; /** * Render the completion loader installed by system packages. The loader is * embedded in the CLI and printed by `seam completion --loader `. * * The loader runs 'seam completion' the first time the shell completes a seam * command, so installed completions always match the CLI's current Seam API * schema instead of the schema packaged at release time. Each shell * loads its completion file on demand, so the CLI runs once per shell session * at first completion, never at shell startup. * * The loader degrades to no completions when the seam command is missing or * does not produce a completion script: a script is only evaluated when it * starts with the exact first line 'seam completion' generates, so nothing * else the CLI may print, e.g., 'Not logged in' from a version without the * completion command, is ever evaluated as shell code. */ export declare const renderCompletionStub: (shell: CompletionShell) => string; export declare const renderCompletionEval: (shell: CompletionShell) => string; /** * First line of each generated completion script, which the loaders require * before evaluating one. Must match the output of {@link renderCompletion}. */ export declare const completionScriptSentinels: Record;