/**
 * GithubDiscussionRecapPublisher
 *
 * Publishes a recap as a GitHub Discussion. Discussions are GraphQL-only on
 * GitHub's REST surface; this adapter takes a `GithubDiscussionCreator`
 * function so the GraphQL call site stays injectable + testable. The
 * default factory uses `gh api graphql` so we reuse the same `gh`-resolved
 * token everything else uses (NFR-10).
 */
import { RecapChannel } from '../../../domain/generated/output.js';
import { type IRecapPublisher, type RecapArtifact, type RecapPublishResult, type RecapTarget } from '../../../application/ports/output/services/recap-publisher.interface.js';
export interface GithubDiscussionCreatorInput {
    owner: string;
    repo: string;
    categorySlug: string;
    title: string;
    body: string;
}
export interface GithubDiscussionCreatorResult {
    url: string;
    number: number;
}
export type GithubDiscussionCreator = (input: GithubDiscussionCreatorInput) => Promise<GithubDiscussionCreatorResult>;
/**
 * Default creator — drives the GraphQL endpoint via `gh api graphql`. Reuses
 * the user's existing `gh auth` credentials.
 */
export declare const defaultGithubDiscussionCreator: GithubDiscussionCreator;
export declare class GithubDiscussionRecapPublisher implements IRecapPublisher {
    private readonly creator;
    readonly channel = RecapChannel.GithubDiscussion;
    constructor(creator?: GithubDiscussionCreator);
    publish(artifact: RecapArtifact, target: RecapTarget): Promise<RecapPublishResult>;
}
//# sourceMappingURL=github-discussion-recap-publisher.service.d.ts.map