/** * TSC (Tarjetas de Servicio y Crédito) Transactions Resource * * Extends MexTransactionsResource with TSC-specific behavior: * - Accepts flattened CreateTSCTransactionInput (TSC fields at root level) * - Returns MexTSCTransaction models */ import type { AtomicBatchResult, CreateTransactionInput, CreateTSCTransactionInput, ListOptions, PaginatedResponse, PartialBatchResult, RelatedClient, TransactionSort, TSCTransactionFilter, TSCTransactionSort, UpdateTransactionInput, UpdateTSCTransactionInput, UpsertResult, UpsertTSCTransactionInput } from "@artu-ai/shared"; import { ClientRole } from "@artu-ai/shared"; import { MexTSCTransaction, type TransactionData } from "../../../../models"; import { AVTransactionsResource } from "../transactions"; /** * TSC (Tarjetas de Servicio y Crédito) scoped transactions resource. * * @example * ```typescript * const tscSdk = new ComplianceSDK({ * apiKey, * scope: "MX", * actividadVulnerable: CodigoActividad.TSC, * }); * * // Create with fully flattened input * const txn = await tscSdk.transactions.create({ * amount: 10000, * currency: "MXN", * timestamp: new Date(), * cardType: "credit", * idNumber: "4111111111111111", * operationType: "cardConsumption", * }); * * // Returns MexTSCTransaction * console.log(txn.cardType); * ``` */ export declare class TSCTransactionsResource extends AVTransactionsResource { protected static readonly SCOPE_PATH: string[]; create(data: CreateTSCTransactionInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByMetadata(key: string, value: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateTSCTransactionInput): Promise; /** * Lists TSC transactions with optional filtering. * * Accepts flattened TSC filter (future TSC-specific transaction fields at root level). */ list(options?: ListOptions & { crossScope?: boolean; }): Promise>; /** * Iterates over TSC transactions. * * Accepts flattened TSC filter (future TSC-specific transaction fields at root level). */ iterate(options?: { filter?: TSCTransactionFilter; sort?: TSCTransactionSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; /** * Counts TSC transactions matching the given filter. * * @param filter - Optional filter criteria (with TSC fields at root level) * @returns The count of matching transactions */ count(filter?: TSCTransactionFilter, 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: CreateTSCTransactionInput[], options?: { atomic?: true; }): Promise>; createMany(transactions: CreateTSCTransactionInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateTSCTransactionInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateTSCTransactionInput; }[], options: { atomic: false; }): Promise>; /** * Creates or updates a TSC transaction by externalId. * * @param data - Transaction upsert data with TSC fields at root level (must include externalId) * @returns The created or updated transaction with action indicator */ upsertByExternalId(data: UpsertTSCTransactionInput): Promise>; /** * Creates or updates multiple TSC 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: UpsertTSCTransactionInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(transactions: UpsertTSCTransactionInput[], options: { atomic: false; }): Promise>>; protected transformToNested(data: CreateTSCTransactionInput): CreateTransactionInput; protected transformUpdateToNested(data: UpdateTSCTransactionInput): UpdateTransactionInput; protected instantiate(data: TransactionData): MexTSCTransaction; /** Materializes a raw payload into a {@link MexTSCTransaction} (return type narrowed via the `instantiate` override). */ materialize(data: TransactionData): MexTSCTransaction; /** * Transforms a flattened TSCTransactionSort to nested TransactionSort format. * * Maps flattened field names to their full API paths using TSC-specific field mapping. */ protected applyScopeToSort(sort?: TSCTransactionSort): TransactionSort | undefined; }