import JSZip from "jszip";
import { SarifLog } from "../interface/appInterface";
import { Agents } from "../interface/botInterface";
/** @public */
export interface ScreenDetails {
    screenName: string;
    screenYaml: string;
}
/** @public */
export interface CanvasApp {
    appName: string;
    appDescription: string;
    screens: ScreenDetails[];
    sarifLog?: SarifLog;
}
/** @public */
export interface SolutionOverview {
    displayName: string;
    uniqueName: string;
    description: string;
    version: string;
    solutionType: string;
}
/** @public */
export interface WorkflowDetails {
    name: string;
    primaryEntity: string;
    category: string;
    json?: string;
}
/** @public */
export interface Role {
    name: string;
}
/** @public */
export interface MissingDependency {
    Required: {
        Type: string;
        SchemaName: string;
        DisplayName: string;
        Solution?: string;
    };
    Dependent: {
        Type: string;
        SchemaName: string;
        DisplayName?: string;
    };
}
/** @public */
export interface CodeComponentDetails {
    displayName: string;
    description: string;
    type: string;
    version: string;
}
/** @public */
export interface CustomApiDetails {
    displayName: string;
    description: string;
    isPrivate: boolean;
    isFunction: boolean;
}
/** @public */
export interface EnvironmentVariableDetails {
    displayName: string;
    description: string;
    type: string;
}
/** @public */
export interface ConnectionReference {
    LogicalName: string;
    DisplayName: string;
    ConnectorID: string;
}
/** @public */
export interface AIModel {
    Name: string;
    Model: string;
}
/** @public */
export interface Plugin {
    Name: string;
}
/** @public */
export interface AppFlowTableMapping {
    appName: string;
    displayName: string;
    flows: string[];
    tables: string[];
}
/** @public */
export interface ExtractionResult {
    mappings: AppFlowTableMapping[];
    mermaidExpressions: string[];
}
/** @public */
export interface SolutionDetails {
    solutionOverview: SolutionOverview;
    canvasApps: CanvasApp[];
    tables: TableDetails[];
    agents: Agents[];
    workflows: WorkflowDetails[];
    codeComponents: CodeComponentDetails[];
    customApis: CustomApiDetails[];
    environmentVariables: EnvironmentVariableDetails[];
    securityRoles: Role[];
    plugins: Plugin[];
    connectionReferences: ConnectionReference[];
    aiModels: AIModel[];
    missingDependencies: MissingDependency[];
    mermaidSolutionOverviewExpression?: string;
    mermaidERDiagramExpression?: string;
}
export declare function getAppDescription(appZip: JSZip): Promise<string>;
/** @public */
export declare function extractSolutionDetail(solutionZipFile?: File | Buffer | Uint8Array, solutionName?: string, webapi?: ComponentFramework.WebApi): Promise<SolutionDetails | undefined>;
/** @public */
export interface TableDetails {
    DisplayName: string;
    SchemaName: string;
    Description: string;
    Fields: Array<{
        Name: string;
        SchemaName: string;
        DataType: string;
    }>;
    Relationships: {
        OneToMany: Array<{
            SchemaName: string;
            ReferencingEntity: string;
            ReferencingAttribute: string;
            ReferencedEntity: string;
        }>;
        ManyToOne: Array<{
            SchemaName: string;
            ReferencedEntity: string;
            ReferencingAttribute: string;
        }>;
        ManyToMany: Array<{
            SchemaName: string;
            Entity1LogicalName: string;
            Entity2LogicalName: string;
        }>;
    };
}
export declare const generateTablesJSON: (zipContent: JSZip) => Promise<{
    tables: TableDetails[];
}>;
//# sourceMappingURL=extractSolutionDetails.d.ts.map