lamassu-server/packages/server/lib/compliance-triggers.js
2025-12-31 19:04:13 +01:00

84 lines
2.4 KiB
JavaScript

const uuid = require('uuid')
const {
db: { default: db },
complianceTriggers,
} = require('typesafe-db')
const maxDaysThreshold = triggers =>
Math.max(...[{ thresholdDays: 0 }].concat(triggers).map(t => t.thresholdDays))
const getCashLimit = triggers =>
Math.min(
...triggers.flatMap(({ triggerType, requirementType, threshold }) => {
const withFiat = ['txVolume', 'txAmount'].includes(triggerType)
const blocking = ['block', 'suspend'].includes(requirementType)
return withFiat && blocking && threshold ? [threshold] : []
}),
) || Infinity
const hasRequirement = requirementType => triggers =>
triggers.some(t => t.requirementType === requirementType)
const hasPhone = hasRequirement('sms')
const hasFacephoto = hasRequirement('facephoto')
const hasIdScan = hasRequirement('idCardData')
const hasSanctions = hasRequirement('sanctions')
const AUTH_METHODS = {
SMS: 'SMS',
EMAIL: 'EMAIL',
}
const getComplianceTriggerSets = () =>
complianceTriggers.getComplianceTriggerSets(db)
const getComplianceTriggerSetById = id =>
complianceTriggers.getComplianceTriggerSetById(db, id)
const getComplianceTriggers = complianceTriggerSetId =>
complianceTriggers.getComplianceTriggers(db, complianceTriggerSetId)
const createComplianceTriggerSet = name =>
complianceTriggers.createComplianceTriggerSet(db, uuid.v4(), name)
const deleteComplianceTriggerSet = id =>
complianceTriggers.deleteComplianceTriggerSet(db, id)
const createComplianceTrigger = (complianceTriggerSetId, trigger) =>
complianceTriggers.createComplianceTrigger(
db,
complianceTriggerSetId,
trigger,
)
const deleteComplianceTrigger = id =>
complianceTriggers.deleteComplianceTrigger(db, id)
const deleteComplianceTriggersByCustomInfoRequestId = customInfoRequestId =>
complianceTriggers.deleteComplianceTriggersByCustomInfoRequestId(
db,
customInfoRequestId,
)
const getAllComplianceTriggers = (dbOrTx = db) =>
complianceTriggers.getAllComplianceTriggers(dbOrTx)
module.exports = {
getAllComplianceTriggers,
hasSanctions,
maxDaysThreshold,
getCashLimit,
hasPhone,
hasFacephoto,
hasIdScan,
AUTH_METHODS,
getComplianceTriggerSets,
getComplianceTriggerSetById,
getComplianceTriggers,
createComplianceTriggerSet,
deleteComplianceTriggerSet,
createComplianceTrigger,
deleteComplianceTrigger,
deleteComplianceTriggersByCustomInfoRequestId,
}