import { ClassDeclaration, DecoratableNode, PropertyDeclaration, PropertyNamedNode, SetAccessorDeclaration, SourceFile, WriterFunction } from 'ts-morph';
import { TypeImport } from '../type-import';
export interface ComponentInputDefinition {
    alias?: string;
    isRequired?: boolean;
    initializer?: string | WriterFunction;
    asSetAccessor?: boolean;
}
export interface SetComponentInputDefinition extends ComponentInputDefinition {
    asSetAccessor: true;
}
export type PropertyComponentInputDefinition = Omit<ComponentInputDefinition, 'asSetAccessor'>;
export declare function CoerceComponentInput(classDeclaration: ClassDeclaration, name: string, type: string | TypeImport | WriterFunction, options?: PropertyComponentInputDefinition): PropertyDeclaration;
export declare function CoerceComponentInput(sourceFile: SourceFile, name: string, type: string | TypeImport | WriterFunction, options?: PropertyComponentInputDefinition): PropertyDeclaration;
export declare function CoerceComponentInput(classDeclaration: ClassDeclaration, name: string, type: string | TypeImport | WriterFunction, options?: SetComponentInputDefinition): SetAccessorDeclaration;
export declare function CoerceComponentInput(sourceFile: SourceFile, name: string, type: string | TypeImport | WriterFunction, options?: SetComponentInputDefinition): SetAccessorDeclaration;
export declare function CoerceComponentInput(classDeclaration: ClassDeclaration, name: string, type: string | TypeImport | WriterFunction, options?: ComponentInputDefinition): PropertyNamedNode & DecoratableNode;
export declare function CoerceComponentInput(sourceFile: SourceFile, name: string, type: string | TypeImport | WriterFunction, options?: ComponentInputDefinition): PropertyNamedNode & DecoratableNode;
