import { CodeGenModel, CodeGenModelMap, CodeGenField, CodeGenFieldDirective } from '../visitors/appsync-visitor';
export declare enum CodeGenConnectionType {
    HAS_ONE = "HAS_ONE",
    BELONGS_TO = "BELONGS_TO",
    HAS_MANY = "HAS_MANY"
}
export declare type CodeGenConnectionTypeBase = {
    kind: CodeGenConnectionType;
    connectedModel: CodeGenModel;
    isConnectingFieldAutoCreated: boolean;
};
export declare type CodeGenFieldConnectionBelongsTo = CodeGenConnectionTypeBase & {
    kind: CodeGenConnectionType.BELONGS_TO;
    targetName: string;
    targetNames: string[];
    isUsingReferences?: boolean;
};
export declare type CodeGenFieldConnectionHasOne = CodeGenConnectionTypeBase & {
    kind: CodeGenConnectionType.HAS_ONE;
    associatedWith: CodeGenField;
    associatedWithNativeReferences?: CodeGenField;
    associatedWithFields: CodeGenField[];
    targetName?: string;
    targetNames?: string[];
};
export declare type CodeGenFieldConnectionHasMany = CodeGenConnectionTypeBase & {
    kind: CodeGenConnectionType.HAS_MANY;
    associatedWith: CodeGenField;
    associatedWithNativeReferences?: CodeGenField;
    associatedWithFields: CodeGenField[];
};
export declare type CodeGenFieldConnection = CodeGenFieldConnectionBelongsTo | CodeGenFieldConnectionHasOne | CodeGenFieldConnectionHasMany;
export declare function makeConnectionAttributeName(type: string, field?: string, otherSidePrimaryKeyComponentField?: string): string;
export declare function flattenFieldDirectives(model: CodeGenModel): CodeGenFieldDirective[];
export declare function getConnectedField(field: CodeGenField, model: CodeGenModel, connectedModel: CodeGenModel): CodeGenField;
export declare function processConnections(field: CodeGenField, model: CodeGenModel, modelMap: CodeGenModelMap, isDataStoreEnabled: boolean): CodeGenFieldConnection | undefined;
//# sourceMappingURL=process-connections.d.ts.map