import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
import { IIptOictParkingProperties } from "./interfaces/IIptOictParkingProperties";
import { IIptOictParkingSpacesProperties } from "./interfaces/IIptOictParkingSpacesProperties";
export declare class IptOictFeatureCollectionSchemaGenerator {
    static getParkingSchema(): {
        type: string;
        properties: {
            type: {
                type: string;
                enum: string[];
            };
            features: {
                type: string;
                items: {
                    type: string;
                    properties: {
                        type: {
                            type: string;
                            enum: string[];
                        };
                        geometry: {
                            $id: string;
                            title: string;
                            description: string;
                            type: string;
                            required: string[];
                            oneOf: ({
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        minItems: number;
                                        maxItems: number;
                                        items: {
                                            type: string;
                                            minItems?: undefined;
                                            items?: undefined;
                                        };
                                        additionalItems: boolean;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            minItems: number;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems?: undefined;
                                                    items?: undefined;
                                                };
                                            };
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems: number;
                                                    items: {
                                                        type: string;
                                                    };
                                                };
                                            };
                                            minItems?: undefined;
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            })[];
                        };
                        properties: JSONSchemaType<IIptOictParkingProperties>;
                    };
                    required: string[];
                };
            };
        };
        required: string[];
    };
    static getParkingSpacesSchema(): {
        type: string;
        properties: {
            type: {
                type: string;
                enum: string[];
            };
            features: {
                type: string;
                items: {
                    type: string;
                    properties: {
                        type: {
                            type: string;
                            enum: string[];
                        };
                        geometry: {
                            $id: string;
                            title: string;
                            description: string;
                            type: string;
                            required: string[];
                            oneOf: ({
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        minItems: number;
                                        maxItems: number;
                                        items: {
                                            type: string;
                                            minItems?: undefined;
                                            items?: undefined;
                                        };
                                        additionalItems: boolean;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            minItems: number;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems?: undefined;
                                                    items?: undefined;
                                                };
                                            };
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems: number;
                                                    items: {
                                                        type: string;
                                                    };
                                                };
                                            };
                                            minItems?: undefined;
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            })[];
                        };
                        properties: JSONSchemaType<IIptOictParkingSpacesProperties>;
                    };
                    required: string[];
                };
            };
        };
        required: string[];
    };
    static getParkingEntrancesSchema(): {
        type: string;
        properties: {
            type: {
                type: string;
                enum: string[];
            };
            features: {
                type: string;
                items: {
                    type: string;
                    properties: {
                        type: {
                            type: string;
                            enum: string[];
                        };
                        geometry: {
                            $id: string;
                            title: string;
                            description: string;
                            type: string;
                            required: string[];
                            oneOf: ({
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        minItems: number;
                                        maxItems: number;
                                        items: {
                                            type: string;
                                            minItems?: undefined;
                                            items?: undefined;
                                        };
                                        additionalItems: boolean;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            minItems: number;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems?: undefined;
                                                    items?: undefined;
                                                };
                                            };
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems: number;
                                                    items: {
                                                        type: string;
                                                    };
                                                };
                                            };
                                            minItems?: undefined;
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            })[];
                        };
                        properties: JSONSchemaType<IIptOictParkingSpacesProperties>;
                    };
                    required: string[];
                };
            };
        };
        required: string[];
    };
    protected static getSchema<T>(propertiesSchema: JSONSchemaType<T>): {
        type: string;
        properties: {
            type: {
                type: string;
                enum: string[];
            };
            features: {
                type: string;
                items: {
                    type: string;
                    properties: {
                        type: {
                            type: string;
                            enum: string[];
                        };
                        geometry: {
                            $id: string;
                            title: string;
                            description: string;
                            type: string;
                            required: string[];
                            oneOf: ({
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        minItems: number;
                                        maxItems: number;
                                        items: {
                                            type: string;
                                            minItems?: undefined;
                                            items?: undefined;
                                        };
                                        additionalItems: boolean;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            minItems: number;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems?: undefined;
                                                    items?: undefined;
                                                };
                                            };
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            } | {
                                title: string;
                                properties: {
                                    type: {
                                        enum: string[];
                                    };
                                    coordinates: {
                                        type: string;
                                        items: {
                                            type: string;
                                            items: {
                                                type: string;
                                                minItems: number;
                                                items: {
                                                    type: string;
                                                    minItems: number;
                                                    items: {
                                                        type: string;
                                                    };
                                                };
                                            };
                                            minItems?: undefined;
                                        };
                                        minItems?: undefined;
                                        maxItems?: undefined;
                                        additionalItems?: undefined;
                                    };
                                };
                            })[];
                        };
                        properties: JSONSchemaType<T>;
                    };
                    required: string[];
                };
            };
        };
        required: string[];
    };
}
