import { FoundationElement } from '@microsoft/fast-foundation';
import { UISchemaElement } from '@jsonforms/core';
import { JSONSchema7 } from 'json-schema';
import { RendererEntry } from './types';
export declare const logger: import("@genesislcap/foundation-utils").Logger;
/**
 * Foundation form component for automatically generated forms based on json schema
 * obtained from the api, supplied initial data or supplied JSON schema.
 * Allowing customisable form elements using UI schema and set of custom renderers
 * @beta
 */
export declare class Form extends FoundationElement {
    /**
     * Name of the backend resource which will provide metadata
     * used to generate form and later used for submitting data
     * @public
     */
    resourceName: string;
    private resourceNameChanged;
    private removeDataProperties;
    /**
     * UI schema used to define configuration of the layout and elements in the form
     * Check {@link UiSchemaElement} for possible options
     *
     * @remarks
     * If not provided will be autogenerated based on json schema or initial data
     *
     * @example
     * Here's a simple example:
     * ```
     * const sampleUISchema = {
     *   type: 'VerticalLayout',
     *   elements: [
     *     {
     *       type: 'Control',
     *       scope: '#/properties/QUANTITY',
     *       label: 'Quantity',
     *     },
     *     {
     *       type: 'Control',
     *       scope: '#/properties/INSTRUMENT_ID',
     *       options: {
     *         allOptionsResourceName: 'INSTRUMENT',
     *         valueField: 'INSTRUMENT_ID',
     *         labelField: 'INSTRUMENT_ID',
     *       },
     *       label: 'Instrument',
     *     },
     *     {
     *       type: 'Control',
     *       scope: '#/properties/SIDE',
     *       label: 'Side',
     *     },
     *   ],
     * };
     * ```
     * @public
     */
    uischema: UISchemaElement;
    /**
     * Allows to provide set of renderers used by the form. If not provided it will default to text-field inputs
     * @public
     */
    renderers: RendererEntry[];
    /**
     * Alternatively to providing {@link Form.resourceName} you can hardcode the JSON schema on the client.
     * @public
     * @remarks
     * Use this when you want to avoid fetching metadata from the server but
     * be aware that it could get out of sync if metadata changes on the server
     */
    jsonSchema: JSONSchema7;
    private errors;
    private connect;
    /**
     * Initial data for the form
     * @public
     */
    data: {};
    /**
     * @internal
     */
    submitting: boolean;
    /**
     * @internal
     */
    submitted: boolean;
    /**
     * @internal
     */
    submissionErrors: string;
    readonly: boolean;
    /**
     * @internal
     */
    _submit(): Promise<void>;
    /**
     * @internal
     */
    onChange(event: CustomEvent): void;
    disconnectedCallback(): void;
}
//# sourceMappingURL=form.d.ts.map