import { Block } from './block'; import { Generic } from './generic'; import { AccessKeyword } from './keywords'; import { Printer } from './printer'; import { TypeExp, TypeExpression } from './type-expression'; export declare class Parameter { private name; private typeExpression?; private spread?; protected constructor(name: string, typeExpression?: TypeExpression | undefined, spread?: boolean | undefined); parts(): { name: string; typeExpression?: TypeExpression; spread?: boolean; }; spreadArg(): this; withType(typeExpression: TypeExpression | TypeExp): this; print(printer: Printer): string; static create(name: string, typeExpression?: TypeExpression | TypeExp): Parameter; } export declare class TsFunction { private name?; private description?; private method; private isAsynchronous; private access?; private isStatic?; private isAbstract?; private parameters; private generics; private returnType?; private body?; private type; private constructor(); withDescription(description: string): this; parts(): { name?: string; method: boolean; isAsynchronous: boolean; access?: AccessKeyword; isStatic?: boolean; isAbstract?: boolean; parameters: Parameter[]; generics: Generic[]; returnType?: TypeExpression; body?: Block; type: 'lambda' | 'named'; }; isAsync(): this; makeStatic(): this; withReturnType(typeExpression: TypeExpression | TypeExp): this; withBody(body: Block): this; withBody(body: (builder: Block) => Block): this; withParameters(...params: Parameter[]): this; isLambda(): this; genericArgs(...args: Generic[]): this; isPrivate(): this; isProtected(): this; isPublic(): this; isMethod(): this; private printGenericArgs; print(printer: Printer): string; static create(name?: string): TsFunction; }