import { Normalized } from '@rxap/utilities';
import { OptionalKind, PropertySignatureStructure, SourceFile } from 'ts-morph';
import { NormalizedTypeImport, TypeImport, TypeName } from './type-import';
export interface DataProperty {
    name: string;
    type?: TypeImport | TypeName;
    isArray?: boolean;
    isOptional?: boolean;
    source?: string | null;
    /**
     * If set the property is an object with the given members
     */
    memberList?: Array<string | DataProperty>;
}
export interface NormalizedDataProperty extends Readonly<Normalized<Omit<DataProperty, 'memberList'>>> {
    type: NormalizedTypeImport;
    source: string | null;
    memberList: Array<NormalizedDataProperty>;
}
export declare function NormalizeDataProperty(property: TypeName | Readonly<DataProperty>, defaultType?: TypeImport | TypeName, isArray?: boolean): NormalizedDataProperty;
export declare function NormalizeDataPropertyList(propertyList?: Array<string | DataProperty>, defaultType?: TypeImport | TypeName): Array<NormalizedDataProperty>;
export declare function NormalizeDataPropertyToPropertySignatureStructure(property: DataProperty, sourceFile: SourceFile): OptionalKind<PropertySignatureStructure>;
