/** * MPC (Mutuo, Préstamos y Créditos) Products Resource * * Extends MexProductsResource with MPC-specific behavior: * - Accepts flattened CreateMPCProductInput (MPC fields at root level) * - Returns MexMPCProduct models * - Handles collateral defaults (collateral[0]) and disbursement defaults (disbursements[0]) */ import type { CreateMPCProductInput, CreateProductInput, ListOptions, PaginatedResponse, ProductFilter, ProductSort, UpdateMPCProductInput, UpdateProductInput, UpsertMPCProductInput, UpsertResult } from "@artu-ai/shared"; import { MexMPCProduct, type ProductData } from "../../../../models"; import { AVProductsResource } from "../products"; /** * MPC (Mutuo, Préstamos y Créditos) scoped products resource. * * @example * ```typescript * const mpcSdk = new ComplianceSDK({ * apiKey, * environment: "test", * scope: "MX:AV:MPC", * }); * * const product = await mpcSdk.products.create({ * name: "Standard Loan", * operationType: "402", * collateral: [{ * tipoGarantia: "2", * bienMutuo: { * kind: "inmueble", * tipoInmueble: "1", * valorReferencia: "1500000.00", * postalCode: "06700", * folioReal: "FR-001", * }, * }], * disbursements: [{ * monetaryInstrument: "1", * currency: "MXN", * amount: "500000.00", * }], * }); * ``` */ export declare class MPCProductsResource extends AVProductsResource { create(data: CreateMPCProductInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByExternalId(externalId: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateMPCProductInput): 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: UpsertMPCProductInput): Promise>; protected transformToNested(data: CreateMPCProductInput): CreateProductInput; protected transformUpdateToNested(data: UpdateMPCProductInput): UpdateProductInput; protected instantiate(data: ProductData): MexMPCProduct; /** Materializes a raw payload into a {@link MexMPCProduct} (return type narrowed via the `instantiate` override). */ materialize(data: ProductData): MexMPCProduct; }