///
import { IClientSettings, ITwitterApiClientPlugin, TClientTokens, TwitterApiPluginResponseOverride, TwitterRateLimit, TwitterResponse } from '../types';
import TweetStream from '../stream/TweetStream';
import type { ClientRequestArgs } from 'http';
import OAuth1Helper from './oauth1.helper';
import type { IGetHttpRequestArgs, IGetStreamRequestArgs, IGetStreamRequestArgsAsync, IGetStreamRequestArgsSync, IWriteAuthHeadersArgs, TAcceptedInitToken } from '../types/request-maker.mixin.types';
import { IComputedHttpRequestArgs } from '../types/request-maker.mixin.types';
export declare class ClientRequestMaker {
bearerToken?: string;
consumerToken?: string;
consumerSecret?: string;
accessToken?: string;
accessSecret?: string;
basicToken?: string;
clientId?: string;
clientSecret?: string;
rateLimits: {
[endpoint: string]: TwitterRateLimit;
};
clientSettings: Partial;
protected _oauth?: OAuth1Helper;
protected static readonly BODY_METHODS: Set;
constructor(settings?: Partial);
/** @deprecated - Switch to `@twitter-api-v2/plugin-rate-limit` */
getRateLimits(): {
[endpoint: string]: TwitterRateLimit;
};
protected saveRateLimit(originalUrl: string, rateLimit: TwitterRateLimit): void;
/** Send a new request and returns a wrapped `Promise`. */
send(requestParams: IGetHttpRequestArgs): Promise>;
/**
* Create a new request, then creates a stream from it as a `TweetStream`.
*
* Request will be sent only if `autoConnect` is not set or `true`: return type will be `Promise`.
* If `autoConnect` is `false`, a `TweetStream` is directly returned and you should call `stream.connect()` by yourself.
*/
sendStream(requestParams: IGetHttpRequestArgs & IGetStreamRequestArgsSync): TweetStream;
sendStream(requestParams: IGetHttpRequestArgs & IGetStreamRequestArgsAsync): Promise>;
sendStream(requestParams: IGetHttpRequestArgs & IGetStreamRequestArgs): Promise> | TweetStream;
initializeToken(token?: TAcceptedInitToken): void;
getActiveTokens(): TClientTokens;
protected buildOAuth(): OAuth1Helper;
protected getOAuthAccessTokens(): {
key: string;
secret: string;
} | undefined;
getPlugins(): ITwitterApiClientPlugin[];
hasPlugins(): boolean;
applyPluginMethod(method: K, args: Parameters[K]>[0]): Promise;
protected writeAuthHeaders({ headers, bodyInSignature, url, method, query, body }: IWriteAuthHeadersArgs): Record;
protected getUrlObjectFromUrlString(url: string): URL;
protected getHttpRequestArgs({ url: stringUrl, method, query: rawQuery, body: rawBody, headers, forceBodyMode, enableAuth, params, }: IGetHttpRequestArgs): IComputedHttpRequestArgs;
protected applyPreRequestConfigHooks(requestParams: IGetHttpRequestArgs): Promise | undefined>;
protected applyPreStreamRequestConfigHooks(requestParams: IGetHttpRequestArgs): void;
protected applyPreRequestHooks(requestParams: IGetHttpRequestArgs, computedParams: IComputedHttpRequestArgs, requestOptions: Partial): Promise;
protected applyPostRequestHooks(requestParams: IGetHttpRequestArgs, computedParams: IComputedHttpRequestArgs, requestOptions: Partial, response: TwitterResponse): Promise;
protected applyResponseErrorHooks(requestParams: IGetHttpRequestArgs, computedParams: IComputedHttpRequestArgs, requestOptions: Partial, promise: Promise>): Promise>;
}