import { bool, intIn, makeParser } from './parse-helpers'; import type { ChainConfig } from './rule-config.types'; const MAX_DUE_IN_DAYS = 365; /** Follow-up chains (queen cells, queen acceptance): one check some days later. */ export function chainParser(trigger: string, defaults: ChainConfig) { return makeParser(trigger, defaults, (scope) => ({ dueInDays: intIn( scope, 'dueInDays', defaults.dueInDays, 0, MAX_DUE_IN_DAYS, ), notify: bool(scope, 'notify', defaults.notify), })); } export const DEFAULT_CHAIN_CONFIG: ChainConfig = { dueInDays: 7, notify: false, }; export const DEFAULT_WITHDRAWAL_ENDED_CONFIG = { notify: true }; export const withdrawalEndedParser = makeParser<{ notify: boolean }>( 'WITHDRAWAL_ENDED', DEFAULT_WITHDRAWAL_ENDED_CONFIG, (scope) => ({ notify: bool(scope, 'notify', DEFAULT_WITHDRAWAL_ENDED_CONFIG.notify), }), ); /** The cleanup rule has no setting; it is only switched on or off. */ export const colonyEndedCleanupParser = makeParser>( 'COLONY_ENDED_CLEANUP', {}, () => ({}), );