import { Model, ModelInstance } from "./index";
import { relationProperty, lazyModel } from "./Decorators";
import { CharGenerator } from "./utils";
export declare type RelationType = {
    many: boolean;
    out?: boolean;
    any?: boolean;
};
export declare class Relation {
    relationType: RelationType;
    src: Model<any, any>;
    dest: lazyModel<any, any>;
    propertyName: string;
    label: string;
    lazy: relationProperty;
    constructor(src: Model<any, any>, property: relationProperty);
    /**
     * Initialise all lazy stuff
     */
    init(): void;
    addFunctionsToInstance<P, M extends ModelInstance<P>>(instance: M, charGenerator?: CharGenerator): M;
    addHasManyToInstance<P, M extends ModelInstance<P>>(instance: M, charGenerator?: CharGenerator): any;
    addHasOneToInstance<P, M extends ModelInstance<P>>(instance: M, charGenerator?: CharGenerator): any;
}
