import type { AxiosRequestConfig } from "axios";
import OAuth from "oauth-1.0a";
import type { WooRestApiMethod, IWooRestApiOptions, WooRestApiEndpoint, OrdersMainParams, ProductsMainParams, SystemStatusParams, CouponsParams, CustomersParams, DELETE, Orders, Products, Customers, Coupons, SystemStatus, WooCommerceApiResponse } from "./types/index.js";
import { type RetryStrategy } from "./http/RetryStrategy.js";
import { type Throttler } from "./http/Throttler.js";
export type { WooRestApiMethod, IWooRestApiQuery, IWooRestApiOptions, WooRestApiEndpoint, OrdersMainParams, ProductsMainParams, SystemStatusParams, CouponsParams, CustomersParams, DELETE, Orders, Products, Customers, Coupons, SystemStatus, WooCommerceApiResponse, } from "./types/index.js";
export { WooCommerceApiError, AuthenticationError, OptionsException } from "./types/index.js";
export type WooRestApiOptions = IWooRestApiOptions<AxiosRequestConfig>;
export type WooRestApiParams = CouponsParams & CustomersParams & OrdersMainParams & ProductsMainParams & SystemStatusParams & DELETE;
export default class WooCommerceRestApi<T extends WooRestApiOptions> {
    protected _opt: T;
    protected _throttler: Throttler;
    protected _retryStrategy: RetryStrategy;
    constructor(opt: T);
    _setDefaultsOptions(opt: T): void;
    protected createThrottler(max?: number): Throttler;
    protected createRetryStrategy(cfg?: IWooRestApiOptions["retryConfig"]): RetryStrategy;
    private _acquireSlot;
    private _releaseSlot;
    private _executeWithRetry;
    _normalizeQueryString(url: string, params: Partial<Record<string, any>>): string;
    _getUrl(endpoint: string, params: Partial<Record<string, unknown>>): string;
    _getOAuth(): OAuth;
    _request(method: WooRestApiMethod, endpoint: string, data?: Record<string, unknown>, params?: Record<string, unknown>): Promise<import("axios").AxiosResponse>;
    get<T = unknown>(endpoint: WooRestApiEndpoint, params?: Partial<WooRestApiParams>): Promise<WooCommerceApiResponse<T>>;
    post<T = unknown>(endpoint: WooRestApiEndpoint, data: Record<string, unknown>, params?: Partial<WooRestApiParams>): Promise<WooCommerceApiResponse<T>>;
    put<T = unknown>(endpoint: WooRestApiEndpoint, data: Record<string, unknown>, params?: Partial<WooRestApiParams>): Promise<WooCommerceApiResponse<T>>;
    delete<T = unknown>(endpoint: WooRestApiEndpoint, data: Pick<WooRestApiParams, "force">, params: Pick<WooRestApiParams, "id">): Promise<WooCommerceApiResponse<T>>;
    options<T = unknown>(endpoint: WooRestApiEndpoint, params?: Partial<WooRestApiParams>): Promise<WooCommerceApiResponse<T>>;
    getProducts(params?: Record<string, unknown>): Promise<WooCommerceApiResponse<Products[]>>;
    getProduct(id: number): Promise<WooCommerceApiResponse<Products>>;
    createProduct(productData: Partial<Products>): Promise<WooCommerceApiResponse<Products>>;
    updateProduct(id: number, productData: Partial<Products>): Promise<WooCommerceApiResponse<Products>>;
    getOrders(params?: Record<string, unknown>): Promise<WooCommerceApiResponse<Orders[]>>;
    getOrder(id: number): Promise<WooCommerceApiResponse<Orders>>;
    createOrder(orderData: Partial<Orders>): Promise<WooCommerceApiResponse<Orders>>;
    getCustomers(params?: Partial<CustomersParams>): Promise<WooCommerceApiResponse<Customers[]>>;
    getCustomer(id: number): Promise<WooCommerceApiResponse<Customers>>;
    getCoupons(params?: Partial<CouponsParams>): Promise<WooCommerceApiResponse<Coupons[]>>;
    getSystemStatus(): Promise<WooCommerceApiResponse<SystemStatus>>;
}
export { parsePaginationHeaders, collectAllPages, type PaginationInfo } from "./utils/PaginationHelper.js";
//# sourceMappingURL=index.d.ts.map