import { GerritConfig, ChangeInfo, ProjectInfo, AccountInfo, GroupInfo, QueryOptions, ReviewInput, BranchInfo, TagInfo, CommitInfo, CommentInfo, DraftInput, IncludedInInfo, ProjectAccessInfo, FileInfo, CloneInfo, ChangeFetchInfo } from './types.js';
export declare class GerritClient {
    private client;
    private config;
    constructor(config: GerritConfig);
    queryChanges(options: QueryOptions): Promise<ChangeInfo[]>;
    getChange(changeId: string, options?: string[]): Promise<ChangeInfo>;
    getChangeDetail(changeId: string): Promise<ChangeInfo>;
    reviewChange(changeId: string, revisionId: string, review: ReviewInput): Promise<any>;
    abandonChange(changeId: string, message?: string): Promise<ChangeInfo>;
    listProjects(options?: {
        limit?: number;
        skip?: number;
        prefix?: string;
        regex?: string;
        description?: boolean;
        all?: boolean;
    }): Promise<{
        [key: string]: ProjectInfo;
    }>;
    getProject(projectName: string): Promise<ProjectInfo>;
    createProject(projectName: string, input: {
        parent?: string;
        description?: string;
        permissionsOnly?: boolean;
        createEmptyCommit?: boolean;
        submitType?: string;
        branches?: string[];
        owners?: string[];
        useContributorAgreements?: boolean;
        useSignedOffBy?: boolean;
        useContentMerge?: boolean;
        requireChangeId?: boolean;
        maxObjectSizeLimit?: string;
        pluginConfigValues?: {
            [key: string]: {
                [key: string]: string;
            };
        };
    }): Promise<ProjectInfo>;
    getAccount(accountId: string): Promise<AccountInfo>;
    getSelf(): Promise<AccountInfo>;
    queryAccounts(query: string, options?: {
        limit?: number;
        skip?: number;
        suggest?: boolean;
        withDetails?: boolean;
    }): Promise<AccountInfo[]>;
    listGroups(options?: {
        limit?: number;
        skip?: number;
        owned?: boolean;
        visibleToAll?: boolean;
        user?: string;
        group?: string;
        regex?: string;
    }): Promise<{
        [key: string]: GroupInfo;
    }>;
    getGroup(groupId: string): Promise<GroupInfo>;
    testConnection(): Promise<{
        success: boolean;
        error?: string;
        account?: AccountInfo;
    }>;
    getServerVersion(): Promise<string>;
    getProjectDescription(projectName: string): Promise<string>;
    getProjectHead(projectName: string): Promise<string>;
    listProjectBranches(projectName: string, options?: {
        limit?: number;
        skip?: number;
        substring?: string;
        regex?: string;
    }): Promise<BranchInfo[]>;
    listProjectTags(projectName: string, options?: {
        limit?: number;
        skip?: number;
        substring?: string;
        regex?: string;
    }): Promise<TagInfo[]>;
    getChangeComments(changeId: string): Promise<{
        [path: string]: CommentInfo[];
    }>;
    replyToInlineComment(changeId: string, revisionId: string, draft: DraftInput): Promise<CommentInfo>;
    getCommit(projectName: string, commitId: string): Promise<CommitInfo>;
    getIncludedIn(changeId: string, revisionId: string): Promise<IncludedInInfo>;
    listFiles(changeId: string, revisionId: string, options?: {
        base?: string;
        parent?: number;
        q?: string;
    }): Promise<{
        [path: string]: FileInfo;
    }>;
    getFileContent(changeId: string, revisionId: string, filePath: string, options?: {
        base?: string;
        parent?: number;
    }): Promise<string>;
    listAccessRights(projectName: string): Promise<ProjectAccessInfo>;
    getProjectCloneInfo(projectName: string): Promise<CloneInfo>;
    getChangeFetchInfo(changeId: string, patchSetNumber?: number): Promise<ChangeFetchInfo>;
    private enhanceError;
    apiCall(method: 'GET' | 'POST' | 'PUT' | 'DELETE', endpoint: string, data?: any): Promise<any>;
}
