/**
 * @fileoverview GitHub API Service for functions
 * @description Server-safe GitHub API utilities for repository management
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
/** Configuration for authenticating with the GitHub API. */
export interface GitHubApiConfig {
    accessToken: string;
    baseUrl?: string;
}
/** GitHub user profile returned by the API. */
export interface GitHubUser {
    id: number;
    login: string;
    email: string;
    name?: string;
    avatar_url: string;
}
/** GitHub repository metadata returned by the API. */
export interface GitHubRepository {
    id: number;
    name: string;
    full_name: string;
    private: boolean;
    owner: {
        login: string;
        id: number;
    };
}
/** Request payload for adding a collaborator to a GitHub repository. */
export interface AddCollaboratorRequest {
    owner: string;
    repo: string;
    username: string;
    permission?: 'pull' | 'triage' | 'push' | 'maintain' | 'admin';
}
/** Error response structure from the GitHub API. */
export interface GitHubApiError {
    message: string;
    documentation_url?: string;
    status?: number;
}
/**
 * GitHub API Service for server-side operations
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare class GitHubApiService {
    private config;
    constructor(config: GitHubApiConfig);
    /**
     * Get the current authenticated user
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    getCurrentUser(): Promise<GitHubUser>;
    /**
     * Get user repositories
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    getUserRepositories(username?: string): Promise<GitHubRepository[]>;
    /**
     * Add a collaborator to a repository
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    addCollaborator(request: AddCollaboratorRequest): Promise<boolean>;
    /**
     * Check if a user is a collaborator on a repository
     * Uses GitHub's direct API endpoint for efficiency
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    isCollaborator(owner: string, repo: string, username: string): Promise<boolean>;
    /**
     * Remove a collaborator from a repository
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    removeCollaborator(owner: string, repo: string, username: string): Promise<boolean>;
    /**
     * Add a user to an organization team
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    addTeamMember(org: string, teamSlug: string, username: string, role?: 'member' | 'maintainer'): Promise<boolean>;
    /**
     * Remove a user from an organization team
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    removeTeamMember(org: string, teamSlug: string, username: string): Promise<boolean>;
    /**
     * Check if a user is a member of an organization team
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    isTeamMember(org: string, teamSlug: string, username: string): Promise<boolean>;
    /**
     * Make an authenticated request to the GitHub API
     *
     * @version 0.1.0
     * @since 0.0.1
     * @author AMBROISE PARK Consulting
     */
    private request;
}
/**
 * Create a GitHub API service instance
 */
export declare function createGitHubApiService(accessToken: string): GitHubApiService;
