/** * INM (Inmuebles - Real Estate Sale/Purchase) Transactions Resource * * Extends MexTransactionsResource with INM-specific behavior: * - Accepts flattened CreateINMTransactionInput (INM fields at root level) * - Returns MexINMTransaction models * - Handles inmuebles[] array, figuraCliente, figuraSO, contract, payments */ import type { AtomicBatchResult, CreateINMTransactionInput, CreateTransactionInput, INMTransactionFilter, INMTransactionSort, ListOptions, PaginatedResponse, PartialBatchResult, RelatedClient, TransactionSort, UpdateINMTransactionInput, UpdateTransactionInput, UpsertINMTransactionInput, UpsertResult } from "@artu-ai/shared"; import { MexINMTransaction, type TransactionData } from "../../../../models"; import { AVTransactionsResource } from "../transactions"; /** * INM (Inmuebles - Real Estate Sale/Purchase) scoped transactions resource. * * @example * ```typescript * const inmSdk = new ComplianceSDK({ * apiKey, * scope: "MX:AV:INM", * }); * * const txn = await inmSdk.transactions.create({ * amount: 5000000, * currency: "MXN", * timestamp: new Date(), * operationType: "501", * figuraCliente: "1", * figuraSO: "1", * inmuebles: [ * { * type: "1", * value: "5000000", * colonia: "Roma Norte", * calle: "Álvaro Obregón", * numeroExterior: "100", * postalCode: "06700", * }, * ], * contract: { type: "1", notaryNumber: "42", notaryState: "09" }, * payments: [ * { paymentDate: "2024-01-01", paymentForm: "1", monetaryInstrument: "1", currency: "MXN", amount: 5000000 } * ], * relatedClientIds: [client.id], * }); * ``` */ export declare class INMTransactionsResource extends AVTransactionsResource { protected static readonly SCOPE_PATH: string[]; create(data: CreateINMTransactionInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByMetadata(key: string, value: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateINMTransactionInput): Promise; list(options?: ListOptions & { crossScope?: boolean; }): Promise>; iterate(options?: { filter?: INMTransactionFilter; sort?: INMTransactionSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; count(filter?: INMTransactionFilter, options?: { crossScope?: boolean; }): Promise; listByClient(clientId: string, options?: { cursor?: string; limit?: number; }): Promise>; linkClient(transactionId: string, clientId: string, role?: import("@artu-ai/shared").ClientRole): Promise; unlinkClient(transactionId: string, clientId: string): Promise; setClients(transactionId: string, clients: RelatedClient[]): Promise; createMany(transactions: CreateINMTransactionInput[], options?: { atomic?: true; }): Promise>; createMany(transactions: CreateINMTransactionInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateINMTransactionInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateINMTransactionInput; }[], options: { atomic: false; }): Promise>; upsertByExternalId(data: UpsertINMTransactionInput): Promise>; upsertManyByExternalId(transactions: UpsertINMTransactionInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(transactions: UpsertINMTransactionInput[], options: { atomic: false; }): Promise>>; protected transformToNested(data: CreateINMTransactionInput): CreateTransactionInput; protected transformUpdateToNested(data: UpdateINMTransactionInput): UpdateTransactionInput; protected instantiate(data: TransactionData): MexINMTransaction; /** Materializes a raw payload into a {@link MexINMTransaction} (return type narrowed via the `instantiate` override). */ materialize(data: TransactionData): MexINMTransaction; protected applyScopeToSort(sort?: INMTransactionSort): TransactionSort | undefined; }