import { http, unwrapApiResponse, type ApiEnvelope } from '@/shared/api/http' import type { CreateCustomerRuleVersionRequest, CustomerPricingRule, CustomerRuleQuery, } from './types' type RawRule = Omit & { id: string | number tenantId: string | number customerId: string | number } function normalizeRule(rule: RawRule): CustomerPricingRule { return { ...rule, id: String(rule.id), tenantId: String(rule.tenantId), customerId: String(rule.customerId), } } export async function listCustomerPricingRules(query: CustomerRuleQuery): Promise { const tenantId = query.tenantId?.trim() const ruleCode = query.ruleCode?.trim() const response = await http.get>('/platform/v1/fba-pricing/customer-rules', { params: { ...(tenantId ? { tenantId } : {}), ...(ruleCode ? { ruleCode } : {}), }, }) return unwrapApiResponse(response).map(normalizeRule) } export async function getCustomerPricingRule(tenantId: string, id: string): Promise { const response = await http.get>(`/platform/v1/fba-pricing/customer-rules/${id}`, { params: { tenantId }, }) return normalizeRule(unwrapApiResponse(response)) } export async function createCustomerPricingRuleVersion( tenantId: string, request: CreateCustomerRuleVersionRequest, ): Promise { const response = await http.post>( '/platform/v1/fba-pricing/customer-rules/versions', request, { params: { tenantId } }, ) return normalizeRule(unwrapApiResponse(response)) } export async function disableCustomerPricingRule(tenantId: string, id: string): Promise { const response = await http.delete>(`/platform/v1/fba-pricing/customer-rules/${id}`, { params: { tenantId }, }) unwrapApiResponse(response) }