import { GPSMetadata } from './PhotoDTO'; export declare enum SearchQueryTypes { AND = 1, OR = 2, SOME_OF = 3, UNKNOWN_RELATION = 99999, date = 10, rating = 12, resolution = 14, person_count = 16, distance = 50, orientation = 51, date_pattern = 60, any_text = 100, caption = 101, directory = 102, file_name = 103, keyword = 104, person = 105, position = 106 } export declare const ListSearchQueryTypes: SearchQueryTypes[]; export declare const TextSearchQueryTypes: SearchQueryTypes[]; export declare const RangeSearchQueryTypes: SearchQueryTypes[]; export declare const MetadataSearchQueryTypes: SearchQueryTypes[]; export declare enum TextSearchQueryMatchTypes { exact_match = 1, like = 2 } export interface SearchQueryDTO { type: SearchQueryTypes; } export interface NegatableSearchQuery extends SearchQueryDTO { negate?: boolean; } export interface SearchListQuery extends SearchQueryDTO { list: SearchQueryDTO[]; } export interface ANDSearchQuery extends SearchQueryDTO, SearchListQuery { type: SearchQueryTypes.AND; list: SearchQueryDTO[]; } export interface ORSearchQuery extends SearchQueryDTO, SearchListQuery { type: SearchQueryTypes.OR; list: SearchQueryDTO[]; } export interface SomeOfSearchQuery extends SearchQueryDTO, SearchListQuery { type: SearchQueryTypes.SOME_OF; list: NegatableSearchQuery[]; min?: number; } export interface TextSearch extends NegatableSearchQuery { type: SearchQueryTypes.any_text | SearchQueryTypes.person | SearchQueryTypes.keyword | SearchQueryTypes.position | SearchQueryTypes.caption | SearchQueryTypes.file_name | SearchQueryTypes.directory; matchType?: TextSearchQueryMatchTypes; value: string; } export interface DistanceSearch extends NegatableSearchQuery { type: SearchQueryTypes.distance; from: { value?: string; GPSData?: GPSMetadata; }; distance: number; } export interface RangeSearch extends NegatableSearchQuery { min?: number; max?: number; } export interface DateSearch extends RangeSearch { type: SearchQueryTypes.date; min?: number; max?: number; } export interface RatingSearch extends RangeSearch { type: SearchQueryTypes.rating; min?: number; max?: number; } export interface PersonCountSearch extends RangeSearch { type: SearchQueryTypes.person_count; min?: number; max?: number; } export interface ResolutionSearch extends RangeSearch { type: SearchQueryTypes.resolution; min?: number; max?: number; } export interface OrientationSearch { type: SearchQueryTypes.orientation; landscape: boolean; } export declare enum DatePatternFrequency { every_week = 1, every_month = 2, every_year = 3, days_ago = 10, weeks_ago = 11, months_ago = 12, years_ago = 13 } export interface DatePatternSearch extends NegatableSearchQuery { type: SearchQueryTypes.date_pattern; daysLength: number; frequency: DatePatternFrequency; agoNumber?: number; negate?: boolean; }