/** * INM (Inmuebles - Real Estate Sale/Purchase) Products Resource * * Extends MexProductsResource with INM-specific behavior: * - Accepts flattened CreateINMProductInput (INM fields at root level) * - Returns MexINMProduct models * - Handles inmueble defaults (inmuebles[0]) and payment defaults (payments[0]) */ import type { CreateINMProductInput, CreateProductInput, ListOptions, PaginatedResponse, ProductFilter, ProductSort, UpdateINMProductInput, UpdateProductInput, UpsertINMProductInput, UpsertResult } from "@artu-ai/shared"; import { MexINMProduct, type ProductData } from "../../../../models"; import { AVProductsResource } from "../products"; /** * INM (Inmuebles - Real Estate Sale/Purchase) scoped products resource. * * @example * ```typescript * const inmSdk = new ComplianceSDK({ * apiKey, * environment: "test", * scope: "MX:AV:INM", * }); * * const product = await inmSdk.products.create({ * name: "Standard Property", * operationType: "501", * inmuebles: [{ * type: "1", * value: "5000000", * colonia: "Roma Norte", * calle: "Alvaro Obregon", * numeroExterior: "100", * postalCode: "06700", * }], * payments: [{ * paymentForm: "1", * monetaryInstrument: "8", * }], * }); * ``` */ export declare class INMProductsResource extends AVProductsResource { create(data: CreateINMProductInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByExternalId(externalId: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateINMProductInput): Promise; list(options?: ListOptions & { crossScope?: boolean; }): Promise>; count(filter?: ProductFilter, options?: { crossScope?: boolean; }): Promise; iterate(options?: { filter?: ProductFilter; sort?: ProductSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; upsertByExternalId(data: UpsertINMProductInput): Promise>; protected transformToNested(data: CreateINMProductInput): CreateProductInput; protected transformUpdateToNested(data: UpdateINMProductInput): UpdateProductInput; protected instantiate(data: ProductData): MexINMProduct; /** Materializes a raw payload into a {@link MexINMProduct} (return type narrowed via the `instantiate` override). */ materialize(data: ProductData): MexINMProduct; }