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







export class GenericRequestBaseOfRequestBodyBase implements IGenericRequestBaseOfRequestBodyBase {
    request!: RequestBodyBase;

    [key: string]: any;

    constructor(data?: IGenericRequestBaseOfRequestBodyBase) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
        if (!data) {
            this.request = new RequestBodyBase();
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.request = _data["Request"] ? RequestBodyBase.fromJS(_data["Request"]) : new RequestBodyBase();
        }
    }

    static fromJS(data: any): GenericRequestBaseOfRequestBodyBase {
        data = typeof data === 'object' ? data : {};
        let result = new GenericRequestBaseOfRequestBodyBase();
        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["Request"] = this.request ? this.request.toJSON() : undefined as any;
        return data;
    }
}

export interface IGenericRequestBaseOfRequestBodyBase {
    request: RequestBodyBase;

    [key: string]: any;
}

export class GenericRequest1 extends GenericRequestBaseOfRequestBodyBase implements IGenericRequest1 {

    [key: string]: any;

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

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

    static override fromJS(data: any): GenericRequest1 {
        data = typeof data === 'object' ? data : {};
        let result = new GenericRequest1();
        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];
        }
        super.toJSON(data);
        return data;
    }
}

export interface IGenericRequest1 extends IGenericRequestBaseOfRequestBodyBase {

    [key: string]: any;
}

export class RequestBodyBase implements IRequestBodyBase {

    [key: string]: any;

    constructor(data?: IRequestBodyBase) {
        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];
            }
        }
    }

    static fromJS(data: any): RequestBodyBase {
        data = typeof data === 'object' ? data : {};
        let result = new RequestBodyBase();
        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];
        }
        return data;
    }
}

export interface IRequestBodyBase {

    [key: string]: any;
}

export class GenericRequestBaseOfRequestBody implements IGenericRequestBaseOfRequestBody {
    request!: RequestBody;

    [key: string]: any;

    constructor(data?: IGenericRequestBaseOfRequestBody) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
        if (!data) {
            this.request = new RequestBody();
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.request = _data["Request"] ? RequestBody.fromJS(_data["Request"]) : new RequestBody();
        }
    }

    static fromJS(data: any): GenericRequestBaseOfRequestBody {
        data = typeof data === 'object' ? data : {};
        let result = new GenericRequestBaseOfRequestBody();
        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["Request"] = this.request ? this.request.toJSON() : undefined as any;
        return data;
    }
}

export interface IGenericRequestBaseOfRequestBody {
    request: RequestBody;

    [key: string]: any;
}

export class GenericRequest2 extends GenericRequestBaseOfRequestBody implements IGenericRequest2 {

    [key: string]: any;

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

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

    static override fromJS(data: any): GenericRequest2 {
        data = typeof data === 'object' ? data : {};
        let result = new GenericRequest2();
        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];
        }
        super.toJSON(data);
        return data;
    }
}

export interface IGenericRequest2 extends IGenericRequestBaseOfRequestBody {

    [key: string]: any;
}

export class RequestBody extends RequestBodyBase implements IRequestBody {

    [key: string]: any;

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

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

    static override fromJS(data: any): RequestBody {
        data = typeof data === 'object' ? data : {};
        let result = new RequestBody();
        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];
        }
        super.toJSON(data);
        return data;
    }
}

export interface IRequestBody extends IRequestBodyBase {

    [key: string]: any;
}

export class Anonymous implements IAnonymous {
    request1!: GenericRequest1;
    request2!: GenericRequest2;

    [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.request1 = _data["request1"] ? GenericRequest1.fromJS(_data["request1"]) : undefined as any;
            this.request2 = _data["request2"] ? GenericRequest2.fromJS(_data["request2"]) : undefined as any;
        }
    }

    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["request1"] = this.request1 ? this.request1.toJSON() : undefined as any;
        data["request2"] = this.request2 ? this.request2.toJSON() : undefined as any;
        return data;
    }
}

export interface IAnonymous {
    request1: GenericRequest1;
    request2: GenericRequest2;

    [key: string]: any;
}