import { get_object } from './api_get_object';
import type { key_val } from '$lib/stores/ae_stores';

/**
 * Get a list of lookup objects (V3)
 * Standardized lookup data like countries, timezones, and subdivisions.
 * Updated 2026-02-20
 *
 * Endpoint: GET /v3/lookup/{lu_type}/list
 */
export async function get_ae_lookup_li({
    api_cfg,
    lu_type,
    site_id,
    for_type,
    for_id,
    include_disabled = false,
    only_priority = false,
    order_by_li = null,
    limit = null,
    offset = null,
    params = {},
    headers = {},
    log_lvl = 0
}: {
    api_cfg: any;
    lu_type: 'country' | 'country_subdivision' | 'time_zone' | string;
    site_id?: string;
    for_type?: string;
    for_id?: string;
    include_disabled?: boolean;
    only_priority?: boolean;
    order_by_li?: Record<string, 'ASC' | 'DESC'> | null;
    limit?: number | null;
    offset?: number | null;
    params?: key_val;
    headers?: Record<string, string>;
    log_lvl?: number;
}) {
    if (log_lvl) {
        console.log(`*** get_ae_lookup_li() *** lu_type=${lu_type}`);
    }

    const endpoint = `/v3/lookup/${lu_type}/list`;

    // Build query params
    if (site_id) params['site_id'] = site_id;
    if (for_type) params['for_type'] = for_type;
    if (for_id) params['for_id'] = for_id;
    if (include_disabled) params['include_disabled'] = true;
    if (only_priority) params['only_priority'] = true;
    if (order_by_li) params['order_by_li'] = JSON.stringify(order_by_li);
    if (limit != null) params['limit'] = limit;
    if (offset != null) params['offset'] = offset;

    // Lookup data is often global; ensure account context is handled if needed,
    // but GUIDE says it uses site Whitelist Policy.
    // If no account_id is present in api_cfg, we might need 'x-no-account-id'
    // for some lookups if they are public.

    return await get_object({
        api_cfg,
        endpoint,
        params,
        headers,
        log_lvl
    });
}
