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): Promise<{ records: Array<{ get(key: string): unknown; }>; }>; close(): Promise; } /** * 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; export declare function getOnboardingState(sessionFactory: () => SessionLike, accountId: string, accountDir: string): Promise; export declare function completeOnboardingStep(sessionFactory: () => SessionLike, accountId: string, step: number): Promise; //# sourceMappingURL=onboarding.d.ts.map