import { Block } from './block'; import { Parameter, TsFunction } from './function'; import { AccessKeyword } from './keywords'; import { Printer } from './printer'; import { TypeExp, TypeExpression } from './type-expression'; export declare class ConstructorParameter extends Parameter { private access?; private readonly?; private constructor(); parts(): ReturnType & { access?: AccessKeyword; readonly?: boolean; }; isReadonly(): this; isPrivate(): this; isProtected(): this; isPublic(): this; print(printer: Printer): string; static create(name: string, typeExpression?: TypeExpression | TypeExp): ConstructorParameter; } export declare class Constructor { private parameters; private access?; private body?; private constructor(); withParameters(...params: ConstructorParameter[]): this; isPrivate(): this; isProtected(): this; isPublic(): this; withBody(body: Block): this; withBody(body: (builder: Block) => Block): this; print(printer: Printer): string; static create(): Constructor; } export declare class TsClass { private name; private isAbstract; private extension?; private implementing; private creator?; private body?; private methods; constructor(name: string, isAbstract?: boolean, extension?: string | undefined, implementing?: string[], creator?: Constructor | undefined, body?: Block | undefined, methods?: TsFunction[]); parts(): { name: string; isAbstract: boolean; extension?: string; implementing: string[]; creator?: Constructor; body?: Block; methods: TsFunction[]; }; makeAbstract(): this; makeExtend(extension: string): this; implement(...parts: string[]): this; withConstructor(builder: (constructor: Constructor) => Constructor): this; withConstructor(constructor: Constructor): this; withBody(body: Block): this; withMethod(method: TsFunction): this; print(printer: Printer): string; static create(name: string): TsClass; }