	/**
	 * API Client para Material Types
	 * Gestiona las operaciones CRUD para los tipos de material
	 */
	import { api } from '$lib/api';

	export interface MaterialType {
		key: string;
		type: string;
		description: string;
	}

	export interface MaterialTypeListResponse {
		items: MaterialType[];
		total: number;
		page: number;
		page_size: number;
	}

	export interface CreateMaterialTypeData {
		key: string;
		type: string;
		description: string;
	}

	export interface UpdateMaterialTypeData {
		key?: string;
		type?: string;
		description?: string;
	}

	/**
	 * API para Material Types
	 */
export const materialTypesApi = {
    /**
     * Lista todos los tipos de material con paginación y búsqueda
     * @param companyId - ID de la empresa
     * @param page - Número de página (por defecto 1)
     * @param pageSize - Tamaño de página (por defecto 50)
     * @param type - Filtrar por tipo (ACTIVO FIJO, MATERIALES, PRODUCTOS)
     * @param search - Término de búsqueda (opcional)
     */
    list: (companyId: number, page = 1, pageSize = 50, type?: string, search?: string) => {
        const params = new URLSearchParams({
            company_id: companyId.toString(),
            page: page.toString(),
            page_size: pageSize.toString()
        });
        if (type) {
            params.append('type', type);
        }
        if (search) {
            params.append('search', search);
        }
        return api.get<MaterialTypeListResponse>(
            `/v1/public/reference_data/material-types/?${params.toString()}`
        );
    },

    /**
     * Obtiene un tipo de material por key
     * @param key - Clave del tipo de material
     */
    get: (key: string) => 
        // CORRECTO: Ya tiene el '/' al final
        api.get<MaterialType>(`/v1/public/reference_data/material-types/${key}/`),

    /**
     * Crea un nuevo tipo de material
     * @param data - Datos del tipo de material a crear
     */
    create: (data: CreateMaterialTypeData) =>
        // CORRECTO: Ya tiene el '/' al final
        api.post<MaterialType>('/v1/public/reference_data/material-types/', data),

    /**
     * Actualiza un tipo de material existente
     * @param key - Clave del tipo de material a actualizar
     * @param data - Datos a actualizar
     */
    update: (key: string, data: UpdateMaterialTypeData) =>
        // CORRECTO: Ya tiene el '/' al final
        api.put<MaterialType>(`/v1/public/reference_data/material-types/${key}/`, data),

    /**
     * Elimina un tipo de material
     * @param key - Clave del tipo de material a eliminar
     */
    delete: (key: string) => 
        // CORRECTO: Ya tiene el '/' al final
        api.delete(`/v1/public/reference_data/material-types/${key}/`)
};