import { IApiArrayShape, IApiNodeShape, IApiPropertyShape, IApiScalarShape, IShapeUnion } from './definitions/Shapes.js';
export interface IMonacoSchema {
    uri: string;
    schema: IMonacoProperty;
    fileMatch?: string[];
}
export interface IMonacoProperty {
    $id?: string;
    title: string;
    type: string;
    description?: string;
    readOnly?: boolean;
    writeOnly?: boolean;
}
export interface IMonacoScalarProperty extends IMonacoProperty {
    default?: string;
    pattern?: string;
    format?: string;
    exclusiveMaximum?: boolean;
    exclusiveMinimum?: boolean;
    maxLength?: number;
    minLength?: number;
    minimum?: number;
    maximum?: number;
    multipleOf?: number;
    enum?: string[];
}
export interface IMonacoObjectProperty extends IMonacoProperty {
    properties: Record<string, IMonacoProperty>;
    required: string[];
    additionalProperties?: boolean;
    minProperties?: number;
    maxProperties?: number;
}
export interface IMonacoArrayProperty extends IMonacoProperty {
    additionalItems?: boolean;
    items: {
        anyOf: IMonacoProperty[];
    };
    uniqueItems?: boolean;
    minItems?: number;
    maxItems?: number;
    required: string[];
}
/**
 * A class to generate JSON schema from an ApiShapeUnion declaration to use with the Monaco editor schemas.
 */
export declare class ApiMonacoSchemaGenerator {
    schemas: IMonacoSchema[];
    /**
     * @param parentUri The URI for the fileMatch property.
     */
    generate(schema: IShapeUnion, parentUri: string): IMonacoSchema[];
    /**
     * @param parentUri The URI for the fileMatch property.
     */
    fromNodeShape(schema: IApiNodeShape, parentUri?: string): IMonacoSchema[];
    appendSchemaProperty(content: IMonacoObjectProperty, property: IApiPropertyShape): void;
    rangeToPropertySchema(range: IShapeUnion): IMonacoScalarProperty | IMonacoObjectProperty | IMonacoArrayProperty | undefined;
    scalarRangeToPropertySchema(schema: IApiScalarShape): IMonacoScalarProperty;
    /**
     * Translates AMF data type to JSON schema data type.
     */
    schemaTypeToJsonDataType(schemaType?: string): string;
    nodeShapeRangeToPropertySchema(schema: IApiNodeShape): IMonacoObjectProperty;
    arrayShapeRangeToPropertySchema(schema: IApiArrayShape): IMonacoArrayProperty;
}
//# sourceMappingURL=ApiMonacoSchemaGenerator.d.ts.map