import type { Api } from "@cargo-ai/api"; /** * The web app's CLI landing pages, under `/_cli/`. Dedicated routes rather than * the settings pages: they are a contract with this CLI, so an IA refactor * cannot silently break a shipped command. * * The integration rides in the query because it is recoverable — a signed-out * user loses it through `getSafeReturnTo` and the page says to re-run the * command. The connector uuid is a path segment because it is not. */ export declare function buildCliConnectorCreateUrl(input: { appUrl: string; workspaceUuid: string; integrationSlug: string; }): string; export declare function buildCliConnectorEditUrl(input: { appUrl: string; workspaceUuid: string; connectorUuid: string; }): string; export type ConnectorRow = { uuid: string; slug: string; userUuid: string; }; /** * The connectors that appeared while the user was in the browser. * * Prefer rows owned by the CLI credential so a teammate creating one for the * same integration at the same moment is not a candidate. Fall back to every * new row when none match: the hosted form creates as the signed-in web user, * which is often not the `CARGO_API_TOKEN` / `cargo-ai login` identity. */ export declare function findNewConnectors(input: { before: readonly T[]; after: readonly T[]; userUuid: string; }): T[]; /** The current user, so a teammate's concurrent connector is not a candidate. */ export declare function resolveUserUuid(api: Api): Promise; /** * Open the hosted form and wait for the user to say they are done, then find the * connector they made. Returns undefined when they gave up. * * Callers must check `isInteractive()` first — this one blocks on a person. */ export declare function awaitBrowserStep(input: { api: Api; url: string; integrationSlug: string; before: readonly T[]; userUuid: string; /** * Escape / No means "not this", and a failed list does not exit the * process. Used by `init`, which has already written a project. */ skippable?: boolean; }): Promise; //# sourceMappingURL=connectorHandoff.d.ts.map