export interface Property {
    description?: string;
    isArray: boolean;
    isOptional: boolean;
    isPrimitive: boolean;
    name: string;
    type: string;
}
export interface Interface {
    description?: string;
    extends: string[];
    methods: {
        [name: string]: MethodSignature;
    };
    name: string;
    properties: {
        [name: string]: Property;
    };
}
export interface Class {
    description?: string;
    extends: Class[];
    implements: string[];
    isAbstract: boolean;
    methods: {
        [name: string]: Method;
    };
    name: string;
    properties: {
        [name: string]: Property;
    };
}
export interface Type {
    base: string;
    description?: string;
    name: string;
    values: TypeValue[];
}
export interface TypeValue {
    description?: string;
    value: any;
}
export interface MethodSignature {
    description?: string;
    inputs: Property[];
    name: string;
    output: Property;
    exceptions: string[];
}
export interface Method extends MethodSignature {
    body: string;
}
export interface Service {
    description?: string;
    interfaces: {
        [name: string]: Interface;
    };
    methods: {
        [name: string]: MethodSignature;
    };
    name: string;
    types: {
        [name: string]: Type;
    };
}
