import { ElementField, IconType, Option, Path } from '..';
export type DefaultPathsOptions = Record<string, any>;
export type PathsOptions = Record<string, any>;
export type BaseElementField<T, PO extends PathsOptions = DefaultPathsOptions> = ElementField<T, PO>;
export interface BtnElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    text?: string;
    variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
    size?: 'sm' | 'md' | 'lg';
    disabled?: boolean;
    loading?: boolean;
    icon?: IconType;
    iconPosition?: 'left' | 'right';
    href?: string;
    target?: '_blank' | '_self' | '_parent' | '_top';
}
export interface PillElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    color?: string;
    icon?: IconType;
}
export interface TxtElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    text?: string;
    tag?: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div';
    size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
    weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold';
    color?: string;
    align?: 'left' | 'center' | 'right' | 'justify';
}
export interface ImgElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    src?: string;
    alt?: string;
    width?: number | string;
    height?: number | string;
    loading?: 'lazy' | 'eager';
    fit?: 'cover' | 'contain' | 'fill' | 'scale-down' | 'none';
    rounded?: boolean | 'sm' | 'md' | 'lg' | 'full';
    fallback?: string;
}
export interface DropdownElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    options?: Option[] | (() => Option[]);
    placeholder?: string;
    searchable?: boolean;
    multiselect?: boolean;
    clearable?: boolean;
    onSelect?: (value: any) => void;
    onSearch?: (search: string) => any;
}
export interface ListItemElementOptions<T = any, PO extends PathsOptions = DefaultPathsOptions> extends Partial<BaseElementField<T, PO>> {
    id?: Path<T, PO>;
    title?: string;
    subtitle?: string;
    icon?: IconType;
    avatar?: string;
    badge?: string | number;
    actions?: Array<{
        label: string;
        onClick: () => void;
        icon?: IconType;
    }>;
    clickable?: boolean;
    divider?: boolean;
}
export declare function btn<T = any, PO extends PathsOptions = DefaultPathsOptions>(options: BtnElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, icon: IconType): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, options: BtnElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, icon: IconType, options: BtnElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function btn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, textOrIcon: string | IconType, options: BtnElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function getBaseElementField<T = any, PO extends PathsOptions = DefaultPathsOptions>(elementType: string, id?: Path<T, PO>, options?: Partial<BaseElementField<T, PO>>): BaseElementField<T, PO>;
export declare function iconBtn<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, icon?: IconType, options?: BtnElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function txt<T = any, PO extends PathsOptions = DefaultPathsOptions>(options: TxtElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, PO>;
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string): BaseElementField<T, PO>;
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, tag: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div'): BaseElementField<T, PO>;
export declare function txt<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, text: string, options: TxtElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function img<T = any, PO extends PathsOptions = DefaultPathsOptions>(options: ImgElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P): BaseElementField<T, PO>;
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string): BaseElementField<T, PO>;
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string, alt: string): BaseElementField<T, PO>;
export declare function img<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id: P, src: string, options: ImgElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function pill<T = any, PO extends PathsOptions = DefaultPathsOptions>(options: PillElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function dropdown<T = any, PO extends PathsOptions = DefaultPathsOptions>(...args: Array<DropdownElementOptions<T, PO> | BaseElementField<T, PO>>): BaseElementField<T, PO>;
export declare function listItem<T = any, PO extends PathsOptions = DefaultPathsOptions>(title?: string, options?: ListItemElementOptions<T, PO>): BaseElementField<T, PO>;
export declare function container<T = any, PO extends PathsOptions = DefaultPathsOptions>(id?: Path<T, PO>, children?: BaseElementField<T, any>[], options?: Partial<BaseElementField<T, PO>>): BaseElementField<T, PO>;
export declare function findElementById<T>(id: string, elements: BaseElementField<T, any>[]): BaseElementField<T, any> | undefined;
export declare function column<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(id?: P, labelOrOptions?: string | Partial<BaseElementField<T, PO>>, options?: Partial<BaseElementField<T, PO>>): BaseElementField<T, PO>;
export declare const col: typeof column;
export declare function useElements(): {
    btn: typeof btn;
    iconBtn: typeof iconBtn;
    txt: typeof txt;
    img: typeof img;
    dropdown: typeof dropdown;
    listItem: typeof listItem;
    container: typeof container;
    findElementById: typeof findElementById;
    getBaseElementField: typeof getBaseElementField;
    col: typeof column;
    column: typeof column;
};
//# sourceMappingURL=elementUtils.d.ts.map