import type { EmissionParams, Pollutant } from '@airpredict/shared'; import { http } from './http'; export interface Material { id: string; name: string; category: string; brand?: string; manufacturer?: string; spec?: string; envGrade?: string; healthGrade?: string; usageUnit: string; sortOrder: number; emissionParams: Record; isPublic: boolean; ownerOrgId?: string; updatedAt: string; favorited: boolean; } export interface MaterialQuery { id?: string; name?: string; category?: string; brand?: string; manufacturer?: string; spec?: string; envGrade?: string; healthGrade?: string; scope?: 'public' | 'self'; favorited?: string; page?: number; pageSize?: number; sort?: string; } export interface Paged { total: number; page: number; pageSize: number; items: T[]; } export interface MaterialInput { name: string; category: string; brand?: string; manufacturer?: string; spec?: string; envGrade?: string; healthGrade?: string; usageUnit?: string; sortOrder?: number; emissionParams: Record; } export function listMaterials(q: MaterialQuery) { return http.get>('/materials', { params: q }); } export function getMaterial(id: string) { return http.get(`/materials/${id}`); } export function createMaterial(input: MaterialInput) { return http.post('/materials', input); } export function bulkCreateMaterials(items: MaterialInput[]) { return http.post('/materials/bulk', { items }); } export function updateMaterial(id: string, input: Partial) { return http.patch(`/materials/${id}`, input); } export function deleteMaterial(id: string) { return http.delete(`/materials/${id}`); }