/**
 * Amazon Selling Partner API Authentication Module
 */
import { AuthConfig, AuthTokens, SignableRequest } from '../types/auth.js';
/**
 * Amazon Selling Partner API Authentication
 *
 * Handles OAuth 2.0 authentication flow, token management, and AWS Signature V4 signing
 */
export declare class AmazonAuth {
    private credentials;
    private region;
    private marketplaceId;
    private tokenCacheTimeMs;
    private tokens;
    /**
     * Create a new AmazonAuth instance
     *
     * @param config Authentication configuration
     */
    constructor(config: AuthConfig);
    /**
     * Validate that all required credentials are provided
     */
    private validateCredentials;
    /**
     * Get the current access token, refreshing if necessary
     *
     * @returns Promise resolving to the access token
     */
    getAccessToken(): Promise<string>;
    /**
     * Refresh the access token using the refresh token
     *
     * @returns Promise resolving to the new auth tokens
     */
    refreshAccessToken(): Promise<AuthTokens>;
    /**
     * Sign a request with AWS Signature V4
     *
     * @param request Request to sign
     * @returns Promise resolving to the signed request
     */
    signRequest(request: SignableRequest): Promise<SignableRequest>;
    /**
     * Generate a signed request for the Amazon Selling Partner API
     *
     * @param request Request to sign
     * @returns Promise resolving to the signed request with access token
     */
    generateSecuredRequest(request: SignableRequest): Promise<SignableRequest>;
    /**
     * Get AWS Signature V4 signing key
     *
     * @param key Secret access key
     * @param dateStamp Date in YYYYMMDD format
     * @param regionName AWS region name
     * @param serviceName AWS service name
     * @returns Signing key
     */
    private getSignatureKey;
}
