import type { FeatureCollection, MValue, Properties, ValueArrayObject } from '../../..';
/**
 * # GBFS Geofencing Zones Schema V2.3, V2.2, V2.1, OR V2.0
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification V2.3](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#geofencing_zonesjson)
 * - [GBFS Specification V2.2](https://github.com/MobilityData/gbfs/blob/v2.2/gbfs.md#geofencing_zonesjson)
 * - [GBFS Specification V2.1](https://github.com/MobilityData/gbfs/blob/v2.1/gbfs.md#geofencing_zonesjson)
 */
export type GBFSGeofencingZonesV2 = GBFSGeofencingZonesV23 | GBFSGeofencingZonesV22 | GBFSGeofencingZonesV21;
/**
 * # GBFS Geofencing Zones Schema V2.3
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#geofencing_zonesjson)
 */
export declare const gbfsGeofencingZonesSchemaV23: {
    $schema: string;
    $id: string;
    description: string;
    type: string;
    properties: {
        last_updated: {
            description: string;
            type: string;
            minimum: number;
        };
        ttl: {
            description: string;
            type: string;
            minimum: number;
        };
        version: {
            description: string;
            type: string;
            const: string;
        };
        data: {
            description: string;
            type: string;
            properties: {
                geofencing_zones: {
                    type: string;
                    description: string;
                    properties: {
                        type: {
                            description: string;
                            type: string;
                            enum: string[];
                        };
                        features: {
                            description: string;
                            type: string;
                            items: {
                                title: string;
                                type: string;
                                properties: {
                                    type: {
                                        type: string;
                                        enum: string[];
                                    };
                                    properties: {
                                        description: string;
                                        type: string;
                                        properties: {
                                            name: {
                                                description: string;
                                                type: string;
                                            };
                                            start: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            end: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            rules: {
                                                description: string;
                                                type: string;
                                                items: {
                                                    type: string;
                                                    properties: {
                                                        vehicle_type_id: {
                                                            type: string;
                                                            description: string;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                        ride_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        ride_through_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        maximum_speed_kph: {
                                                            description: string;
                                                            type: string;
                                                            minimum: number;
                                                        };
                                                        station_parking: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                    };
                                                    required: string[];
                                                };
                                            };
                                        };
                                    };
                                    geometry: {
                                        description: string;
                                        title: string;
                                        type: string;
                                        properties: {
                                            type: {
                                                type: string;
                                                enum: string[];
                                            };
                                            coordinates: {
                                                type: string;
                                                items: {
                                                    type: string;
                                                    items: {
                                                        type: string;
                                                        minItems: number;
                                                        items: {
                                                            type: string;
                                                            minItems: number;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                    };
                                                };
                                            };
                                        };
                                        required: string[];
                                    };
                                };
                                required: string[];
                            };
                        };
                    };
                    required: string[];
                };
            };
            required: string[];
        };
    };
    required: string[];
};
/**
 * GBFS V3: Restrictions that apply within the area of the polygon.
 */
export interface GBFSGeofencingZonesV2PropertiesRule extends ValueArrayObject {
    /**
     * Array of vehicle type IDs for which these restrictions apply.
     */
    vehicle_type_id?: string[];
    /**
     * Is the undocked ride allowed to start and end in this zone?
     */
    ride_allowed: boolean;
    /**
     * Is the ride allowed to travel through this zone?
     */
    ride_through_allowed: boolean;
    /**
     * Maximum speed allowed, in kilometers per hour.
     * **Minimum**: 0
     */
    maximum_speed_kph?: number;
    /**
     * Vehicle MUST be parked at stations defined in station_information.json within this geofence zone.
     */
    station_parking?: boolean;
}
/** Properties of a geofencing zone */
export interface GBFSGeofencingZonesV2Properties extends Properties {
    /** Public name of the geofencing zone. */
    name: string;
    /**
     * Start time of the geofencing zone in RFC3339 format.
     * **format** date-time
     */
    start?: string;
    /**
     * End time of the geofencing zone in RFC3339 format.
     * **format** date-time
     */
    end?: string;
    /** Array of rules defining restrictions within the geofence. */
    rules?: GBFSGeofencingZonesV2PropertiesRule[];
}
/**
 * # GBFS Geofencing Zones V2.3
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#geofencing_zonesjson)
 */
export interface GBFSGeofencingZonesV23 {
    /**
     * Last time the data in the feed was updated in POSIX time.
     * **Minimum**: 1450155600
     */
    last_updated: number;
    /**
     * Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).
     * **Minimum**: 0
     */
    ttl: number;
    /**
     * GBFS version number to which the feed conforms, according to the versioning framework.
     * **Const**: 2.3
     */
    version: '2.3';
    /**
     * Contains geofencing information for the system.
     */
    data: {
        geofencing_zones: FeatureCollection<undefined, MValue, GBFSGeofencingZonesV2Properties>;
    };
}
/**
 * # GBFS Geofencing Zones Schema V2.2
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.2/gbfs.md#geofencing_zonesjson)
 */
export declare const gbfsGeofencingZonesSchemaV22: {
    $schema: string;
    $id: string;
    description: string;
    type: string;
    properties: {
        last_updated: {
            description: string;
            type: string;
            minimum: number;
        };
        ttl: {
            description: string;
            type: string;
            minimum: number;
        };
        version: {
            description: string;
            type: string;
            const: string;
        };
        data: {
            description: string;
            type: string;
            properties: {
                geofencing_zones: {
                    type: string;
                    description: string;
                    properties: {
                        type: {
                            description: string;
                            type: string;
                            enum: string[];
                        };
                        features: {
                            description: string;
                            type: string;
                            items: {
                                title: string;
                                type: string;
                                properties: {
                                    type: {
                                        type: string;
                                        enum: string[];
                                    };
                                    properties: {
                                        description: string;
                                        type: string;
                                        properties: {
                                            name: {
                                                description: string;
                                                type: string;
                                            };
                                            start: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            end: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            rules: {
                                                description: string;
                                                type: string;
                                                items: {
                                                    type: string;
                                                    properties: {
                                                        vehicle_type_id: {
                                                            type: string;
                                                            description: string;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                        ride_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        ride_through_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        maximum_speed_kph: {
                                                            description: string;
                                                            type: string;
                                                            minimum: number;
                                                        };
                                                    };
                                                    required: string[];
                                                };
                                            };
                                        };
                                    };
                                    geometry: {
                                        description: string;
                                        title: string;
                                        type: string;
                                        properties: {
                                            type: {
                                                type: string;
                                                enum: string[];
                                            };
                                            coordinates: {
                                                type: string;
                                                items: {
                                                    type: string;
                                                    items: {
                                                        type: string;
                                                        minItems: number;
                                                        items: {
                                                            type: string;
                                                            minItems: number;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                    };
                                                };
                                            };
                                        };
                                        required: string[];
                                    };
                                };
                                required: string[];
                            };
                        };
                    };
                    required: string[];
                };
            };
            required: string[];
        };
    };
    required: string[];
};
/**
 * # GBFS Geofencing Zones V2.2
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.2/gbfs.md#geofencing_zonesjson)
 */
export interface GBFSGeofencingZonesV22 {
    /**
     * Last time the data in the feed was updated in POSIX time.
     * **Minimum**: 1450155600
     */
    last_updated: number;
    /**
     * Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).
     * **Minimum**: 0
     */
    ttl: number;
    /**
     * GBFS version number to which the feed conforms, according to the versioning framework.
     * **Const**: 2.2
     */
    version: '2.2';
    /**
     * Contains geofencing information for the system.
     */
    data: {
        geofencing_zones: FeatureCollection<undefined, MValue, GBFSGeofencingZonesV2Properties>;
    };
}
/**
 * # GBFS Geofencing Zones Schema V2.1
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.1/gbfs.md#geofencing_zonesjson)
 */
export declare const gbfsGeofencingZonesSchemaV21: {
    $schema: string;
    $id: string;
    description: string;
    type: string;
    properties: {
        last_updated: {
            description: string;
            type: string;
            minimum: number;
        };
        ttl: {
            description: string;
            type: string;
            minimum: number;
        };
        version: {
            description: string;
            type: string;
            const: string;
        };
        data: {
            description: string;
            type: string;
            properties: {
                geofencing_zones: {
                    type: string;
                    description: string;
                    properties: {
                        type: {
                            description: string;
                            type: string;
                            enum: string[];
                        };
                        features: {
                            description: string;
                            type: string;
                            items: {
                                title: string;
                                type: string;
                                properties: {
                                    type: {
                                        type: string;
                                        enum: string[];
                                    };
                                    properties: {
                                        description: string;
                                        type: string;
                                        properties: {
                                            name: {
                                                description: string;
                                                type: string;
                                            };
                                            start: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            end: {
                                                description: string;
                                                type: string;
                                                minimum: number;
                                            };
                                            rules: {
                                                description: string;
                                                type: string;
                                                items: {
                                                    type: string;
                                                    properties: {
                                                        vehicle_type_id: {
                                                            type: string;
                                                            description: string;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                        ride_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        ride_through_allowed: {
                                                            description: string;
                                                            type: string;
                                                        };
                                                        maximum_speed_kph: {
                                                            description: string;
                                                            type: string;
                                                            minimum: number;
                                                        };
                                                    };
                                                    required: string[];
                                                };
                                            };
                                        };
                                    };
                                    geometry: {
                                        description: string;
                                        title: string;
                                        type: string;
                                        properties: {
                                            type: {
                                                type: string;
                                                enum: string[];
                                            };
                                            coordinates: {
                                                type: string;
                                                items: {
                                                    type: string;
                                                    items: {
                                                        type: string;
                                                        minItems: number;
                                                        items: {
                                                            type: string;
                                                            minItems: number;
                                                            items: {
                                                                type: string;
                                                            };
                                                        };
                                                    };
                                                };
                                            };
                                        };
                                        required: string[];
                                    };
                                };
                                required: string[];
                            };
                        };
                    };
                    required: string[];
                };
            };
            required: string[];
        };
    };
    required: string[];
};
/**
 * # GBFS Geofencing Zones V2.1
 * Describes geofencing zones and their associated rules and attributes (added in v2.1-RC).
 *
 * ## Links
 * - [GBFS Specification](https://github.com/MobilityData/gbfs/blob/v2.1/gbfs.md#geofencing_zonesjson)
 */
export interface GBFSGeofencingZonesV21 {
    /**
     * Last time the data in the feed was updated in POSIX time.
     * **Minimum**: 1450155600
     */
    last_updated: number;
    /**
     * Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).
     * **Minimum**: 0
     */
    ttl: number;
    /**
     * GBFS version number to which the feed conforms, according to the versioning framework.
     * **Const**: 2.1
     */
    version: '2.1';
    /**
     * Contains geofencing information for the system.
     */
    data: {
        geofencing_zones: FeatureCollection<undefined, MValue, GBFSGeofencingZonesV2Properties>;
    };
}
//# sourceMappingURL=geofencingZones.d.ts.map