import React, { JSX } from "react";
import "../../../assets/styles/themes.scss";
import "../../../assets/styles/eris.scss";
import "../../../assets/styles/core.scss";
import "../../../assets/styles/components.scss";
import "../../../assets/styles/fixes.scss";
import { SettingsInitType } from "../../utility/use.settings";
export interface BuildTableItem {
    key: string;
    title?: string;
    icon?: JSX.Element;
    list?: BuildTableItem[];
}
export interface BuildTable {
    [key: string]: BuildTableItem[];
}
export interface BuildLang {
    [key: string]: string;
}
export interface BuildTypes {
    [key: string]: React.JSX.Element;
}
export interface BuildSectionItem {
    title: string;
    key: string;
    route?: string;
    global?: boolean;
    icon?: JSX.Element;
    list?: BuildSectionItem[];
}
export interface BuildSection {
    [key: string]: BuildSectionItem;
}
export interface BuildRoute {
    pathname?: string;
    icon?: any;
    hidden?: boolean;
    access: number;
    title?: any;
    element?: any;
    sections: BuildSection;
    list: BuildSectionItem[];
    table: BuildTable;
}
export interface BuildRouteSimple {
    pathname?: string;
    icon?: any;
    hidden?: boolean;
    access: number;
    title?: any;
    element?: any;
    list?: BuildSectionItem[];
    table?: BuildTable;
}
declare const BuildContextDefault: {
    routes: {
        [pathname: string]: BuildRoute;
    };
    settings: SettingsInitType;
    settingsTable: BuildTable;
    currentLang: string;
    currentTheme: string;
    route: string;
    query: {
        [key: string]: string;
    };
    buildQuery: (value: {
        [key: string]: any;
    }, clear?: boolean) => string;
    setQueryString: (value: string) => void;
    setQuery: (value: {
        [key: string]: any;
    }, clear?: boolean) => void;
    clearQuery: () => void;
    types: {
        [typeName: string]: JSX.Element;
    };
    denyAccess: boolean;
};
export type BuildContextType = typeof BuildContextDefault;
export declare const BuildContext: React.Context<{
    routes: {
        [pathname: string]: BuildRoute;
    };
    settings: SettingsInitType;
    settingsTable: BuildTable;
    currentLang: string;
    currentTheme: string;
    route: string;
    query: {
        [key: string]: string;
    };
    buildQuery: (value: {
        [key: string]: any;
    }, clear?: boolean) => string;
    setQueryString: (value: string) => void;
    setQuery: (value: {
        [key: string]: any;
    }, clear?: boolean) => void;
    clearQuery: () => void;
    types: {
        [typeName: string]: JSX.Element;
    };
    denyAccess: boolean;
}>;
export declare class BuildCommands {
    static joinLang(table: BuildLang, append: BuildLang): BuildLang;
    static joinTypes(table: BuildTypes, append: BuildTypes): BuildTypes;
    static joinTable(table: BuildTable | any, append: BuildTable | any): BuildTable;
    static joinList(table: BuildSectionItem[] | any, append: BuildSectionItem[] | any): BuildSectionItem[];
}
export declare const BuildInside: (props: {
    currentLang?: string;
    currentTheme?: string;
    languages?: {
        [langName: string]: {
            [key: string]: string;
        };
    };
    settingsTable: BuildTable;
    routes?: {
        [routePath: string]: BuildRouteSimple;
    };
    types?: {
        [typeName: string]: JSX.Element;
    };
    children?: any;
}) => JSX.Element;
export declare const Build: (props: {
    currentLang?: string;
    currentTheme?: string;
    modules: any[];
    settingsTable: BuildTable;
    routes: {
        [routePath: string]: BuildRouteSimple;
    };
    languages: {
        [langName: string]: {
            [key: string]: string;
        };
    };
    types: {
        [typeName: string]: JSX.Element;
    };
    children?: any;
}) => JSX.Element;
export declare const BuildModules: (props: {
    modules: any[];
    children?: any;
}) => JSX.Element;
export {};
//# sourceMappingURL=build.d.ts.map