import type { GitHubTransport } from './client.ts';
import { type RepoRef } from './repo.ts';
export declare function listIssues(transport: GitHubTransport, ref: RepoRef, params: Record<string, string>, limit: number): Promise<Record<string, unknown>[]>;
export declare function getIssue(transport: GitHubTransport, ref: RepoRef, number: number): Promise<unknown>;
export declare function createIssue(transport: GitHubTransport, ref: RepoRef, body: Record<string, unknown>): Promise<unknown>;
export declare function editIssue(transport: GitHubTransport, ref: RepoRef, number: number, body: Record<string, unknown>): Promise<unknown>;
export declare function commentIssue(transport: GitHubTransport, ref: RepoRef, number: number, body: string): Promise<unknown>;
export declare function issueComments(transport: GitHubTransport, ref: RepoRef, number: number): Promise<Record<string, unknown>[]>;
/** The selection for each half of gh's IssueByNumber; an empty one is left out. */
export interface IssueSelections {
    readonly issue: string;
    readonly pull: string;
}
/**
 * The selected fields of one issue, over GraphQL, as gh's IssueByNumber asks
 * for them for `issue view --json`: the number read as an issue or as a pull
 * request, each half with its own selection. A selection that reads a later
 * page of a connection is given that cursor as `endCursor`.
 *
 * Args:
 *   transport (GitHubTransport): the API client.
 *   ref (RepoRef): the repository.
 *   number (number): the issue or pull request.
 *   selections (IssueSelections): what to read of each.
 *   endCursor (string | undefined): the cursor `$endCursor` carries.
 */
export declare function issueFields(transport: GitHubTransport, ref: RepoRef, number: number, selections: IssueSelections, endCursor?: string): Promise<Record<string, unknown>>;
/** The narrowing `gh issue list` applies before it lists. */
export interface IssueListFilter {
    readonly states: readonly string[];
    readonly assignee?: string | undefined;
    readonly author?: string | undefined;
    readonly labels?: readonly string[];
}
/**
 * The selected fields of a repository's issues, over GraphQL, as gh's
 * IssueList asks for them for `issue list --json`: newest first, a page of
 * up to 100 at a time until `limit`. gh reaches for search to narrow by
 * label; the connection's own `labels` filter narrows to the same issues.
 *
 * Args:
 *   transport (GitHubTransport): the API client.
 *   ref (RepoRef): the repository.
 *   filter (IssueListFilter): the states, assignee, author and labels.
 *   limit (number): how many issues at most.
 *   selection (string): the GraphQL selection for each issue.
 */
export declare function listIssueFields(transport: GitHubTransport, ref: RepoRef, filter: IssueListFilter, limit: number, selection: string): Promise<Record<string, unknown>[]>;
//# sourceMappingURL=issue.d.ts.map