/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
export type FlowSurfaceTemplateCompatibilityRow = {
    uid?: string;
    useModel?: string;
    dataSourceKey?: string;
    collectionName?: string;
    associationName?: string;
};
export type FlowSurfaceTemplateResourceInfo = {
    dataSourceKey?: string;
    collectionName?: string;
    associationName?: string;
};
export type FlowSurfaceTemplateAssociationMatchMode = 'none' | 'exact' | 'exactIfTemplateHasAssociationName' | 'associationResourceOnly';
export declare function getFlowTemplateRootUseFamily(use: any): string;
export declare function areFlowTemplateRootUsesCompatible(hostUse: any, templateUse: any): boolean;
export declare function getFlowTemplatePopupUseFamily(use: any): string;
export declare function areFlowTemplatePopupUsesCompatible(hostUse: any, templateUse: any): boolean;
export declare function buildTemplateMissingResourceReason(): string;
export declare function buildTemplateDataSourceMismatchReason(expectedDataSourceKey: string, actualDataSourceKey: string): string;
export declare function buildTemplateCollectionMismatchReason(expectedCollectionName: string, actualCollectionName: string): string;
export declare function buildTemplateAssociationMismatchReason(expectedAssociationName?: string, actualAssociationName?: string): string;
export declare function buildTemplateMissingContextReason(param: string): string;
export declare function resolveAssociationTargetResourceInfo(input: FlowSurfaceTemplateResourceInfo, options: {
    getCollection: (dataSourceKey: string, collectionName: string) => any;
}): FlowSurfaceTemplateResourceInfo;
export declare function resolveTemplateResourceInfo(input: FlowSurfaceTemplateResourceInfo, options: {
    getCollection: (dataSourceKey: string, collectionName: string) => any;
}): FlowSurfaceTemplateResourceInfo;
export declare function resolveBlockTemplateExpectedResourceInfo(node: any, options: {
    resolveTemplateResourceInfo: (input: FlowSurfaceTemplateResourceInfo) => FlowSurfaceTemplateResourceInfo;
}): FlowSurfaceTemplateResourceInfo;
export declare function getTemplateResourceCompatibilityDisabledReason(template: FlowSurfaceTemplateCompatibilityRow, expected: FlowSurfaceTemplateResourceInfo, options: {
    associationMatch?: FlowSurfaceTemplateAssociationMatchMode;
    checkResource?: boolean;
    resolveTemplateResourceInfo: (input: FlowSurfaceTemplateResourceInfo) => FlowSurfaceTemplateResourceInfo;
}): string;
