/**
 * Reports API client for Amazon Selling Partner API
 */
import { BaseApiClient } from './base-client.js';
import { AuthConfig } from '../types/auth.js';
/**
 * Report processing status
 */
export type ReportProcessingStatus = 'CANCELLED' | 'DONE' | 'FATAL' | 'IN_PROGRESS' | 'IN_QUEUE';
/**
 * Report type
 */
export type ReportType = 'GET_FLAT_FILE_OPEN_LISTINGS_DATA' | 'GET_MERCHANT_LISTINGS_ALL_DATA' | 'GET_MERCHANT_LISTINGS_DATA' | 'GET_MERCHANT_LISTINGS_INACTIVE_DATA' | 'GET_MERCHANT_LISTINGS_DATA_BACK_COMPAT' | 'GET_MERCHANT_LISTINGS_DATA_LITE' | 'GET_MERCHANT_LISTINGS_DATA_LITER' | 'GET_MERCHANT_CANCELLED_LISTINGS_DATA' | 'GET_MERCHANT_LISTINGS_DEFECT_DATA' | 'GET_PAN_EU_OFFER_STATUS' | 'GET_FLAT_FILE_ORDERS_DATA' | 'GET_ORDERS_DATA' | 'GET_FLAT_FILE_ALL_ORDERS_DATA_BY_LAST_UPDATE' | 'GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE' | 'GET_XML_ALL_ORDERS_DATA_BY_LAST_UPDATE' | 'GET_XML_ALL_ORDERS_DATA_BY_ORDER_DATE' | 'GET_FBA_FULFILLMENT_CUSTOMER_SHIPMENT_SALES_DATA' | 'GET_FBA_FULFILLMENT_CUSTOMER_SHIPMENT_PROMOTION_DATA' | 'GET_FBA_FULFILLMENT_CUSTOMER_TAXES_DATA' | 'GET_AFN_INVENTORY_DATA' | 'GET_AFN_INVENTORY_DATA_BY_COUNTRY' | 'GET_FBA_FULFILLMENT_CURRENT_INVENTORY_DATA' | 'GET_FBA_FULFILLMENT_MONTHLY_INVENTORY_DATA' | 'GET_FBA_FULFILLMENT_INVENTORY_RECEIPTS_DATA' | 'GET_RESERVED_INVENTORY_DATA' | 'GET_FBA_FULFILLMENT_INVENTORY_SUMMARY_DATA' | 'GET_FBA_FULFILLMENT_INVENTORY_ADJUSTMENTS_DATA' | 'GET_FBA_FULFILLMENT_INVENTORY_HEALTH_DATA' | 'GET_FBA_MYI_UNSUPPRESSED_INVENTORY_DATA' | 'GET_FBA_MYI_ALL_INVENTORY_DATA' | 'GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT' | 'GET_SELLER_FEEDBACK_DATA' | 'GET_V1_SELLER_PERFORMANCE_REPORT' | 'GET_V2_SETTLEMENT_REPORT_DATA_FLAT_FILE' | 'GET_V2_SETTLEMENT_REPORT_DATA_XML' | 'GET_AMAZON_FULFILLED_SHIPMENTS_DATA' | 'GET_FBA_INVENTORY_PLANNING_DATA' | 'GET_SALES_AND_TRAFFIC_REPORT';
/**
 * Report
 */
export interface Report {
    /**
     * Report ID
     */
    reportId: string;
    /**
     * Report type
     */
    reportType: ReportType;
    /**
     * Processing status
     */
    processingStatus: ReportProcessingStatus;
    /**
     * Marketplace IDs
     */
    marketplaceIds?: string[];
    /**
     * Created time
     */
    createdTime: string;
    /**
     * Processing start time
     */
    processingStartTime?: string;
    /**
     * Processing end time
     */
    processingEndTime?: string;
    /**
     * Report document ID
     */
    reportDocumentId?: string;
    /**
     * Data start time
     */
    dataStartTime?: string;
    /**
     * Data end time
     */
    dataEndTime?: string;
}
/**
 * Report document
 */
export interface ReportDocument {
    /**
     * Report document ID
     */
    reportDocumentId: string;
    /**
     * URL to download the report
     */
    url: string;
    /**
     * Compression algorithm
     */
    compressionAlgorithm?: 'GZIP';
}
/**
 * Parameters for creating a report
 */
export interface CreateReportParams {
    /**
     * Report type
     */
    reportType: ReportType;
    /**
     * Marketplace IDs
     */
    marketplaceIds: string[];
    /**
     * Data start time
     */
    dataStartTime?: string;
    /**
     * Data end time
     */
    dataEndTime?: string;
    /**
     * Report options
     */
    reportOptions?: Record<string, string>;
}
/**
 * Parameters for getting a report
 */
export interface GetReportParams {
    /**
     * Report ID
     */
    reportId: string;
}
/**
 * Parameters for getting a report document
 */
export interface GetReportDocumentParams {
    /**
     * Report document ID
     */
    reportDocumentId: string;
}
/**
 * Parameters for getting reports
 */
export interface GetReportsParams {
    /**
     * Report types
     */
    reportTypes?: ReportType[];
    /**
     * Processing statuses
     */
    processingStatuses?: ReportProcessingStatus[];
    /**
     * Marketplace IDs
     */
    marketplaceIds?: string[];
    /**
     * Page size
     */
    pageSize?: number;
    /**
     * Created since
     */
    createdSince?: string;
    /**
     * Created until
     */
    createdUntil?: string;
    /**
     * Next token for pagination
     */
    nextToken?: string;
}
/**
 * Create report result
 */
export interface CreateReportResult {
    /**
     * Report ID
     */
    reportId: string;
}
/**
 * Get reports result
 */
export interface GetReportsResult {
    /**
     * Reports
     */
    reports: Report[];
    /**
     * Next token for pagination
     */
    nextToken?: string;
}
/**
 * Reports API client for Amazon Selling Partner API
 */
export declare class ReportsClient extends BaseApiClient {
    /**
     * API version
     */
    private readonly apiVersion;
    /**
     * Create a new ReportsClient instance
     *
     * @param authConfig Authentication configuration
     */
    constructor(authConfig: AuthConfig);
    /**
     * Create a report
     *
     * @param params Parameters for creating a report
     * @returns Promise resolving to the create report result
     */
    createReport(params: CreateReportParams): Promise<CreateReportResult>;
    /**
     * Get a report
     *
     * @param params Parameters for getting a report
     * @returns Promise resolving to the report
     */
    getReport(params: GetReportParams): Promise<Report>;
    /**
     * Get a report document
     *
     * @param params Parameters for getting a report document
     * @returns Promise resolving to the report document
     */
    getReportDocument(params: GetReportDocumentParams): Promise<ReportDocument>;
    /**
     * Get reports
     *
     * @param params Parameters for getting reports
     * @returns Promise resolving to the get reports result
     */
    getReports(params?: GetReportsParams): Promise<GetReportsResult>;
    /**
     * Cancel a report
     *
     * @param params Parameters for canceling a report
     * @returns Promise resolving to void
     */
    cancelReport(params: GetReportParams): Promise<void>;
    /**
     * Download a report document
     *
     * @param reportDocumentId Report document ID
     * @returns Promise resolving to the report content
     */
    downloadReportDocument(reportDocumentId: string): Promise<string>;
    /**
     * Validate create report parameters
     *
     * @param params Parameters to validate
     * @throws Error if validation fails
     */
    private validateCreateReportParams;
}
