import React$1 from 'react';
import { ColorToken } from '@gdsc-dju/styled-components-theme';

declare const Input: React$1.ForwardRefExoticComponent<{
    className?: string | undefined;
    borderless?: boolean | undefined;
    hasError?: boolean | undefined;
} & {
    value?: string | undefined;
} & Pick<React$1.InputHTMLAttributes<HTMLInputElement>, "name" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "onClick" | "autoComplete" | "autoFocus" | "disabled" | "readOnly"> & React$1.RefAttributes<HTMLInputElement>>;

declare type InputAttributes = {
    value?: string;
} & Pick<React.InputHTMLAttributes<HTMLInputElement>, 'autoComplete' | 'autoFocus' | 'disabled' | 'name' | 'readOnly' | 'placeholder' | 'onChange' | 'onFocus' | 'onBlur' | 'onClick'>;
declare type InputProps = {
    className?: string;
    borderless?: boolean;
    hasError?: boolean;
} & InputAttributes;

declare const TextArea: React$1.ForwardRefExoticComponent<{
    className?: string | undefined;
    borderless?: boolean | undefined;
    hasError?: boolean | undefined;
} & {
    value?: string | undefined;
} & Pick<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "name" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "onClick" | "autoComplete" | "autoFocus" | "disabled" | "readOnly" | "maxLength" | "minLength" | "rows"> & React$1.RefAttributes<HTMLTextAreaElement>>;

declare type TextAreaAttributes = {
    value?: string;
} & Pick<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'autoComplete' | 'autoFocus' | 'disabled' | 'maxLength' | 'minLength' | 'name' | 'readOnly' | 'rows' | 'placeholder' | 'onChange' | 'onFocus' | 'onBlur' | 'onClick'>;
declare type TextAreaProps = {
    className?: string;
    borderless?: boolean;
    hasError?: boolean;
} & TextAreaAttributes;

declare const FileInput: React$1.ForwardRefExoticComponent<{
    className?: string | undefined;
    hasError?: boolean | undefined;
    borderless?: boolean | undefined;
} & {
    value?: string | undefined;
} & Pick<React$1.InputHTMLAttributes<HTMLInputElement>, "name" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "onClick" | "autoComplete" | "autoFocus" | "disabled" | "readOnly"> & React$1.RefAttributes<HTMLInputElement>>;

declare type FileInputAttributes = {
    value?: string;
} & Pick<React.InputHTMLAttributes<HTMLInputElement>, 'autoComplete' | 'autoFocus' | 'disabled' | 'name' | 'readOnly' | 'placeholder' | 'onChange' | 'onFocus' | 'onBlur' | 'onClick'>;
declare type FileInputProps = {
    className?: string;
    hasError?: boolean;
    borderless?: boolean;
} & FileInputAttributes;

declare const TagInput: React$1.ForwardRefExoticComponent<{
    className?: string | undefined;
    tags?: string[] | [] | undefined;
    onChange: (tags: string[]) => void;
    maxTags?: number | undefined;
    hasError?: boolean | undefined;
    borderless?: boolean | undefined;
    chip?: keyof JSX.IntrinsicElements | undefined;
} & {
    value?: string | undefined;
} & Pick<React$1.InputHTMLAttributes<HTMLInputElement>, "name" | "placeholder" | "onFocus" | "onBlur" | "onClick" | "autoComplete" | "autoFocus" | "disabled" | "readOnly"> & React$1.RefAttributes<HTMLInputElement>>;

declare type TagInputAttributes = {
    value?: string;
} & Pick<React.InputHTMLAttributes<HTMLInputElement>, 'autoComplete' | 'autoFocus' | 'disabled' | 'name' | 'readOnly' | 'placeholder' | 'onFocus' | 'onBlur' | 'onClick'>;
declare type TagInputProps = {
    className?: string;
    tags?: string[] | [];
    onChange: (tags: string[]) => void;
    maxTags?: number;
    hasError?: boolean;
    borderless?: boolean;
    chip?: keyof JSX.IntrinsicElements;
} & TagInputAttributes;

interface NavigationProps {
    title?: string;
    routes?: NavigationRoutes;
    pointColor?: ColorToken | string;
    themeButtonActive?: boolean;
    menuPosition?: 'left' | 'right' | 'none' | 'left-mobile-only' | 'right-mobile-only';
    sideMenu?: React$1.ReactNode;
    rightElement?: React$1.ReactNode;
    customLogo?: React$1.ReactNode;
    router?: (pathname: string) => void;
}

declare type NavigationRoutes = Array<{
    route: string;
    title: string;
}>;
declare const Navigation: ({ routes, title, customLogo, themeButtonActive, pointColor, menuPosition, router, sideMenu, rightElement, }: NavigationProps) => JSX.Element;

interface FooterProps {
    disable?: boolean;
    pages?: {
        text: string;
        link: string;
    }[];
}

declare const Footer: ({ disable, pages }: FooterProps) => JSX.Element;

export { FileInput, FileInputAttributes, FileInputProps, Footer, FooterProps, Input, InputAttributes, InputProps, Navigation, NavigationProps, TagInput, TagInputAttributes, TagInputProps, TextArea, TextAreaAttributes, TextAreaProps };
