import { KickClientConfig, OAuthAuthorizationParams, OAuthToken, OAuthTokenRequest } from "./types";
import { CategoriesModule } from "./modules/categories";
import { ChannelsModule } from "./modules/channels";
import { LivestreamsModule } from "./modules/livestreams";
import { ChatModule } from "./modules/chat";
export declare class KickClient {
    private config;
    private token;
    private tokenPromise;
    readonly categories: CategoriesModule;
    readonly channels: ChannelsModule;
    readonly livestreams: LivestreamsModule;
    readonly chat: ChatModule;
    constructor(config: KickClientConfig);
    generatePKCEParams(): OAuthAuthorizationParams;
    getAuthorizationUrl(params: OAuthAuthorizationParams, scopes?: string[]): string;
    exchangeCodeForToken(tokenRequest: OAuthTokenRequest): Promise<OAuthToken>;
    setToken(token: OAuthToken): void;
    private getAccessToken;
    private autoRefreshToken;
    private getClientCredentialsToken;
    private isTokenValid;
    private refreshAccessToken;
    request<T>(endpoint: string, options?: RequestInit): Promise<T>;
}
