import { Component, HttpMethod, HttpDataType, ScopeBase } from "@ribajs/core";
export interface ValidationObject {
    fields: {
        [name: string]: string | boolean | string[];
    } | FormData;
    valid: boolean;
    error?: string;
}
export interface SubmitSettings {
    action: string;
    method: HttpMethod;
    target?: string;
    type: HttpDataType;
}
export interface Scope extends ScopeBase {
    id: string;
    form: ValidationObject;
    onSubmit: Bs5FormComponent["onSubmit"];
    disableSubmitUntilChange: boolean;
    submitDisabled: boolean;
    useAjax: boolean;
    ajaxRequestType: HttpDataType;
    autoSetFormData: boolean;
    stripHtml: boolean;
    scrollToInvalidElement: true;
    animateInvalidElement: true;
}
export declare class Bs5FormComponent extends Component {
    static tagName: string;
    _debug: boolean;
    protected autobind: boolean;
    static get observedAttributes(): string[];
    protected formEl: HTMLFormElement | null;
    protected getDefaultScope(): Scope;
    scope: Scope;
    constructor();
    protected connectedCallback(): void;
    protected addEventListeners(): void;
    protected removeEventListeners(): void;
    private enableSubmit;
    protected requiredAttributes(): string[];
    protected beforeBind(): Promise<void>;
    protected afterBind(): Promise<void>;
    protected stripHtml(): void;
    onSubmit(event: Event, el: HTMLButtonElement): boolean | undefined;
    protected ajaxSubmit(event?: Event, el?: HTMLButtonElement): Promise<void>;
    protected getSubmitSettings(event?: Event): SubmitSettings | null;
    protected onInvalidForm(event: Event): void;
    protected scrollToElement(invalidElement: HTMLElement): void;
    protected animateInvalidElement(invalidElement: HTMLElement, endsOn?: number): void;
    protected onErrorSubmit(status: string, message: string, response: any): void;
    protected onSuccessSubmit(status: string, message: string, response: any): void;
    protected validate(form: HTMLFormElement, validationScope: ValidationObject, errorEventName?: string): void;
    protected getFormValues(): FormData | null;
    protected initForm(): void;
    protected template(): Promise<string | null>;
}
