import { Identity, Tag, PromotedTagOptions } from ".";
import { PropertyIndexedType, UserPickingType } from "./Enums";
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
export interface RollupQueryResult {
    total?: number;
    items: Array<object>;
}
export interface RollupSetting {
    includeTotal: boolean;
    itemLimit?: number;
    skip?: number;
    orderBy: Array<OrderBy>;
    resources: Array<ResourceSetting>;
    customFilters?: Array<RollupFilter>;
    displayFields: Array<string>;
}
export interface ResourceSetting {
    id: string;
    idProperty: string;
    filters?: Array<RollupFilter>;
}
export interface OrderBy {
    descending: boolean;
    propertyName: string;
}
export declare enum RollupOtherTypes {
    TextSearches = 80,
    TitleAndLink = 20
}
export interface RollupFilter {
    property: string;
    type: PropertyIndexedType.Boolean | PropertyIndexedType.Number | PropertyIndexedType.DateTime | PropertyIndexedType.Text | PropertyIndexedType.Person | PropertyIndexedType.Taxonomy | RollupOtherTypes.TextSearches | PropertyIndexedType.RichText | PropertyIndexedType.EnterpriseKeywords | PropertyIndexedType.Tags;
    elementName?: string;
    valueObj: RollupFilterValue;
    managedProperty?: string;
    title?: string;
}
export interface TagRollupFilter extends RollupFilter {
    promotedTagOptions: PromotedTagOptions;
}
export interface RollupFilterValue {
}
export interface BooleanPropFilterValue extends RollupFilterValue {
    value: boolean;
}
export interface NumberPropFilterValue extends RollupFilterValue {
    value: number;
}
export interface TextPropFilterValue extends RollupFilterValue {
    value: string;
}
export interface PersonPropFilterValue extends RollupFilterValue {
    value: Array<Identity>;
    displayNames: Array<string>;
    filterSelection: UserPickingType;
}
export interface DatePropFilterValue extends RollupFilterValue {
    fromDate?: Date;
    toDate?: Date;
}
export interface DatePropertyFilterCustomValue {
    fromTodayValue: number;
    operator: RollupEnums.CustomDateOperator;
    unit: RollupEnums.TimePeriodTypes;
}
export interface DatePeriodPropFilterValue extends RollupFilterValue {
    datePeriod: RollupEnums.DatePeriods;
    customValueDetails?: {
        from: DatePropertyFilterCustomValue;
        to: DatePropertyFilterCustomValue;
    };
}
export interface TaxonomyPropFilterValue extends RollupFilterValue {
    fixedTermIds?: Array<GuidValue>;
    termNames: Array<string>;
    filterType: RollupEnums.TaxonomyFilterType;
    includeChildTerms: boolean;
    includeEmpty: boolean;
    targetingPropertyIds: Array<GuidValue>;
    userPropertyBindingId?: string;
}
export interface TagPropertyFilterValue extends RollupFilterValue {
    value: Array<Tag>;
}
export interface TexSearchestPropFilterValue extends TextPropFilterValue {
    orProperties: Array<RollupFilter>;
}
export declare module RollupEnums {
    enum DatePeriods {
        OneWeekFromToday = 1,
        TwoWeeksFromToday = 2,
        OneMonthFromToday = 3,
        LaterThanToday = 4,
        EarlierThanToday = 5,
        Custom = 6
    }
    enum CustomDateOperator {
        Add = 0,
        Subtract = 1
    }
    enum TimePeriodTypes {
        Years = 0,
        Months = 1,
        Days = 2
    }
    enum TaxonomyFilterType {
        FixedValue = 1,
        CurrentPage = 2,
        /**
         * This is the old way of doing it using targeting properties
         */
        User = 3,
        CurrentUser = 4,
        SelectedUser = 5
    }
    enum PagingType {
        NoPaging = 1,
        Classic = 2,
        Scroll = 3
    }
    enum DateTimeMode {
        Normal = 1,
        Social = 2
    }
    enum BooleamFilterOption {
        Yes = 1,
        No = 2
    }
}
export interface RollupFilterComponentState {
    componentid: GuidValue;
    filters: Array<RollupFilterSlimmed>;
}
export interface RollupFilterSlimmed {
    property: string;
    valueObj: RollupFilterValue;
}
