import { LitElement } from 'lit';
import { A11yState } from './accessibility/a11y.state.enum';
import { A11yProperty } from './accessibility/a11y.property.enum';
import { Role } from './accessibility/role.enum';
export default class NileElement extends LitElement {
    protected BUBBLES: boolean;
    protected COMPOSED: boolean;
    protected CANCELABLE: boolean;
    /** Emits a custom event with more convenient defaults. */
    emit(name: string, detail?: any, bubbles?: boolean, composed?: boolean, cancelable?: boolean): CustomEvent<any>;
}
export interface NileFormControl extends NileElement {
    name: string;
    value: unknown;
    disabled?: boolean;
    defaultValue?: unknown;
    defaultChecked?: boolean;
    form?: string;
    pattern?: string;
    min?: number | string | Date;
    max?: number | string | Date;
    step?: number | 'any';
    required?: boolean;
    minlength?: number;
    maxlength?: number;
    readonly validity: ValidityState;
    readonly validationMessage: string;
    checkValidity: () => boolean;
    getForm: () => HTMLFormElement | null;
    reportValidity: () => boolean;
    setCustomValidity: (message: string) => void;
}
export interface A11yMetadataOptions {
    [Role.Role]?: string;
    [A11yState.AriaDisabled]?: boolean;
    [A11yState.AriaChecked]?: boolean;
    [A11yState.AriaSelected]?: boolean;
    [A11yState.AriaExpanded]?: boolean;
    [A11yState.AriaInvalid]?: boolean;
    [A11yState.AriaHidden]?: boolean;
    [A11yState.AriaPressed]?: boolean;
    [A11yState.AriaCurrent]?: string | boolean;
    [A11yState.AriaBusy]?: boolean;
    [A11yState.AriaRequired]?: boolean;
    [A11yState.AriaReadonly]?: boolean;
    [A11yState.AriaValueNow]?: string;
    [A11yState.AriaValueMin]?: string;
    [A11yState.AriaValueMax]?: string;
    [A11yState.AriaSort]?: string;
    [A11yProperty.AriaLabel]?: string;
    [A11yProperty.AriaLabelledby]?: string;
    [A11yProperty.AriaDescribedby]?: string;
    [A11yProperty.AriaErrormessage]?: string;
    [A11yProperty.AriaDetails]?: string;
    [A11yProperty.AriaControls]?: string;
    [A11yProperty.AriaOwns]?: string;
    [A11yProperty.AriaFlowto]?: string;
    [A11yProperty.AriaRoledescription]?: string;
    [A11yProperty.AriaModal]?: string;
    [A11yProperty.AriaOrientation]?: string;
    [A11yProperty.AriaKeyshortcuts]?: string;
    [A11yProperty.AriaValuenow]?: string;
    [A11yProperty.AriaValuemin]?: string;
    [A11yProperty.AriaValuemax]?: string;
    [A11yProperty.AriaValuetext]?: string;
    [A11yProperty.AriaLevel]?: string;
    [A11yProperty.AriaPosinset]?: string;
    [A11yProperty.AriaSetsize]?: string;
    [A11yProperty.AriaColcount]?: string;
    [A11yProperty.AriaColindex]?: string;
    [A11yProperty.AriaColspan]?: string;
    [A11yProperty.AriaRowcount]?: string;
    [A11yProperty.AriaRowindex]?: string;
    [A11yProperty.AriaRowspan]?: string;
    [A11yProperty.AriaAutocomplete]?: string;
    [A11yProperty.AriaPlaceholder]?: string;
    [A11yProperty.AriaHasPopup]?: string;
    [A11yProperty.Tabindex]?: string;
    [A11yProperty.AriaMultiselectable]?: string;
}
export declare function setupA11yMetadata(el: HTMLElement, options?: A11yMetadataOptions): void;
