import { Jsmin } from '@mingoo/jsmin';
import { FontAwesomeIconProps } from '@fortawesome/react-fontawesome';
import { IconDefinition } from "@fortawesome/fontawesome-common-types";
import * as FontawesomeCore from '@fortawesome/fontawesome-svg-core';
import React from 'react';
import ReactDOM from 'react-dom';
import * as ReactRouterDOM from 'react-router-dom';
import { ReactElement, Device, Browser } from './_';
import { TagProps } from './property';
export declare namespace config {
    interface Methods {
        sessionUID: string;
        appRootID: string;
        appRoot: HTMLElement;
        themeColor: TagProps.ThemeColor;
        darkMode: TagProps.DarkMode;
        roundness: TagProps.Roundness;
        device: {
            deviceIs: Device;
            browserIs: Browser;
            isBreakpoint(): boolean;
            isPhonepoint(): boolean;
            isSystemDarkmode(): boolean;
            isPhone: boolean;
            isTouchDevice: boolean;
            isIOS: boolean;
        };
        update: {
            themeColor(value: TagProps.ThemeColor): void;
            darkMode(value: TagProps.DarkMode): void;
            roundness(value: TagProps.Roundness): void;
        };
        variables: {
            darkmodeColors: {
                light: string;
                dark: string;
                dim: string;
                auto(): string;
            };
            themeColors: {
                [key in TagProps.ThemeColor]: {
                    alfa(alfa?: number): string;
                    isBrand: boolean;
                    isAvocado: boolean;
                };
            };
        };
        readExtraCDN(url: string): Promise<boolean>;
    }
}
export declare namespace global {
    type LaunchRootInput = {
        baseElement?: HTMLElement;
    };
    type LaunchReactApplicationInput = {
        baseElement?: HTMLElement | string;
        reactElement: ReactElement;
        nonRouter?: boolean;
        isRoot?: boolean;
        appearances?: {
            roundness?: TagProps.Roundness;
            themeColor?: TagProps.ThemeColor;
            darkMode?: TagProps.DarkMode;
        };
    };
    type useStoreParams = {
        set(params: {
            key: string;
            value: any;
            privateKey?: string;
        }): boolean;
        update(params: {
            key: string;
            value: any;
            privateKey?: string;
        }): boolean;
        get(key: string, privateKey?: string): any;
        delete(key: string, privateKey?: string): boolean;
    };
    type useRecycleParams = {
        set(key: string): string;
        do(key: string): void;
    };
    type PageTransitParams = {
        open(url: string): void;
        pushSync(url: string): void;
        pushAsync(url: string): void;
        push(url: string, newTab?: boolean): void;
        back(): void;
    };
    namespace StyleConverter {
        type ReadStyleSet = {
            <T>(params: T): T;
        };
        type ToClassName = {
            <T>(params: T): T;
        };
    }
    interface Methods {
        React: typeof React;
        ReactDOM: typeof ReactDOM;
        ReactRouterDOM: typeof ReactRouterDOM;
        StyleConverter: {
            ReadStyleSet: StyleConverter.ReadStyleSet;
            ToClassName: StyleConverter.ToClassName;
        };
        pageTransit: PageTransitParams;
        useStore: global.useStoreParams;
        useRecycle: global.useRecycleParams;
        LaunchRoot(params: global.LaunchRootInput): void;
        LaunchReactApplication(params: global.LaunchReactApplicationInput): void;
    }
}
export declare namespace atoms {
    type BoxInput = TagProps.BasicElement & {
        children?: ReactElement;
    } & React.HTMLAttributes<HTMLDivElement>;
    type SpanProps = TagProps.BasicElement & {
        children?: ReactElement;
    } & React.HTMLAttributes<HTMLSpanElement>;
    type ParagraphProps = TagProps.BasicElement & {
        children?: ReactElement;
    } & React.HTMLAttributes<HTMLParagraphElement>;
    type FlexProps = TagProps.BasicElement & {
        children?: ReactElement;
    } & React.HTMLAttributes<HTMLDivElement>;
    type GridProps = TagProps.BasicElement & {
        children: ReactElement;
        onClick?: {
            (event: React.MouseEvent<HTMLDivElement, MouseEvent>): void;
        };
    } & React.HTMLAttributes<HTMLDivElement>;
    namespace FAI {
        type Method = React.FC<FAIParams> & Shortcuts;
        type FAIParams = TagProps.BasicElement & {
            icon: FontawesomeCore.IconProp | IconDefinition;
            iconParams?: Omit<FontAwesomeIconProps, 'icon'>;
        };
        type Shortcuts = {
            [key in ShortCutNames]: React.FC<Omit<FAIParams, 'icon'>>;
        };
        type ShortCutNames = 'User' | 'Times' | 'AngleRight' | 'AngleLeft' | 'AngleUp' | 'AngleDown' | 'ChevronLeft' | 'ChevronRight' | 'ChevronUp' | 'ChevronDown' | 'CaretLeft' | 'CaretRight' | 'CaretUp' | 'CaretDown' | 'ArrowLeft' | 'ArrowRight' | 'ArrowUp' | 'ArrowDown' | 'Rotate' | 'Redo' | 'Check' | 'CheckCircle' | 'Question' | 'QuestionCircle' | 'Exclamation' | 'ExclamationTriangle' | 'Home' | 'Share' | 'Search' | 'YenSign' | 'Heart' | 'Star' | 'Edit' | 'Pen' | 'Copy' | 'File' | 'TrashAlt' | 'Bars' | 'Download' | 'Link' | 'LinkSlash' | 'ExternalLinkAlt' | 'Gear' | 'Plus' | 'Minus' | 'EllipsisH' | 'EllipsisV' | 'PaperPlane' | 'Image';
    }
    namespace Image {
        type Methods = React.FC<CompInput> & DefaultImages;
        type CompInput = TagProps.BasicElement & {
            src: string;
            alt?: string;
            showExpand?: boolean | string;
        } & React.HTMLAttributes<HTMLImageElement>;
        type DefaultImages = {
            uri: {
                mingooIcon: string;
                comunIcon: string;
                comunIconClear: string;
                defaultIcon(type: 'image' | 'object' | 'user' | 'group' | 'store'): string;
            };
        };
    }
    namespace Logos {
        type Methods = {
            Icon: (params: Params) => JSX.Element;
            Title: (params: Params) => JSX.Element;
            Brands: {
                MingooIcon: (params: DefaultLogo) => JSX.Element;
                MingooTitle: (params: DefaultLogo) => JSX.Element;
                MingooLogoH: (params: DefaultLogo) => JSX.Element;
                MingooLogoV: (params: DefaultLogo) => JSX.Element;
                ComunIcon: (params: DefaultLogo) => JSX.Element;
                ComunTitle: (params: DefaultLogo) => JSX.Element;
                ComunLogoH: (params: DefaultLogo) => JSX.Element;
                ComunLogoV: (params: DefaultLogo) => JSX.Element;
                Google: (params: DefaultLogo) => JSX.Element;
                Facebook: (params: DefaultLogo) => JSX.Element;
                Twitter: (params: DefaultLogo) => JSX.Element;
                LINE: (params: DefaultLogo) => JSX.Element;
            };
        };
        type Params = TagProps.BasicElement & {
            size?: 'S' | 'R' | 'L' | '2L' | '3L';
            color?: 'normal' | 'white';
            children?: ReactElement | React.FC<any>;
        };
        type DefaultLogo = TagProps.BasicElement & {
            size?: 'S' | 'R' | 'L' | '2L' | '3L';
            color?: 'normal' | 'white';
        };
    }
    type PlaceholderParams = atoms.BoxInput & {
        color?: 'cloud' | 'white';
    };
    type Methods = {
        Box: React.FC<atoms.BoxInput>;
        Flex: React.FC<atoms.FlexProps>;
        FlexBr: React.FC<TagProps.Params>;
        Placeholder: React.FC<PlaceholderParams>;
        Grid: React.FC<atoms.GridProps>;
        FAI: FAI.Method;
        Span: React.FC<atoms.SpanProps>;
        Paragraph: React.FC<atoms.ParagraphProps>;
        Img: atoms.Image.Methods;
        Logo: Logos.Methods;
    };
}
export declare namespace mols {
    namespace Accordion {
        type Params = {
            defaultOpen?: boolean;
            override?: boolean;
            accordionID?: string;
            slideAnimation?: 'none' | 'fast' | 'slow';
            children: ReactElement;
            onToggleEvent?: {
                (open: boolean): void;
            };
        } & atoms.BoxInput;
        type FNParams = {
            fn: {
                open(accordionID: string): void;
                close(accordionID: string): void;
                toggle(accordionID: string): void;
            };
        };
        type SetParams = React.FC<Params> & FNParams;
    }
    namespace List {
        type Params = TagProps.BasicElement & {
            rowStyles?: TagProps.Params;
            rows: RowsParams[];
        };
        type RowsParams = {
            children: ReactElement;
        } & TagProps.BasicElement;
    }
    type LinkifyTextProps = {
        text: string;
        placeholder?: ReactElement;
    };
    type Methods = {
        List: React.FC<mols.List.Params>;
        Accordion: mols.Accordion.SetParams;
        LinkifyText: React.FC<mols.LinkifyTextProps>;
        Text: {
            NowrapSpan: React.FC<atoms.SpanProps>;
            Title: React.FC<atoms.BoxInput>;
            SubTitle: React.FC<atoms.BoxInput>;
            ThirdTitle: React.FC<atoms.BoxInput>;
            Paragraph: React.FC<atoms.BoxInput>;
            Normal: React.FC<atoms.BoxInput>;
            Description: React.FC<atoms.BoxInput>;
            Supplement: React.FC<atoms.BoxInput>;
        };
        Column: React.FC<atoms.FlexProps>;
        Row: {
            Center: React.FC<atoms.FlexProps>;
            Left: React.FC<atoms.FlexProps>;
            Right: React.FC<atoms.FlexProps>;
            Separate: React.FC<atoms.FlexProps>;
        };
    };
}
export declare namespace orgs {
    type Methods = {};
}
export declare namespace temps {
    type Methods = {};
}
export declare namespace fn {
    namespace Layout {
        type Methods = {
            PageViewController: React.FC<PageViewController.Params>;
            TabBar: React.FC<TabBar.Params>;
            Plate: React.FC<Plate.Params>;
            SwipeView: React.FC<SwipeView.Params>;
            PageRouter: React.FC<PageRouter.RouterProps>;
            PageNotFound: React.FC<{}>;
            RootViewController: RootViewController.Methods;
        };
        namespace PageViewController {
            type Params = {
                viewIndex: number;
                views: ReactElement[];
                wrapper?: {
                    (view: ReactElement): ReactElement;
                };
            };
        }
        namespace TabBar {
            type Params = {
                tabIndex: number;
                tabs: ReactElement[];
                onTabChange?: {
                    (index: number): void;
                };
                componentDidMount?: {
                    (): void;
                };
            } & TagProps.BasicElement;
        }
        namespace Plate {
            type Params = {
                size?: 'XS' | 'S' | 'R' | 'L' | 'XL' | 'MAX';
            } & atoms.BoxInput;
        }
        namespace SwipeView {
            type Params = TagProps.BasicElement & {
                slideIndex?: number;
                slides: ReactElement[];
                wrapper?: {
                    (slide: ReactElement): ReactElement;
                };
                options?: {
                    onSlideCallback?: {
                        (index: number): void;
                    };
                    visibilitySurroundSlide?: boolean;
                    autoSwipeSeconds?: number;
                    loop?: boolean;
                    disableMousedrag?: boolean;
                    disableTouch?: boolean;
                };
            };
        }
        namespace PageRouter {
            type RoutesProps = {
                path: string;
                content: ReactElement;
            };
            type Callbacks = {
                beforeCallBack?: {
                    (pathName: string): void;
                };
                afterCallBack?: {
                    (pathName: string): void;
                };
                afterFirstCallBack?: {
                    (pathName: string): void;
                };
            };
            type RoutesSwitchProps = {
                routes: RoutesProps[];
            } & Callbacks;
            type RouterProps = {
                pages: RoutesProps[];
            } & Callbacks;
        }
        namespace RootViewController {
            type Methods = {
                Base: React.FC<RootViewController.BaseParams>;
                TopNavigation: React.FC<atoms.FlexProps>;
                SideNavigation: React.FC<atoms.FlexProps & {
                    baseStyles?: TagProps.Params;
                }>;
                FooterNavigation: React.FC<atoms.FlexProps & {
                    baseStyles?: TagProps.Params;
                }>;
                Comps: {
                    Button: React.FC<ButtonParams>;
                    Title: React.FC<atoms.BoxInput>;
                    Bar: React.FC<atoms.BoxInput>;
                };
                fn: FNs;
            };
            type BaseParams = atoms.BoxInput & {
                topNavigation?: ReactElement;
                sideNavigation?: ReactElement;
                footerNavigation?: ReactElement;
            };
            type ButtonParams = Buttons.ButtonInput & Buttons.Tones.Clear & {
                uri?: string;
                uriGroup?: (string | RegExp) | (string | RegExp)[];
            };
            type FNs = {
                updateCSSProperty: {
                    topNav(): void;
                    footer(): void;
                    reset(): void;
                };
            };
        }
    }
    namespace Tables {
        type Methods = {
            Comps: CompsMethods;
            Normal: (props: Normal.Params) => JSX.Element;
            Data: Data.Methods;
            Drag: (props: Drag.Params) => JSX.Element;
            Spread: () => JSX.Element;
        };
        type CompsMethods = {
            Table: React.FC<TableParams>;
            Head: React.FC<TableHeadParams>;
            Body: React.FC<TableBodyParams>;
            Row: React.FC<TRParams>;
            TH: React.FC<TableCellParams>;
            TD: React.FC<TableCellParams>;
            RightIndicator: Uni.CellParams;
        };
        type DataCompsMethods = {
            Search: any;
            Info: any;
            Paging: any;
        };
        type customTableHTMLAttributes<T> = Omit<React.TableHTMLAttributes<T>, 'border'>;
        type TableParams = TagProps.BasicElement & customTableHTMLAttributes<HTMLTableElement>;
        type TableHeadParams = TagProps.BasicElement & customTableHTMLAttributes<HTMLTableSectionElement>;
        type TableBodyParams = TagProps.BasicElement & customTableHTMLAttributes<HTMLTableSectionElement>;
        type TRParams = TagProps.BasicElement & React.HTMLAttributes<HTMLTableRowElement>;
        type TableCellParams = TagProps.BasicElement & React.ThHTMLAttributes<HTMLTableCellElement>;
        type Types = 'normal' | 'data' | 'drag' | 'spread';
        type Tones = 'border' | 'cellBorder' | 'rowBorder' | 'plain' | 'auto';
        type OnRowClick = {
            (rowIDOrIndex: any, event: React.MouseEvent<HTMLTableRowElement, MouseEvent>): void;
        };
        type StylesCallbackInput = {
            top: boolean;
            bottom: boolean;
            left: boolean;
            right: boolean;
            rowIndex: number;
            colIndex: number;
            isHeader: boolean;
            isBody: boolean;
        };
        namespace Uni {
            type CellParams = TableCellParams & {
                type?: 'th' | 'td';
            };
            type Params = {
                tableID?: string;
                tone?: Tones;
                colLength: number;
                cellStyles?: TagProps.Params;
                cellClassName?: string;
                cellStylesCallback?: {
                    (params: StylesCallbackInput): TagProps.Params;
                };
                className?: string;
            } & TagProps.Params;
        }
        namespace Normal {
            type CellParams = Uni.CellParams;
            type HeadRowParams = CellParams[];
            type BodyRowParams = CellParams[] & {
                rowID?: string | number;
            };
            type Params = Uni.Params & {
                head: HeadRowParams | false;
                rows: BodyRowParams[];
                onRowClick?: OnRowClick;
            };
        }
        namespace Drag {
            type CellParams = Uni.CellParams;
            type HeadRowParams = CellParams[];
            type BodyRowParams = CellParams[] & {
                rowID?: any;
            };
            type Params = Uni.Params & {
                head: HeadRowParams | false;
                rows: BodyRowParams[];
                onOrderChanged: {
                    (orderList: any[]): void;
                };
            };
        }
        namespace Data {
            type CellParams = TableCellParams & {
                type?: 'th' | 'td';
                data: string | number;
                option?: any;
                orderIndex?: string | number;
            };
            type HeadRowParams = CellParams[];
            type BodyRowParams = Array<CellParams> & ArrayObjectParams;
            type ArrayObjectParams = {
                rowID?: any;
                __sys4SearchKey?: string;
                checked?: boolean;
                filtered?: boolean;
                currentPage?: boolean;
            };
            type Params = Uni.Params & {
                tableID?: string;
                head: HeadRowParams;
                rows: BodyRowParams[];
                onRowClick?: OnRowClick;
                eventID?: string;
                checker?: boolean;
                searchKeyword?: string;
                filter?: boolean | boolean[];
                order?: boolean | boolean[];
                defaultOrder?: OrderParams;
                pageRowLength: number;
                noRecords?: ReactElement;
                onOrderChanged?: {
                    (order: OrderParams): void;
                };
            };
            type Methods = {
                (props: Data.Params): JSX.Element;
            } & FNs & Comps;
            type FNs = {
                __memoryID: string;
                useStatus(tableID: string): useStatusOutput;
                getRowData(tableID: string): BodyRowParams[];
                setPageIndex(tableID: string, pageIndex: number): void;
                setRowLength(tableID: string, rowLength: number): void;
                setSearchKeyword(tableID: string, keyword: string): void;
            };
            type Comps = {
                SearchInput: React.FC<{
                    tableID: string;
                }>;
                Info: React.FC<{
                    tableID: string;
                }>;
                Paging: React.FC<{
                    tableID: string;
                }>;
                RowLength: React.FC<{
                    tableID: string;
                    lengthSelect: number[];
                }>;
            };
            type useStatusOutput = {
                tableComponentDidMount: boolean;
                totalRows: number;
                pageRows: number;
                filteredRows: number;
                searchKeyword: string;
                filter: {
                    enabled: boolean;
                    column: boolean[];
                    current: (string[])[];
                };
                order: {
                    enabled: boolean;
                    column: boolean[];
                    current: fn.Tables.Data.OrderParams;
                };
                paging: {
                    rowLength: number;
                    pageLength: number;
                    currentPageIndex: number;
                };
            };
            type FilterColumnsProps = {
                index: number;
                keyword: string;
                enabled: boolean;
            }[];
            type OrderParams = [number, 'ASC' | 'DESC'];
        }
        namespace Spread {
        }
    }
    namespace Input {
        type Methods = {
            Plain: React.FC<TagProps.Params & React.InputHTMLAttributes<HTMLInputElement>>;
            Hidden: (params: Hidden.PlainParams) => JSX.Element;
            Text: Text.Methods;
            TextArea: (params: TextArea.PlainParams) => JSX.Element;
            Contenteditable: (params: Contenteditable.PlainParams) => JSX.Element;
            DigitCharacters: (params: DigitCharacters.PlainParams) => JSX.Element;
            Time: Time.Methods;
            Select: (params: Select.PlainParams) => JSX.Element;
            RichSelect: (params: RichSelect.PlainParams) => JSX.Element;
            Radio: (props: List.PlainParams) => JSX.Element;
            Checkbox: (props: List.PlainParams) => JSX.Element;
            Checker: (params: Checker.PlainParams) => JSX.Element;
            Chips: Chips.Methods;
            Search: (params: Search.PlainParams) => JSX.Element;
            File: Filer.Methods;
            Slider: (params: Slider.PlainParams) => JSX.Element;
            Switch: (params: Switch.PlainParams) => JSX.Element;
            Segmented: Segmented.Types;
            Comps: {
                RequiredSign: React.FC<atoms.SpanProps>;
                RequiredShortSign: React.FC<atoms.SpanProps>;
                OmitSign: React.FC<atoms.SpanProps>;
                LeftIndicator: React.FC<IndicatorParams>;
                RightIndicator: React.FC<IndicatorParams>;
                LeftIcon: React.FC<IndicatorParams>;
                RightIcon: React.FC<IndicatorParams>;
            };
        };
        type WrapperParams = atoms.BoxInput & {
            label?: ReactElement;
            labelStyles?: TagProps.Params;
            required?: boolean | 'plain' | 'omit';
        };
        type UniParams = {
            name?: string;
            form?: string;
            status_id?: string;
            componentID?: string;
            override?: 'force' | 'beforeModified' | 'never';
            required?: boolean;
            enableFormSubmit?: boolean;
            checkValidationAtFirst?: boolean;
            onValidate?: Validation.OnValidate;
            onUpdateValue?: OnUpdateValue;
            onUpdateValidValue?: OnUpdateValue;
        };
        type CoreParams = UniParams & {
            className?: string;
            wrapStyles?: TagProps.Params;
        } & TagProps.Params;
        type OnUpdateValue = {
            (data: {
                value: any;
                componentID: string;
                storeData?: plainObject;
                eventType: Validation.EventType;
            }): void;
        };
        type BoxTone = 'border' | 'cloud' | 'bottomBorder' | 'plain';
        namespace Hidden {
            type PlainParams = React.DOMAttributes<HTMLInputElement> & {
                componentID?: string;
                name?: string;
                form?: string;
                enableFormSubmit?: boolean;
                id?: string;
                value?: string | number | plainObject;
            };
        }
        namespace Text {
            type Methods = {
                Validate(value: any, restrict: Restrict): {
                    ok: boolean;
                    body: ReactElement;
                };
                Normal: (props: OriginParams) => JSX.Element;
                Katakana: (props: OriginParams) => JSX.Element;
                HankakuKatakana: (props: OriginParams) => JSX.Element;
                Number: (props: PlainParams) => JSX.Element;
                DigitNumber: (props: PlainParams) => JSX.Element;
                Tel: (props: PlainParams) => JSX.Element;
                CreditCard: (props: PlainParams) => JSX.Element;
                Email: (props: PlainParams) => JSX.Element;
                Url: (props: PlainParams) => JSX.Element;
                Postal: (props: PlainParams) => JSX.Element;
                Password: (props: PlainParams) => JSX.Element;
                Money: {
                    JPY: (props: PlainParams) => JSX.Element;
                };
            };
            type Restrict = 'text' | 'katakana' | 'hankaku.katakana' | 'number' | 'digitNumber' | 'tel' | 'email' | 'url' | 'fileName' | 'password' | 'postal' | 'creditCard';
            type PlainParams = CoreParams & React.DOMAttributes<HTMLInputElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                min?: number | null;
                max?: number | null;
                maxLength?: number | null;
                autoComplete?: 'off' | 'none' | string;
                autoCapitalize?: 'off' | 'none' | string;
                clearButton?: boolean;
                value?: string | number;
                placeholder?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                leftIcon?: ReactElement | false;
                rightIcon?: ReactElement | false;
            };
            type OriginParams = PlainParams & {
                restrict?: Restrict;
            };
        }
        namespace TextArea {
            type PlainParams = CoreParams & React.TextareaHTMLAttributes<HTMLTextAreaElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: string | number;
                placeholder?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                leftIcon?: ReactElement | false;
                rightIcon?: ReactElement | false;
            };
        }
        namespace Contenteditable {
            type PlainParams = CoreParams & React.TextareaHTMLAttributes<HTMLDivElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                children?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                leftIcon?: ReactElement | false;
                rightIcon?: ReactElement | false;
            };
        }
        namespace DigitCharacters {
            type PlainParams = CoreParams & React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement> & {
                tone?: BoxTone;
                combineInput?: boolean;
                digits: number;
                numericOnly?: boolean;
                tabIndex?: number;
                id?: string;
                value?: string | number;
                listStyles?: TagProps.Params;
            };
        }
        namespace Time {
            type Methods = {
                Clock: (props: PlainParams) => JSX.Element;
                Date: (props: PlainParams) => JSX.Element;
                Week: (props: PlainParams) => JSX.Element;
                Month: (props: PlainParams) => JSX.Element;
                Year: (props: PlainParams) => JSX.Element;
                DateWareki: (props: DateWarekiParams) => JSX.Element;
                Periods: {
                    Date: (props: PeriodParams) => JSX.Element;
                    Month: (props: PeriodParams) => JSX.Element;
                };
                fn: FN;
            };
            type FN = {
                picker: {
                    launch(params: PickerParams & Omit<Tooltips.Params, 'content'>): void;
                    remove(tipsID: string): void;
                };
            };
            type Era = 'clock' | 'year' | 'meiji' | 'taisho' | 'shouwa' | 'heisei' | 'reiwa';
            type Restrict = 'clock' | 'date' | 'week' | 'month' | 'year' | 'dates' | 'months' | 'dateWareki';
            type PlainParams = CoreParams & React.DOMAttributes<HTMLInputElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: string | [string, string];
                min?: string;
                max?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
            };
            type OriginParams = PlainParams & {
                restrict: Restrict;
                era?: Era;
            };
            type DateWarekiParams = PlainParams & {
                value?: string;
                defaultEra?: 'year' | 'wareki';
            };
            type PeriodParams = Omit<PlainParams, 'value'> & {
                value?: [string, string];
            };
            type RangeProps = {
                type: 'hour' | 'minute' | 'date' | 'month' | 'year' | 'week' | 'dateWareki';
                from: number;
                length: number;
                region?: number;
            };
            type PickerParams = {
                tipsID?: string;
                restrict: Restrict;
                defaultValue: string | string[];
                era?: Era;
                min?: string;
                max?: string;
                onValueUpdate(value: string | [string, string], era: Era): void;
            };
        }
        namespace Select {
            type PlainParams = CoreParams & React.DOMAttributes<HTMLSelectElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: ValueProps;
                options: OptionProps[];
                placeholder?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                leftIcon?: ReactElement | false;
                rightIcon?: ReactElement | false;
                enableUnSelected?: boolean;
                rightIconStyles?: TagProps.Params;
            };
            type ValueProps = string | number | boolean | plainObject | void | null;
            type OptionProps = {
                value: ValueProps;
                label: string;
                displayLabel?: ReactElement;
            };
        }
        namespace RichSelect {
            type PlainParams = CoreParams & React.DOMAttributes<HTMLInputElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: ValueProps;
                options: OptionProps[];
                placeholder?: string;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                leftIcon?: ReactElement | false;
                rightIcon?: ReactElement | false;
                enableUnSelected?: boolean;
                rightIconStyles?: TagProps.Params;
                cellStyles?: TagProps.Params;
                sheetStyles?: TagProps.Params;
                gravityPoint?: number;
            };
            type ValueProps = string | number | boolean | plainObject | void | null;
            type OptionProps = {
                type?: 'button' | 'label';
                value: ValueProps;
                label: ReactElement;
                selectedLabel?: ReactElement;
            };
        }
        namespace List {
            type ListTone = 'border' | 'cloud' | 'vivid' | 'normal' | 'plain';
            type Methods = {
                Radio: (props: PlainParams) => JSX.Element;
                Checkbox: (props: PlainParams) => JSX.Element;
            };
            type PlainParams = CoreParams & {
                tone?: ListTone;
                icon?: boolean;
                tabIndex?: number;
                id?: string;
                iconType?: 'radio' | 'checkbox';
                minSelect?: number;
                disabled?: boolean;
                value?: any | any[];
                options: OptionParams[];
                hideInput?: boolean;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                cellStyles?: TagProps.Params;
                cellClassName?: string;
                cellCheckedStyles?: TagProps.Params;
                cellCheckedClassName?: string;
                defaultActiveStyling?: boolean;
            };
            type OriginParams = PlainParams & {
                type: 'radio' | 'checkbox' | 'checker';
                tone: ListTone;
            };
            type OptionParams = {
                value: any;
                label: ReactElement;
                disabled?: boolean;
                className?: string;
                checkedStyles?: TagProps.Params;
                checkedClassName?: string;
            } & TagProps.Params;
        }
        namespace Chips {
            type Methods = React.FC<PlainParams> & {
                fn: FNs;
            };
            type PlainParams = CoreParams & {
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: OptionParams[];
                limit?: number;
                selectorGravityPoint?: number;
                defaultOptions?: OptionParams[];
                onDynamicSearch?: onDynamicSearch;
                leftIndicator?: ReactElement | false;
                rightIndicator?: ReactElement | false;
                rightIcon?: ReactElement | false;
                leftIcon?: ReactElement | false;
                SelectedCellComponent?: SelectedCellComponentInput;
                SelectorCellComponent?: SelectorCellComponentInput;
                AddButtonComponent?: AddButtonComponentInput;
            };
            type onDynamicSearch = {
                (k: string): Promise<{
                    options: OptionParams[];
                }>;
            };
            type OptionParams = {
                value: any;
                label: string;
            };
            type SelectedCellComponentInput = React.FC<{
                removeCallback: Function;
                defaultRemoveButton: ReactElement;
                openCallback(): void;
                value: any;
                label: string;
            }>;
            type SelectorCellComponentInput = React.FC<{
                isSelected: boolean;
                isFocused: boolean;
                value: any;
                label: string;
            }>;
            type AddButtonComponentInput = React.FC<{
                selected: OptionParams[];
                openCallback(): void;
            }>;
            type OpenSelectorInput = {
                parent: Jsmin.Args;
                selectorID: string;
                options: OptionParams[];
                selected: OptionParams[];
                bottomContent?: ReactElement;
                gravityPoint?: number;
                limit?: number;
                onDynamicSearch?: {
                    (k: string): Promise<{
                        options: OptionParams[];
                    }>;
                };
                onUpdated(params: {
                    values: any[];
                }): void;
                onClosed(): void;
                SelectorCellComponent?: SelectorCellComponentInput;
            };
            type FNs = {
                openSelector(params: OpenSelectorInput): void;
                closeSelector(selectorID: string): void;
                updateOptions(selectorID: string, options: OptionParams[]): void;
                updateSelected(selectorID: string, selected: OptionParams[]): void;
            };
        }
        namespace Search {
            type PlainParams = Chips.PlainParams;
        }
        namespace Filer {
            type Methods = React.FC<PlainParams> & FNs;
            type PlainParams = CoreParams & React.DOMAttributes<HTMLInputElement> & {
                tone?: BoxTone;
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: CustomFile[];
                limit?: number;
                fileNameEdit?: boolean;
                systemOnly?: boolean;
                accept?: Accept;
                cellStyles?: TagProps.Params;
                cellClassName?: string;
            };
            type CustomFile = File & {
                id: string;
            };
            type Accept = 'image' | string;
            type FNs = {
                fn: {
                    openDialog(params: {
                        accept?: Accept;
                        multiple?: boolean;
                    }): Promise<File[]>;
                };
            };
        }
        namespace Slider {
            type PlainParams = CoreParams & React.DOMAttributes<HTMLInputElement> & {
                tabIndex?: number;
                id?: string;
                disabled?: boolean;
                value?: number;
                color?: Color;
                min: number;
                max: number;
                step: number;
                legends?: {
                    enable?: boolean;
                    custom?: LegendsCallback;
                    showAlways?: boolean;
                };
            };
            type Color = TagProps.ThemeColor | 'theme' | 'posi' | 'nega' | 'warn';
            type LegendsCallback = {
                (value: number): ReactElement;
            };
        }
        namespace Switch {
            type PlainParams = UniParams & React.DOMAttributes<HTMLInputElement> & {
                color?: Color;
                id?: string;
                tabIndex?: number;
                appearance?: 'material' | 'applely';
                disabled?: boolean;
                value?: boolean;
                icon?: ReactElement;
            };
            type Color = TagProps.ThemeColor | 'theme' | 'posi' | 'nega' | 'warn';
        }
        namespace Segmented {
            type Tones = 'Border' | 'ThemeBorder' | 'BottomLine' | 'Cloud' | 'ThemeCloud' | 'WhiteCloud';
            type Types = {
                Auto: (params: Params) => JSX.Element;
                Normal: (params: Params) => JSX.Element;
                Cloud: (params: Params) => JSX.Element;
                Cloud2: (params: Params) => JSX.Element;
                Cloud3: (params: Params) => JSX.Element;
                Border: (params: Params) => JSX.Element;
                Border2: (params: Params) => JSX.Element;
                BottomLine: (params: Params) => JSX.Element;
            };
            type Params = List.PlainParams;
            type ListParams = List.OptionParams[];
        }
        namespace Checker {
            type PlainParams = CoreParams & {
                label: ReactElement;
                id?: string;
                tabIndex?: number;
                disabled?: boolean;
                value?: boolean;
                cellStyles?: TagProps.Params;
                cellClassName?: string;
                cellCheckedStyles?: TagProps.Params;
                cellCheckedClassName?: string;
            };
        }
        namespace Status {
            type Plain = {
                componentID: string;
                dataValue: any;
                eventType: Validation.EventType;
                eventID: string;
            };
            type Text = Plain & {
                formatValue: any;
                prevValue: any;
                caretFrom: number;
                caretTo: number;
            };
            type DigitCharacters = Plain & {
                formatValue: any;
            };
            type Time = Plain & {
                formatValue: any;
                ranges: Time.RangeProps[];
            };
            type Slider = Plain & {
                min: number;
                max: number;
                step: number;
            };
        }
        namespace Validation {
            type EventType = 'init' | 'update' | 'override' | 'refresh';
            type Notice = {
                type: 'valid' | 'invalid' | 'warn';
                label: ReactElement;
            };
            type Result = {
                ok: boolean;
                notice: Notice[];
            };
            type SystemCheck = {
                (props: {
                    value: any;
                    params: any;
                }): Result;
            };
            type OnValidate = {
                (state: {
                    eventType: EventType;
                    value: any;
                    props: plainObject;
                }): Promise<Result>;
            };
        }
        type IndicatorParams = TagProps.Params & {
            tone?: BoxTone;
            className?: string;
            children: ReactElement;
        };
    }
    namespace Buttons {
        type Methods = Seed & {};
        type Seeds = 'Button' | 'Label' | 'Anchor';
        type Tones = 'Plain' | 'Link' | 'Normal' | 'Border' | 'Prime' | 'Sub' | 'Clear' | 'FillToBorder' | 'BorderToFill';
        type Sizes = 'XS' | 'S' | 'R' | 'L';
        type Colors = 'theme' | 'posi' | 'nega' | 'warn' | 'cloud' | 'trans' | 'white' | 'plain';
        type Seed = {
            Button: Tone<ButtonInput>;
            Label: Tone<LabelInput>;
            Anchor: Tone<AnchorInput>;
        };
        type Tone<T> = {
            Plain: React.FC<T>;
            Link: React.FC<T>;
            Normal: Size<T>;
            Border: Size<T>;
            Prime: Size<T & Tones.Prime>;
            Sub: Size<T & Tones.Sub>;
            Clear: Size<T & Tones.Clear>;
            FillToBorder: Size<T & Tones.FillToBorder>;
            BorderToFill: Size<T & Tones.BorderToFill>;
        };
        type Size<T> = {
            XS: React.FC<T>;
            S: React.FC<T>;
            R: React.FC<T>;
            L: React.FC<T>;
        };
        namespace Tones {
            type Plain = {};
            type Link = {};
            type Normal = {};
            type Border = {};
            type Prime = {
                color?: Colors | TagProps.ThemeColor;
            };
            type Sub = {
                color?: Colors | 'layer';
            };
            type Clear = {
                color?: Colors | 'layer';
            };
            type FillToBorder = {
                color?: Colors;
            };
            type BorderToFill = {
                color?: Colors;
            };
        }
        type UniParams = TagProps.BasicElement & {
            tabIndex?: number;
            children?: ReactElement;
            'aria-label'?: string;
            isLocked?: boolean;
            isActive?: boolean;
            isActiveStyles?: TagProps.Params;
            isActiveClassName?: string;
        };
        type delegateClickEventProps = 'auxEnter' | 'enter' | 'space';
        type ButtonInput = UniParams & {
            submitOption?: {
                formName: string;
                acceptInvalidForm?: boolean;
                submitDelegationKey?: delegateClickEventProps | delegateClickEventProps[];
                callback(form: plainObject, ok: boolean): void;
            };
        } & React.ButtonHTMLAttributes<HTMLButtonElement>;
        type LabelInput = UniParams & {
            htmlFor?: string;
        } & React.LabelHTMLAttributes<HTMLLabelElement>;
        type AnchorInput = UniParams & {
            href?: string;
            newTab?: boolean;
            sync?: boolean;
            download?: any;
            shiftQueryParams?: boolean;
        } & React.ButtonHTMLAttributes<HTMLAnchorElement>;
    }
    namespace Sheet {
        type Methods = {
            open(params: Params): void;
            refresh(params: Params, open: boolean): void;
            resize(params: {
                sheetID: string;
                size: SizeParams;
            }): void;
            reposition(sheetID: string): void;
            close(key: string, eventType?: 'Escape' | 'pageTransit', force?: boolean): void;
            closeGroup(keyGroup: string): void;
            closeAll(pageTransit?: boolean): void;
            Comps: {
                Body: React.FC<atoms.BoxInput>;
            };
        };
        type Params = NormalParams | EdgeParams | CustomParams | ImageParams | Bottom.Params;
        type UniParams = {
            sheetID?: string;
            sheetGroups?: string | string[];
            backgroundEffect?: boolean;
            content: ReactElement | {
                (): JSX.Element;
            };
            overwrap?: boolean;
            close_option?: CloseOptions;
            hold_state?: boolean;
            openAfter?(): void;
            closeAfter?(): void;
        } & TagProps.BasicElement;
        type SizeParams = 'S' | 'R' | 'L' | '2L' | '3L' | 'MAX';
        type CloseOptions = {
            pageTransit?: boolean;
            escapeKeyDown?: boolean;
            aroundClick?: boolean;
            elementBlur?: Jsmin.Args;
        };
        type Sheet = 'normal.topLeft' | 'normal.topCenter' | 'normal.topRight' | 'normal.middleLeft' | 'normal.middleCenter' | 'normal.middleRight' | 'normal.bottomLeft' | 'normal.bottomCenter' | 'normal.bottomRight' | 'drawer.left' | 'drawer.right' | 'drawer.bottom' | 'custom' | 'image';
        type NormalParams = UniParams & {
            type: Sheet;
            size?: SizeParams;
        };
        type EdgeParams = UniParams & {
            type: Sheet;
            size?: SizeParams;
        };
        type CustomParams = UniParams & {
            type: 'custom';
            parent: Jsmin.Args;
            gravityPoint?: number;
        };
        type ImageParams = Omit<UniParams, 'content'> & {
            type: 'image';
            src: string | string[];
        };
        namespace Bottom {
            type Sizes = 'S' | 'R' | 'L';
            type Params = UniParams & {
                type: 'drawer.bottom';
                size: Sizes;
                sizeChanged?(size: Sizes): void;
                baseStyles?: TagProps.Params;
                close_option?: CloseOptions & {
                    swipeDown?: boolean;
                };
            };
        }
    }
    namespace Tooltips {
        type Methods = {
            __memoryID: string;
            open(params: Params): void;
            close(tipsID: string): void;
            closeALL(): void;
            Comps: {
                Body: React.FC<atoms.BoxInput>;
            };
        };
        type Params = {
            tipsID?: string;
            tipsGroups?: string | string[];
            parent: Jsmin.Args;
            gravityPoint?: number;
            close_option?: Sheet.CloseOptions;
            hold_state?: boolean;
            content: ReactElement | {
                (): JSX.Element;
            };
            openAfter?(): void;
            closeAfter?(): void;
        } & TagProps.BasicElement;
    }
    namespace SnackBar {
        type Methods = {
            __memoryID: string;
            add(props: AddParams): SnackBar.Methods;
            remove(snackID: string): SnackBar.Methods;
            __launch(): void;
        };
        type AddParams = Omit<atoms.BoxInput, 'children'> & {
            children?: ReactElement | {
                (): JSX.Element;
            };
            customChildren?: {
                (params: {
                    close(): void;
                }): JSX.Element;
            };
            snackID?: string;
            secondsToClose?: number;
        };
    }
    namespace Loader {
        type Methods = Color & FNs;
        type Color = {
            Theme: Size<CompInput>;
            Posi: Size<CompInput>;
            Nega: Size<CompInput>;
            Warn: Size<CompInput>;
            White: Size<CompInput>;
            Cloud: Size<CompInput>;
        };
        type Size<T> = {
            S: React.FC<T>;
            R: React.FC<T>;
            L: React.FC<T>;
            XL: React.FC<T>;
            MAX: React.FC<T>;
        };
        type Sizes = 'S' | 'R' | 'L' | 'XL' | 'MAX';
        type Colors = 'theme' | 'posi' | 'nega' | 'warn' | 'white' | 'cloud';
        type CompInput = TagProps.Params & {
            showInitial?: boolean;
            loaderID?: string;
        };
        type FNs = {
            __memoryID: string;
            __launch(): void;
            fn: {
                stopALL(): void;
                top: {
                    active(): void;
                    stop(): void;
                };
                corner: {
                    active(): void;
                    stop(): void;
                };
                mini: {
                    active(loaderID?: string): void;
                    stop(loaderID?: string): void;
                    stopALL(): void;
                };
            };
        };
    }
    namespace Cropper {
        type Use = 'square' | 'wallpaper.horizontal' | 'wallpaper.vertical';
        type Params = {
            use: Use;
            develops: DevelopParams[];
            onProcessFinished: {
                (files: Input.Filer.CustomFile[]): void;
            };
        };
        type DevelopParams = {
            size: 'S' | 'R' | 'L';
            maxSize?: number;
        };
        type Methods = {
            open(params: Params): void;
        };
    }
    namespace Effects {
        type FadeUniParams = atoms.BoxInput & {
            animationTime?: number;
            animationDelay?: number;
        };
        type Methods = {
            FadeIn: React.FC<FadeUniParams>;
            FadeUp: React.FC<FadeUniParams>;
        };
    }
    type Methods = {
        Table: fn.Tables.Methods;
        Layout: fn.Layout.Methods;
        Buttons: fn.Buttons.Methods;
        Input: fn.Input.Methods;
        Sheet: fn.Sheet.Methods;
        SnackBar: fn.SnackBar.Methods;
        Loader: fn.Loader.Methods;
        Tooltips: fn.Tooltips.Methods;
        Effects: fn.Effects.Methods;
        Cropper: fn.Cropper.Methods;
    };
}
