/** * Mexico Transactions Resource * * Extends TransactionsResource with Mexico-specific behavior: * - Accepts flattened CreateMexTransactionInput (MX fields at root level) * - Automatically injects scopes: ["MX"] * - Transforms flattened filters to nested format * - Returns MexTransaction models */ import type { AtomicBatchResult, CreateMexTransactionInput, CreateTransactionInput, ListOptions, MexTransactionFilter, MexTransactionSort, PaginatedResponse, PartialBatchResult, RelatedClient, TransactionFilter, TransactionSort, UpdateMexTransactionInput, UpdateTransactionInput, UpsertMexTransactionInput, UpsertResult } from "@artu-ai/shared"; import { ClientRole } from "@artu-ai/shared"; import { MexTransaction, type TransactionData } from "../../models"; import { TransactionsResource } from "../transactions"; /** * Mexico-scoped transactions resource. * * Provides the same operations as TransactionsResource but with: * - Flattened input types (MX fields at root level) * - Automatic scopes injection on create/update * - MexTransaction model return type * * @example * ```typescript * // Using the Mexico SDK entry point * import { ComplianceSDK } from "@artu-ai/compliance-sdk/mx"; * * const mexSdk = new ComplianceSDK({ * apiKey, * environment: "test", * }); * * // Create with flattened input * const txn = await mexSdk.transactions.create({ * amount: 50000, * currency: "MXN", * timestamp: new Date(), * actividadVulnerable: { * AVI: { tipoOperacion: "compra" }, * }, * }); * * // List transactions * const { data } = await mexSdk.transactions.list(); * // data is MexTransaction[] * ``` */ export declare class MexTransactionsResource extends TransactionsResource { protected static readonly SCOPE_PATH: string[]; /** * Creates a new Mexico transaction with flattened input. */ create(data: CreateMexTransactionInput): Promise; /** * Retrieves a transaction by ID. */ retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByMetadata(key: string, value: string, opts?: { crossScope?: boolean; }): Promise; retrieveByExternalId(externalId: string, opts?: { crossScope?: boolean; }): Promise; /** * Updates a Mexico transaction with flattened input. */ update(id: string, data: UpdateMexTransactionInput): Promise; /** * Lists Mexico transactions with optional filtering. * * Accepts flattened MX filter (future MX-specific transaction fields at root level). */ list(options?: ListOptions & { crossScope?: boolean; }): Promise>; /** * Counts Mexico transactions matching the given filter. * * @param filter - Optional filter criteria (with MX fields at root level) * @returns The count of matching transactions */ count(filter?: MexTransactionFilter, options?: { crossScope?: boolean; }): Promise; /** * Iterates over Mexico transactions. * * Accepts flattened MX filter (future MX-specific transaction fields at root level). */ iterate(options?: { filter?: MexTransactionFilter; sort?: TSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; 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: CreateMexTransactionInput[], options?: { atomic?: true; }): Promise>; createMany(transactions: CreateMexTransactionInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateMexTransactionInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateMexTransactionInput; }[], options: { atomic: false; }): Promise>; /** * Creates or updates a Mexico transaction by externalId. * * @param data - Transaction upsert data with MX fields at root level (must include externalId) * @returns The created or updated transaction with action indicator */ upsertByExternalId(data: UpsertMexTransactionInput): Promise>; /** * Creates or updates multiple Mexico 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: UpsertMexTransactionInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(transactions: UpsertMexTransactionInput[], options: { atomic: false; }): Promise>>; /** * Transforms a flattened MexTransactionFilter to nested TransactionFilter format. * * Currently MexTransactionFilter has the same fields as the base filter. * * Note: This method only transforms filters, it does not automatically add * scope scoping. Use explicit filters if you need to scope by scope. */ protected applyScopeToFilter(filter?: MexTransactionFilter): TransactionFilter | undefined; /** * Transforms a flattened MexTransactionSort to nested TransactionSort format. * * Maps flattened field names to their full API paths. * * Note: Uses unknown parameter to allow derived classes to override with their own sort types. */ protected applyScopeToSort(sort?: TSort): TransactionSort | undefined; /** * Transforms flattened MX input to nested API format. */ protected transformToNested(data: CreateMexTransactionInput): CreateTransactionInput; /** * Transforms flattened MX update input to nested API format. * * NOTE: Always includes `scopeData: { MX: {} }` even if no MX-specific * fields are provided. This ensures that records touched via the Mexico SDK * can be filtered by `availableJurisdictions: { in: ["MX"] }`. */ protected transformUpdateToNested(data: UpdateMexTransactionInput): UpdateTransactionInput; /** * Instantiates a MexTransaction model. */ protected instantiate(data: TransactionData): MexTransaction; /** Materializes a raw payload into a {@link MexTransaction} (return type narrowed via the `instantiate` override). */ materialize(data: TransactionData): MexTransaction; }