/** * JYS (Juegos y Sorteos) Transactions Resource * * Extends MexTransactionsResource with JYS-specific behavior: * - Accepts flattened CreateJYSTransactionInput (JYS fields at root level) * - Returns MexJYSTransaction models */ import type { AtomicBatchResult, CreateJYSTransactionInput, CreateTransactionInput, JYSTransactionFilter, JYSTransactionSort, ListOptions, PaginatedResponse, PartialBatchResult, RelatedClient, TransactionSort, UpdateJYSTransactionInput, UpdateTransactionInput, UpsertJYSTransactionInput, UpsertResult } from "@artu-ai/shared"; import { ClientRole } from "@artu-ai/shared"; import { MexJYSTransaction, type TransactionData } from "../../../../models"; import { AVTransactionsResource } from "../transactions"; /** * JYS (Juegos y Sorteos) scoped transactions resource. * * @example * ```typescript * const jysSdk = new ComplianceSDK({ * apiKey, * scope: "MX", * actividadVulnerable: CodigoActividad.JYS, * }); * * // Create with fully flattened input * const txn = await jysSdk.transactions.create({ * amount: 100000, * currency: "MXN", * timestamp: new Date(), * branchInformation: { type: "own", postalCode: "06600" }, * operationType: "bet", * businessLine: "casino", * operationMethod: "inPerson", * settlementType: "cash", * monetaryInstrument: "cash", * }); * * // Returns MexJYSTransaction * console.log(txn.settlementType); * ``` */ export declare class JYSTransactionsResource extends AVTransactionsResource { protected static readonly SCOPE_PATH: string[]; create(data: CreateJYSTransactionInput): Promise; retrieve(id: string, opts?: { crossScope?: boolean; }): Promise; retrieveByMetadata(key: string, value: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateJYSTransactionInput): Promise; /** * Lists JYS transactions with optional filtering. * * Accepts flattened JYS filter (future JYS-specific transaction fields at root level). */ list(options?: ListOptions & { crossScope?: boolean; }): Promise>; /** * Iterates over JYS transactions. * * Accepts flattened JYS filter (future JYS-specific transaction fields at root level). */ iterate(options?: { filter?: JYSTransactionFilter; sort?: JYSTransactionSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; /** * Counts JYS transactions matching the given filter. * * @param filter - Optional filter criteria (with JYS fields at root level) * @returns The count of matching transactions */ count(filter?: JYSTransactionFilter, 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: CreateJYSTransactionInput[], options?: { atomic?: true; }): Promise>; createMany(transactions: CreateJYSTransactionInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateJYSTransactionInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateJYSTransactionInput; }[], options: { atomic: false; }): Promise>; /** * Creates or updates a JYS transaction by externalId. * * @param data - Transaction upsert data with JYS fields at root level (must include externalId) * @returns The created or updated transaction with action indicator */ upsertByExternalId(data: UpsertJYSTransactionInput): Promise>; /** * Creates or updates multiple JYS 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: UpsertJYSTransactionInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(transactions: UpsertJYSTransactionInput[], options: { atomic: false; }): Promise>>; /** * Transforms a flattened JYSTransactionSort to nested TransactionSort format. * * Maps flattened field names to their full API paths. */ protected applyScopeToSort(sort?: JYSTransactionSort): TransactionSort | undefined; protected transformToNested(data: CreateJYSTransactionInput): CreateTransactionInput; protected transformUpdateToNested(data: UpdateJYSTransactionInput): UpdateTransactionInput; protected instantiate(data: TransactionData): MexJYSTransaction; /** Materializes a raw payload into a {@link MexJYSTransaction} (return type narrowed via the `instantiate` override). */ materialize(data: TransactionData): MexJYSTransaction; }