///
import { inspect, InspectOptions } from "util";
import V2 from "../V2";
/**
* The Type of this Form. Currently only `form-push` is supported.
*/
export type FormFormTypes = "form-push";
export interface FormContext {
/**
* Fetch a FormInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed FormInstance
*/
fetch(callback?: (error: Error | null, item?: FormInstance) => any): Promise;
/**
* Provide a user-friendly representation
*/
toJSON(): any;
[inspect.custom](_depth: any, options: InspectOptions): any;
}
export interface FormContextSolution {
formType: FormFormTypes;
}
export declare class FormContextImpl implements FormContext {
protected _version: V2;
protected _solution: FormContextSolution;
protected _uri: string;
constructor(_version: V2, formType: FormFormTypes);
fetch(callback?: (error: Error | null, item?: FormInstance) => any): Promise;
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON(): FormContextSolution;
[inspect.custom](_depth: any, options: InspectOptions): string;
}
interface FormResource {
form_type: FormFormTypes;
forms: any;
form_meta: any;
url: string;
}
export declare class FormInstance {
protected _version: V2;
protected _solution: FormContextSolution;
protected _context?: FormContext;
constructor(_version: V2, payload: FormResource, formType?: FormFormTypes);
formType: FormFormTypes;
/**
* Object that contains the available forms for this type. This available forms are given in the standard [JSON Schema](https://json-schema.org/) format
*/
forms: any;
/**
* Additional information for the available forms for this type. E.g. The separator string used for `binding` in a Factor push.
*/
formMeta: any;
/**
* The URL to access the forms for this type.
*/
url: string;
private get _proxy();
/**
* Fetch a FormInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed FormInstance
*/
fetch(callback?: (error: Error | null, item?: FormInstance) => any): Promise;
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON(): {
formType: "form-push";
forms: any;
formMeta: any;
url: string;
};
[inspect.custom](_depth: any, options: InspectOptions): string;
}
export interface FormSolution {
}
export interface FormListInstance {
_version: V2;
_solution: FormSolution;
_uri: string;
(formType: FormFormTypes): FormContext;
get(formType: FormFormTypes): FormContext;
/**
* Provide a user-friendly representation
*/
toJSON(): any;
[inspect.custom](_depth: any, options: InspectOptions): any;
}
export declare function FormListInstance(version: V2): FormListInstance;
export {};