/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
/** An access token possessed by the client. */
export interface AmazonSellingPartnerAPIClientAccessToken {
    /** The access token. */
    accessToken: string;
    /** A unix timestamp representing when the access token expires. */
    expiresTimestamp: number;
}
/** A response from Amazon's OAuth2 endpoint. */
export interface AmazonSellingPartnerAPIClientAccessTokenResponse {
    /** The access token. */
    access_token: string;
    /** The refresh token. */
    refresh_token: string;
    /** The token type. */
    token_type: string;
    /** The amount of time, in seconds, the access token is valid for. */
    expires_in: number;
}
/** Options passed to the Client constructor. */
export interface AmazonSellingPartnerAPIClientOptions {
    /** A refresh token from an Amazon Seller Central app. */
    refreshToken: string;
    /** A client identifier from an Amazon Seller Central app. */
    clientIdentifier: string;
    /** A client secret from an Amazon Seller Central app. */
    clientSecret: string;
    /** An access key for the IAM user associated with the Amazon Seller Central app. */
    iamUserAccessKey: string;
    /** A secret access key for the IAM user associated with the Amazon Seller Central app. */
    iamUserSecretAccessKey: string;
    /**
     * An Amazon Seller Partner API Endpoint to use.
     *
     * @see https://developer-docs.amazon.com/sp-api/docs/sp-api-endpoints
     */
    apiEndpoint: string;
    /**
     * The AWS region to use. This should correspond to the region of the API endpoint.
     *
     * @see https://developer-docs.amazon.com/sp-api/docs/sp-api-endpoints
     */
    awsRegion: string;
}
/** Options passed to a Client's connect method. */
export interface AmazonSellingPartnerAPIClientRequestOptions {
    /** The HTTP method to use. */
    method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
    /** The path to the API you want to call. */
    path: string;
    /** The query parameters to use, if any. */
    searchParams?: URLSearchParams;
    /** The body of the request, if any. */
    body?: string;
}
/** The core client that handles actually connecting to the Selling Partner API. */
export declare class AmazonSellingPartnerAPIClient {
    /** The refresh token from an Amazon Seller Central app. */
    refreshToken: string;
    /** The client identifier from an Amazon Seller Central app. */
    clientIdentifier: string;
    /** The client secret from an Amazon Seller Central app. */
    clientSecret: string;
    /** The access key for the IAM user associated with the Amazon Seller Central app. */
    iamUserAccessKey: string;
    /** The secret access key for the IAM user associated with the Amazon Seller Central app. */
    iamUserSecretAccessKey: string;
    /** The Amazon Seller Partner API Endpoint to use. */
    apiEndpoint: string;
    /** The AWS region to use. */
    awsRegion: string;
    /** The current access tokens this client has. */
    accessTokens: AmazonSellingPartnerAPIClientAccessToken[];
    /** Constructs a new client. */
    constructor(options: AmazonSellingPartnerAPIClientOptions);
    /**
     * Adds an access token to the client.
     *
     * This is intended to be used to add a restricted data token.
     */
    addAccessToken(accessToken: AmazonSellingPartnerAPIClientAccessToken): AmazonSellingPartnerAPIClientAccessToken;
    /** Removes an access token from the client, if it is still present. */
    removeAccessToken(accessToken: AmazonSellingPartnerAPIClientAccessToken): void;
    /**
     * Fetches a fresh access token.
     *
     * @returns A promise that resolves to the access token.
     */
    getCurrentAccessToken(): Promise<AmazonSellingPartnerAPIClientAccessToken>;
    /** Performs a request to the Selling Partner API. */
    request(options: AmazonSellingPartnerAPIClientRequestOptions): Promise<Response>;
    /** Creates signed request headers for an AWS request. */
    createSignedRequestHeaders(options: AmazonSellingPartnerAPIClientRequestOptions): Promise<{
        [key: string]: string;
    }>;
    /** Gets the signing key for a given date. */
    getSigningKey(date: string): Buffer;
}
//# sourceMappingURL=AmazonSellingPartnerAPIClient.d.ts.map