import { GuidValue, FilterEngineSettings, RollupMetricSettings } from "@omnia/fx-models";
import { EnterprisePropertyDefinition } from "../enterprise-properties/EnterpriseProperty";
import { AppInstanceScopedQueryTypes, PropertyIndexedType } from "../Enums";
import { MultilingualString } from "../MultilingualString";
import { OrderBy, RollupEnums, RollupFilter } from "../RollupQuery";
import { SpacingSettings } from "../SpacingSetting";
import { AppInstance, AppInstanceInfo, AppInstanceInfoUser, AppInstanceTemplateFilter } from "./App";
export declare class AppInstanceRollupConstants {
    static AppInstanceProperties: {
        Title: string;
        TitleAndLink: string;
        LastVisited: string;
        Description: string;
        Image: string;
    };
}
export interface AppInstanceRollupBlockSettings extends RollupMetricSettings {
    title: MultilingualString;
    querySettings: AppInstanceRollupBlockQuerySettings;
    displaySettings: AppInstanceRollupBlockDisplaySettings;
    filterSettings: AppInstanceRollupBlockFilterSettings;
    filterEngine: FilterEngineSettings;
    pagingSettings: AppInstanceRollupPagingSettings;
}
export interface AppInstanceRollupBlockQuerySettings {
    queryScope: AppInstanceScopedQueryTypes;
    trimByRoleId?: GuidValue;
    useCurrentBusinessProfile: boolean;
    targetBusinessProfileId?: GuidValue;
    appTemplateFilters: Array<AppInstanceTemplateFilter>;
}
export interface AppInstanceRollupBlockDisplaySettings {
    selectedDisplayView: AppInstanceRollupViewRegistrationSettings;
    showFollowStatus: boolean;
    openInNewTab: boolean;
    orderBy: OrderBy;
    spacing?: SpacingSettings;
    noResultText?: MultilingualString;
    fixedHeader: boolean;
}
export interface AppInstanceRollupBlockFilterSettings {
    filters: Array<RollupFilter>;
    enableWildcardSearch: boolean;
    searchBoxSettings: AppInstanceRollupSearchboxSettings;
    hideFilterByDefault: boolean;
}
export interface AppInstanceRollupViewRegistrationSettings {
    viewRegistrationId: GuidValue;
    resultRendererComponentId: GuidValue;
    viewSettings: AppInstanceRollupViewComponentSettings;
}
export interface AppInstanceRollupSearchboxSettings {
    searchKeyword: string;
    searchOnProperties: string[];
    outlined: boolean;
    rounded: boolean;
    filled: boolean;
}
export interface AppInstanceRollupPagingSettings {
    pagingType: RollupEnums.PagingType;
    itemLimit: number;
}
export interface AppInstanceRollupViewRegistration {
    id: GuidValue;
    title: string;
    resultRendererComponentId: GuidValue;
    viewSettingsComponentId: GuidValue;
    pagingTypes: Array<RollupEnums.PagingType>;
    appDefinitionIds?: Array<GuidValue>;
}
export interface IAppInstanceRollupViewComponent {
    settings: AppInstanceRollupBlockSettings;
    items: Array<AppInstance>;
}
export interface IAppInstanceRollupViewSettingsComponent<T extends AppInstanceRollupViewComponentSettings> {
    viewSettings: T;
    selectableProperties: EnterprisePropertyDefinition[];
    onUpdatedViewSettings?: (viewSettings: T) => void;
}
export interface AppInstanceRollupListViewSettings extends AppInstanceRollupViewComponentSettings {
    columns: Array<AppInstanceRollupViewPropertySettings>;
}
export interface AppInstanceRollupCardViewSettings extends AppInstanceRollupViewComponentSettings {
    descriptionProperty: string;
    dateProperty: string;
    personProperty: string;
    termProperties: Array<AppInstanceRollupCardViewTermProperty>;
    cardsPerRow: number;
    cardSpacing?: SpacingSettings;
    elevation: number;
    borderSettings?: AppInstanceRollupCardViewBorderSettings;
    staticTitleSize: boolean;
    titleSize: number;
    cardType: AppInstanceRollupCardViewTypes;
    cardSize: number;
    colorFul: boolean;
    mixCardSize: boolean;
    mixCardType: boolean;
    overlayOpacity: number;
    overlayColor: string;
    titleOnImageColor: string;
}
export interface AppInstanceRollupCardViewTermProperty {
    internalName: string;
    type: PropertyIndexedType;
    showLabel: boolean;
}
export declare enum AppInstanceRollupCardViewTypes {
    BackgroundImage = 1,
    TextImage = 2,
    TitleOnImage = 3,
    Mixed = 4,
    Text = 5
}
export interface AppInstanceRollupCardViewBorderSettings {
    size: number;
    color: string;
    radius: number;
}
export interface AppInstanceRollupViewComponentSettings {
    selectEnterpriseProperties: Array<string>;
    selectDynamicAppProperties: Array<string>;
}
export interface IAppInstanceRollupViewRendererComponent {
    total: number;
    items: AppInstanceInfo[];
    displaySettings: AppInstanceRollupBlockDisplaySettings;
    appInstanceUrlBuilder?: (appInstanceInfo: AppInstanceInfo) => string;
    navigateToAppInstance?: (appInstanceInfo: AppInstanceInfo) => void;
    onFollowAppInstanceClicked?: (appInstanceInfoUser: AppInstanceInfoUser) => void;
}
export interface AppInstanceRollupViewPropertySettings {
    propertyInternalName: string;
    propertyType?: PropertyIndexedType;
    width?: string;
    showHeading: boolean;
}
export interface AppInstanceRollupViewDateTimePropertySettings extends AppInstanceRollupViewPropertySettings {
    dateTimeMode: RollupEnums.DateTimeMode;
    format: string;
}
