export declare const ONBOARDING_CHECKLIST_STORAGE_PREFIX = "showcase_onboarding_checklist";
export declare const ONBOARDING_CHECKLIST_UPDATED_EVENT = "showcase-onboarding-checklist-updated";
export declare const ONBOARDING_CHECKLIST_TTL_MS: number;
export type OnboardingChecklistStepId = 'workspace' | 'invite' | 'channel' | 'firstMessage' | 'uploadFile' | 'testAi';
export type OnboardingChecklistState = {
    startedAt: string;
    completed: Record<OnboardingChecklistStepId, boolean>;
};
export declare const ONBOARDING_CHECKLIST_STEP_IDS: OnboardingChecklistStepId[];
export declare function getOnboardingChecklistStorageKey(userId: string | number): string;
export declare function getOnboardingChecklistPendingKey(userId: string | number): string;
/** One-shot: open checklist popover after sign-in (session tab only). */
export declare const ONBOARDING_CHECKLIST_SESSION_AUTOPEN_KEY = "showcase_onboarding_checklist_session_autopen";
export declare function clearOnboardingChecklistSessionAutopen(): void;
export declare function shouldOpenOnboardingChecklistFromSession(): boolean;
export declare function createDefaultOnboardingChecklistState(): OnboardingChecklistState;
export declare function parseOnboardingChecklistState(value: unknown): OnboardingChecklistState | null;
/**
 * Call after a successful sign-in. If the user has no active checklist yet, sets a short-lived
 * pending flag so the layout widget can create `startedAt` only on the first load after login
 * (not for sessions that never went through sign-in in this browser).
 */
export declare function notifyOnboardingChecklistAfterSignIn(userId: string | number): void;
/**
 * Parsed checklist from storage, or null if missing or past TTL.
 * Use this to cheaply skip heavy work (e.g. scanning all inbox messages) when the step is already done
 * or there is no active checklist.
 */
export declare function getActiveOnboardingChecklistState(userId: string | number | null | undefined): OnboardingChecklistState | null;
export type MarkOnboardingChecklistStepOptions = {
    /** When already loaded (e.g. after a gate check), avoids a second localStorage read. */
    knownActiveState?: OnboardingChecklistState;
};
/**
 * Marks a checklist step done when the user performs the real action (persists + notifies widget).
 * No-op if there is no checklist, it is expired, or the step is already complete.
 */
export declare function markOnboardingChecklistStepComplete(userId: string | number | null | undefined, stepId: OnboardingChecklistStepId, options?: MarkOnboardingChecklistStepOptions): void;
export declare function tryMarkOnboardingChecklistStepFromAuth(stepId: OnboardingChecklistStepId): void;
