export interface BasicSearchOptions {
    search?: string;
    searchFields?: string[];
    filters?: Record<string, any>;
    orderBy?: Record<string, 'asc' | 'desc'>;
}
export type AdvancedFilterOperator = 'equals' | 'not' | 'contains' | 'startsWith' | 'endsWith' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'notIn' | 'isNull' | 'isNotNull';
export interface AdvancedFilter {
    operator: AdvancedFilterOperator;
    value?: any;
}
export interface RelationConfig {
    defaultIncludes?: Record<string, boolean | any>;
    availableIncludes?: string[];
    maxDepth?: number;
    allowNested?: boolean;
    customIncludes?: Record<string, any>;
}
export interface RelationValidationResult {
    validatedIncludes: Record<string, boolean | any>;
    invalidKeys: string[];
    depthExceeded: boolean;
}
export interface AdvancedSearchOptions extends BasicSearchOptions {
    where?: Record<string, any>;
    advancedFilters?: Record<string, AdvancedFilter>;
    logicalOperator?: 'AND' | 'OR';
    include?: Record<string, boolean | any>;
    select?: Record<string, boolean>;
    requestedIncludes?: string[];
}
export interface SearchConfig {
    defaultSearchFields: string[];
    caseSensitive?: boolean;
    searchMode?: 'contains' | 'startsWith' | 'endsWith';
    maxSearchFields?: number;
    allowedAdvancedFields?: string[];
    maxAdvancedFilters?: number;
}
export interface SearchQuery {
    page?: number;
    limit?: number;
    search?: string;
    searchFields?: string;
    sortBy?: string;
    sortOrder?: 'asc' | 'desc';
    include?: string;
    [key: string]: any;
}
export interface QueryBuilderResult {
    where?: Record<string, any>;
    include?: Record<string, boolean | any>;
    select?: Record<string, boolean>;
    orderBy?: any;
}
