/** * Transmisor (CNBV Money Transmitters) Clients Resource * * Extends MexClientsResource with Transmisor-specific behavior: * - Accepts flattened CreateTransmisorClientInput * - Returns MexTransmisorClient models * * Note: Transmisor has no activity-specific client fields beyond MX fields. * The resource exists for consistent SDK patterns and type guards. */ import type { AtomicBatchResult, ClientFilter, ClientRelationshipType, ClientSort, CreateBankAccountInput, CreateClientInput, CreateContactMethodInput, CreateMexAddressInput, CreateTransmisorClientInput, LinkedClient as LinkedClientInput, ListOptions, PaginatedResponse, PartialBatchResult, SyncCreateDocumentInput, SyncItem, SyncResult, SyncUpdateDocumentInput, TransmisorClientFilter, TransmisorClientSort, UpdateBankAccountInput, UpdateClientInput, UpdateContactMethodInput, UpdateMexAddressInput, UpdateTransmisorClientInput, UpsertResult, UpsertTransmisorClientInput } from "@artu-ai/shared"; import { type ClientData, ContactMethod, Document, LinkedClient, MexAddress, MexBankAccount, MexTransmisorClient } from "../../../../models"; import { type ClientIncludeMap } from "../../../clients"; import type { RelatedPartyParent, RelatedPartySubresource } from "../../../related-parties/base"; import { CNBVClientsResource } from "../clients"; /** * Transmisor (CNBV Money Transmitters) scoped clients resource. * * Transmisor clients use the same fields as base Mexico clients, * but are typed to return MexTransmisorClient models. * * @example * ```typescript * const sdk = new ComplianceSDK({ * apiKey, * environment: "test", * }); * * const client = await sdk.clients.create({ * type: ClientType.Individual, * name: "Juan GarcĂ­a", * rfc: "GAJL850101ABC", * }); * * // Returns MexTransmisorClient * console.log(client.rfc); * ``` */ export declare class TransmisorClientsResource extends CNBVClientsResource { readonly legalRepresentatives: RelatedPartySubresource; readonly controllingBeneficiaries: RelatedPartySubresource; protected relatedPartyParent(): RelatedPartyParent; create(data: CreateTransmisorClientInput): Promise; retrieve(id: string, options?: { include?: ClientIncludeMap; crossScope?: boolean; }): Promise; retrieveByExternalId(externalId: string, opts?: { crossScope?: boolean; }): Promise; update(id: string, data: UpdateTransmisorClientInput): Promise; list(options?: ListOptions & { includePrimaryContacts?: boolean; includeNonPrimary?: boolean; crossScope?: boolean; }): Promise>; iterate(options?: { filter?: TransmisorClientFilter; sort?: TransmisorClientSort; pageSize?: number; crossScope?: boolean; }): AsyncGenerator; count(filter?: TransmisorClientFilter, options?: { includeNonPrimary?: boolean; crossScope?: boolean; }): Promise; createMany(clients: CreateTransmisorClientInput[], options?: { atomic?: true; }): Promise>; createMany(clients: CreateTransmisorClientInput[], options: { atomic: false; }): Promise>; updateMany(updates: { id: string; data: UpdateTransmisorClientInput; }[], options?: { atomic?: true; }): Promise>; updateMany(updates: { id: string; data: UpdateTransmisorClientInput; }[], options: { atomic: false; }): Promise>; upsertByExternalId(data: UpsertTransmisorClientInput): Promise>; upsertManyByExternalId(clients: UpsertTransmisorClientInput[], options?: { atomic?: true; }): Promise>>; upsertManyByExternalId(clients: UpsertTransmisorClientInput[], options: { atomic: false; }): Promise>>; linkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType, metadata?: Record): Promise; unlinkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType): Promise; listLinkedClients(parentClientId: string, relationshipType?: ClientRelationshipType): Promise; setLinkedClients(parentClientId: string, linkedClients: LinkedClientInput[]): Promise; syncAll(clientId: undefined, data: { client: CreateTransmisorClientInput; addresses?: SyncItem[]; contactMethods?: SyncItem[]; bankAccounts?: SyncItem[]; documents?: SyncItem[]; linkedClients?: LinkedClientInput[]; }, options?: { replaceMode?: boolean; }): Promise<{ client: MexTransmisorClient; addresses: SyncResult; contactMethods: SyncResult; bankAccounts: SyncResult; documents: SyncResult; }>; syncAll(clientId: string, data: { client?: UpdateTransmisorClientInput; addresses?: SyncItem[]; contactMethods?: SyncItem[]; bankAccounts?: SyncItem[]; documents?: SyncItem[]; linkedClients?: LinkedClientInput[]; }, options: { replaceMode: true; }): Promise<{ client: MexTransmisorClient; addresses: SyncResult; contactMethods: SyncResult; bankAccounts: SyncResult; documents: SyncResult; }>; syncAll(clientId: string, data: { client?: UpdateTransmisorClientInput; addresses?: SyncItem[]; contactMethods?: SyncItem[]; bankAccounts?: SyncItem[]; documents?: SyncItem[]; linkedClients?: LinkedClientInput[]; }, options?: { replaceMode?: boolean; }): Promise<{ client: MexTransmisorClient; addresses: SyncResult; contactMethods: SyncResult; bankAccounts: SyncResult; documents: SyncResult; }>; /** * Transmisor clients have no additional filter fields beyond MX. * Delegate to parent. */ protected applyScopeToFilter(filter?: TransmisorClientFilter): ClientFilter | undefined; protected applyScopeToSort(sort?: TransmisorClientSort): ClientSort | undefined; /** * Transmisor clients don't have activity-specific fields to nest. * Always include cnbv.TRANSMISOR marker for filterability. */ protected transformToNested(data: CreateTransmisorClientInput): CreateClientInput; protected transformUpdateToNested(data: UpdateTransmisorClientInput): UpdateClientInput; protected instantiate(data: ClientData): MexTransmisorClient; /** Materializes a raw payload into a {@link MexTransmisorClient} (return type narrowed via the `instantiate` override). */ materialize(data: ClientData): MexTransmisorClient; }