import type { Database } from "bun:sqlite";
import type { FieldResolver } from "./field_resolver.js";
import { type FilterData } from "./filter.js";
import { type SortField } from "./sort.js";
import { type SearchQuery, type SearchResult } from "./types.js";
export declare class Provider {
    #private;
    constructor(fieldResolver: FieldResolver);
    maxFilterExprLimit(max: number): this;
    maxSortExprLimit(max: number): this;
    query(query: SearchQuery): this;
    skipTotal(skipTotal: boolean): this;
    countCol(name: string): this;
    page(page: number): this;
    perPage(perPage: number): this;
    sort(sort: SortField[]): this;
    addSort(field: SortField): this;
    filter(filter: FilterData[]): this;
    addFilter(filter: FilterData): this;
    parse(urlQuery: string): this;
    parseParams(params: URLSearchParams, rawQuery?: string): this;
    exec<T>(db: Database): SearchResult<T>;
    parseAndExec<T>(urlQuery: string, db: Database): SearchResult<T>;
    parseAndExecParams<T>(params: URLSearchParams, db: Database, rawQuery?: string): SearchResult<T>;
}
