import * as ts from 'typescript';
import { IAstItemOptions } from './AstItem';
import { AstItemContainer } from './AstItemContainer';
/**
  * This class is part of the AstItem abstract syntax tree.  It represents a class,
  * interface, or type literal expression.
  */
export declare class AstStructuredType extends AstItemContainer {
    implements?: string;
    extends?: string;
    /**
     * An array of type parameters for generic classes
     * Example: Foo<T, S> => ['T', 'S']
     */
    typeParameters: string[];
    /**
     * The data type of the AstItem.declarationSymbol.  This is not the exported alias,
     * but rather the original that has complete member and inheritance information.
     */
    protected type: ts.Type;
    private _classLikeDeclaration;
    private _processedMemberNames;
    private _setterNames;
    constructor(options: IAstItemOptions);
    /**
     * @virtual
     */
    visitTypeReferencesForAstItem(): void;
    /**
      * Returns a line of text such as "class MyClass extends MyBaseClass", excluding the
      * curly braces and body.  The name "MyClass" will be the public name seen by external
      * callers, not the declared name of the class; @see AstItem.name documentation for details.
      */
    getDeclarationLine(): string;
    protected onCompleteInitialization(): void;
    private _processMember(memberSymbol, memberDeclaration);
}
