import { PowerAppsPatternInfo } from "../ManifestConstant";
import { PatternResult } from "./pattern";
/** @public */
export interface SarifLog {
    runs: SarifRun[];
}
/** @public */
export interface SarifRun {
    tool: {
        driver: {
            name: string;
            rules: SarifRule[];
        };
    };
    results: SarifResult[];
}
/** @public */
export interface SarifRule {
    id: string;
    properties?: {
        howToFix?: string;
        whyFix?: string;
        primaryCategory?: string;
        [key: string]: unknown;
    };
    messageStrings?: {
        issue?: {
            text: string;
        };
    };
}
/** @public */
export interface SarifResult {
    ruleId: string;
    messageStrings?: {
        issue?: {
            text?: string;
        };
    };
    locations?: {
        physicalLocation?: {
            address?: {
                fullyQualifiedName?: string;
            };
        };
    }[];
    properties?: {
        level?: string;
        [key: string]: unknown;
    };
}
export interface FailureInfo {
    ScreenName: string;
    ControlName: string;
    PropertyName: string;
    Code: string;
    PatternName: PowerAppsPatternInfo;
    FailureReason?: string;
    ControlType?: string;
    FailedPowerFxCode?: string;
}
export interface MsApp {
    appSettings: AppSettings;
    totalCodeComponents: number;
    dataSources: DataSource[];
    appCheckerIssues: AppCheckerIssue[];
    assets: Asset[];
    yaml: PowerAppsYAML;
    totalCanvasComponents: number;
    totalScreens: number;
}
export interface AppSettings {
    Name: string;
    AppPreviewFlagsMap: Record<string, boolean>;
    AppDescription: string;
    DocumentType: string;
}
export interface DataSource {
    Name: string;
    Type: string;
}
export interface DataSourcesJson {
    DataSources: DataSource[];
}
export interface AppCheckerIssue {
    RuleId: string;
    HowToFix: string;
    WhyFix: string;
    Message: string;
    Location: string;
    Severity: string;
    Category: string;
}
export interface Asset {
    mediaName: string;
    mediaSize: number;
    exceedsThreshold: boolean;
}
/** @public */
export interface PowerAppsReviewResult {
    items: PowerAppAnalysis[];
    totalApps: number;
    totalScore: string;
}
/** @public */
export interface PowerAppAnalysis {
    name: string;
    result: PatternResult[];
    totalScreens: number;
    totalCanvasComponents: number;
    totalCodeComponents: number;
    score: string;
}
export interface PowerAppsYAML {
    App?: AppInstance;
    Screens?: Record<string, ScreenInstance>;
    ComponentDefinitions?: Record<string, ComponentDefinitionInstance>;
    DataSources?: Record<string, DataSourceInstance>;
}
export interface AppInstance {
    Properties?: PropertiesFormulaMap;
}
export interface ScreenInstance {
    Properties?: PropertiesFormulaMap;
    Children?: NamedControlInstance[];
    Control?: ControlTypeId;
}
export interface ComponentDefinitionInstance {
    Description?: string;
    AccessAppScope?: boolean;
    CustomProperties?: Record<string, ComponentCustomProperty>;
    Properties?: PropertiesFormulaMap;
    Children?: NamedControlInstance[];
}
export interface DataSourceInstance {
    Type: "Table" | "Actions";
    ConnectorId?: string;
    Parameters?: {
        [key: string]: string;
    };
}
export interface ComponentCustomProperty {
    PropertyKind: "Input" | "Output" | "InputFunction" | "OutputFunction" | "Event" | "Action";
    Description?: string;
    DataType?: string;
    RaiseOnReset?: boolean;
    Default?: string;
}
export interface PropertiesFormulaMap {
    [propertyName: string]: string;
}
export type ControlTypeId = "Component" | "CodeComponent" | "AppInfo" | "HostControl" | "Screen" | "AppTest" | "TestCase" | "TestSuite" | "CommandComponent" | "DataComponent" | "FunctionComponent" | "GroupContainer" | string;
export interface ControlInstance {
    Control: ControlTypeId;
    Group?: string;
    Properties?: PropertiesFormulaMap;
    Children?: NamedControlInstance[];
    ComponentName?: string;
    ComponentLibraryUniqueName?: string;
}
export type NamedControlInstance = Record<string, ControlInstance>;
export interface PfxFunctionParameters {
    [parameterName: string]: {
        Description: string;
        IsRequired: boolean;
        DataType: string;
    };
}
export interface PfxFunctionReturnType {
    DataType?: "Text" | "Number" | "Boolean" | "DateAndTime" | "Screen" | "Record" | "Table" | "Image" | "VideoOrAudio" | "Color" | "Currency";
}
export interface PfxFormula {
    [key: string]: string;
}
export interface EntityName {
    name: string;
}
export interface EntityPropertyName {
    propertyName: string;
}
//# sourceMappingURL=appInterface.d.ts.map