@develit-services/bank 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,15 @@
1
1
  'use strict';
2
2
 
3
3
  const backendSdk = require('@develit-io/backend-sdk');
4
+ const sqliteCore = require('drizzle-orm/sqlite-core');
4
5
  const dateFns = require('date-fns');
5
- const generalCodes = require('@develit-io/general-codes');
6
- require('./bank.CIWYI18z.cjs');
7
- require('drizzle-orm');
8
6
  const jose = require('jose');
7
+ const zod = require('zod');
8
+ const generalCodes = require('@develit-io/general-codes');
9
+ const relations = require('drizzle-orm/relations');
10
+ const drizzleOrm = require('drizzle-orm');
9
11
  require('node:crypto');
12
+ const drizzleZod = require('drizzle-zod');
10
13
 
11
14
  function toIncomingPayment(input) {
12
15
  return {
@@ -669,7 +672,8 @@ class FinbricksConnector extends IBankConnector {
669
672
  connectorKey: this.PROVIDER,
670
673
  currency: acc.currency,
671
674
  iban: acc.identification.iban,
672
- id: acc.id
675
+ id: acc.id,
676
+ config: null
673
677
  }))
674
678
  );
675
679
  return {
@@ -880,6 +884,8 @@ class FinbricksConnector extends IBankConnector {
880
884
  );
881
885
  const clientId = await this.getClientId(debtorAccount.id);
882
886
  const creditorAddress = mapToFinbricksAddress(payment.creditor.address);
887
+ const message = payment.message?.trim() ?? "";
888
+ const unstructured = message.length >= 3 ? message.slice(0, 140) : "Platba";
883
889
  const bankRefId = backendSdk.uuidv4();
884
890
  const [response, error] = await backendSdk.useResult(
885
891
  this.finbricks.request({
@@ -905,6 +911,7 @@ class FinbricksConnector extends IBankConnector {
905
911
  creditorName: payment.creditor.holderName,
906
912
  ...creditorAddress && { postalAddress: creditorAddress }
907
913
  },
914
+ remittanceInformation: { unstructured },
908
915
  callbackUrl: `${this.finbricks.REDIRECT_URI}?type=paymentRequest&paymentRequestId=${payment.id}`
909
916
  }
910
917
  })
@@ -1073,6 +1080,40 @@ class CsobConnector extends FinbricksConnector {
1073
1080
  }
1074
1081
  }
1075
1082
 
