import ts from 'typescript/lib/tsserverlibrary.js';
import { ClassInfo, SignalInfo } from './modules.js';
import { SignalKey } from './signals.js';
export declare function convertToProperties(json: {
    [key: string]: any;
}): ts.ObjectLiteralElementLike[];
export declare function createProperty(name: string, value: any): ts.ObjectLiteralElementLike;
export declare function createInitializer(value: any): ts.Expression;
export declare function createInterfaceType(viewName: string, extendsType: string): ts.InterfaceDeclaration;
export declare function createTypeLiteral(typeName: string): ts.TypeLiteralNode;
/**
 * create view constructor interface of Type `T`
 *
 * ```ts
 * interface ConstructorOfView<T> {
 * 	new(): T;
 * 	readonly prototype: T;
 * }
 * ```
 */
export declare function createConstructorOfViewInterfaceDeclaration(): ts.InterfaceDeclaration;
export declare function createStaticPropertyViewType(typeName: string): ts.TypeReferenceNode;
export declare function generateStatements(sourceText: string, scriptTarget?: ts.ScriptTarget, scriptKind?: ts.ScriptKind): ts.NodeArray<ts.Statement>;
export declare function generateNode<T = ts.Node>(sourceText: string, scriptTarget?: ts.ScriptTarget, scriptKind?: ts.ScriptKind): T;
/**
 * declare global {
    interface HTMLElementTagNameMap {
        'user-view': HTMLUserViewElement;
    }
}
 */
export declare function updateGlobalHTMLElementTagNameMap(views: {
    tagName: string;
    viewName: string;
}[]): ts.NodeArray<ts.Statement>;
export declare function updateModuleTypeWithComponentView(classes: ClassInfo[]): ts.NodeArray<ts.Statement>;
/**
 * create new type with name `ɵɵ0Directives0ɵɵ`
 *
 * example:
 * ```ts
 * export type ɵɵ0IfDirective0ɵɵ = {
 * 	selector: '*if';
 * 	successor: '*else',
 * 	inputs: [
 * 		{ name: 'ifCondition', aliasName: 'if' },
 * 		{ name: 'thenTemplateRef', aliasName: 'then' },
 * 		{ name: 'elseTemplateRef', aliasName: 'else' },
 * 	],
 * 	outputs: [],
 * };
 * ```
 * @param classes directive class information
 * @returns new array of statements
 */
export declare function updateModuleTypeWithDirectives(classes: ClassInfo[]): ts.NodeArray<ts.Statement>;
export declare function convertToRuntimeMetadata(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>): {
    signal: string;
    options: {
        name: string;
        alias: string;
    }[];
}[];
export declare function createSignalsAssignment(signalMetadata: Partial<Record<SignalKey, SignalInfo[]>>): ts.PropertyAssignment;
//# sourceMappingURL=factory.d.ts.map