UNPKG

@mojaloop/central-services-shared

Version:
1,053 lines (1,002 loc) 44.5 kB
import { Utils as HapiUtil, Server } from '@hapi/hapi' import { ILogger } from '@mojaloop/central-services-logger/src/contextLogger' import { Knex } from 'knex'; import IORedis from 'ioredis'; declare namespace CentralServicesShared { interface ReturnCode { CODE: number; DESCRIPTION: string; } interface HttpEnum { Headers: { FSPIOP: { SOURCE: string; DESTINATION: string; PROXY: string; HTTP_METHOD: string; SIGNATURE: string; URI: string; }; }; HeaderResources: { PARTICIPANTS: string; ORACLE: string; TRANSFERS: string; FX_TRANSFERS: string; QUOTES: string; FX_QUOTES: string; PARTIES: string; }; ReturnCodes: { OK: ReturnCode; ACCEPTED: ReturnCode; }; RestMethods: { GET: RestMethodsEnum.GET; POST: RestMethodsEnum.POST; PUT: RestMethodsEnum.PUT; DELETE: RestMethodsEnum.DELETE; PATCH: RestMethodsEnum.PATCH; }; ResponseTypes: { JSON: string; }; } enum RestMethodsEnum { GET = 'GET', POST = 'POST', PUT = 'PUT', DELETE = 'DELETE', PATCH = 'PATCH' } enum FspEndpointTypesEnum { FSPIOP_CALLBACK_URL_TPP_REQ_SERVICE = 'FSPIOP_CALLBACK_URL_TPP_REQ_SERVICE', FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE = 'FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE', FSPIOP_CALLBACK_URL = 'FSPIOP_CALLBACK_URL', FSPIOP_CALLBACK_URL_PARTICIPANT_PUT = 'FSPIOP_CALLBACK_URL_PARTICIPANT_PUT', FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR = 'FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR', FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT = 'FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT', FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR = 'FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR', FSPIOP_CALLBACK_URL_PARTICIPANT_DELETE = 'FSPIOP_CALLBACK_URL_PARTICIPANT_DELETE', FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE = 'FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE', FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT = 'FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT', FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR = 'FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR', FSPIOP_CALLBACK_URL_PARTIES_GET = 'FSPIOP_CALLBACK_URL_PARTIES_GET', FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET = 'FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET', FSPIOP_CALLBACK_URL_PARTIES_PUT = 'FSPIOP_CALLBACK_URL_PARTIES_PUT', FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT = 'FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT', FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR = 'FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR', FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR = 'FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR', FSPIOP_CALLBACK_URL_TRANSFER_POST = 'FSPIOP_CALLBACK_URL_TRANSFER_POST', FSPIOP_CALLBACK_URL_TRANSFER_PUT = 'FSPIOP_CALLBACK_URL_TRANSFER_PUT', FSPIOP_CALLBACK_URL_TRANSFER_ERROR = 'FSPIOP_CALLBACK_URL_TRANSFER_ERROR', FSPIOP_CALLBACK_URL_FX_TRANSFER_POST = 'FSPIOP_CALLBACK_URL_FX_TRANSFER_POST', FSPIOP_CALLBACK_URL_FX_TRANSFER_PUT = 'FSPIOP_CALLBACK_URL_FX_TRANSFER_PUT', FSPIOP_CALLBACK_URL_FX_TRANSFER_ERROR = 'FSPIOP_CALLBACK_URL_FX_TRANSFER_ERROR', ALARM_NOTIFICATION_URL = 'ALARM_NOTIFICATION_URL', ALARM_NOTIFICATION_TOPIC = 'ALARM_NOTIFICATION_TOPIC', NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL = 'NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL', NET_DEBIT_CAP_ADJUSTMENT_EMAIL = 'NET_DEBIT_CAP_ADJUSTMENT_EMAIL', SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL = 'SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL', FSPIOP_CALLBACK_URL_QUOTES = 'FSPIOP_CALLBACK_URL_QUOTES', FSPIOP_CALLBACK_URL_FX_QUOTES = 'FSPIOP_CALLBACK_URL_FX_QUOTES', FSPIOP_CALLBACK_URL_BULK_QUOTES = 'FSPIOP_CALLBACK_URL_BULK_QUOTES', FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST = 'FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST', FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT = 'FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT', FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR = 'FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR', FSPIOP_CALLBACK_URL_AUTHORIZATIONS = 'FSPIOP_CALLBACK_URL_AUTHORIZATIONS', TP_CB_URL_TRANSACTION_REQUEST_GET = 'TP_CB_URL_TRANSACTION_REQUEST_GET', TP_CB_URL_TRANSACTION_REQUEST_POST = 'TP_CB_URL_TRANSACTION_REQUEST_POST', TP_CB_URL_TRANSACTION_REQUEST_PUT = 'TP_CB_URL_TRANSACTION_REQUEST_PUT', TP_CB_URL_TRANSACTION_REQUEST_PUT_ERROR = 'TP_CB_URL_TRANSACTION_REQUEST_PUT_ERROR', TP_CB_URL_TRANSACTION_REQUEST_PATCH = 'TP_CB_URL_TRANSACTION_REQUEST_PATCH', TP_CB_URL_TRANSACTION_REQUEST_AUTH_POST = 'TP_CB_URL_TRANSACTION_REQUEST_AUTH_POST', TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT = 'TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT', TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT_ERROR = 'TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT_ERROR', TP_CB_URL_TRANSACTION_REQUEST_VERIFY_POST = 'TP_CB_URL_TRANSACTION_REQUEST_VERIFY_POST', TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT = 'TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT', TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT_ERROR = 'TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT_ERROR', TP_CB_URL_CONSENT_REQUEST_PATCH = 'TP_CB_URL_CONSENT_REQUEST_PATCH', TP_CB_URL_CONSENT_REQUEST_POST = 'TP_CB_URL_CONSENT_REQUEST_POST', TP_CB_URL_CONSENT_REQUEST_PUT = 'TP_CB_URL_CONSENT_REQUEST_PUT', TP_CB_URL_CONSENT_REQUEST_PUT_ERROR = 'TP_CB_URL_CONSENT_REQUEST_PUT_ERROR', TP_CB_URL_CREATE_CREDENTIAL_POST = 'TP_CB_URL_CREATE_CREDENTIAL_POST', TP_CB_URL_CONSENT_POST = 'TP_CB_URL_CONSENT_POST', TP_CB_URL_CONSENT_GET = 'TP_CB_URL_CONSENT_GET', TP_CB_URL_CONSENT_PUT = 'TP_CB_URL_CONSENT_PUT', TP_CB_URL_CONSENT_PATCH = 'TP_CB_URL_CONSENT_PATCH', TP_CB_URL_CONSENT_PUT_ERROR = 'TP_CB_URL_CONSENT_PUT_ERROR', TP_CB_URL_CONSENT_GENERATE_CHALLENGE_POST = 'TP_CB_URL_CONSENT_GENERATE_CHALLENGE_POST', TP_CB_URL_CONSENT_GENERATE_CHALLENGE_PUT_ERROR = 'TP_CB_URL_CONSENT_GENERATE_CHALLENGE_PUT_ERROR', TP_CB_URL_ACCOUNTS_GET = 'TP_CB_URL_ACCOUNTS_GET', TP_CB_URL_ACCOUNTS_PUT = 'TP_CB_URL_ACCOUNTS_PUT', TP_CB_URL_ACCOUNTS_PUT_ERROR = 'TP_CB_URL_ACCOUNTS_PUT_ERROR', TP_CB_URL_SERVICES_GET = 'TP_CB_URL_SERVICES_GET', TP_CB_URL_SERVICES_PUT = 'TP_CB_URL_SERVICES_PUT', TP_CB_URL_SERVICES_PUT_ERROR = 'TP_CB_URL_SERVICES_PUT_ERROR', TP_CB_URL_ACCOUNT_REQUEST_POST = 'TP_CB_URL_ACCOUNT_REQUEST_POST', TP_CB_URL_ACCOUNT_REQUEST_PUT = 'TP_CB_URL_ACCOUNT_REQUEST_PUT', TP_CB_URL_ACCOUNT_REQUEST_PUT_ERROR = 'TP_CB_URL_ACCOUNT_REQUEST_PUT_ERROR', TP_CB_URL_ACCOUNT_REQUEST_GET = 'TP_CB_URL_ACCOUNT_REQUEST_GET', } interface EndPointsEnum { EndpointType: { ALARM_NOTIFICATION_URL: number; ALARM_NOTIFICATION_TOPIC: number; FSPIOP_CALLBACK_URL_TRANSFER_POST: number; FSPIOP_CALLBACK_URL_TRANSFER_PUT: number; FSPIOP_CALLBACK_URL_TRANSFER_ERROR: number; }; FspEndpointTypes: { FSPIOP_CALLBACK_URL_TPP_REQ_SERVICE: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_TPP_REQ_SERVICE; FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE; FSPIOP_CALLBACK_URL: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL; FSPIOP_CALLBACK_URL_PARTICIPANT_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_PUT; FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR; FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT; FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR; FSPIOP_CALLBACK_URL_PARTICIPANT_DELETE: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_DELETE; FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE; FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT; FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR; FSPIOP_CALLBACK_URL_PARTIES_GET: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_GET; FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET; FSPIOP_CALLBACK_URL_PARTIES_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_PUT; FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT; FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR; FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR; FSPIOP_CALLBACK_URL_FX_TRANSFER_POST: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_FX_TRANSFER_POST; FSPIOP_CALLBACK_URL_FX_TRANSFER_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_FX_TRANSFER_PUT; FSPIOP_CALLBACK_URL_FX_TRANSFER_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_FX_TRANSFER_ERROR; FSPIOP_CALLBACK_URL_TRANSFER_POST: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_TRANSFER_POST; FSPIOP_CALLBACK_URL_TRANSFER_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_TRANSFER_PUT; FSPIOP_CALLBACK_URL_TRANSFER_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_TRANSFER_ERROR; ALARM_NOTIFICATION_URL: FspEndpointTypesEnum.ALARM_NOTIFICATION_URL; ALARM_NOTIFICATION_TOPIC: FspEndpointTypesEnum.ALARM_NOTIFICATION_TOPIC; NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL: FspEndpointTypesEnum.NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL; NET_DEBIT_CAP_ADJUSTMENT_EMAIL: FspEndpointTypesEnum.NET_DEBIT_CAP_ADJUSTMENT_EMAIL; SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL: FspEndpointTypesEnum.SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL; FSPIOP_CALLBACK_URL_QUOTES: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_QUOTES; FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST; FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT; FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR; FSPIOP_CALLBACK_URL_AUTHORIZATIONS: FspEndpointTypesEnum.FSPIOP_CALLBACK_URL_AUTHORIZATIONS; TP_CB_URL_TRANSACTION_REQUEST_GET: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_GET; TP_CB_URL_TRANSACTION_REQUEST_POST: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_POST; TP_CB_URL_TRANSACTION_REQUEST_PUT: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_PUT; TP_CB_URL_TRANSACTION_REQUEST_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_PUT_ERROR; TP_CB_URL_TRANSACTION_REQUEST_PATCH: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_PATCH; TP_CB_URL_TRANSACTION_REQUEST_AUTH_POST: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_AUTH_POST; TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT; TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_AUTH_PUT_ERROR; TP_CB_URL_TRANSACTION_REQUEST_VERIFY_POST: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_VERIFY_POST; TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT; TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_TRANSACTION_REQUEST_VERIFY_PUT_ERROR; TP_CB_URL_CONSENT_REQUEST_PATCH: FspEndpointTypesEnum.TP_CB_URL_CONSENT_REQUEST_PATCH; TP_CB_URL_CONSENT_REQUEST_POST: FspEndpointTypesEnum.TP_CB_URL_CONSENT_REQUEST_POST; TP_CB_URL_CONSENT_REQUEST_PUT: FspEndpointTypesEnum.TP_CB_URL_CONSENT_REQUEST_PUT; TP_CB_URL_CONSENT_REQUEST_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_CONSENT_REQUEST_PUT_ERROR; TP_CB_URL_CREATE_CREDENTIAL_POST: FspEndpointTypesEnum.TP_CB_URL_CREATE_CREDENTIAL_POST; TP_CB_URL_CONSENT_POST: FspEndpointTypesEnum.TP_CB_URL_CONSENT_POST; TP_CB_URL_CONSENT_GET: FspEndpointTypesEnum.TP_CB_URL_CONSENT_GET; TP_CB_URL_CONSENT_PUT: FspEndpointTypesEnum.TP_CB_URL_CONSENT_PUT; TP_CB_URL_CONSENT_PATCH: FspEndpointTypesEnum.TP_CB_URL_CONSENT_PATCH; TP_CB_URL_CONSENT_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_CONSENT_PUT_ERROR; TP_CB_URL_CONSENT_GENERATE_CHALLENGE_POST: FspEndpointTypesEnum.TP_CB_URL_CONSENT_GENERATE_CHALLENGE_POST; TP_CB_URL_CONSENT_GENERATE_CHALLENGE_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_CONSENT_GENERATE_CHALLENGE_PUT_ERROR; TP_CB_URL_ACCOUNTS_GET: FspEndpointTypesEnum.TP_CB_URL_ACCOUNTS_GET; TP_CB_URL_ACCOUNTS_PUT: FspEndpointTypesEnum.TP_CB_URL_ACCOUNTS_PUT; TP_CB_URL_ACCOUNTS_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_ACCOUNTS_PUT_ERROR; TP_CB_URL_SERVICES_GET: FspEndpointTypesEnum.TP_CB_URL_SERVICES_GET; TP_CB_URL_SERVICES_PUT: FspEndpointTypesEnum.TP_CB_URL_SERVICES_PUT; TP_CB_URL_SERVICES_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_SERVICES_PUT_ERROR; TP_CB_URL_ACCOUNT_REQUEST_POST: FspEndpointTypesEnum.TP_CB_URL_ACCOUNT_REQUEST_POST; TP_CB_URL_ACCOUNT_REQUEST_PUT: FspEndpointTypesEnum.TP_CB_URL_ACCOUNT_REQUEST_PUT; TP_CB_URL_ACCOUNT_REQUEST_PUT_ERROR: FspEndpointTypesEnum.TP_CB_URL_ACCOUNT_REQUEST_PUT_ERROR; TP_CB_URL_ACCOUNT_REQUEST_GET: FspEndpointTypesEnum.TP_CB_URL_ACCOUNT_REQUEST_GET; }; FspEndpointTemplates: { TRANSACTION_REQUEST_POST: string; TRANSACTION_REQUEST_PUT: string; TRANSACTION_REQUEST_GET: string; TRANSACTION_REQUEST_PUT_ERROR: string; PARTICIPANT_ENDPOINTS_GET: string; PARTICIPANTS_GET: string; PARTICIPANTS_POST: string; PARTIES_GET: string; PARTIES_PUT_ERROR: string; PARTIES_SUB_ID_PUT_ERROR: string; ORACLE_PARTICIPANTS_TYPE_ID: string; ORACLE_PARTICIPANTS_TYPE_ID_CURRENCY: string; ORACLE_PARTICIPANTS_TYPE_ID_SUB_ID: string; ORACLE_PARTICIPANTS_TYPE_ID_CURRENCY_SUB_ID: string; ORACLE_PARTICIPANTS_BATCH: string; FX_TRANSFERS_POST: string; FX_TRANSFERS_PUT: string; FX_TRANSFERS_PUT_ERROR: string; FX_QUOTES_POST: string; FX_QUOTES_PUT: string; FX_QUOTES_ERROR_PUT: string; TRANSFERS_POST: string; TRANSFERS_PUT: string; TRANSFERS_PUT_ERROR: string; BULK_TRANSFERS_POST: string; BULK_TRANSFERS_PUT: string; BULK_TRANSFERS_PUT_ERROR: string; BULK_QUOTES_POST: string; BULK_QUOTES_ERROR_PUT: string; TP_TRANSACTION_REQUEST_GET: string; TP_TRANSACTION_REQUEST_POST: string; TP_TRANSACTION_REQUEST_PUT: string; TP_TRANSACTION_REQUEST_PUT_ERROR: string; TP_TRANSACTION_REQUEST_PATCH: string; TP_REQUESTS_AUTHORIZATIONS_POST: string; TP_REQUESTS_AUTHORIZATIONS_PUT: string; TP_REQUESTS_AUTHORIZATIONS_PUT_ERROR: string; TP_REQUESTS_VERIFICATIONS_POST: string; TP_REQUESTS_VERIFICATIONS_PUT: string; TP_REQUESTS_VERIFICATIONS_PUT_ERROR: string; TP_CONSENT_REQUEST_PATCH: string; TP_CONSENT_REQUEST_POST: string; TP_CONSENT_REQUEST_PUT: string; TP_CONSENT_REQUEST_PUT_ERROR: string; TP_CONSENT_CREATE_CREDENTIAL_POST: string; TP_CONSENT_POST: string; TP_CONSENT_GET: string; TP_CONSENT_PUT: string; TP_CONSENT_PATCH: string; TP_CONSENT_PUT_ERROR: string; TP_CONSENT_GENERATE_CHALLENGE_POST: string; TP_CONSENT_GENERATE_CHALLENGE_PUT_ERROR: string; TP_ACCOUNTS_GET: string; TP_ACCOUNTS_PUT: string; TP_ACCOUNTS_PUT_ERROR: string; TP_SERVICES_GET: string; TP_SERVICES_PUT: string; TP_SERVICES_PUT_ERROR: string; }; } enum KakfaConfigEnum { CONSUMER = 'CONSUMER', PRODUCER = 'PRODUCER' } enum EventTypeEnum { ADMIN = 'admin', AUTHORIZATION = 'authorization', ACCOUNT = 'account', BULK = 'bulk', BULK_QUOTE = 'bulkquote', BULK_PROCESSING = 'bulk-processing', BULK_PREPARE = 'bulk-prepare', BULK_FULFIL = 'bulk-fulfil', CONSENT = 'consent', CONSENT_REQUEST = 'consent-request', ENDPOINTCACHE = 'endpointcache', EVENT = 'event', FULFIL = 'fulfil', FX_QUOTE = 'fxquote', FX_TRANSFER = 'fxtransfer', GET = 'get', NOTIFICATION = 'notification', ORACLE = 'oracle', POSITION = 'position', PREPARE = 'prepare', QUOTE = 'quote', SERVICE = 'service', SETTLEMENT = 'settlement', SETTLEMENT_WINDOW = 'settlementwindow', THIRDPARTY = 'thirdparty', TRANSACTION_REQUEST = 'transaction-request', TRANSFER = 'transfer', PARTY = 'party', PARTICIPANT = 'participant', DEFERRED_SETTLEMENT = 'deferred-settlement', GROSS_SETTLEMENT = 'gross-settlement', VERIFICATION = 'verification' } enum EventActionEnum { ABORT = 'abort', ABORT_DUPLICATE = 'abort-duplicate', ABORT_VALIDATION = 'abort-validation', ACCEPT = 'accept', BULK_ABORT = 'bulk-abort', BULK_COMMIT = 'bulk-commit', BULK_PREPARE = 'bulk-prepare', BULK_PROCESSING = 'bulk-processing', BULK_TIMEOUT_RECEIVED = 'bulk-timeout-received', BULK_TIMEOUT_RESERVED = 'bulk-timeout-reserved', BULK_PREPARE_DUPLICATE = 'bulk-prepare-duplicate', BULK_GET = 'bulk-get', CLOSE = 'close', COMMIT = 'commit', CREATE = 'create', DELETE = 'delete', EVENT = 'event', FAIL = 'fail', FULFIL = 'fulfil', FULFIL_DUPLICATE = 'fulfil-duplicate', FX_FULFIL = 'fx-fulfil', FX_ABORT = 'fx-abort', FX_COMMIT = 'fx-commit', FX_PREPARE = 'fx-prepare', FX_REJECT = 'fx-reject', FX_RESERVE = 'fx-reserve', FX_PREPARE_DUPLICATE = 'fx-prepare-duplicate', FX_ABORT_VALIDATION = 'fx-abort-validation', FX_RESERVED_ABORTED = 'fx-reserved-aborted', FX_FORWARDED = 'fx-forwarded', FX_FULFIL_DUPLICATE = 'fx-fulfil-duplicate', FX_ABORT_DUPLICATE = 'fx-abort-duplicate', FX_TIMEOUT_RECEIVED = 'fx-timeout-received', FX_TIMEOUT_RESERVED = 'fx-timeout-reserved', FX_GET = 'fx-get', FX_NOTIFY = 'fx-notify', GET = 'get', INITIATE = 'initiate', LIMIT_ADJUSTMENT = 'limit-adjustment', LOOKUP = 'lookup', POSITION = 'position', POSITION_PREPARE = 'position-prepare', POSITION_FULFIL = 'position-fulfil', PREPARE = 'prepare', FORWARDED = 'forwarded', PREPARE_DUPLICATE = 'prepare-duplicate', PROCESSING = 'processing', RECORD_FUNDS_IN = 'recordFundsIn', RECORD_FUNDS_OUT_ABORT = 'recordFundsOutAbort', RECORD_FUNDS_OUT_COMMIT = 'recordFundsOutCommit', RECORD_FUNDS_OUT_PREPARE_RESERVE = 'recordFundsOutPrepareReserve', REJECT = 'reject', RESOLVE = 'resolve', REQUEST = 'request', RESERVE = 'reserve', RESERVED_ABORTED = 'reserved-aborted', SETTLEMENT_WINDOW = 'settlement-window', TIMEOUT_RECEIVED = 'timeout-received', TIMEOUT_RESERVED = 'timeout-reserved', TRANSFER = 'transfer', PATCH = 'patch', PUT = 'put', POST = 'post' } enum TransferInternalStateEnum { ABORTED_ERROR = 'ABORTED_ERROR', ABORTED_REJECTED = 'ABORTED_REJECTED', COMMITTED = 'COMMITTED', EXPIRED_PREPARED = 'EXPIRED_PREPARED', EXPIRED_RESERVED = 'EXPIRED_RESERVED', FAILED = 'FAILED', INVALID = 'INVALID', RECEIVED_ERROR = 'RECEIVED_ERROR', RECEIVED_FULFIL = 'RECEIVED_FULFIL', RECEIVED_PREPARE = 'RECEIVED_PREPARE', RECEIVED_REJECT = 'RECEIVED_REJECT', RESERVED = 'RESERVED', RESERVED_FORWARDED = 'RESERVED_FORWARDED', RESERVED_TIMEOUT = 'RESERVED_TIMEOUT' } enum TransferStateEnum { RECEIVED = 'RECEIVED', ABORTED = 'ABORTED', COMMITTED = 'COMMITTED', RESERVED = 'RESERVED', SETTLED = 'SETTLED' } enum BulkProcessingStateEnum { RECEIVED = 1, RECEIVED_DUPLICATE = 2, RECEIVED_INVALID = 3, ACCEPTED = 4, PROCESSING = 5, FULFIL_DUPLICATE = 6, FULFIL_INVALID = 7, COMPLETED = 8, REJECTED = 9, EXPIRED = 10, ABORTING = 11 } enum BulkTransferStateEnum { ABORTING = 'ABORTING', ACCEPTED = 'ACCEPTED', COMPLETED = 'COMPLETED', EXPIRED = 'EXPIRED', EXPIRING = 'EXPIRING', INVALID = 'INVALID', PENDING_FULFIL = 'PENDING_FULFIL', PENDING_INVALID = 'PENDING_INVALID', PENDING_PREPARE = 'PENDING_PREPARE', PROCESSING = 'PROCESSING', RECEIVED = 'RECEIVED', REJECTED = 'REJECTED' } enum BulkTransferStateEnumDeclaration { ACCEPTED = 'ACCEPTED', COMPLETED = 'COMPLETED', EXPIRED = 'COMPLETED', EXPIRING = 'PROCESSING', INVALID = 'REJECTED', PENDING_FULFIL = 'PROCESSING', PENDING_INVALID = 'PENDING', PENDING_PREPARE = 'PENDING', PROCESSING = 'PROCESSING', RECEIVED = 'RECEIVED', REJECTED = 'REJECTED' } enum AdminTransferActionEnum { RECORD_FUNDS_IN = 'recordFundsIn', RECORD_FUNDS_OUT_PREPARE_RESERVE = 'recordFundsOutPrepareReserve', RECORD_FUNDS_OUT_COMMIT = 'recordFundsOutCommit', RECORD_FUNDS_OUT_ABORT = 'recordFundsOutAbort' } enum AdminNotificationActionsEnum { LIMIT_ADJUSTMENT = 'limit-adjustment' } enum LedgerAccountTypeEnum { POSITION = 1, SETTLEMENT = 2, HUB_RECONCILIATION = 3, HUB_MULTILATERAL_SETTLEMENT = 4, HUB_FEE = 5, POSITION_REMITTANCE = 7, SETTLEMENT_REMITTANCE = 8 } enum LedgerEntryTypeEnum { PRINCIPLE_VALUE = 1, INTERCHANGE_FEE = 2, HUB_FEE = 3, POSITION_DEPOSIT = 4, POSITION_WITHDRAWAL = 5, SETTLEMENT_NET_RECIPIENT = 6, SETTLEMENT_NET_SENDER = 7, SETTLEMENT_NET_ZERO = 8, SETTLEMENT_ACCOUNT_DEPOSIT = 9, SETTLEMENT_ACCOUNT_WITHDRAWAL = 10 } enum ParticipantLimitTypeEnum { NET_DEBIT_CAP = 1 } enum TransferParticipantRoleTypeEnum { PAYER_DFSP = 1, PAYEE_DFSP = 2, HUB = 3, DFSP_SETTLEMENT = 4, DFSP_POSITION = 5, INITIATING_FSP = 6, COUNTER_PARTY_FSP = 7 } enum PartyTypeEnum { MSISDN = 'MSISDN', EMAIL = 'EMAIL', PERSONAL_ID = 'PERSONAL_ID', BUSINESS = 'BUSINESS', DEVICE = 'DEVICE', ACCOUNT_ID = 'ACCOUNT_ID', IBAN = 'IBAN', ALIAS = 'ALIAS', CONSENT = 'CONSENT', THIRD_PARTY_LINK = 'THIRD_PARTY_LINK' } interface Enum { Http: HttpEnum; EndPoints: EndPointsEnum; Kafka: { Config: { CONSUMER: string, PRODUCER: string, } Topics: { NOTIFICATION: string; POSITION: string; TRANSFER: string; [key: string]: string; } } Events: { EventStatus: { FAILURE: { status: string }; SUCCESS: { status: string }; }; Event: { Action: { ABORT: EventActionEnum.ABORT; ABORT_DUPLICATE: EventActionEnum.ABORT_DUPLICATE; ABORT_VALIDATION: EventActionEnum.ABORT_VALIDATION; ACCEPT: EventActionEnum.ACCEPT; BULK_ABORT: EventActionEnum.BULK_ABORT; BULK_COMMIT: EventActionEnum.BULK_COMMIT; BULK_PREPARE: EventActionEnum.BULK_PREPARE; BULK_PREPARE_DUPLICATE: EventActionEnum.BULK_PREPARE_DUPLICATE; BULK_PROCESSING: EventActionEnum.BULK_PROCESSING; BULK_TIMEOUT_RECEIVED: EventActionEnum.BULK_TIMEOUT_RECEIVED; BULK_TIMEOUT_RESERVED: EventActionEnum.BULK_TIMEOUT_RESERVED; BULK_GET: EventActionEnum.BULK_GET; CLOSE: EventActionEnum.CLOSE; COMMIT: EventActionEnum.COMMIT; CREATE: EventActionEnum.CREATE; DELETE: EventActionEnum.DELETE; EVENT: EventActionEnum.EVENT; FAIL: EventActionEnum.FAIL; FORWARDED: EventActionEnum.FORWARDED; FULFIL: EventActionEnum.FULFIL; FULFIL_DUPLICATE: EventActionEnum.FULFIL_DUPLICATE; FX_FULFIL: EventActionEnum.FX_FULFIL; FX_ABORT: EventActionEnum.FX_ABORT, FX_COMMIT: EventActionEnum.FX_COMMIT, FX_PREPARE: EventActionEnum.FX_PREPARE, FX_REJECT: EventActionEnum.FX_REJECT, FX_RESERVE: EventActionEnum.FX_RESERVE, FX_PREPARE_DUPLICATE: EventActionEnum.FX_PREPARE_DUPLICATE, FX_ABORT_VALIDATION: EventActionEnum.FX_ABORT_VALIDATION, FX_RESERVED_ABORTED: EventActionEnum.FX_RESERVED_ABORTED, FX_FORWARDED: EventActionEnum.FX_FORWARDED, FX_FULFIL_DUPLICATE: EventActionEnum.FX_FULFIL_DUPLICATE, FX_ABORT_DUPLICATE: EventActionEnum.FX_ABORT_DUPLICATE, FX_TIMEOUT_RECEIVED: EventActionEnum.FX_TIMEOUT_RECEIVED, FX_TIMEOUT_RESERVED: EventActionEnum.FX_TIMEOUT_RESERVED, FX_GET: EventActionEnum.FX_GET, FX_NOTIFY: EventActionEnum.FX_NOTIFY, GET: EventActionEnum.GET; INITIATE: EventActionEnum.INITIATE; LIMIT_ADJUSTMENT: EventActionEnum.LIMIT_ADJUSTMENT; LOOKUP: EventActionEnum.LOOKUP; POSITION: EventActionEnum.POSITION; POSITION_PREPARE: EventActionEnum.POSITION_PREPARE; POSITION_FULFIL: EventActionEnum.POSITION_FULFIL; PREPARE: EventActionEnum.PREPARE; PREPARE_DUPLICATE: EventActionEnum.PREPARE_DUPLICATE; PROCESSING: EventActionEnum.PROCESSING; RECORD_FUNDS_IN: EventActionEnum.RECORD_FUNDS_IN; RECORD_FUNDS_OUT_ABORT: EventActionEnum.RECORD_FUNDS_OUT_ABORT; RECORD_FUNDS_OUT_COMMIT: EventActionEnum.RECORD_FUNDS_OUT_COMMIT; RECORD_FUNDS_OUT_PREPARE_RESERVE: EventActionEnum.RECORD_FUNDS_OUT_PREPARE_RESERVE; REJECT: EventActionEnum.REJECT; RESOLVE: EventActionEnum.RESOLVE; REQUEST: EventActionEnum.REQUEST; RESERVE: EventActionEnum.RESERVE; RESERVED_ABORTED: EventActionEnum.RESERVED_ABORTED; SETTLEMENT_WINDOW: EventActionEnum.SETTLEMENT_WINDOW; TIMEOUT_RECEIVED: EventActionEnum.TIMEOUT_RECEIVED; TIMEOUT_RESERVED: EventActionEnum.TIMEOUT_RESERVED; TRANSFER: EventActionEnum.TRANSFER; PATCH: EventActionEnum.PATCH; PUT: EventActionEnum.PUT; POST: EventActionEnum.POST; }; Type: { ADMIN: EventTypeEnum.ADMIN; AUTHORIZATION: EventTypeEnum.AUTHORIZATION; ACCOUNT: EventTypeEnum.ACCOUNT; BULK: EventTypeEnum.BULK; BULK_QUOTE: EventTypeEnum.BULK_QUOTE; BULK_PROCESSING: EventTypeEnum.BULK_PROCESSING; BULK_PREPARE: EventTypeEnum.BULK_PREPARE; BULK_FULFIL: EventTypeEnum.BULK_FULFIL; CONSENT: EventTypeEnum.CONSENT; CONSENT_REQUEST: EventTypeEnum.CONSENT_REQUEST; ENDPOINTCACHE: EventTypeEnum.ENDPOINTCACHE; EVENT: EventTypeEnum.EVENT; FULFIL: EventTypeEnum.FULFIL; FX_QUOTE: EventTypeEnum.FX_QUOTE; GET: EventTypeEnum.GET; NOTIFICATION: EventTypeEnum.NOTIFICATION; ORACLE: EventTypeEnum.ORACLE; POSITION: EventTypeEnum.POSITION; PREPARE: EventTypeEnum.PREPARE; QUOTE: EventTypeEnum.QUOTE; SERVICE: EventTypeEnum.SERVICE; SETTLEMENT: EventTypeEnum.SETTLEMENT; SETTLEMENT_WINDOW: EventTypeEnum.SETTLEMENT_WINDOW; THIRDPARTY: EventTypeEnum.THIRDPARTY; TRANSACTION_REQUEST: EventTypeEnum.TRANSACTION_REQUEST; TRANSFER: EventTypeEnum.TRANSFER; PARTY: EventTypeEnum.PARTY; PARTICIPANT: EventTypeEnum.PARTICIPANT; DEFERRED_SETTLEMENT: EventTypeEnum.DEFERRED_SETTLEMENT, GROSS_SETTLEMENT: EventTypeEnum.GROSS_SETTLEMENT, VERIFICATION: EventTypeEnum.VERIFICATION; }; }; }; Transfers: { TransferInternalState: { ABORTED_ERROR: TransferInternalStateEnum.ABORTED_ERROR; ABORTED_REJECTED: TransferInternalStateEnum.ABORTED_REJECTED; COMMITTED: TransferInternalStateEnum.COMMITTED; EXPIRED_PREPARED: TransferInternalStateEnum.EXPIRED_PREPARED; EXPIRED_RESERVED: TransferInternalStateEnum.EXPIRED_RESERVED; FAILED: TransferInternalStateEnum.FAILED; INVALID: TransferInternalStateEnum.INVALID; RECEIVED_ERROR: TransferInternalStateEnum.RECEIVED_ERROR; RECEIVED_FULFIL: TransferInternalStateEnum.RECEIVED_FULFIL; RECEIVED_PREPARE: TransferInternalStateEnum.RECEIVED_PREPARE; RECEIVED_REJECT: TransferInternalStateEnum.RECEIVED_REJECT; RESERVED: TransferInternalStateEnum.RESERVED; RESERVED_FORWARDED: TransferInternalStateEnum.RESERVED_FORWARDED; RESERVED_TIMEOUT: TransferInternalStateEnum.RESERVED_TIMEOUT; }; TransferState: { RECEIVED: TransferStateEnum.RECEIVED; ABORTED: TransferStateEnum.ABORTED; COMMITTED: TransferStateEnum.COMMITTED; RESERVED: TransferStateEnum.RESERVED; SETTLED: TransferStateEnum.SETTLED; }; BulkProcessingState: { RECEIVED: BulkProcessingStateEnum.RECEIVED; RECEIVED_DUPLICATE: BulkProcessingStateEnum.RECEIVED_DUPLICATE; RECEIVED_INVALID: BulkProcessingStateEnum.RECEIVED_INVALID; ACCEPTED: BulkProcessingStateEnum.ACCEPTED; PROCESSING: BulkProcessingStateEnum.PROCESSING; FULFIL_DUPLICATE: BulkProcessingStateEnum.FULFIL_DUPLICATE; FULFIL_INVALID: BulkProcessingStateEnum.FULFIL_INVALID; COMPLETED: BulkProcessingStateEnum.COMPLETED; REJECTED: BulkProcessingStateEnum.REJECTED; EXPIRED: BulkProcessingStateEnum.EXPIRED; ABORTING: BulkProcessingStateEnum.ABORTING; }; BulkTransferState: { ABORTING: BulkTransferStateEnum.ABORTING; ACCEPTED: BulkTransferStateEnum.ACCEPTED; COMPLETED: BulkTransferStateEnum.COMPLETED; EXPIRED: BulkTransferStateEnum.EXPIRED; EXPIRING: BulkTransferStateEnum.EXPIRING; INVALID: BulkTransferStateEnum.INVALID; PENDING_FULFIL: BulkTransferStateEnum.PENDING_FULFIL; PENDING_INVALID: BulkTransferStateEnum.PENDING_INVALID; PENDING_PREPARE: BulkTransferStateEnum.PENDING_PREPARE; PROCESSING: BulkTransferStateEnum.PROCESSING; RECEIVED: BulkTransferStateEnum.RECEIVED; REJECTED: BulkTransferStateEnum.REJECTED; }; BulkTransferStateEnum: { ACCEPTED: BulkTransferStateEnumDeclaration.ACCEPTED; COMPLETED: BulkTransferStateEnumDeclaration.COMPLETED; EXPIRED: BulkTransferStateEnumDeclaration.EXPIRED; EXPIRING: BulkTransferStateEnumDeclaration.EXPIRING; INVALID: BulkTransferStateEnumDeclaration.INVALID; PENDING_FULFIL: BulkTransferStateEnumDeclaration.PENDING_FULFIL; PENDING_INVALID: BulkTransferStateEnumDeclaration.PENDING_INVALID; PENDING_PREPARE: BulkTransferStateEnumDeclaration.PENDING_PREPARE; PROCESSING: BulkTransferStateEnumDeclaration.PROCESSING; RECEIVED: BulkTransferStateEnumDeclaration.RECEIVED; REJECTED: BulkTransferStateEnumDeclaration.REJECTED; }; AdminTransferAction: { RECORD_FUNDS_IN: AdminTransferActionEnum.RECORD_FUNDS_IN; RECORD_FUNDS_OUT_PREPARE_RESERVE: AdminTransferActionEnum.RECORD_FUNDS_OUT_PREPARE_RESERVE; RECORD_FUNDS_OUT_COMMIT: AdminTransferActionEnum.RECORD_FUNDS_OUT_COMMIT; RECORD_FUNDS_OUT_ABORT: AdminTransferActionEnum.RECORD_FUNDS_OUT_ABORT; }; AdminNotificationActions: { LIMIT_ADJUSTMENT: AdminNotificationActionsEnum.LIMIT_ADJUSTMENT; }; }; Accounts: { LedgerAccountType: { POSITION: LedgerAccountTypeEnum.POSITION; SETTLEMENT: LedgerAccountTypeEnum.SETTLEMENT; HUB_RECONCILIATION: LedgerAccountTypeEnum.HUB_RECONCILIATION; HUB_MULTILATERAL_SETTLEMENT: LedgerAccountTypeEnum.HUB_MULTILATERAL_SETTLEMENT; HUB_FEE: LedgerAccountTypeEnum.HUB_FEE; POSITION_REMITTANCE: LedgerAccountTypeEnum.POSITION_REMITTANCE; SETTLEMENT_REMITTANCE: LedgerAccountTypeEnum.SETTLEMENT_REMITTANCE; }; LedgerEntryType: { PRINCIPLE_VALUE: LedgerEntryTypeEnum.PRINCIPLE_VALUE; INTERCHANGE_FEE: LedgerEntryTypeEnum.INTERCHANGE_FEE; HUB_FEE: LedgerEntryTypeEnum.HUB_FEE; POSITION_DEPOSIT: LedgerEntryTypeEnum.POSITION_DEPOSIT; POSITION_WITHDRAWAL: LedgerEntryTypeEnum.POSITION_WITHDRAWAL; SETTLEMENT_NET_RECIPIENT: LedgerEntryTypeEnum.SETTLEMENT_NET_RECIPIENT; SETTLEMENT_NET_SENDER: LedgerEntryTypeEnum.SETTLEMENT_NET_SENDER; SETTLEMENT_NET_ZERO: LedgerEntryTypeEnum.SETTLEMENT_NET_ZERO; SETTLEMENT_ACCOUNT_DEPOSIT: LedgerEntryTypeEnum.SETTLEMENT_ACCOUNT_DEPOSIT; SETTLEMENT_ACCOUNT_WITHDRAWAL: LedgerEntryTypeEnum.SETTLEMENT_ACCOUNT_WITHDRAWAL; }; ParticipantLimitType: { NET_DEBIT_CAP: ParticipantLimitTypeEnum.NET_DEBIT_CAP; }; TransferParticipantRoleType: { PAYER_DFSP: TransferParticipantRoleTypeEnum.PAYER_DFSP; PAYEE_DFSP: TransferParticipantRoleTypeEnum.PAYEE_DFSP; HUB: TransferParticipantRoleTypeEnum.HUB; DFSP_SETTLEMENT: TransferParticipantRoleTypeEnum.DFSP_SETTLEMENT; DFSP_POSITION: TransferParticipantRoleTypeEnum.DFSP_POSITION; INITIATING_FSP: TransferParticipantRoleTypeEnum.INITIATING_FSP; COUNTER_PARTY_FSP: TransferParticipantRoleTypeEnum.COUNTER_PARTY_FSP; }; PartyTypes: { MSISDN: PartyTypeEnum.MSISDN; EMAIL: PartyTypeEnum.EMAIL; PERSONAL_ID: PartyTypeEnum.PERSONAL_ID; BUSINESS: PartyTypeEnum.BUSINESS; DEVICE: PartyTypeEnum.DEVICE; ACCOUNT_ID: PartyTypeEnum.ACCOUNT_ID; IBAN: PartyTypeEnum.IBAN; ALIAS: PartyTypeEnum.ALIAS; CONSENT: PartyTypeEnum.CONSENT; THIRD_PARTY_LINK: PartyTypeEnum.THIRD_PARTY_LINK; }; }; } interface Cacheable { initializeCache(policyOptions: object, config: { hubName: string, hubNameRegex: RegExp }): Promise<boolean> stopCache(): Promise<void> } interface Endpoints extends Cacheable { getEndpoint(switchUrl: string, fsp: string, endpointType: FspEndpointTypesEnum, options?: any): Promise<string> getEndpointAndRender(switchUrl: string, fsp: string, endpointType: FspEndpointTypesEnum, path: string, options?: any): Promise<string> } interface Participants extends Cacheable { getParticipant(switchUrl: string, fsp: string): Promise<object> invalidateParticipantCache(fsp: string): Promise<void> } type ProxyNames = string[] interface Proxies extends Cacheable { getAllProxiesNames(switchUrl: string, onlyActive?: boolean): Promise<ProxyNames> invalidateProxiesCache(): Promise<void> } interface ProtocolVersionsType { content: string, accept: string } type RequestParams = { url: string, headers: HapiUtil.Dictionary<string>, source: string, destination: string, hubNameRegex: RegExp, method?: RestMethodsEnum, payload?: any, responseType?: string, span?: any, jwsSigner?: any, protocolVersions?: ProtocolVersionsType } interface Request { sendRequest(params: RequestParams): Promise<any> } interface Kafka { createGeneralTopicConf(template: string, functionality: string, action: string, key?: string, partition?: number, opaqueKey?: any, topicNameOverride?: string): { topicName: string, key: string | null, partition: number | null, opaqueKey: any } transformGeneralTopicName(template: string, functionality: string, action: string): string getKafkaConfig(kafkaConfig: object, flow: string, functionality: string, action: string): object } type MimeTypes = 'text/plain' | 'application/json' | 'application/vnd.interoperability.' interface StreamingProtocol { decodePayload(input: string, options: Object): Object encodePayload(input: string | Buffer, mimeType: MimeTypes): string createEventState(status: string, errorCode: string, errorDescription: string): any createMetadataWithCorrelatedEvent(transferId: string, topic: string, action: string, state: any): any createMessage(id: string, destination: string, source: string, metadata: any, headers: any, payload: any, uriParams: any, contentType: string): any } interface HeaderValidation { protocolVersions: { anyVersion: symbol, ONE: Array<string>, TWO: Array<string> }, protocolVersionsMap: Array<{ key: string, value: string }>, getHubNameRegex(hubName: string): RegExp, generateAcceptRegex(resource: string): RegExp, generateContentTypeRegex(resource: string): RegExp, parseAcceptHeader(resource: string, header: string): { valid: boolean, versions?: Set<string | symbol> }, parseContentTypeHeader(resource: string, header: string): { valid: boolean, version?: string }, convertSupportedVersionToExtensionList(supportedVersions: Array<number>): Array<{ key: string, value: string }> } type ProtocolResources = string[] type ProtocolVersions = (string | symbol)[] type ApiTypeValues = 'fspiop' | 'iso20022' type APIDocumentationPluginOptions = | { documentPath: string; document?: never } | { document?: string; documentPath?: never } type LoggingPluginOptions = { log?: ILogger, internalRoutes?: string[], traceIdHeader?: string } type HapiUtil = { HapiRawPayload: { plugin: { name: string, register: (server: Server) => void } }; FSPIOPHeaderValidation: { plugin: { name: string, register: ( server: Server, options: { resources: ProtocolResources, supportedProtocolContentVersions: ProtocolVersions, supportedProtocolAcceptVersions: ProtocolVersions, apiType: ApiTypeValues } ) => void }, errorMessages: Record<string, string>, defaultProtocolResources: ProtocolResources defaultProtocolVersions: ProtocolVersions }; OpenapiBackendValidator: { plugin: { name: string, register: (server: Server) => void } }; HapiEventPlugin: { plugin: { name: string, register: (server: Server) => void } }; customCurrencyCodeValidation: (joi: any) => { base: any; type: string; messages: { 'currency.base': string; }; rules: { currency: { validate: (value: string, helpers: any) => string | any; }; }; }; APIDocumentation: { plugin: { name: string, register: (server: Server, options: APIDocumentationPluginOptions) => void } }; loggingPlugin: { name: string, register: (server: Server, options?: LoggingPluginOptions) => Promise<void> }; API_TYPES: Record<ApiTypeValues, ApiTypeValues>; } // todo: define the rest of the types interface PubSub { (config: object, publisherClient?: IORedis, subscriberClient?: IORedis): PubSub; new(config: object, publisherClient?: IORedis, subscriberClient?: IORedis): PubSub; connect(): Promise<void>; disconnect(): Promise<boolean>; healthCheck(): Promise<boolean>; isConnected: { publisherConnected: boolean; subscriberConnected: boolean }; publish(channel: string, message: any): Promise<void>; subscribe(channel: string, callback: (message: any) => void): Promise<string>; unsubscribe(channel: string): Promise<void>; broadcast(channels: string[], message: any): Promise<void>; } interface RedisCache { (config: object, client?: IORedis): RedisCache; new(config: object, client?: IORedis): RedisCache; connect(): Promise<boolean>; disconnect(): Promise<boolean>; healthCheck(): Promise<boolean>; isConnected: boolean; get(key: string): Promise<string | null>; set(key: string, value: string, ttl?: number): Promise<void>; delete(key: string): Promise<void>; clearCache(): Promise<void>; } interface Redis { PubSub: PubSub; RedisCache: RedisCache; } type RedisInstanceConfig = | { type: 'redis'; host: string; port: number; } | { type: 'redis-cluster'; cluster: Array<{ host: string; port: number }>; }; interface DistributedLockConfig { redisConfigs: RedisInstanceConfig[]; driftFactor?: number; retryCount?: number; retryDelay?: number; retryJitter?: number; lockTimeout?: number; } interface LockInterface { acquire(key: string, ttl: number, acquireTimeout?: number): Promise<string>; release(): Promise<boolean>; extend(ttl: number): Promise<string>; } interface DistributedLock extends LockInterface { config: DistributedLockConfig; logger: ILogger; redisInstances: IORedis[]; } interface DistLock { createLock(config: DistributedLockConfig, logger?: ILogger): DistributedLock; } interface RethrowOptions { operation?: string; step?: string; loggerOverride?: ILogger; } interface RethrowModule { rethrowAndCountFspiopError(error: Error, options?: RethrowOptions, context?: string): never; rethrowDatabaseError(error: Error, options?: RethrowOptions): never; rethrowCachedDatabaseError(error: Error, options?: RethrowOptions): never; rethrowRedisError(error: Error, options?: RethrowOptions): never; rethrowKafkaError(error: Error, options?: RethrowOptions): never; rethrowCacheError(error: Error, options?: RethrowOptions): never; constructSystemExtensionError(error: Error, system: string): Error; countFspiopError(error: Error, options?: RethrowOptions, context?: string): Error; with(context: string): RethrowModule; } interface SpanTags { transactionType: string; transactionAction: string; transactionId: string | undefined; source: string | undefined; destination: string | undefined; payerFsp?: string; payeeFsp?: string; } interface QueryTags { serviceName: string; auditType: string; contentType: string; operation: string; [key: string]: any; } interface TransferSpanInput { payload?: any; headers?: Record<string, string>; params?: { id?: string }; } interface EventFramework { getTransferSpanTags(input: TransferSpanInput, transactionType: string, transactionAction: string): SpanTags; getSpanTags(transactionType: string, transactionAction: string, transactionId: string, source: string, destination: string): SpanTags; getQueryTags(serviceName: string, auditType: string, contentType: string, operation: string, additionalTags?: Record<string, any>): QueryTags; Tags: { getTransferSpanTags: (input: TransferSpanInput, transactionType: string, transactionAction: string) => SpanTags; getSpanTags: (transactionType: string, transactionAction: string, transactionId: string, source: string, destination: string) => SpanTags; getQueryTags: (serviceName: string, auditType: string, contentType: string, operation: string, additionalTags?: Record<string, any>) => QueryTags; }; } interface Util { Endpoints: Endpoints; Participants: Participants; proxies: Proxies; Hapi: HapiUtil; Kafka: Kafka; OpenapiBackend: any; Request: Request; StreamingProtocol: StreamingProtocol; HeaderValidation: HeaderValidation; Redis: Redis; distLock: DistLock; rethrow: RethrowModule; EventFramework: EventFramework; resourceVersions: Record<string, { contentVersion: string }>; Http: { SwitchDefaultHeaders: (destination: string, resource: string, hubName: string, contentVersion: string) => Record<string, any>; }; } const Enum: Enum const Util: Util const HealthCheck: any namespace mysql { class KnexWrapper { constructor(deps: KnexWrapperDeps); knex: Knex; isConnected: boolean; connect(): Promise<void>; disconnect(): Promise<void>; executeWithErrorCount(queryFn: Function, operation?: string, step?: string): Promise<unknown>; handleError(error: unknown, operation?: string, step?: string, needRethrow?: boolean): void; } } } type KnexWrapperDeps = { knexOptions: Knex.Config; metrics: MetricsClient; logger: ILogger; retryOptions?: RetryConnOptions; context?: string; } type MetricsClient = { // Wrapper for prom-client from @mojaloop/central-services-metrics getCounter(name: string): { inc(details: Record<string, unknown>): void; }; } interface RetryConnOptions { // see opts from https://www.npmjs.com/package/async-retry#api retries?: number; factor?: number; minTimeout?: number; maxTimeout?: number; randomize?: boolean; onRetry?: (error: Error) => void; } export = CentralServicesShared