type BreakpointName = 'mobile' | 'tablet' | 'desktop';
interface AppShellConfig {
    /** Sidebar width when expanded (default '16rem') */
    sidebarWidth?: string;
    /** Sidebar width when collapsed to icon-only (default '4rem') */
    sidebarCollapsedWidth?: string;
    /** Header height (default '3.5rem') */
    headerHeight?: string;
    /** Breakpoint below which layout is mobile (default 768) */
    mobileBreakpoint?: number;
    /** Breakpoint below which layout is tablet (default 1024) */
    tabletBreakpoint?: number;
    /** Sidebar position (default 'left') */
    sidebarPosition?: 'left' | 'right';
    /** Whether sidebar can be collapsed on desktop (default true) */
    sidebarCollapsible?: boolean;
    /** Whether sidebar starts collapsed on desktop (default false) */
    sidebarDefaultCollapsed?: boolean;
    /** Mobile nav position (default 'bottom') */
    mobileNavPosition?: 'bottom' | 'none';
}
interface AppShellState {
    /** On mobile: drawer open/closed */
    sidebarOpen: boolean;
    /** On desktop: full/icon-only */
    sidebarCollapsed: boolean;
    /** Current responsive breakpoint */
    breakpoint: BreakpointName;
    /** Convenience: breakpoint === 'mobile' */
    isMobile: boolean;
    /** Convenience: breakpoint === 'tablet' */
    isTablet: boolean;
    /** Convenience: breakpoint === 'desktop' */
    isDesktop: boolean;
}
type AppShellSubscriber = (state: AppShellState) => void;
interface AppShellAPI {
    /** Current state (snapshot — will not mutate) */
    state: AppShellState;
    /** Resolved config with all defaults applied */
    config: Required<AppShellConfig>;
    /** Mobile: open/close drawer. Desktop: collapse/expand sidebar. */
    toggleSidebar(): void;
    /** Open sidebar (mobile drawer) */
    openSidebar(): void;
    /** Close sidebar (mobile drawer) */
    closeSidebar(): void;
    /** Collapse sidebar to icon-only (desktop) */
    collapseSidebar(): void;
    /** Expand sidebar from icon-only (desktop) */
    expandSidebar(): void;
    /** Update the current breakpoint */
    setBreakpoint(bp: BreakpointName): void;
    /** CSS custom property map for layout dimensions */
    getCSSVariables(): Record<string, string>;
    /** ARIA attributes for sidebar region */
    sidebarAriaProps: Record<string, string>;
    /** ARIA attributes for main region */
    mainAriaProps: Record<string, string>;
    /** ARIA attributes for header region */
    headerAriaProps: Record<string, string>;
    /** ARIA attributes for mobile bottom nav */
    mobileNavAriaProps: Record<string, string>;
    /** ARIA attributes for mobile sidebar overlay/backdrop */
    overlayAriaProps: Record<string, string>;
    /** Subscribe to state changes. Returns unsubscribe function. */
    subscribe(fn: AppShellSubscriber): () => void;
}
declare function resolveBreakpoint(width: number, mobileBp: number, tabletBp: number): BreakpointName;
declare function createAppShell(config?: AppShellConfig): AppShellAPI;

interface PageShellConfig {
    /** Max width for contained sections (default '80rem') */
    maxWidth?: string;
    /** Navigation bar height (default '4rem') */
    navHeight?: string;
    /** Whether nav is transparent (for hero sections, default false) */
    navTransparent?: boolean;
    /** Whether nav is sticky (default true) */
    navSticky?: boolean;
    /** Number of footer columns (default 4) */
    footerColumns?: number;
}
interface SectionConfig {
    /** Whether section spans edge-to-edge (default false) */
    fullWidth?: boolean;
    /** Override max-width for this section */
    maxWidth?: string;
    /** Whether section has padding (default true) */
    padding?: boolean;
    /** Background variant */
    background?: 'default' | 'muted' | 'primary' | 'none';
}
interface PageShellAPI {
    /** Resolved config with all defaults applied */
    config: Required<PageShellConfig>;
    /** ARIA attributes for the nav region */
    navAriaProps: Record<string, string>;
    /** ARIA attributes for the footer region */
    footerAriaProps: Record<string, string>;
    /** Returns Tailwind utility classes for a section */
    getSectionClasses(sectionConfig?: SectionConfig): string;
    /** CSS custom property map */
    getCSSVariables(): Record<string, string>;
}
declare function createPageShell(config?: PageShellConfig): PageShellAPI;

interface AuthShellConfig {
    /** Card max-width preset (default 'sm') */
    maxWidth?: 'xs' | 'sm' | 'md';
    /** Card position (default 'center') */
    position?: 'center' | 'left';
    /** Show decorative background pattern (default true) */
    showBackground?: boolean;
}
interface AuthShellAPI {
    /** Resolved config with all defaults */
    config: Required<AuthShellConfig>;
    /** Tailwind classes for the outer container */
    containerClasses: string;
    /** Tailwind classes for the card */
    cardClasses: string;
    /** ARIA attributes for the auth region */
    ariaProps: Record<string, string>;
}
declare function createAuthShell(config?: AuthShellConfig): AuthShellAPI;

export { type AppShellAPI, type AppShellConfig, type AppShellState, type AppShellSubscriber, type AuthShellAPI, type AuthShellConfig, type BreakpointName, type PageShellAPI, type PageShellConfig, type SectionConfig, createAppShell, createAuthShell, createPageShell, resolveBreakpoint };
