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

/// <reference path="../../typings/angularjs/angular.d.ts" />
import foo = require("foo/bar");
import bar = require("foo/bar");
import 'rxjs/add/operator/map';





export class Bar implements IBar {
    firstName!: string | undefined;
    lastName!: string | undefined;

    get title() {
        return this.firstName + ' ' + this.lastName;
    }

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

    init(_data?: any) {
        if (_data) {
            this.firstName = _data["FirstName"];
            this.lastName = _data["LastName"];
        }
    }

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

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        data["FirstName"] = this.firstName;
        data["LastName"] = this.lastName;
        return data;
    }
}

export interface IBar {
    firstName: string | undefined;
    lastName: string | undefined;
}

export class Foo implements IFoo {
    bar!: Bar | undefined;

    get title() {
        return this.bar ? this.bar.title : '';
    }

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

    init(_data?: any) {
        if (_data) {
            this.bar = _data["Bar"] ? Bar.fromJS(_data["Bar"]) : undefined as any;
        }
    }

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

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        data["Bar"] = this.bar ? this.bar.toJSON() : undefined as any;
        return data;
    }
}

export interface IFoo {
    bar: Bar | undefined;
}

var clientClasses = {clientClasses};
for (var clientClass in clientClasses) {
    if (clientClasses.hasOwnProperty(clientClass)) {
        angular.module('app').service(clientClass, ['$http', clientClasses[clientClass]]);
    } 
}

// Imported class for ...

export class Test {
    doIt() {
    }
}

export abstract class BaseClass {
    doIt() {
    }
}

var x = 10;