/*!
Copyright © 2024 Open Text Corporation, All Rights Reserved.

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import { SchemaData } from '../models/localization-types';
import { OcpdStringLocalizationHelper } from './ocpd-string-localization';
import { Config } from '../models/control-config';
export declare class OcpdBaseSchemaService {
    private static _instance;
    _ocpdStringLocalizationHelper: OcpdStringLocalizationHelper;
    _localeDataSchemaData: SchemaData;
    constructor();
    loadLocaleData(): void;
    getControlSchema(): {
        $id: string;
        $schema: string;
        title: string;
        type: string;
        required: string[];
        properties: {
            defaultLocale: {
                type: string;
                pattern: string;
            };
            design: {
                type: string;
                $ref: string;
            };
            localizations: {
                type: string;
                patternProperties: {
                    '^[a-z]{2,4}(-[A-Za-z]{2,4})?(-[A-Z]{2})?$': {
                        $ref: string;
                    };
                };
                additionalProperties: boolean;
            };
        };
        additionalProperties: boolean;
        definitions: {
            localization: {
                $id: string;
                title: string;
                type: string;
                patternProperties: {
                    '^[a-z][-a-z0-9_]*$': {
                        $ref: string;
                    };
                };
                additionalProperties: boolean;
            };
            localizationObject: {
                $id: string;
                title: string;
                type: string;
                properties: {
                    displayName: {
                        type: string;
                    };
                    placeholder: {
                        type: string;
                    };
                    tooltip: {
                        type: string;
                    };
                };
                patternProperties: {
                    '^(label|title)$': {
                        type: string;
                        properties: {
                            text: {
                                type: string;
                            };
                        };
                        additionalProperties: boolean;
                    };
                };
                additionalProperties: boolean;
            };
            designerControls: {
                $id: string;
                title: string;
                type: string;
                properties: {
                    designer: {
                        $ref: string;
                    };
                    id: {
                        pattern: string;
                        type: string;
                    };
                    runtime: {
                        $ref: string;
                    };
                };
                required: string[];
                additionalProperties: boolean;
            };
        };
    };
    getDesignerControl(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            designer: {
                $ref: string;
            };
            id: {
                pattern: string;
                type: string;
            };
            runtime: {
                $ref: string;
            };
        };
        required: string[];
        additionalProperties: boolean;
    };
    getRuntimeSchema(): {
        $id: string;
        title: string;
        type: string;
        otReferences: {
            label: string;
            propertyPath: string;
            target: {
                schemaId: string;
            };
            cardinality: string;
            preventCircularity: string;
        }[];
        required: string[];
        properties: {
            allowMultiExpand: {
                type: string;
            };
            autoCompleteToken: {
                type: string;
            };
            autoHeight: {
                type: string;
                default: boolean;
            };
            backgroundColor: {
                type: string;
                default: string;
                enum: string[];
            };
            backgroundImage: {
                pattern: string;
                type: string;
            };
            border: {
                anyOf: ({
                    pattern: string;
                    type: string;
                    $ref?: undefined;
                } | {
                    type: string;
                    pattern?: undefined;
                    $ref?: undefined;
                } | {
                    $ref: string;
                    pattern?: undefined;
                    type?: undefined;
                })[];
            };
            controls: {
                type: string;
                items: {
                    type: string;
                };
            };
            dataType: {
                type: string;
                minLength: number;
                pattern: string;
            };
            disabled: {
                type: string;
            };
            displayName: {
                type: string;
            };
            flexLayout: {
                $ref: string;
            };
            flexPosition: {
                type: string;
            };
            grid: {
                $ref: string;
            };
            gridChild: {
                $ref: string;
            };
            height: {
                $ref: string;
            };
            imageData: {
                type: string;
            };
            input: {
                $ref: string;
            };
            isHidden: {
                type: string;
            };
            label: {
                $ref: string;
            };
            layoutTextStyle: {
                type: string;
                default: string;
                minLength: number;
                otOptions: {
                    value: string;
                    text: string;
                }[];
            };
            name: {
                type: string;
            };
            maxAllowed: {
                type: string;
            };
            maxLength: {
                type: string;
            };
            maxSnapRows: {
                type: string;
            };
            maxValue: {
                type: string;
            };
            minValue: {
                type: string;
            };
            noBorder: {
                type: string;
                default: boolean;
            };
            noMargin: {
                type: string;
                default: boolean;
            };
            options: {
                type: string;
            };
            panelIndex: {
                type: string;
            };
            parentId: {
                pattern: string;
                type: string[];
            };
            placeholder: {
                type: string;
            };
            propertyPath: {
                type: string;
                pattern: string;
            };
            readOnly: {
                type: string;
            };
            rearrangeControlsForSmallScreens: {
                type: string;
            };
            repeating: {
                type: string;
            };
            required: {
                type: string;
            };
            rtf: {
                title: string;
                $ref: string;
            };
            section: {
                $ref: string;
            };
            schemaId: {
                pattern: string;
                type: string;
            };
            showHorizontal: {
                type: string;
                default: boolean;
            };
            sizeToCell: {
                type: string;
            };
            sort: {
                type: string;
                enum: string[];
            };
            table: {
                $ref: string;
            };
            tabs: {
                type: string;
                minimum: number;
                maximum: number;
                default: number;
            };
            themes: {
                type: string;
            };
            title: {
                $ref: string;
            };
            tooltip: {
                type: string;
            };
            type: {
                minLength: number;
                type: string;
                pattern: string;
            };
            urlControl: {
                $ref: string;
            };
            useAutoComplete: {
                type: string;
            };
            useDefaultPlaceholder: {
                type: string;
            };
            useTypeAhead: {
                type: string;
            };
            user: {
                $ref: string;
            };
            width: {
                $ref: string;
            };
        };
        additionalProperties: boolean;
    };
    getDesignerRTF(): {
        $id: string;
        title: string;
        type: string;
        required: string[];
        properties: {
            enabledPlugins: {
                type: string;
                items: {
                    type: string;
                    otOptions: {
                        value: string;
                        text: string;
                    }[];
                };
            };
        };
        additionalProperties: boolean;
    };
    getDesignerSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            allowHeightToBeResized: {
                type: string;
            };
            disableTypeAhead: {
                type: string;
            };
            isContainer: {
                type: string;
            };
            grid: {
                $ref: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeBorderSchema(): {
        $id: string;
        title: string;
        type: string;
        required: string[];
        properties: {
            borderRadius: {
                type: string;
                pattern: string;
            };
            color: {
                type: string;
                default: string;
            };
            onBottom: {
                type: string;
                default: boolean;
            };
            onLeft: {
                type: string;
                default: boolean;
            };
            onRight: {
                type: string;
                default: boolean;
            };
            onTop: {
                type: string;
                default: boolean;
            };
            width: {
                $ref: string;
            };
            style: {
                type: string;
                default: string;
                minLength: number;
                otOptions: {
                    value: string;
                    text: string;
                }[];
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeFlexLayoutSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            alignItems: {
                type: string;
                default: string;
                enum: string[];
            };
            justifyContent: {
                type: string;
                default: string;
                enum: string[];
            };
            showSplitters: {
                type: string;
                default: boolean;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeGridSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            gap: {
                type: string;
                default: number;
            };
            numberOfColumns: {
                type: string;
                default: number;
                minimum: number;
                maximum: number;
            };
            padding: {
                type: string;
                default: number;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeGridChildSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            gridColumnEnd: {
                type: string;
            };
            gridColumnStart: {
                type: string;
            };
            gridRowEnd: {
                type: string;
            };
            gridRowStart: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeDimensionSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            unit: {
                default: string;
                type: string;
                enum: string[];
            };
            value: {
                default: number;
                type: string[];
                enum: string[];
            };
            width: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeFontSchema(): {
        $id: string;
        title: string;
        type: string;
        required: string[];
        properties: {
            alignment: {
                default: string;
                type: string;
                minLength: number;
                otOptions: {
                    value: string;
                    text: string;
                }[];
            };
            color: {
                type: string;
                default: string;
            };
            decoration: {
                type: string;
                enum: string[];
            };
            family: {
                type: string;
                default: string;
                enum: string[];
            };
            size: {
                type: string;
                default: string;
                enum: string[];
            };
            style: {
                type: string;
                enum: string[];
            };
            weight: {
                type: string;
                enum: string[];
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeLabelSchema(): {
        $id: string;
        title: string;
        type: string;
        required: string[];
        properties: {
            alignment: {
                type: string;
                default: string;
                minLength: number;
                otOptions: {
                    value: string;
                    text: string;
                }[];
            };
            font: {
                $ref: string;
            };
            position: {
                type: string;
                default: string;
                minLength: number;
                otOptions: {
                    value: string;
                    text: string;
                }[];
            };
            show: {
                type: string;
            };
            text: {
                type: string;
            };
            width: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeSectionSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            isCollapsed: {
                type: string;
                default: boolean;
            };
            rowsToDisplay: {
                type: string;
                default: number;
                minimum: number;
                maximum: number;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeUrlControlSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            freeTextUrl: {
                type: string;
                pattern: string;
            };
            pickerUrl: {
                type: string;
                pattern: string;
            };
            useFreeText: {
                type: string;
                default: boolean;
            };
            referrerPolicy: {
                type: string;
            };
            sandboxOptions: {
                type: string;
                items: {
                    type: string;
                };
            };
            link: {
                $ref: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeLinkColorSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            visited: {
                type: string;
                enum: string[];
            };
            unvisited: {
                type: string;
                enum: string[];
            };
            hover: {
                type: string;
                enum: string[];
            };
            active: {
                type: string;
                enum: string[];
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeTableSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            allowAdd: {
                type: string;
                default: boolean;
            };
            allowFacetedFiltering: {
                type: string;
                default: boolean;
            };
            allowMultipleSelection: {
                type: string;
                default: boolean;
            };
            allowSearch: {
                type: string;
                default: boolean;
            };
            columns: {
                type: string;
                items: {
                    $ref: string;
                };
            };
            header: {
                $ref: string;
            };
            noRecordsFoundMessage: {
                type: string;
            };
            rows: {
                type: string;
            };
            showCheckColumn: {
                type: string;
                default: boolean;
            };
            showMobile: {
                type: string;
                default: boolean;
            };
            showPagination: {
                type: string;
                default: boolean;
            };
            variableHeightTable: {
                type: string;
                default: boolean;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeTitleSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            base64Image: {
                type: string;
            };
            show: {
                type: string;
                default: boolean;
            };
            text: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeUserSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            showGroups: {
                type: string;
            };
            showUsers: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeTableHeaderSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            show: {
                type: string;
                default: boolean;
            };
        };
        additionalProperties: boolean;
    };
    getDesignerGridSchema(): {
        $id: string;
        type: string;
        properties: {
            numberOfRows: {
                type: string;
                minimum: number;
            };
            numberOfColumns: {
                type: string;
                minimum: number;
                maximum: number;
            };
            inheritParentColumnCount: {
                type: string;
            };
        };
        additionalProperties: boolean;
    };
    getRuntimeTableColumnsSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            show: {
                type: string;
                default: boolean;
            };
            controlData: {
                type: string;
                properties: {
                    label: {
                        type: string;
                        properties: {
                            show: {
                                type: string;
                            };
                            text: {
                                type: string;
                            };
                            alignment: {
                                type: string;
                                otOptions: {
                                    value: string;
                                    text: string;
                                }[];
                            };
                        };
                        required: string[];
                        additionalProperties: boolean;
                    };
                    propertyPath: {
                        type: string;
                    };
                    isInGrid: {
                        type: string;
                    };
                    type: {
                        minLength: number;
                        type: string;
                        pattern: string;
                    };
                    dataType: {
                        type: string;
                        pattern: string;
                    };
                    show: {
                        type: string;
                    };
                    required: {
                        type: string;
                    };
                    id: {
                        pattern: string;
                        type: string;
                    };
                };
                required: string[];
                additionalProperties: boolean;
            };
            width: {
                type: string;
            };
        };
        required: string[];
        additionalProperties: boolean;
    };
    getLocalizationObjectSchema(): {
        $id: string;
        title: string;
        type: string;
        properties: {
            displayName: {
                type: string;
            };
            placeholder: {
                type: string;
            };
            tooltip: {
                type: string;
            };
        };
        patternProperties: {
            '^(label|title)$': {
                type: string;
                properties: {
                    text: {
                        type: string;
                    };
                };
                additionalProperties: boolean;
            };
        };
        additionalProperties: boolean;
    };
    getLocalizationSchema(): {
        $id: string;
        title: string;
        type: string;
        patternProperties: {
            '^[a-z][-a-z0-9_]*$': {
                $ref: string;
            };
        };
        additionalProperties: boolean;
    };
    getPropertiesConfigSchema(config: Config): {
        $id: string;
        title: string;
        type: string;
        properties: {
            designer: {
                $ref: string;
            };
            id: {
                pattern: string;
                type: string;
            };
            runtime: {
                $ref: string;
            };
        };
        required: string[];
        additionalProperties: boolean;
    };
}