1083
+ const PAYMENT_TYPES = ["SEPA", "SWIFT", "DOMESTIC", "UNKNOWN"];
1084
+ const CHARGE_BEARERS = ["SHA", "OUR", "BEN"];
1085
+ const INSTRUCTION_PRIORITIES = ["NORM", "HIGH", "INST"];
1086
+ const PAYMENT_REQUEST_STATUSES = [
1087
+ "OPENED",
1088
+ "AUTHORIZED",
1089
+ "COMPLETED",
1090
+ "BOOKED",
1091
+ "SETTLED",
1092
+ "REJECTED",
1093
+ "CLOSED"
1094
+ ];
1095
+ const PAYMENT_STATUSES = [
1096
+ "PENDING",
1097
+ "PROCESSING",
1098
+ "BOOKED",
1099
+ "CANCELLED",
1100
+ "REJECTED",
1101
+ "SCHEDULED",
1102
+ "HOLD",
1103
+ "INFO"
1104
+ ];
1105
+ const PAYMENT_DIRECTIONS = ["INCOMING", "OUTGOING"];
1106
+ const BATCH_STATUSES = [
1107
+ "PROCESSING",
1108
+ "READY_TO_SIGN",
1109
+ "AUTHORIZED",
1110
+ "COMPLETED",
1111
+ "FAILED"
1112
+ ];
1113
+ const BATCH_MODES = ["NATIVE", "SINGLE"];
1114
+ const ACCOUNT_STATUSES = ["AUTHORIZED", "DISABLED", "EXPIRED"];
1115
+ const COUNTRY_CODES = generalCodes.COUNTRY_CODES_2;
1116
+
1076
1117
  class AirBankConnector extends FinbricksConnector {
1077
1118
  constructor(config) {
1078
1119
  super("AIRBANK", config);
@@ -1331,6 +1372,14 @@ const calculateCzechIban = (accountNumber, bankCode) => {
1331
1372
  return `CZ${checkDigits}${basicIban}`;
1332
1373
  };
1333
1374
 
1375
+ const dbuAccountConfigSchema = zod.z.object({
1376
+ with4EyeApproval: zod.z.enum(["Y", "N"]).default("Y"),
1377
+ channelCode: zod.z.string().default("WWW"),
1378
+ actionTypeCode: zod.z.string().default("TRANSFER"),
1379
+ transactionTypeCode: zod.z.string().default("TRANSFER"),
1380
+ partialRealization: zod.z.enum(["Y", "N"]).default("N"),
1381
+ forceRealization: zod.z.enum(["Y", "N"]).default("N")
1382
+ });
1334
1383
  class DbuConnector extends IBankConnector {
1335
1384
  constructor({
1336
1385
  BASE_URL,
@@ -1352,7 +1401,10 @@ class DbuConnector extends IBankConnector {
1352
1401
  this.api = API;
1353
1402
  this.redirectUri = REDIRECT_URI;
1354
1403
  this.txAuthUri = TX_AUTH_URI;
1355
- this.connectedAccounts = connectedAccounts;
1404
+ this.connectedAccounts = connectedAccounts.map((acc) => ({
1405
+ ...acc,
1406
+ config: dbuAccountConfigSchema.parse(acc.config ?? {})
1407
+ }));
1356
1408
  this.sessionId = backendSdk.uuidv4();
1357
1409
  this.allowedPostEndpoints = [
1358
1410
  "/required-transactions",
@@ -1607,7 +1659,7 @@ class DbuConnector extends IBankConnector {
1607
1659
  return [];
1608
1660
  }
1609
1661
  // ── Single payment methods ──────────────────────────────────────────
1610
- resolveIdAccountDebit(payment) {
1662
+ resolveAccount(payment) {
1611
1663
  const account = this.connectedAccounts.find(
1612
1664
  (acc) => acc.id === payment.accountId
1613
1665
  );
@@ -1617,7 +1669,10 @@ class DbuConnector extends IBankConnector {
1617
1669
  code: "DBU_ACCOUNT_NOT_FOUND"
1618
1670
  });
1619
1671
  }
1620
- return Number(account.bankRefId);
1672
+ return account;
1673
+ }
1674
+ resolveIdAccountDebit(payment) {
1675
+ return Number(this.resolveAccount(payment).bankRefId);
1621
1676
  }
1622
1677
  resolveAccountDetails(account) {
1623
1678
  if (account.number && account.bankCode) {
@@ -1634,13 +1689,15 @@ class DbuConnector extends IBankConnector {
1634
1689
  }
1635
1690
  async initiateInstantPayment(payment) {
1636
1691
  const creditor = this.resolveAccountDetails(payment.creditor);
1692
+ const debtorAccount = this.resolveAccount(payment);
1693
+ const cfg = debtorAccount.config;
1637
1694
  const body = {
1638
1695
  accountNumberCredit: creditor.number,
1639
- idAccountDebit: this.resolveIdAccountDebit(payment),
1696
+ idAccountDebit: Number(debtorAccount.bankRefId),
1640
1697
  bankCodeCredit: creditor.bankCode,
1641
1698
  amount: payment.amount,
1642
1699
  currencyCode: "CZK",
1643
- channelCode: "WWW",
1700
+ channelCode: cfg.channelCode,
1644
1701
  textMessage: payment.message,
1645
1702
  varSymbol: payment.vs,
1646
1703
  specSymbol: payment.ss,
@@ -1674,6 +1731,7 @@ class DbuConnector extends IBankConnector {
1674
1731
  }
1675
1732
  const debtor = this.resolveAccountDetails(payment.debtor);
1676
1733
  const creditor = this.resolveAccountDetails(payment.creditor);
1734
+ const cfg = this.resolveAccount(payment).config;
1677
1735
  const body = {
1678
1736
  accountNumberDebit: debtor.number,
1679
1737
  accountNumberCredit: creditor.number,
@@ -1681,20 +1739,20 @@ class DbuConnector extends IBankConnector {
1681
1739
  bankCodeCredit: creditor.bankCode,
1682
1740
  amount: payment.amount,
1683
1741
  currencyCode: "CZK",
1684
- actionTypeCode: "TRANSFER",
1685
- channelCode: "WWW",
1742
+ actionTypeCode: cfg.actionTypeCode,
1743
+ channelCode: cfg.channelCode,
1686
1744
  textMessage: payment.message,
1687
- transactionTypeCode: "TRANSFER",
1745
+ transactionTypeCode: cfg.transactionTypeCode,
1688
1746
  validFrom: dateFns.format(/* @__PURE__ */ new Date(), "yyyy-MM-dd"),
1689
1747
  validTo: null,
1690
1748
  subEntity: "DOMESTIC",
1691
- partialRealization: "N",
1692
- forceRealization: "N",
1749
+ partialRealization: cfg.partialRealization,
1750
+ forceRealization: cfg.forceRealization,
1693
1751
  varSymbol: payment.vs,
1694
1752
  specSymbol: payment.ss,
1695
1753
  constSymbol: payment.ks,
1696
1754
  uniqueExternalId: payment.id,
1697
- with4EyeApproval: "Y",
1755
+ with4EyeApproval: cfg.with4EyeApproval,
1698
1756
  applicationCode: this.applicationCode
1699
1757
  };
1700
1758
  const response = await this.makeRequest(
@@ -1890,6 +1948,39 @@ class DbuConnector extends IBankConnector {
1890
1948
  }
1891
1949
  }
1892
1950
 
1951
+ const TERMINAL_STATUSES$1 = /* @__PURE__ */ new Set([
1952
+ "SETTLED",
1953
+ "REJECTED",
1954
+ "CLOSED"
1955
+ ]);
1956
+ const PENDING_STATUSES = /* @__PURE__ */ new Set([
1957
+ "OPENED",
1958
+ "AUTHORIZED"
1959
+ ]);
1960
+ function isTerminalStatus(status) {
1961
+ return TERMINAL_STATUSES$1.has(status);
1962
+ }
1963
+ function isPendingStatus(status) {
1964
+ return PENDING_STATUSES.has(status);
1965
+ }
1966
+ function isProcessedStatus(status) {
1967
+ return !isPendingStatus(status);
1968
+ }
1969
+ function hasPaymentAccountAssigned(payment) {
1970
+ return "accountId" in payment && "connectorKey" in payment && payment.accountId !== void 0 && payment.connectorKey !== void 0;
1971
+ }
1972
+ function isPaymentCompleted(payment) {
1973
+ return (payment.status === "COMPLETED" || payment.status === "BOOKED" || payment.status === "SETTLED" || payment.status === "REJECTED" || payment.status === "CLOSED") && "bankRefId" in payment && typeof payment.bankRefId === "string";
1974
+ }
1975
+
1976
+ const TERMINAL_STATUSES = PAYMENT_REQUEST_STATUSES.filter(isTerminalStatus);
1977
+ const getNonTerminalPaymentRequestsQuery = (db) => db.select().from(tables.paymentRequest).where(
1978
+ drizzleOrm.and(
1979
+ drizzleOrm.not(drizzleOrm.inArray(tables.paymentRequest.status, TERMINAL_STATUSES)),
1980
+ drizzleOrm.isNull(tables.paymentRequest.deletedAt)
1981
+ )
1982
+ );
1983
+
1893
1984
  class ErsteConnector extends IBankConnector {
1894
1985
  constructor(config) {
1895
1986
  super();
@@ -2304,6 +2395,263 @@ class MockConnector extends IBankConnector {
2304
2395
  }
2305
2396
  }
2306
2397
 
2398
+ const CONNECTOR_KEYS = [
2399
+ "ERSTE",
2400
+ "FINBRICKS",
2401
+ "MOCK",
2402
+ "CREDITAS",
2403
+ "MOCK_COBS",
2404
+ "FIO",
2405
+ "MONETA",
2406
+ "DBU",
2407
+ "CSAS",
2408
+ "AIRBANK",
2409
+ "KB",
2410
+ "CSOB"
2411
+ ];
2412
+ const CREDENTIALS_TYPES = [
2413
+ "AUTH_TOKEN",
2414
+ "REFRESH_TOKEN",
2415
+ "CLIENT_ID",
2416
+ "API_KEY"
2417
+ ];
2418
+ const TOKEN_TYPES = ["ACCOUNT_AUTHORIZATION"];
2419
+
2420
+ const account = sqliteCore.sqliteTable(
2421
+ "account",
2422
+ {
2423
+ ...backendSdk.base,
2424
+ ...backendSdk.bankAccount,
2425
+ // countryCode is temporary until bankAccount is update to include US country code
2426
+ countryCode: sqliteCore.text("country_code", { enum: COUNTRY_CODES }).$type().notNull(),
2427
+ number: sqliteCore.text("number").notNull(),
2428
+ name: sqliteCore.text("name"),
2429
+ iban: sqliteCore.text("iban").notNull(),
2430
+ bankCode: sqliteCore.text("bank_code", { enum: generalCodes.BANK_CODES }).notNull(),
2431
+ connectorKey: sqliteCore.text("connector_key", {
2432
+ enum: CONNECTOR_KEYS
2433
+ }).$type().notNull(),
2434
+ status: sqliteCore.text("status", { enum: ACCOUNT_STATUSES }).$type().notNull(),
2435
+ bankRefId: sqliteCore.text("bank_ref_id").notNull(),
2436
+ batchSizeLimit: sqliteCore.integer("batch_size_limit").notNull().default(50),
2437
+ syncIntervalS: sqliteCore.integer("sync_interval_s").notNull().default(600),
2438
+ lastSyncAt: sqliteCore.integer("last_sync_at", { mode: "timestamp_ms" }),
2439
+ lastSyncMetadata: sqliteCore.text("last_sync_metadata", {
2440
+ mode: "json"
2441
+ }).$type(),
2442
+ connectorConfig: sqliteCore.text("connector_config", {
2443
+ mode: "json"
2444
+ }).$type()
2445
+ },
2446
+ (t) => [sqliteCore.unique().on(t.iban)]
2447
+ );
2448
+
2449
+ const accountInsertSchema = drizzleZod.createInsertSchema(account, {
2450
+ address: () => backendSdk.structuredAddressSchema.optional()
2451
+ });
2452
+ const accountUpdateSchema = drizzleZod.createUpdateSchema(account, {
2453
+ address: () => backendSdk.structuredAddressSchema.optional()
2454
+ });
2455
+ const accountSelectSchema = drizzleZod.createSelectSchema(account, {
2456
+ address: () => backendSdk.structuredAddressSchema.nullable()
2457
+ });
2458
+
2459
+ const accountCredentials = sqliteCore.sqliteTable("account_credentials", {
2460
+ ...backendSdk.base,
2461
+ accountId: sqliteCore.text("account_id").references(() => account.id, { onDelete: "restrict", onUpdate: "cascade" }).notNull(),
2462
+ connectorKey: sqliteCore.text("connector_key", {
2463
+ enum: CONNECTOR_KEYS
2464
+ }).$type().notNull(),
2465
+ type: sqliteCore.text("type", {
2466
+ enum: CREDENTIALS_TYPES
2467
+ }).$type().notNull(),
2468
+ value: sqliteCore.text("value").notNull(),
2469
+ expiresAt: sqliteCore.integer("expires_at", { mode: "timestamp_ms" }).notNull()
2470
+ });
2471
+
2472
+ const accountCredentialsInsertSchema = drizzleZod.createInsertSchema(accountCredentials);
2473
+ const accountCredentialsUpdateSchema = drizzleZod.createUpdateSchema(accountCredentials);
2474
+ const accountCredentialsSelectSchema = drizzleZod.createSelectSchema(accountCredentials);
2475
+
2476
+ const ott = sqliteCore.sqliteTable("ott", {
2477
+ ...backendSdk.base,
2478
+ oneTimeToken: sqliteCore.text("one_time_token").notNull(),
2479
+ refId: sqliteCore.text("ref_id").notNull(),
2480
+ tokenType: sqliteCore.text("token_type", { enum: TOKEN_TYPES }).$type().notNull(),
2481
+ expiresAt: sqliteCore.integer("expires_at", { mode: "timestamp_ms" }).notNull()
2482
+ });
2483
+
2484
+ const ottInsertSchema = drizzleZod.createInsertSchema(ott);
2485
+ const ottUpdateSchema = drizzleZod.createUpdateSchema(ott);
2486
+ const ottSelectSchema = drizzleZod.createSelectSchema(ott);
2487
+
2488
+ const batch = sqliteCore.sqliteTable("batch", {
2489
+ ...backendSdk.base,
2490
+ batchPaymentInitiatedAt: sqliteCore.integer("batch_payment_initiated_at", {
2491
+ mode: "timestamp_ms"
2492
+ }),
2493
+ authorizationUrls: sqliteCore.text("authorization_urls", { mode: "json" }).$type(),
2494
+ accountId: sqliteCore.text("account_id").references(() => account.id, {
2495
+ onDelete: "restrict",
2496
+ onUpdate: "cascade"
2497
+ }),
2498
+ status: sqliteCore.text("status", { enum: BATCH_STATUSES }).$type(),
2499
+ statusReason: sqliteCore.text("status_reason"),
2500
+ statusResponse: sqliteCore.text("status_response", { mode: "json" }).$type(),
2501
+ metadata: sqliteCore.text("metadata", { mode: "json" }).$type(),
2502
+ paymentType: sqliteCore.text("payment_type", {
2503
+ enum: PAYMENT_TYPES
2504
+ }).$type(),
2505
+ paymentsChecksum: sqliteCore.text("payments_checksum"),
2506
+ batchMode: sqliteCore.text("batch_mode", { enum: BATCH_MODES }).$type()
2507
+ });
2508
+
2509
+ const payment = sqliteCore.sqliteTable(
2510
+ "payment",
2511
+ {
2512
+ ...backendSdk.base,
2513
+ correlationId: sqliteCore.text("correlation_id").notNull(),
2514
+ refId: sqliteCore.text("ref_id"),
2515
+ bankRefId: sqliteCore.text("bank_ref_id").notNull(),
2516
+ accountId: sqliteCore.text("account_id").references(() => account.id, {
2517
+ onDelete: "restrict",
2518
+ onUpdate: "cascade"
2519
+ }).notNull(),
2520
+ connectorKey: sqliteCore.text("connector_key", { enum: CONNECTOR_KEYS }).$type().notNull(),
2521
+ amount: sqliteCore.real("amount").notNull(),
2522
+ direction: sqliteCore.text("direction").$type().notNull(),
2523
+ paymentType: sqliteCore.text("payment_type").$type().notNull(),
2524
+ currency: sqliteCore.text("currency").$type().notNull(),
2525
+ status: sqliteCore.text("status", { enum: PAYMENT_STATUSES }).$type().notNull(),
2526
+ statusReason: sqliteCore.text("status_reason"),
2527
+ batchId: sqliteCore.text("bank_execution_batch_id"),
2528
+ initiatedAt: sqliteCore.integer("initiated_at", {
2529
+ mode: "timestamp_ms"
2530
+ }),
2531
+ vs: sqliteCore.text("vs"),
2532
+ ss: sqliteCore.text("ss"),
2533
+ ks: sqliteCore.text("ks"),
2534
+ message: sqliteCore.text("message"),
2535
+ chargeBearer: sqliteCore.text("charge_bearer", {
2536
+ enum: CHARGE_BEARERS
2537
+ }).$type(),
2538
+ instructionPriority: sqliteCore.text("instruction_priority", {
2539
+ enum: INSTRUCTION_PRIORITIES
2540
+ }).$type(),
2541
+ processedAt: sqliteCore.integer("processed_at", {
2542
+ mode: "timestamp_ms"
2543
+ }),
2544
+ creditor: sqliteCore.text("creditor", { mode: "json" }).$type().notNull(),
2545
+ creditorIban: sqliteCore.text("creditor_iban"),
2546
+ debtor: sqliteCore.text("debtor", { mode: "json" }).$type().notNull(),
2547
+ debtorIban: sqliteCore.text("debtor_iban")
2548
+ },
2549
+ (t) => [
2550
+ sqliteCore.unique().on(t.connectorKey, t.accountId, t.bankRefId),
2551
+ sqliteCore.index("payment_account_id_idx").on(t.accountId),
2552
+ sqliteCore.index("payment_account_id_status_idx").on(t.accountId, t.status),
2553
+ sqliteCore.index("payment_account_id_created_at_idx").on(t.accountId, t.createdAt),
2554
+ sqliteCore.index("payment_created_at_idx").on(t.createdAt),
2555
+ sqliteCore.index("payment_direction_idx").on(t.direction),
2556
+ sqliteCore.index("payment_batch_id_idx").on(t.batchId),
2557
+ sqliteCore.index("payment_creditor_iban_idx").on(t.creditorIban),
2558
+ sqliteCore.index("payment_debtor_iban_idx").on(t.debtorIban)
2559
+ ]
2560
+ );
2561
+ const paymentRelations = relations.relations(payment, ({ one }) => ({
2562
+ batch: one(batch, { fields: [payment.batchId], references: [batch.id] })
2563
+ }));
2564
+
2565
+ const paymentRequest = sqliteCore.sqliteTable(
2566
+ "payment_request",
2567
+ {
2568
+ ...backendSdk.base,
2569
+ batchId: sqliteCore.text("batch_id").references(() => batch.id, {
2570
+ onDelete: "restrict",
2571
+ onUpdate: "cascade"
2572
+ }),
2573
+ accountId: sqliteCore.text("account_id").references(() => account.id, {
2574
+ onDelete: "restrict",
2575
+ onUpdate: "cascade"
2576
+ }).notNull(),
2577
+ correlationId: sqliteCore.text("correlation_id").notNull(),
2578
+ refId: sqliteCore.text("ref_id"),
2579
+ bankRefId: sqliteCore.text("bank_ref_id"),
2580
+ connectorKey: sqliteCore.text("connector_key", { enum: CONNECTOR_KEYS }).$type().notNull(),
2581
+ amount: sqliteCore.real("amount").notNull(),
2582
+ paymentType: sqliteCore.text("payment_type", { enum: PAYMENT_TYPES }).$type().notNull(),
2583
+ currency: sqliteCore.text("currency").$type().notNull(),
2584
+ status: sqliteCore.text("status", { enum: PAYMENT_REQUEST_STATUSES }).$type().notNull(),
2585
+ statusReason: sqliteCore.text("status_reason"),
2586
+ authorizationUrl: sqliteCore.text("authorization_url"),
2587
+ initiatedAt: sqliteCore.integer("initiated_at", { mode: "timestamp_ms" }),
2588
+ processedAt: sqliteCore.integer("processed_at", { mode: "timestamp_ms" }),
2589
+ vs: sqliteCore.text("vs"),
2590
+ ss: sqliteCore.text("ss"),
2591
+ ks: sqliteCore.text("ks"),
2592
+ message: sqliteCore.text("message"),
2593
+ chargeBearer: sqliteCore.text("charge_bearer", {
2594
+ enum: CHARGE_BEARERS
2595
+ }).$type(),
2596
+ instructionPriority: sqliteCore.text("instruction_priority", {
2597
+ enum: INSTRUCTION_PRIORITIES
2598
+ }).$type(),
2599
+ creditor: sqliteCore.text("creditor", { mode: "json" }).$type().notNull(),
2600
+ creditorIban: sqliteCore.text("creditor_iban"),
2601
+ debtor: sqliteCore.text("debtor", { mode: "json" }).$type().notNull(),
2602
+ debtorIban: sqliteCore.text("debtor_iban"),
2603
+ sendAsSinglePayment: sqliteCore.integer("send_as_single_payment", {
2604
+ mode: "boolean"
2605
+ })
2606
+ },
2607
+ (t) => [
2608
+ sqliteCore.index("payment_request_batch_id_idx").on(t.batchId),
2609
+ sqliteCore.index("payment_request_account_id_idx").on(t.accountId),
2610
+ sqliteCore.index("payment_request_creditor_iban_idx").on(t.creditorIban),
2611
+ sqliteCore.index("payment_request_debtor_iban_idx").on(t.debtorIban),
2612
+ sqliteCore.index("payment_request_status_idx").on(t.status),
2613
+ sqliteCore.index("payment_request_created_at_idx").on(t.createdAt),
2614
+ sqliteCore.index("payment_request_account_status_idx").on(t.accountId, t.status),
2615
+ sqliteCore.index("payment_request_status_created_at_idx").on(t.status, t.createdAt),
2616
+ sqliteCore.index("payment_request_account_status_created_at_idx").on(
2617
+ t.accountId,
2618
+ t.status,
2619
+ t.createdAt
2620
+ )
2621
+ ]
2622
+ );
2623
+ const paymentRequestRelations = relations.relations(paymentRequest, ({ one }) => ({
2624
+ batch: one(batch, {
2625
+ fields: [paymentRequest.batchId],
2626
+ references: [batch.id]
2627
+ }),
2628
+ account: one(account, {
2629
+ fields: [paymentRequest.accountId],
2630
+ references: [account.id]
2631
+ })
2632
+ }));
2633
+
2634
+ const schema = {
2635
+ __proto__: null,
2636
+ account: account,
2637
+ accountCredentials: accountCredentials,
2638
+ batch: batch,
2639
+ ott: ott,
2640
+ payment: payment,
2641
+ paymentRelations: paymentRelations,
2642
+ paymentRequest: paymentRequest,
2643
+ paymentRequestRelations: paymentRequestRelations
2644
+ };
2645
+
2646
+ const tables = schema;
2647
+
2648
+ exports.ACCOUNT_STATUSES = ACCOUNT_STATUSES;
2649
+ exports.BATCH_MODES = BATCH_MODES;
2650
+ exports.BATCH_STATUSES = BATCH_STATUSES;
2651
+ exports.CHARGE_BEARERS = CHARGE_BEARERS;
2652
+ exports.CONNECTOR_KEYS = CONNECTOR_KEYS;
2653
+ exports.COUNTRY_CODES = COUNTRY_CODES;
2654
+ exports.CREDENTIALS_TYPES = CREDENTIALS_TYPES;
2307
2655
  exports.CsobConnector = CsobConnector;
2308
2656
  exports.DbuConnector = DbuConnector;
2309
2657
  exports.ErsteConnector = ErsteConnector;
@@ -2311,12 +2659,43 @@ exports.FINBRICKS_ENDPOINTS = FINBRICKS_ENDPOINTS;
2311
2659
  exports.FinbricksClient = FinbricksClient;
2312
2660
  exports.FinbricksConnector = FinbricksConnector;
2313
2661
  exports.IBankConnector = IBankConnector;
2662
+ exports.INSTRUCTION_PRIORITIES = INSTRUCTION_PRIORITIES;
2314
2663
  exports.KBConnector = KBConnector;
2315
2664
  exports.MockCobsConnector = MockCobsConnector;
2316
2665
  exports.MockConnector = MockConnector;
2666
+ exports.PAYMENT_DIRECTIONS = PAYMENT_DIRECTIONS;
2667
+ exports.PAYMENT_REQUEST_STATUSES = PAYMENT_REQUEST_STATUSES;
2668
+ exports.PAYMENT_STATUSES = PAYMENT_STATUSES;
2669
+ exports.PAYMENT_TYPES = PAYMENT_TYPES;
2670
+ exports.TOKEN_TYPES = TOKEN_TYPES;
2671
+ exports.account = account;
2672
+ exports.accountCredentials = accountCredentials;
2673
+ exports.accountCredentialsInsertSchema = accountCredentialsInsertSchema;
2674
+ exports.accountCredentialsSelectSchema = accountCredentialsSelectSchema;
2675
+ exports.accountCredentialsUpdateSchema = accountCredentialsUpdateSchema;
2676
+ exports.accountInsertSchema = accountInsertSchema;
2677
+ exports.accountSelectSchema = accountSelectSchema;
2678
+ exports.accountUpdateSchema = accountUpdateSchema;
2317
2679
  exports.assignAccount = assignAccount;
2680
+ exports.batch = batch;
2681
+ exports.dbuAccountConfigSchema = dbuAccountConfigSchema;
2682
+ exports.getNonTerminalPaymentRequestsQuery = getNonTerminalPaymentRequestsQuery;
2683
+ exports.hasPaymentAccountAssigned = hasPaymentAccountAssigned;
2318
2684
  exports.initiateConnector = initiateConnector;
2685
+ exports.isPaymentCompleted = isPaymentCompleted;
2686
+ exports.isPendingStatus = isPendingStatus;
2687
+ exports.isProcessedStatus = isProcessedStatus;
2688
+ exports.isTerminalStatus = isTerminalStatus;
2689
+ exports.ott = ott;
2690
+ exports.ottInsertSchema = ottInsertSchema;
2691
+ exports.ottSelectSchema = ottSelectSchema;
2692
+ exports.ottUpdateSchema = ottUpdateSchema;
2693
+ exports.payment = payment;
2694
+ exports.paymentRelations = paymentRelations;
2695
+ exports.paymentRequest = paymentRequest;
2696
+ exports.paymentRequestRelations = paymentRequestRelations;
2319
2697
  exports.signFinbricksJws = signFinbricksJws;
2698
+ exports.tables = tables;
2320
2699
  exports.toBatchedPayment = toBatchedPayment;
2321
2700
  exports.toBatchedPaymentFromPaymentRequest = toBatchedPaymentFromPaymentRequest;
2322
2701
  exports.toCompletedPayment = toCompletedPayment;