/// <reference types="node" />
export type OAuthOptions = {
    consumer: OAuthKey;
    version?: string;
    realm?: string;
    signatureMethod?: string;
    hashMethods?: {
        [name: string]: OAuthHashFn;
    };
    nonceLength?: number;
};
type OAuthRequest = Pick<Request, "method" | "url"> & Partial<Pick<Request, "headers" | "body">>;
type OAuthKey = {
    key: string;
    secret: string;
};
type OAuthHashFn = (key: string, content: string) => Promise<string>;
type OAuthData = {
    oauth_consumer_key: string;
    oauth_nonce: string;
    oauth_signature_method: string;
    oauth_timestamp: string;
    oauth_token: string;
    oauth_version: string;
};
/**
 * A OAuth 1.0a implementation, planned for Magento 2 usage.
 *
 * @see https://oauth.net/core/1.0a/
 */
export declare class OAuth {
    consumer: OAuthKey;
    version: string;
    realm?: string;
    signatureMethod: string;
    hashMethods: {
        [name: string]: OAuthHashFn;
    };
    nonceLength: number;
    constructor(opts: OAuthOptions);
    /**
     * Returns signed Authorization header value
     */
    authorize(request: OAuthRequest, token: OAuthKey): Promise<string>;
    /**
     * Signs Request and adds Authorize header
     */
    authRequest(request: Request, token: OAuthKey): Promise<string>;
    getSignatureBaseString(request: OAuthRequest, oauthData: OAuthData): Promise<string>;
    /**
     * Collects request params used for signing in a entries array format
     */
    collectRequestParams(request: Omit<OAuthRequest, "method">): Promise<string[][]>;
    /**
     * Constructs url for signing according to RFC section 9.1.2 Construct Request URL
     */
    constructRequestUrl(request: Pick<Request, "url">): string;
    hashKey(token: OAuthKey): string;
    nonce(): string;
    timestamp(): string;
}
export {};
