import { Imm } from 'ts-imm';
import { CodeBlock } from './CodeBlock';
import { CodeWriter } from './CodeWriter';
import { DecoratorSpec } from './DecoratorSpec';
import { Modifier } from './Modifier';
import { TypeName } from './TypeNames';
/** A generated property declaration. */
export declare class PropertySpec extends Imm<PropertySpec> {
    static create(name: string, type: TypeName, optional?: boolean, ...modifiers: Modifier[]): PropertySpec;
    readonly name: string;
    readonly type: TypeName;
    readonly javaDoc: CodeBlock;
    readonly decorators: DecoratorSpec[];
    readonly modifiers: Modifier[];
    readonly initializerField?: CodeBlock;
    readonly optional: boolean;
    readonly implicitlyType: boolean;
    emit(codeWriter: CodeWriter, implicitModifiers?: Modifier[], asStatement?: boolean, withInitializer?: boolean): void;
    addJavadoc(format: string, ...args: any[]): this;
    addJavadocBlock(block: CodeBlock): this;
    addDecorators(...decoratorSpecs: DecoratorSpec[]): this;
    addDecorator(decoratorSpec: DecoratorSpec): this;
    addModifiers(...modifiers: Modifier[]): this;
    setImplicitlyTyped(): this;
    initializer(format: string, ...args: any[]): this;
    initializerBlock(codeBlock: CodeBlock): this;
    toString(): string;
}
