/**
 * OCAPI Client for Salesforce Commerce Cloud
 *
 * This module provides a unified interface for making authenticated requests to SFCC's Open Commerce API (OCAPI).
 * It orchestrates specialized client modules for different domain areas while maintaining backward compatibility.
 */
import { OCAPIConfig } from '../types/types.js';
import { OCAPISystemObjectsClient } from './ocapi/system-objects-client.js';
import { OCAPISitePreferencesClient } from './ocapi/site-preferences-client.js';
/**
 * Interface for common query parameters used across multiple endpoints
 */
interface BaseQueryParams {
    start?: number;
    count?: number;
    select?: string;
}
/**
 * Interface for search request structure used in multiple search endpoints
 */
interface SearchRequest {
    query?: {
        text_query?: {
            fields: string[];
            search_phrase: string;
        };
        term_query?: {
            fields: string[];
            operator: string;
            values: any[];
        };
        filtered_query?: {
            filter: any;
            query: any;
        };
        bool_query?: {
            must?: any[];
            must_not?: any[];
            should?: any[];
        };
        match_all_query?: {};
    };
    sorts?: Array<{
        field: string;
        sort_order?: 'asc' | 'desc';
    }>;
    start?: number;
    count?: number;
    select?: string;
}
/**
 * OCAPI Client - Unified interface for SFCC OCAPI operations
 *
 * This class serves as a facade that orchestrates specialized client modules:
 * - SystemObjectsClient: Handles system object definitions and attributes
 * - SitePreferencesClient: Manages site preference operations
 * - AuthClient: Manages OAuth authentication and token lifecycle
 */
export declare class OCAPIClient {
    readonly systemObjects: OCAPISystemObjectsClient;
    readonly sitePreferences: OCAPISitePreferencesClient;
    private readonly authClient;
    constructor(config: OCAPIConfig);
    /**
     * Get all system object definitions
     */
    getSystemObjectDefinitions(params?: BaseQueryParams): Promise<any>;
    /**
     * Get a specific system object definition by object type
     */
    getSystemObjectDefinition(objectType: string): Promise<any>;
    /**
     * Search for system object definitions using complex queries
     */
    searchSystemObjectDefinitions(searchRequest: SearchRequest): Promise<any>;
    /**
     * Search attribute definitions for a specific system object type using complex queries
     */
    searchSystemObjectAttributeDefinitions(objectType: string, searchRequest: SearchRequest): Promise<any>;
    /**
     * Search attribute groups for a specific system object type
     */
    searchSystemObjectAttributeGroups(objectType: string, searchRequest: SearchRequest): Promise<any>;
    /**
     * Search attribute definitions for a specific custom object type using complex queries
     */
    searchCustomObjectAttributeDefinitions(objectType: string, searchRequest: SearchRequest): Promise<any>;
    /**
     * Search site preferences across sites in the specified preference group and instance
     */
    searchSitePreferences(groupId: string, instanceType: string, searchRequest: SearchRequest, options?: {
        maskPasswords?: boolean;
        expand?: string;
    }): Promise<any>;
    /**
     * Get current token expiration for debugging
     */
    getTokenExpiration(): Date | null;
    /**
     * Force refresh the token (useful for testing)
     */
    refreshToken(): Promise<void>;
}
export {};
//# sourceMappingURL=ocapi-client.d.ts.map