import { ApiError } from '../api/errors.ts';
import type { LinearConfig } from './config.ts';
export declare class LinearApiError extends ApiError {
    readonly errors: readonly unknown[];
    constructor(message: string, errors?: readonly unknown[], status?: number | null);
}
export interface LinearTransport {
    graphql(query: string, variables?: Record<string, unknown>): Promise<Record<string, unknown>>;
}
export declare class HttpLinearTransport implements LinearTransport {
    protected readonly fetch: typeof fetch;
    private readonly apiKey;
    private readonly baseUrl;
    private readonly timeout;
    constructor(opts: Pick<LinearConfig, 'apiKey' | 'baseUrl' | 'timeout'>);
    graphql(query: string, variables?: Record<string, unknown>): Promise<Record<string, unknown>>;
}
export declare function listTeams(transport: LinearTransport): Promise<Record<string, unknown>[]>;
export declare function listTeamMembers(transport: LinearTransport, teamId: string, limit?: number): Promise<Record<string, unknown>[]>;
export declare function listTeamIssues(transport: LinearTransport, teamId: string, limit?: number, projects?: readonly string[]): Promise<Record<string, unknown>[]>;
export declare function listTeamProjects(transport: LinearTransport, teamId: string, limit?: number): Promise<Record<string, unknown>[]>;
export declare function listTeamCycles(transport: LinearTransport, teamId: string, limit?: number): Promise<Record<string, unknown>[]>;
export declare function listTeamLabels(transport: LinearTransport, teamId: string): Promise<Record<string, unknown>[]>;
export declare function listTeamDocuments(transport: LinearTransport, teamId: string, limit?: number): Promise<Record<string, unknown>[]>;
export declare function resolveTeam(transport: LinearTransport, keyOrId: string): Promise<Record<string, unknown>>;
export declare function getIssue(transport: LinearTransport, issueId: string): Promise<Record<string, unknown>>;
export declare function listIssueComments(transport: LinearTransport, issueId: string): Promise<Record<string, unknown>[]>;
export declare function resolveIssueId(transport: LinearTransport, issueId: string | null, issueKey: string | null): Promise<string>;
export declare function resolveUserId(transport: LinearTransport, assigneeId: string | null, assigneeEmail: string | null): Promise<string>;
export interface IssueCreateInput {
    teamId: string;
    title: string;
    description?: string | null;
}
export declare function issueCreate(transport: LinearTransport, input: IssueCreateInput): Promise<Record<string, unknown>>;
export interface IssueUpdateInput {
    issueId: string;
    title?: string | null;
    description?: string | null;
    stateId?: string | null;
    assigneeId?: string | null;
    priority?: number | null;
    projectId?: string | null;
    labelIds?: readonly string[] | null;
}
export declare function issueUpdate(transport: LinearTransport, input: IssueUpdateInput): Promise<Record<string, unknown>>;
export declare function commentCreate(transport: LinearTransport, issueId: string, body: string): Promise<Record<string, unknown>>;
export declare function commentUpdate(transport: LinearTransport, commentId: string, body: string): Promise<Record<string, unknown>>;
export declare function searchIssues(transport: LinearTransport, query: string, limit?: number): Promise<Record<string, unknown>[]>;
//# sourceMappingURL=client.d.ts.map