import type { BackCompat, Property } from './base-immutable';
import { BaseImmutable } from './base-immutable';
export interface DriverValue {
    name: string;
}
export interface DriverJS {
    name: string;
}
export declare class Driver extends BaseImmutable<DriverValue, DriverJS> {
    static POPE: Driver;
    static PROPERTIES: Property[];
    static fromJS(params: DriverValue): Driver;
    constructor(params: DriverValue);
}
export interface CarValue {
    name: string;
    fuel: string;
    subCar: Car;
    range?: number;
    relatedCars?: Car[];
    createdOn?: Date;
    owners?: string[];
    driver?: Driver;
    passengers?: string[];
}
export interface CarJS {
    name: string;
    fuel?: string;
    subCar?: CarJS;
    range?: number;
    relatedCars?: CarJS[];
    createdOn?: Date | string;
    owners?: string[];
    driver?: DriverJS;
    passengers?: string[];
}
export declare class Car extends BaseImmutable<CarValue, CarJS> {
    static PROPERTIES: Property<CarValue>[];
    static BACK_COMPATS: BackCompat[];
    static isCar(car: Car): boolean;
    static fromJS(properties: CarJS): Car;
    name: string;
    fuel: string;
    subCar: Car;
    readonly range: number | undefined;
    createdOn: Date;
    constructor(properties: CarValue);
    changeFuel: (fuel: string) => this;
    getFuel: () => string;
    getRange: () => number;
    getName: () => string;
    getRelatedCars: () => Car[];
    getSubCar(): Car | null;
    changeRange(n: number): Car;
}
//# sourceMappingURL=car.mock.d.ts.map