import { Context } from "koa"; import Router from "@koa/router"; import { FormData, FormDataValue, FormMessage, FormReaction } from "./form-types.js"; import { Fields, MountableWithFields, PageErrorMessage } from "../page/mountable-with-fields.js"; import { Readable } from "stream"; import { FormField } from "../index.js"; import { FieldMessages } from "./controls/form-control.js"; export declare abstract class Form extends MountableWithFields { defaultSuccessMessage: string; submitButtonText: string; action: string; useTurbo: boolean; form_id: string; canAccess(_: Context): Promise<{ canAccess: boolean; message: string; }>; renderError(_: Context, error: PageErrorMessage): Promise; makeSubmitButton(): JSX.Element; render(ctx: Context, data: FormData, show_field_errors: boolean): Promise; makeFormClasses(_ctx: Context): Promise; makeOpenFormTag(ctx: Context): JSX.Element; makeCloseFormTag(): JSX.Element; onValuesInvalid(ctx: Context, form_messages: FormMessage[], field_errors: FieldMessages): Promise; onError(ctx: Context, data: FormData, error: unknown): Promise; abstract onSubmit(ctx: Context, data: FormData): SubmitResult | Promise; onSuccess(ctx: Context, _data: FormData, _submitResult: SubmitResult): Promise; getRawValuesOnSuccess(ctx: Context): Promise>; handlePost(ctx: Context): Promise; init(path: string, router: Router): void; mount(router: Router, path: string): void; extractRawValues(ctx: Context): Promise>; static initFieldNames(fields: Record): void; }