﻿//----------------------
// <auto-generated>
// </auto-generated>
//----------------------







export class Anonymous implements IAnonymous {
    baseProperty!: string;

    [key: string]: any;

    constructor(data?: IAnonymous) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.baseProperty = _data["baseProperty"];
        }
    }

    static fromJS(data: any): Anonymous {
        data = typeof data === 'object' ? data : {};
        let result = new Anonymous();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["baseProperty"] = this.baseProperty;
        return data;
    }
}

export interface IAnonymous {
    baseProperty: string;

    [key: string]: any;
}

export class Foo extends Anonymous implements IFoo {
    prop1!: string;
    prop2!: string;

    [key: string]: any;

    constructor(data?: IFoo) {
        super(data);
    }

    override init(_data?: any) {
        super.init(_data);
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.prop1 = _data["prop1"];
            this.prop2 = _data["prop2"];
        }
    }

    static override fromJS(data: any): Foo {
        data = typeof data === 'object' ? data : {};
        let result = new Foo();
        result.init(data);
        return result;
    }

    override toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["prop1"] = this.prop1;
        data["prop2"] = this.prop2;
        super.toJSON(data);
        return data;
    }
}

export interface IFoo extends IAnonymous {
    prop1: string;
    prop2: string;

    [key: string]: any;
}