import { type ClaudeTrust } from '../claude-trust.js';
import { type RepoAutoMerge } from '../dashboard/gh.js';
import type { AgentReady } from '../dashboard/types.js';
import type { ProjectSummary } from '../dashboard/projects.js';
import type { AddProjectResult, OnboardingSuggestion } from '../dashboard/types.js';
export declare function onProjects(): Promise<ProjectSummary[]>;
/**
 * Add project(s) from the dashboard (#396/#433): install a single repo, or every git
 * repo under a directory, and register each so it joins the Projects list. Like
 * `sendStart` this needs the daemon (it spawns git + writes the shared registry), so it
 * calls the daemon's own `addProject` closure from the Telefunc request context. Returns
 * the daemon's {@link AddProjectResult}; a public host (the relay) leaves it unwired.
 */
export declare function sendAddProject(path: string, directory: boolean): Promise<AddProjectResult>;
/**
 * The Onboarding checklist's one server-side fact (#958): the directory this server runs in,
 * so the first step can offer "Add {cwd} as project" without the user typing a path.
 *
 * Gated on the same `addProject` wiring as {@link sendAddProject}. A public host (the relay)
 * cannot act on the suggestion anyway, and must not disclose where it runs, so it offers none.
 */
export declare function onOnboarding(): Promise<OnboardingSuggestion>;
/**
 * Whether Claude Code trusts this project's root (#1318): the launcher warns before a web run
 * on an untrusted project, which is doomed to die on the CLI's interactive trust dialog
 * (#1314), instead of after it. Read-only — trusting a folder stays the user's own act in the
 * CLI; run worktrees inherit the root's answer. `null` when the project is unknown here, and
 * `known: false` when the CLI's config could not say.
 */
export declare function onClaudeTrust(projectId: string): Promise<(ClaudeTrust & {
    root: string;
}) | null>;
/**
 * Whether this project's repo allows GitHub auto-merge (#1417): the launcher warns when the merge
 * rung is armed on a repo that does not, because the armed merge silently degrades to an immediate
 * direct merge (#1216) — the PR lands before CI has run (#1406). Read-only and cached (#1028).
 * `null` when the project is unknown here; `known: false` when `gh` could not say (not installed,
 * not a GitHub repo), which renders nothing rather than crying wolf — the #1318 stance.
 */
export declare function onRepoAutoMerge(projectId: string): Promise<RepoAutoMerge | null>;
/**
 * Whether the picked agent's CLI can start a run at all (#1326): installed, logged in, and not
 * running as root. The launcher says so before the Start, the way #1318 warns about folder trust,
 * rather than leaving the user with a spent branch and a dashboard stuck on "Waiting for the
 * session to start..." (#1323).
 *
 * Reports problems only, and only ones the user can act on. The passing checks carry the version
 * string and the logged-in account, which are of no use to a launcher and have no business
 * reaching a browser that may be a relay guest, so they stay on this side.
 *
 * `publish` adds the `gh` half (#1419): a launcher with the PR/merge rung armed wants to hear
 * about a missing or logged-out GitHub CLI now, not discover it hours later as a session whose
 * publishing silently stopped at the pushed branch.
 */
export declare function onAgentReady(agent: string, publish?: boolean): Promise<AgentReady>;
//# sourceMappingURL=projects.telefunc.d.ts.map