import { AskCodebaseRequest, AskCodebaseResponse, FileSourceRequest, ListReposQueryParams, SearchRequest, ListCommitsQueryParamsSchema, ListLanguageModelsResponse, ListTreeApiRequest, ListTreeApiResponse } from './types.js';
export declare const search: (request: SearchRequest) => Promise<{
    stats: {
        actualMatchCount: number;
        totalMatchCount: number;
        duration: number;
        fileCount: number;
        filesSkipped: number;
        contentBytesLoaded: number;
        indexBytesLoaded: number;
        crashes: number;
        shardFilesConsidered: number;
        filesConsidered: number;
        filesLoaded: number;
        shardsScanned: number;
        shardsSkipped: number;
        shardsSkippedFilter: number;
        ngramMatches: number;
        ngramLookups: number;
        wait: number;
        matchTreeConstruction: number;
        matchTreeSearch: number;
        regexpsConsidered: number;
        flushReason: string;
    };
    files: {
        fileName: {
            text: string;
            matchRanges: {
                start: {
                    byteOffset: number;
                    lineNumber: number;
                    column: number;
                };
                end: {
                    byteOffset: number;
                    lineNumber: number;
                    column: number;
                };
            }[];
        };
        webUrl: string;
        repository: string;
        repositoryId: number;
        language: string;
        chunks: {
            content: string;
            matchRanges: {
                start: {
                    byteOffset: number;
                    lineNumber: number;
                    column: number;
                };
                end: {
                    byteOffset: number;
                    lineNumber: number;
                    column: number;
                };
            }[];
            contentStart: {
                byteOffset: number;
                lineNumber: number;
                column: number;
            };
            symbols?: {
                symbol: string;
                kind: string;
                parent?: {
                    symbol: string;
                    kind: string;
                } | undefined;
            }[] | undefined;
        }[];
        externalWebUrl?: string | undefined;
        branches?: string[] | undefined;
        content?: string | undefined;
    }[];
    repositoryInfo: {
        id: number;
        codeHostType: string;
        name: string;
        displayName?: string | undefined;
        webUrl?: string | undefined;
    }[];
    isSearchExhaustive: boolean;
}>;
export declare const listRepos: (queryParams?: ListReposQueryParams) => Promise<{
    repos: {
        codeHostType: string;
        repoId: number;
        repoName: string;
        webUrl: string;
        isFork: boolean;
        isArchived: boolean;
        repoDisplayName?: string | undefined;
        externalWebUrl?: string | undefined;
        imageUrl?: string | undefined;
        indexedAt?: Date | undefined;
        pushedAt?: Date | undefined;
        defaultBranch?: string | undefined;
    }[];
    totalCount: number;
}>;
export declare const getFileSource: (request: FileSourceRequest) => Promise<{
    source: string;
    language: string;
    path: string;
    repo: string;
    repoCodeHostType: string;
    webUrl: string;
    repoDisplayName?: string | undefined;
    repoExternalWebUrl?: string | undefined;
    externalWebUrl?: string | undefined;
}>;
export declare const listCommits: (queryParams: ListCommitsQueryParamsSchema) => Promise<{
    commits: {
        hash: string;
        date: string;
        message: string;
        refs: string;
        body: string;
        author_name: string;
        author_email: string;
    }[];
    totalCount: number;
}>;
/**
 * Fetches a repository tree (or subtree union) from the Sourcebot tree API.
 *
 * @param request - Repository name, revision, and path selectors for the tree query
 * @returns A tree response rooted at `tree` containing nested `tree`/`blob` nodes
 */
export declare const listTree: (request: ListTreeApiRequest) => Promise<ListTreeApiResponse>;
/**
 * Asks a natural language question about the codebase using the Sourcebot AI agent.
 * This is a blocking call that runs the full agent loop and returns when complete.
 *
 * @param request - The question and optional repo filters
 * @returns The agent's answer, chat URL, sources, and metadata
 */
export declare const askCodebase: (request: AskCodebaseRequest) => Promise<AskCodebaseResponse>;
/**
 * Lists the available language models configured on the Sourcebot instance.
 *
 * @returns Array of language model info objects
 */
export declare const listLanguageModels: () => Promise<ListLanguageModelsResponse>;
