/** * MJR (Metales y Joyas - Precious Metals and Jewelry) Transactions Resource * * Extends MexTransactionsResource with MJR-specific behavior: * - Accepts flattened CreateMJRTransactionInput (MJR fields at root level) * - Returns MexMJRTransaction models * - Handles nested goods[] and payments[] arrays */ import type { AtomicBatchResult, CreateMJRTransactionInput, CreateTransactionInput, ListOptions, MJRTransactionFilter, MJRTransactionSort, PaginatedResponse, PartialBatchResult, RelatedClient, TransactionSort, UpdateMJRTransactionInput, UpdateTransactionInput, UpsertMJRTransactionInput, UpsertResult } from "@artu-ai/shared"; import { ClientRole } from "@artu-ai/shared"; import { MexMJRTransaction, type TransactionData } from "../../../../models"; import { AVTransactionsResource } from "../transactions"; /** * MJR (Metales y Joyas) scoped transactions resource. * * @example * ```typescript * const mjrSdk = new ComplianceSDK({ * apiKey, * scope: "MX", * actividadVulnerable: CodigoActividad.MJR, * }); * * // Create with fully flattened input * const txn = await mjrSdk.transactions.create({ * amount: 50000, * currency: "MXN", * timestamp: new Date(), * operationType: "601", // Sale * operationPostalCode: "06600", * goods: [ * { goodType: "1", unit: "1", quantity: 1 } * ], * payments: [ * { paymentDate: new Date(), paymentForm: "1", monetaryInstrument: "1", currency: "2", amount: 50000 } * ], * }); * * // Returns MexMJRTransaction * console.log(txn.goods); * console.log(txn.payments); * ``` */ export declare class MJRTransactionsResource extends AVTransactionsResource { protected static readonly SCOPE_PATH: string[]; create(data: CreateMJRTransactionInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByMetadata(key: string, value: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateMJRTransactionInput): Promise; /** * Lists MJR transactions with optional filtering. * * Accepts flattened MJR filter (future MJR-specific transaction fields at root level). */ list(options?: ListOptions & { crossScope?: boolean; }): Promise>; /** * Iterates over MJR transactions. * * Accepts flattened MJR filter (future MJR-specific transaction fields at root level). */ iterate(options?: { filter?: MJRTransactionFilter; sort?: MJRTransactionSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; /** * Counts MJR transactions matching the given filter. * * @param filter - Optional filter criteria (with MJR fields at root level) * @returns The count of matching transactions */ count(filter?: MJRTransactionFilter, options?: { crossScope?: boolean; }): Promise; listByClient(clientId: string, options?: { cursor?: string; limit?: number; }): Promise>; linkClient(transactionId: string, clientId: string, role?: ClientRole): Promise; unlinkClient(transactionId: string, clientId: string): Promise; setClients(transactionId: string, clients: RelatedClient[]): Promise; createMany(transactions: CreateMJRTransactionInput[], options?: { atomic?: true; }): Promise>; createMany(transactions: CreateMJRTransactionInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateMJRTransactionInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateMJRTransactionInput; }[], options: { atomic: false; }): Promise>; /** * Creates or updates a MJR transaction by externalId. * * @param data - Transaction upsert data with MJR fields at root level (must include externalId) * @returns The created or updated transaction with action indicator */ upsertByExternalId(data: UpsertMJRTransactionInput): Promise>; /** * Creates or updates multiple MJR transactions by externalId. * * @param transactions - Array of transaction upsert data (each must include externalId) * @param options - Batch options (atomic: true by default) * @returns Atomic result with data array, or partial result with succeeded/failed */ upsertManyByExternalId(transactions: UpsertMJRTransactionInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(transactions: UpsertMJRTransactionInput[], options: { atomic: false; }): Promise>>; protected transformToNested(data: CreateMJRTransactionInput): CreateTransactionInput; protected transformUpdateToNested(data: UpdateMJRTransactionInput): UpdateTransactionInput; protected instantiate(data: TransactionData): MexMJRTransaction; /** Materializes a raw payload into a {@link MexMJRTransaction} (return type narrowed via the `instantiate` override). */ materialize(data: TransactionData): MexMJRTransaction; /** * Transforms a flattened MJRTransactionSort to nested TransactionSort format. * * Maps flattened field names to their full API paths using MJR-specific field mapping. */ protected applyScopeToSort(sort?: MJRTransactionSort): TransactionSort | undefined; }