import * as _Object from './ion/Object';
import * as Declaration from './Declaration';
import * as Expression from './Expression';
import * as Statement from './Statement';
import * as Exportable from './Exportable';
import * as Typed from './Typed';
import * as Node from './Node';
import * as Location from './Location';
import * as Null from './ion/Null';
import * as Type from './Type';
import * as Integer from './ion/Integer';
import * as Boolean from './ion/Boolean';
import * as Declarator from './Declarator';
import * as _Array from './ion/Array';
import * as Parameter from './Parameter';
import * as Reference from './Reference';
import * as MemberExpression from './MemberExpression';
import * as VariableDeclaration from './VariableDeclaration';
import * as InstanceDeclarations from './InstanceDeclarations';
export declare class ClassDeclaration implements _Object.Object, Declaration.Declaration, Expression.Expression, Statement.Statement, Exportable.Exportable, Typed.Typed, Node.Node {
    readonly location: Location.Location | Null.Null;
    readonly type: Type.Type | Null.Null;
    readonly export: Integer.Integer;
    readonly isStruct: Boolean.Boolean;
    readonly isData: Boolean.Boolean;
    readonly id: Declarator.Declarator;
    readonly parameters: _Array.Array<Parameter.Parameter>;
    readonly baseClasses: _Array.Array<Reference.Reference | MemberExpression.MemberExpression>;
    readonly static: _Array.Array<VariableDeclaration.VariableDeclaration>;
    readonly instance: InstanceDeclarations.InstanceDeclarations;
    readonly instanceType: Type.Type | Null.Null;
    static readonly id = "ClassDeclaration";
    static readonly implements: Set<string>;
    constructor({ location, type, export: _export, isStruct, isData, id, parameters, baseClasses, static: _static, instance, instanceType }: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        export?: Integer.Integer;
        isStruct?: Boolean.Boolean;
        isData?: Boolean.Boolean;
        id: Declarator.Declarator;
        parameters?: _Array.Array<Parameter.Parameter>;
        baseClasses?: _Array.Array<Reference.Reference | MemberExpression.MemberExpression>;
        static: _Array.Array<VariableDeclaration.VariableDeclaration>;
        instance: InstanceDeclarations.InstanceDeclarations;
        instanceType?: Type.Type | Null.Null;
    });
    patch(properties: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        export?: Integer.Integer;
        isStruct?: Boolean.Boolean;
        isData?: Boolean.Boolean;
        id?: Declarator.Declarator;
        parameters?: _Array.Array<Parameter.Parameter>;
        baseClasses?: _Array.Array<Reference.Reference | MemberExpression.MemberExpression>;
        static?: _Array.Array<VariableDeclaration.VariableDeclaration>;
        instance?: InstanceDeclarations.InstanceDeclarations;
        instanceType?: Type.Type | Null.Null;
    }): ClassDeclaration;
    static is(value: any): value is ClassDeclaration;
}
export declare function isClassDeclaration(value: any): value is ClassDeclaration;
export default ClassDeclaration;
