import type { ReactNode } from "react";
export type HeaderOptions = HeaderOptions.TopOfPage | HeaderOptions.Sticky;
export declare namespace HeaderOptions {
    type TopOfPage = {
        position: "top of page";
        isRetracted?: boolean;
    };
    type Sticky = {
        position: "sticky";
        isRetracted?: boolean | "smart";
    };
}
export type GlTemplateProps = {
    header?: ReactNode;
    body?: ReactNode;
    footer?: ReactNode;
    headerOptions?: HeaderOptions;
    applyHeaderPadding?: boolean;
    className?: string;
    hasTopOfPageLinkButton?: boolean;
    classes?: Partial<ReturnType<typeof useStyles>["classes"]>;
};
export declare const GlTemplate: import("react").MemoExoticComponent<(props: GlTemplateProps) => JSX.Element>;
declare const useStyles: import("tss-react").Tss.UseStyles<{
    theme: {
        paddingRightLeft: number;
        customShadow: string;
        borderRadius: number;
        colors: {
            palette: {
                focus: {
                    main: string;
                    light: string;
                    light2: string;
                };
                dark: {
                    main: string;
                    light: string;
                    greyVariant1: string;
                    greyVariant2: string;
                    greyVariant3: string;
                    greyVariant4: string;
                };
                light: {
                    main: string;
                    light: string;
                    greyVariant1: string;
                    greyVariant2: string;
                    greyVariant3: string;
                    greyVariant4: string;
                };
                redError: {
                    main: string;
                    light: string;
                };
                greenSuccess: {
                    main: string;
                    light: string;
                };
                orangeWarning: {
                    main: string;
                    light: string;
                };
                blueInfo: {
                    main: string;
                    light: string;
                };
            };
            useCases: {
                typography: {
                    textPrimary: string;
                    textSecondary: string;
                    textTertiary: string;
                    textDisabled: string;
                    textFocus: string;
                };
                buttons: {
                    actionHoverPrimary: string;
                    actionHoverSecondary: string;
                    actionHoverTernary: string;
                    actionSelected: string;
                    actionActive: string;
                    actionDisabled: string;
                    actionDisabledBackground: string;
                };
                surfaces: {
                    background: string;
                    surface1: string;
                    surface2: string;
                };
                alertSeverity: {
                    error: {
                        main: string;
                        background: string;
                    };
                    success: {
                        main: string;
                        background: string;
                    };
                    warning: {
                        main: string;
                        background: string;
                    };
                    info: {
                        main: string;
                        background: string;
                    };
                };
            };
        };
        isDarkModeEnabled: boolean;
        typography: import("onyxia-ui").ComputedTypography<never>;
        shadows: readonly ["none", "0px 6px 10px 0px rgba(0,0,0,0.07)", "0px 4px 4px 0px rgba(0,0,0,0.1)", "6px 0px 16px 0px rgba(0,0,0,0.15)", "4px 0px 10px 0px rgba(0,0,0,0.07)", "-4px 0px 10px 0px rgba(0,0,0,0.07)", "0px 6px 10px 0px rgba(0,0,0,0.14)", "0px 8px 10px -7px rgba(0,0,0,0.07)"];
        spacing: import("onyxia-ui").Spacing;
        muiTheme: import("@mui/material").Theme;
        iconSizesInPxByName: Record<"medium" | "default" | "large" | "small" | "extra small", number>;
        windowInnerWidth: number;
    };
}, {
    headerHeight: number;
    childrenWrapperWidth: number;
    isHeaderRetracted: boolean;
    headerPosition: Required<HeaderOptions>["position"];
    applyHeaderPadding: boolean;
}, "root" | "headerWrapper" | "footerWrapper" | "bodyAndFooterWrapper", Record<string, unknown>>;
export {};
