/** * Mexico Products Resource * * Extends ProductsResource with Mexico-specific behavior: * - Accepts flattened CreateMexProductInput (MX fields at root level) * - Automatically injects scopes: ["MX"] * - Returns MexProduct models */ import type { CreateMexProductInput, CreateProductInput, ListOptions, PaginatedResponse, ProductFilter, ProductSort, UpdateMexProductInput, UpdateProductInput, UpsertMexProductInput, UpsertResult } from "@artu-ai/shared"; import { MexProduct, type ProductData } from "../../models"; import { ProductsResource } from "../products"; /** * Mexico-scoped products resource. * * Provides the same operations as ProductsResource but with: * - Flattened input types (MX fields at root level) * - Automatic scopes injection on create/update * - MexProduct model return type * * @example * ```typescript * const mexSdk = new ComplianceSDK({ * apiKey, * environment: "test", * scope: "MX", * }); * * const product = await mexSdk.products.create({ * name: "Premium Plan", * actividadVulnerable: { * ARI: { operationType: "1501" }, * }, * }); * ``` */ export declare class MexProductsResource extends ProductsResource { /** * Creates a new Mexico product with flattened input. */ create(data: CreateMexProductInput): Promise; /** * Retrieves a product by ID. */ retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; /** * Retrieves a product by externalId. */ retrieveByExternalId(externalId: string, opts?: { crossScope?: boolean; }): Promise; /** * Updates a Mexico product with flattened input. */ update(id: string, data: UpdateMexProductInput): Promise; /** * Lists Mexico products with optional filtering. */ list(options?: ListOptions & { crossScope?: boolean; }): Promise>; /** * Counts Mexico products matching the given filter. */ count(filter?: ProductFilter, options?: { crossScope?: boolean; }): Promise; /** * Iterates over Mexico products. */ iterate(options?: { filter?: ProductFilter; sort?: TSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; /** * Creates or updates a Mexico product by externalId. */ upsertByExternalId(data: UpsertMexProductInput): Promise>; /** * Transforms flattened MX input to nested API format. */ protected transformToNested(data: CreateMexProductInput): CreateProductInput; /** * Transforms flattened MX update input to nested API format. */ protected transformUpdateToNested(data: UpdateMexProductInput): UpdateProductInput; /** * Instantiates a MexProduct model. */ protected instantiate(data: ProductData): MexProduct; /** Materializes a raw payload into a {@link MexProduct} (return type narrowed via the `instantiate` override). */ materialize(data: ProductData): MexProduct; }