import type { LaunchReadiness, OnboardingPreviewStatusResponse, ResendOnboardingPreviewConfirmationResponse } from '@riverbankcms/api/launch-readiness';
import type { PreviewAuthEntryUrlInput } from './route-contract';
export declare const DEFAULT_CHECK_ERROR_MESSAGE = "Unable to check your confirmation status right now.";
export declare const DEFAULT_RESEND_ERROR_MESSAGE = "Unable to resend your confirmation email right now.";
export declare const RESEND_SUCCESS_MESSAGE = "We sent a fresh confirmation email. Check your inbox and spam folder.";
export declare const ALREADY_CONFIRMED_MESSAGE = "Your email is already confirmed. You can complete setup in the dashboard.";
export type OnboardingPreviewPlannerAuthMode = 'onboardingGrant' | 'userSession' | null;
export type OnboardingConfirmationDialogState = Readonly<{
    kind: 'ready';
}> | Readonly<{
    kind: 'pending';
}> | Readonly<{
    kind: 'error';
    message: string;
}> | null;
export type OnboardingResendFeedback = Readonly<{
    kind: 'success' | 'error';
    message: string;
}> | null;
export type OnboardingConfirmationState = Readonly<{
    dashboardUnlocked: boolean;
    dialogState: OnboardingConfirmationDialogState;
    hasLoadedStatus: boolean;
    launchReadiness: LaunchReadiness;
    resendFeedback: OnboardingResendFeedback;
    statusLoadFailed: boolean;
}>;
export type OnboardingConfirmationStateUpdate = Readonly<{
    kind: 'setDashboardUnlocked';
    dashboardUnlocked: boolean;
}> | Readonly<{
    kind: 'setDialogState';
    dialogState: OnboardingConfirmationDialogState;
}> | Readonly<{
    kind: 'setHasLoadedStatus';
    hasLoadedStatus: boolean;
}> | Readonly<{
    kind: 'setLaunchReadiness';
    launchReadiness: LaunchReadiness;
}> | Readonly<{
    kind: 'setResendFeedback';
    resendFeedback: OnboardingResendFeedback;
}> | Readonly<{
    kind: 'setStatusLoadFailed';
    statusLoadFailed: boolean;
}>;
export type OnboardingConfirmationEffect = Readonly<{
    kind: 'none';
}> | Readonly<{
    kind: 'startPreviewUpgrade';
    input: PreviewAuthEntryUrlInput;
}>;
export type OnboardingConfirmationPlan = Readonly<{
    updates: readonly OnboardingConfirmationStateUpdate[];
    effect: OnboardingConfirmationEffect;
}>;
export declare function applyOnboardingConfirmationUpdate(state: OnboardingConfirmationState, update: OnboardingConfirmationStateUpdate): OnboardingConfirmationState;
export declare function applyOnboardingConfirmationUpdates(state: OnboardingConfirmationState, updates: readonly OnboardingConfirmationStateUpdate[]): OnboardingConfirmationState;
export declare function planStatusApplied(input: Readonly<{
    allowUserSessionUnlock: boolean;
    authMode: OnboardingPreviewPlannerAuthMode;
    currentUrl: string | null;
    dashboardBaseUrl: string | null;
    siteSlug: string | null;
    status: OnboardingPreviewStatusResponse;
    upgradeAlreadyStarted: boolean;
}>): OnboardingConfirmationPlan;
export declare function planAlreadyUnlockedManualCheck(): OnboardingConfirmationPlan;
export declare function planMissingConfirmationStatusConfig(message?: string): OnboardingConfirmationPlan;
export declare function planConfirmationStatusFailure(message?: string): OnboardingConfirmationPlan;
export declare function planManualConfirmationStatusSuccess(input: Readonly<{
    authMode: OnboardingPreviewPlannerAuthMode;
    currentUrl: string | null;
    dashboardBaseUrl: string | null;
    siteSlug: string | null;
    status: OnboardingPreviewStatusResponse;
    upgradeAlreadyStarted: boolean;
}>): OnboardingConfirmationPlan;
export declare function planInitialStatusLoadFailure(): OnboardingConfirmationPlan;
export declare function planMissingResendConfirmationConfig(message?: string): OnboardingConfirmationPlan;
export declare function planResendConfirmationFailure(message?: string): OnboardingConfirmationPlan;
export declare function planResendConfirmationSuccess(input: Readonly<{
    authMode: OnboardingPreviewPlannerAuthMode;
    currentUrl: string | null;
    dashboardBaseUrl: string | null;
    response: ResendOnboardingPreviewConfirmationResponse;
    siteSlug: string | null;
    upgradeAlreadyStarted: boolean;
}>): OnboardingConfirmationPlan;
