export interface OnboardingState {
    currentStep: number;
    step1CompletedAt: string | null;
    step2CompletedAt: string | null;
    step3CompletedAt: string | null;
    step4CompletedAt: string | null;
    step5CompletedAt: string | null;
    step6CompletedAt: string | null;
    step7CompletedAt: string | null;
    step8CompletedAt: string | null;
    step9CompletedAt: string | null;
    createdAt: string;
    updatedAt: string;
}
export interface SessionLike {
    run(query: string, params?: Record<string, unknown>): Promise<{
        records: Array<{
            get(key: string): unknown;
        }>;
    }>;
    close(): Promise<void>;
}
/**
 * Task 562: consume the step-7 completion flag written by setup-tunnel.sh
 * before the service restart. The script runs inside ${BRAND}.service's
 * cgroup and cannot complete the MCP call after dispatching the restart —
 * so it drops a filesystem marker instead. The first read of onboarding
 * state after the restart picks it up, advances the graph via the same
 * CASE-WHEN-NULL cypher as completeOnboardingStep, and deletes the marker.
 *
 * Idempotent at every layer: a missing flag is a no-op; a flag present
 * against an already-completed step is a no-op on the graph (CASE-WHEN-NULL
 * preserves the existing timestamp); a crash between graph write and flag
 * delete re-consumes on the next call with the same no-op outcome.
 */
export declare function consumeStep7Flag(session: SessionLike, accountId: string, accountDir: string): Promise<boolean>;
export declare function getOnboardingState(sessionFactory: () => SessionLike, accountId: string, accountDir: string): Promise<OnboardingState>;
export declare function completeOnboardingStep(sessionFactory: () => SessionLike, accountId: string, step: number): Promise<OnboardingState>;
//# sourceMappingURL=onboarding.d.ts.map