taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 8430f5e82691d41eebd33540b4bd6288a3aeb7ed
parent fc83b400c52c54084913701592176949c404769f
Author: Sebastian <sebasjm@gmail.com>
Date:   Tue, 25 Mar 2025 17:54:30 -0300

taking props and events from utils

Diffstat:
Mpackages/aml-backoffice-ui/src/forms/simplest.ts | 6+++---
Mpackages/aml-backoffice-ui/src/hooks/decision-request.ts | 46+++++++++++++++++++++++++++++++++++++++-------
Mpackages/aml-backoffice-ui/src/hooks/server-info.ts | 17++++++++---------
Mpackages/aml-backoffice-ui/src/pages/CaseDetails.tsx | 11+++++------
Mpackages/aml-backoffice-ui/src/pages/CreateAccount.tsx | 7++++---
Mpackages/aml-backoffice-ui/src/pages/Dashboard.tsx | 168++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Mpackages/aml-backoffice-ui/src/pages/NewMeasure.tsx | 14+++++++-------
Mpackages/aml-backoffice-ui/src/pages/Search.tsx | 14+++++++-------
Mpackages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx | 2+-
Mpackages/aml-backoffice-ui/src/pages/Transfers.tsx | 4++--
Mpackages/aml-backoffice-ui/src/pages/UnlockAccount.tsx | 6+++---
Mpackages/aml-backoffice-ui/src/pages/decision/Events.tsx | 116++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mpackages/aml-backoffice-ui/src/pages/decision/Information.tsx | 4++--
Mpackages/aml-backoffice-ui/src/pages/decision/Justification.tsx | 10+++++-----
Mpackages/aml-backoffice-ui/src/pages/decision/Measures.tsx | 2+-
Mpackages/aml-backoffice-ui/src/pages/decision/Properties.tsx | 225++++++++++++++++++++++++++++++++++++-------------------------------------------
Mpackages/aml-backoffice-ui/src/pages/decision/Rules.tsx | 12++++++------
Mpackages/aml-backoffice-ui/src/pages/decision/Summary.tsx | 4++--
Mpackages/taler-util/src/aml/aml-events.ts | 32++++++++++++++++++++++++++++----
Mpackages/taler-util/src/aml/aml-properties.ts | 74++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Dpackages/taler-util/src/aml/taler_form_attributes.ts | 2556-------------------------------------------------------------------------------
Mpackages/taler-util/src/index.ts | 2+-
Mpackages/taler-util/src/taler-form-attributes.ts | 486+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mpackages/web-util/src/forms/gana/GLS_Onboarding.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_11.ts | 3+--
Mpackages/web-util/src/forms/gana/VQF_902_14.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_1_customer.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_1_officer.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_4.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_5.ts | 2+-
Mpackages/web-util/src/forms/gana/VQF_902_9.ts | 2+-
Mpackages/web-util/src/forms/gana/generic_note.ts | 2+-
Mpackages/web-util/src/forms/gana/generic_upload.ts | 2+-
Dpackages/web-util/src/forms/gana/taler_aml_properties.ts | 32--------------------------------
Mpackages/web-util/src/forms/index.ts | 2--
35 files changed, 723 insertions(+), 3150 deletions(-)

diff --git a/packages/aml-backoffice-ui/src/forms/simplest.ts b/packages/aml-backoffice-ui/src/forms/simplest.ts @@ -29,7 +29,7 @@ export const v1 = (i18n: InternationalizationAPI): DoubleColumnFormDesign => ({ fields: [ { type: "textArea", - id: "comment" as UIHandlerId, + id: "comment", label: i18n.str`Comment`, }, ], @@ -58,7 +58,7 @@ export function resolutionSection( fields: [ { type: "choiceHorizontal", - id: "state" as UIHandlerId, + id: "state", label: i18n.str`New state`, converterId: "TalerExchangeApi.AmlState", choices: [ @@ -78,7 +78,7 @@ export function resolutionSection( }, { type: "amount", - id: "threshold" as UIHandlerId, + id: "threshold", currency: "NETZBON", converterId: "Taler.Amount", label: i18n.str`New threshold`, diff --git a/packages/aml-backoffice-ui/src/hooks/decision-request.ts b/packages/aml-backoffice-ui/src/hooks/decision-request.ts @@ -46,19 +46,53 @@ export interface AccountAttributes { expiration: AbsoluteTime | undefined; errors: FormErrors<object> | undefined; } - +/** + * Information that will be ask to the AML officer + * in order to build up the decision. + * + * With all of this we need to create a AmlDecisionRequest + */ export interface DecisionRequest { + /** + * Next legitimization rules + */ rules: KycRule[] | undefined; + /** + * Next active measure + */ new_measures: string[] | undefined; - deadline: AbsoluteTime | undefined; + /** + * Next measure after deadline + */ onExpire_measures: string[] | undefined; + /** + * Deadline of this decision + */ + deadline: AbsoluteTime | undefined; + /** + * New information about the account + */ attributes: AccountAttributes | undefined; + /** + * Relevate state of the account + */ properties: Record<string, boolean> | undefined; - custom_properties: Record<string, any> | undefined; - custom_events: string[] | undefined; - inhibit_events: string[] | undefined; + /** + * If given all the information, this account need to be investigated + */ keep_investigating: boolean; + /** + * Description of the decision + */ justification: string | undefined; + /** + * Custom properties not listed on GANA + */ + custom_properties: Record<string, any> | undefined; + /** + * Custom unsupported events to be triggered + */ + custom_events: string[] | undefined; } export const codecForAccountAttributes = (): Codec<AccountAttributes> => @@ -79,7 +113,6 @@ export const codecForDecisionRequest = (): Codec<DecisionRequest> => .property("custom_properties", codecForAny()) .property("justification", codecOptional(codecForString())) .property("custom_events", codecOptional(codecForList(codecForString()))) - .property("inhibit_events", codecOptional(codecForList(codecForString()))) .property( "keep_investigating", codecOptionalDefault(codecForBoolean(), false), @@ -95,7 +128,6 @@ const defaultDecisionRequest: DecisionRequest = { deadline: undefined, onExpire_measures: undefined, custom_events: undefined, - inhibit_events: undefined, justification: undefined, keep_investigating: false, new_measures: undefined, diff --git a/packages/aml-backoffice-ui/src/hooks/server-info.ts b/packages/aml-backoffice-ui/src/hooks/server-info.ts @@ -14,20 +14,19 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ import { - AML_EVENTS_INFO, - AmlEventsName, AmlSpaDialect, EventCounter, + GLS_AmlEventsName, OfficerAccount, OperationOk, opFixedSuccess, TalerExchangeErrorsByMethod, TalerExchangeResultByMethod, TalerHttpError, + TOPS_AmlEventsName, } from "@gnu-taler/taler-util"; // FIX default import https://github.com/microsoft/TypeScript/issues/49189 -import { useExchangeApiContext } from "@gnu-taler/web-util/browser"; -import { useMemo } from "preact/hooks"; +import { UIHandlerId, useExchangeApiContext } from "@gnu-taler/web-util/browser"; import _useSWR, { SWRHook } from "swr"; import { Timeframe } from "../pages/Dashboard.js"; import { useOfficer } from "./officer.js"; @@ -69,9 +68,9 @@ export type ServerStats = { [name: string]: EventCounter; }; -const TOPS_EVENTS: AmlEventsName[] = []; -const GLS_EVENTS: AmlEventsName[] = []; -const TESTING_EVENTS: AmlEventsName[] = []; +const TOPS_EVENTS: TOPS_AmlEventsName[] = Object.values(TOPS_AmlEventsName).map(c => TOPS_AmlEventsName[c]); +const GLS_EVENTS: GLS_AmlEventsName[] = Object.values(GLS_AmlEventsName).map(c => GLS_AmlEventsName[c]); +const TESTING_EVENTS: TOPS_AmlEventsName[] = Object.values(TOPS_AmlEventsName).map(c => TOPS_AmlEventsName[c]); export function useServerStatistics( dialect: AmlSpaDialect, @@ -95,14 +94,14 @@ export function useServerStatistics( type Success = TalerExchangeResultByMethod<"getAmlKycStatistics">; type Error = TalerExchangeErrorsByMethod<"getAmlKycStatistics">; type Response = { - key: AmlEventsName; + key: UIHandlerId; current: Success | Error; previous: Success | Error | undefined; }; async function fetcher([officer, keys, current, previous]: [ OfficerAccount, - AmlEventsName[], + UIHandlerId[], Timeframe, Timeframe | undefined, ]) { diff --git a/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx b/packages/aml-backoffice-ui/src/pages/CaseDetails.tsx @@ -202,7 +202,6 @@ export function CaseDetails({ custom_properties: undefined, onExpire_measures: undefined, custom_events: undefined, - inhibit_events: undefined, attributes: undefined, justification: undefined, keep_investigating: false, @@ -324,7 +323,7 @@ function SubmitNewDecision({ type: "single-column", fields: [ { - id: "justification" as UIHandlerId, + id: "justification", type: "textArea", required: true, label: i18n.str`Justification`, @@ -339,20 +338,20 @@ function SubmitNewDecision({ help: i18n.str`The user will need to complete this form.`, }); formDesign.fields.push({ - id: "fields" as UIHandlerId, + id: "fields", type: "array", required: true, label: i18n.str`Fields`, fields: [ { - id: "name" as UIHandlerId, + id: "name", type: "text", required: true, label: i18n.str`Name`, help: i18n.str`Name of the field in the form`, }, { - id: "type" as UIHandlerId, + id: "type", type: "choiceStacked", required: true, label: i18n.str`Type`, @@ -371,7 +370,7 @@ function SubmitNewDecision({ ], }, ], - labelFieldId: "name" as UIHandlerId, + labelFieldId: "name", }); } const officer = useOfficer(); diff --git a/packages/aml-backoffice-ui/src/pages/CreateAccount.tsx b/packages/aml-backoffice-ui/src/pages/CreateAccount.tsx @@ -44,7 +44,7 @@ const createAccountForm = ( type: "single-column", fields: [ { - id: "password" as UIHandlerId, + id: "password", type: "secret", label: i18n.str`Password`, required: true, @@ -65,7 +65,7 @@ const createAccountForm = ( }, }, { - id: "repeat" as UIHandlerId, + id: "repeat", type: "secret", label: i18n.str`Repeat password`, required: true, @@ -102,7 +102,8 @@ export function CreateAccount(): VNode { status.status === "fail" || officer.state !== "not-found" ? undefined : withErrorHandler( - async () => officer.create(handler.password!.value!), + async () => officer.create(handler.fieldHandlers.password!.value!), + // async () => officer.create(handler.password!.value!), () => {}, ); return ( diff --git a/packages/aml-backoffice-ui/src/pages/Dashboard.tsx b/packages/aml-backoffice-ui/src/pages/Dashboard.tsx @@ -15,15 +15,16 @@ */ import { AbsoluteTime, - AmlEventsName, AmlSpaDialect, assertUnreachable, + GLS_AmlEventsName, HttpStatusCode, OperationOk, TalerCorebankApi, TalerError, TalerExchangeErrorsByMethod, TalerExchangeResultByMethod, + TOPS_AmlEventsName, TranslatedString, } from "@gnu-taler/taler-util"; import { @@ -31,6 +32,7 @@ import { InternationalizationAPI, Loading, RouteDefinition, + UIHandlerId, useExchangeApiContext, useTranslationContext, } from "@gnu-taler/web-util/browser"; @@ -166,7 +168,7 @@ function EventMetrics({ } const result = resp as OperationOk< { - key: AmlEventsName; + key: UIHandlerId; current: TalerExchangeResultByMethod<"getAmlKycStatistics">; previous: TalerExchangeResultByMethod<"getAmlKycStatistics"> | undefined; }[] @@ -200,8 +202,8 @@ function EventMetrics({ <dl class="mt-5 grid grid-cols-1 md:grid-cols-4 divide-y divide-gray-200 overflow-hidden rounded-lg bg-white shadow-lg md:divide-x md:divide-y-0"> {result.body.map((ev) => { - const label = labelForEvent(ev.key, i18n); - const desc = descriptionForEvent(ev.key, i18n); + const label = labelForEvent(ev.key, i18n, dialect); + const desc = descriptionForEvent(ev.key, i18n, dialect); if (ev.current.type === "fail") return undefined; if (ev.previous?.type === "fail") return undefined; return ( @@ -233,102 +235,155 @@ function EventMetrics({ ); } -function labelForEvent(name: AmlEventsName, i18n: InternationalizationAPI) { +function labelForEvent( + name: UIHandlerId, + i18n: InternationalizationAPI, + dialect: AmlSpaDialect, +) { + switch (dialect) { + case AmlSpaDialect.TOPS: + return labelForEvent_tops(name as TOPS_AmlEventsName, i18n); + case AmlSpaDialect.GLS: + return labelForEvent_gls(name as GLS_AmlEventsName, i18n); + case AmlSpaDialect.TESTING: + return labelForEvent_tops(name as TOPS_AmlEventsName, i18n); + default: { + assertUnreachable(dialect); + } + } +} +function labelForEvent_tops( + name: TOPS_AmlEventsName, + i18n: InternationalizationAPI, +) { switch (name) { - case AmlEventsName.ACCOUNT_OPENED: + case TOPS_AmlEventsName.ACCOUNT_OPENED: return i18n.str`Account opened`; - case AmlEventsName.ACCOUNT_CLOSED: + case TOPS_AmlEventsName.ACCOUNT_CLOSED: return i18n.str`Account closed`; - case AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: return i18n.str`High risk account incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: return i18n.str`High risk account removed`; - case AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: return i18n.str`Account from foreign PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: return i18n.str`Account from foreign PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: return i18n.str`Account from high-risk country incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: return i18n.str`Account from high-risk country removed`; - case AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: return i18n.str`Account from dometic PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: return i18n.str`Account from dometic PEP removed`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: return i18n.str`MROS reported by obligation`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: return i18n.str`MROS reported by right`; - case AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: return i18n.str`Investigations after Art 6 Gwg completed`; - case AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: return i18n.str`Investigations after Art 6 Gwg started`; - case AmlEventsName.TEST_EVENT_KEY_1: + case TOPS_AmlEventsName.TEST_EVENT_KEY_1: return i18n.str`TEST_EVENT_KEY_1`; - case AmlEventsName.TEST_EVENT_KEY_2: + case TOPS_AmlEventsName.TEST_EVENT_KEY_2: return i18n.str`TEST_EVENT_KEY_2`; - case AmlEventsName.TEST_EVENT_KEY_3: + case TOPS_AmlEventsName.TEST_EVENT_KEY_3: return i18n.str`TEST_EVENT_KEY_3`; - case AmlEventsName.TEST_EVENT_KEY_4: + case TOPS_AmlEventsName.TEST_EVENT_KEY_4: return i18n.str`TEST_EVENT_KEY_4`; - case AmlEventsName.TEST_EVENT_KEY_5: + case TOPS_AmlEventsName.TEST_EVENT_KEY_5: return i18n.str`TEST_EVENT_KEY_5`; default: { assertUnreachable(name); } } } +function labelForEvent_gls( + name: GLS_AmlEventsName, + i18n: InternationalizationAPI, +) { + switch (name) { + case GLS_AmlEventsName.ACCOUNT_OPENED: + return i18n.str`Account opened`; + case GLS_AmlEventsName.ACCOUNT_CLOSED: + return i18n.str`Account closed`; + default: { + assertUnreachable(name); + } + } +} function descriptionForEvent( - name: AmlEventsName, + name: UIHandlerId, + i18n: InternationalizationAPI, + dialect: AmlSpaDialect +): TranslatedString | undefined { + switch (dialect) { + case AmlSpaDialect.TOPS: + return descriptionForEvent_tops(name as TOPS_AmlEventsName, i18n); + case AmlSpaDialect.GLS: + return descriptionForEvent_gls(name as GLS_AmlEventsName, i18n); + case AmlSpaDialect.TESTING: + return descriptionForEvent_tops(name as TOPS_AmlEventsName, i18n); + default: { + assertUnreachable(dialect); + } + } + +} + +function descriptionForEvent_tops( + name: TOPS_AmlEventsName, i18n: InternationalizationAPI, ): TranslatedString | undefined { switch (name) { - case AmlEventsName.ACCOUNT_OPENED: + case TOPS_AmlEventsName.ACCOUNT_OPENED: return i18n.str`Account opened`; - case AmlEventsName.ACCOUNT_CLOSED: + case TOPS_AmlEventsName.ACCOUNT_CLOSED: return i18n.str`Account closed`; - case AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: return i18n.str`High risk account incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: return i18n.str`High risk account removed`; - case AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: return i18n.str`Account from foreign PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: return i18n.str`Account from foreign PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: return i18n.str`Account from high-risk country incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: return i18n.str`Account from high-risk country removed`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: return i18n.str`MROS reported by obligation`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: return i18n.str`MROS reported by right`; - case AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: return i18n.str`Investigations after Art 6 Gwg completed`; - case AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: return i18n.str`Investigations after Art 6 Gwg started`; - case AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: return i18n.str`Investigations after Art 6 Gwg opened`; - case AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: return i18n.str`Investigations after Art 6 Gwg closed`; - case AmlEventsName.TEST_EVENT_KEY_1: + case TOPS_AmlEventsName.TEST_EVENT_KEY_1: return i18n.str`TEST_EVENT_KEY_1`; - case AmlEventsName.TEST_EVENT_KEY_2: + case TOPS_AmlEventsName.TEST_EVENT_KEY_2: return i18n.str`TEST_EVENT_KEY_2`; - case AmlEventsName.TEST_EVENT_KEY_3: + case TOPS_AmlEventsName.TEST_EVENT_KEY_3: return i18n.str`TEST_EVENT_KEY_3`; - case AmlEventsName.TEST_EVENT_KEY_4: + case TOPS_AmlEventsName.TEST_EVENT_KEY_4: return i18n.str`TEST_EVENT_KEY_4`; - case AmlEventsName.TEST_EVENT_KEY_5: + case TOPS_AmlEventsName.TEST_EVENT_KEY_5: return i18n.str`TEST_EVENT_KEY_5`; default: { assertUnreachable(name); @@ -336,6 +391,23 @@ function descriptionForEvent( } } +function descriptionForEvent_gls( + name: GLS_AmlEventsName, + i18n: InternationalizationAPI, +): TranslatedString | undefined { + switch (name) { + case GLS_AmlEventsName.ACCOUNT_OPENED: + return i18n.str`Account opened`; + case GLS_AmlEventsName.ACCOUNT_CLOSED: + return i18n.str`Account closed`; + default: { + assertUnreachable(name); + } + } +} + + + function MetricValueNumber({ current, previous, diff --git a/packages/aml-backoffice-ui/src/pages/NewMeasure.tsx b/packages/aml-backoffice-ui/src/pages/NewMeasure.tsx @@ -335,7 +335,7 @@ const formDesign = ( type: "single-column", fields: [ { - id: "name" as UIHandlerId, + id: "name", type: "text", required: true, label: i18n.str`Name`, @@ -349,7 +349,7 @@ const formDesign = ( }, { type: "selectOne", - id: "program" as UIHandlerId, + id: "program", label: i18n.str`Program`, choices: programs.map((m) => { return { @@ -367,7 +367,7 @@ const formDesign = ( }, { type: "selectOne", - id: "check" as UIHandlerId, + id: "check", label: i18n.str`Check`, choices: checks.map((m) => { return { @@ -391,18 +391,18 @@ const formDesign = ( }, { type: "array", - id: "context" as UIHandlerId, + id: "context", label: i18n.str`Context`, - labelFieldId: "key" as UIHandlerId, + labelFieldId: "key", fields: [ { type: "text", - id: "key" as UIHandlerId, + id: "key", label: i18n.str`Key`, }, { type: "text", - id: "value" as UIHandlerId, + id: "value", label: i18n.str`Value`, }, ], diff --git a/packages/aml-backoffice-ui/src/pages/Search.tsx b/packages/aml-backoffice-ui/src/pages/Search.tsx @@ -499,7 +499,7 @@ const paytoTypeField: ( i18n: InternationalizationAPI, ) => UIFormElementConfig[] = (i18n) => [ { - id: "paytoType" as UIHandlerId, + id: "paytoType", type: "choiceHorizontal", required: true, choices: [ @@ -528,7 +528,7 @@ const genericFields: ( i18n: InternationalizationAPI, ) => UIFormElementConfig[] = (i18n) => [ { - id: "payto" as UIHandlerId, + id: "payto", type: "textArea", required: true, label: i18n.str`Payto URI`, @@ -545,7 +545,7 @@ const ibanFields: (i18n: InternationalizationAPI) => UIFormElementConfig[] = ( i18n, ) => [ { - id: "account" as UIHandlerId, + id: "account", type: "text", required: true, label: i18n.str`IBAN`, @@ -559,7 +559,7 @@ const walletFields: (i18n: InternationalizationAPI) => UIFormElementConfig[] = ( i18n, ) => [ { - id: "exchange" as UIHandlerId, + id: "exchange", type: "text", required: true, label: i18n.str`Host`, @@ -570,7 +570,7 @@ const walletFields: (i18n: InternationalizationAPI) => UIFormElementConfig[] = ( }, }, { - id: "reservePub" as UIHandlerId, + id: "reservePub", type: "text", required: true, label: i18n.str`ID`, @@ -588,7 +588,7 @@ const talerBankFields: ( i18n: InternationalizationAPI, ) => UIFormElementConfig[] = (i18n) => [ { - id: "account" as UIHandlerId, + id: "account", type: "text", required: true, label: i18n.str`Account`, @@ -596,7 +596,7 @@ const talerBankFields: ( placeholder: i18n.str`DE123123123`, }, { - id: "hostname" as UIHandlerId, + id: "hostname", type: "text", required: true, label: i18n.str`Hostname`, diff --git a/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx b/packages/aml-backoffice-ui/src/pages/ShowConsolidated.tsx @@ -83,7 +83,7 @@ export function ShowConsolidated({ const result: UIFormElementConfig = { type: "text", label: key as TranslatedString, - id: `${key}.value` as UIHandlerId, + id: `${key}.value`, disabled: true, help: `At ${ field.since.t_ms === "never" diff --git a/packages/aml-backoffice-ui/src/pages/Transfers.tsx b/packages/aml-backoffice-ui/src/pages/Transfers.tsx @@ -44,7 +44,7 @@ export function Transfers({ fields: [ { type: "choiceHorizontal", - id: "direction" as UIHandlerId, + id: "direction", label: i18n.str`Direction`, choices: [ { @@ -59,7 +59,7 @@ export function Transfers({ }, { type: "amount", - id: "threshold" as UIHandlerId, + id: "threshold", label: i18n.str`Minimum amount`, help: i18n.str`All amounts below the given threshold will be filtered.`, currency: config.config.currency, diff --git a/packages/aml-backoffice-ui/src/pages/UnlockAccount.tsx b/packages/aml-backoffice-ui/src/pages/UnlockAccount.tsx @@ -35,7 +35,7 @@ const unlockAccountForm = (i18n: InternationalizationAPI): FormDesign => ({ type: "single-column", fields: [ { - id: "password" as UIHandlerId, + id: "password", type: "text", label: i18n.str`Password`, required: true, @@ -67,7 +67,7 @@ export function UnlockAccount(): VNode { status.status === "fail" || officer.state !== "locked" ? undefined : withErrorHandler( - async () => officer.tryUnlock(handler.password!.value!), + async () => officer.tryUnlock(handler.fieldHandlers.password!.value!), () => {}, ); @@ -103,7 +103,7 @@ export function UnlockAccount(): VNode { name="password" type="password" required - handler={handler.password} + handler={handler.fieldHandlers.password} /> </div> diff --git a/packages/aml-backoffice-ui/src/pages/decision/Events.tsx b/packages/aml-backoffice-ui/src/pages/decision/Events.tsx @@ -1,11 +1,12 @@ import { AML_EVENTS_INFO, AmlDecision, - AmlEventsName, AmlSpaDialect, assertUnreachable, + GLS_AmlEventsName, MeasureInformation, TalerError, + TOPS_AmlEventsName, } from "@gnu-taler/taler-util"; import { FormDesign, @@ -62,10 +63,10 @@ export function Events({ account }: { account: string }): VNode { inhibit: calculatedEvents.on.reduce( (prev, cur) => { if (cur.type !== "toggle") return prev; - const isInhibit = - request.inhibit_events !== undefined && - request.inhibit_events.indexOf(cur.id) !== -1; - prev[cur.id] = !isInhibit; + // const isInhibit = + // request.inhibit_events !== undefined && + // request.inhibit_events.indexOf(cur.id) !== -1; + prev[cur.id] = !false; // FIXME return prev; }, {} as FormType["inhibit"], @@ -81,9 +82,9 @@ export function Events({ account }: { account: string }): VNode { custom_events: !form.status.result.trigger ? [] : form.status.result.trigger.map((t) => t?.name!), - inhibit_events: Object.entries(form.status.result.inhibit ?? {}) - .filter(([key, inhibit]) => !inhibit) - .map(([key]) => key), + // inhibit_events: Object.entries(form.status.result.inhibit ?? {}) + // .filter(([key, inhibit]) => !inhibit) + // .map(([key]) => key), }); }); @@ -116,7 +117,7 @@ const formDesign = ( }, ] : inhibitEvents.map((f) => - "id" in f ? { ...f, id: ("inhibit." + f.id) as UIHandlerId } : f, + "id" in f ? { ...f, id: ("inhibit." + f.id) } : f, ), }, { @@ -124,15 +125,15 @@ const formDesign = ( description: i18n.str`Add more events to be triggered by this request.`, fields: [ { - id: "trigger" as UIHandlerId, + id: "trigger", type: "array", label: i18n.str`Event list`, - labelFieldId: "name" as UIHandlerId, + labelFieldId: "name", fields: [ { type: "text", label: i18n.str`Name`, - id: "name" as UIHandlerId, + id: "name", }, ], }, @@ -141,49 +142,70 @@ const formDesign = ( ], }); -function labelForEvent(event: AmlEventsName, i18n: InternationalizationAPI) { +function labelForEvent( + name: string, + i18n: InternationalizationAPI, + dialect: AmlSpaDialect, +) { + switch (dialect) { + case AmlSpaDialect.TOPS: + return labelForEvent_tops(name as TOPS_AmlEventsName, i18n); + case AmlSpaDialect.GLS: + return labelForEvent_gls(name as GLS_AmlEventsName, i18n); + case AmlSpaDialect.TESTING: + return labelForEvent_tops(name as TOPS_AmlEventsName, i18n); + default: { + assertUnreachable(dialect); + } + } +} + +function labelForEvent_tops( + event: TOPS_AmlEventsName, + i18n: InternationalizationAPI, +) { switch (event) { - case AmlEventsName.ACCOUNT_OPENED: + case TOPS_AmlEventsName.ACCOUNT_OPENED: return i18n.str`Account opened`; - case AmlEventsName.ACCOUNT_CLOSED: + case TOPS_AmlEventsName.ACCOUNT_CLOSED: return i18n.str`Account closed`; - case AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HIGH_RISK: return i18n.str`High risk account incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HIGH_RISK: return i18n.str`High risk account removed`; - case AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_DOMESTIC_PEP: return i18n.str`Account from dometic PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_FOREIGN_PEP: return i18n.str`Account from foreign PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_FOREIGN_PEP: return i18n.str`Account from foreign PEP removed`; - case AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_OPENED_HR_COUNTRY: return i18n.str`Account from high-risk country incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_HR_COUNTRY: return i18n.str`Account from high-risk country removed`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SIMPLE: return i18n.str`MROS reported by obligation`; - case AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: + case TOPS_AmlEventsName.ACCOUNT_MROS_REPORTED_SUSPICION_SUBSTANTIATED: return i18n.str`MROS reported by right`; - case AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_COMPLETED: return i18n.str`Investigations after Art 6 Gwg completed`; - case AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: + case TOPS_AmlEventsName.ACCOUNT_INVESTIGATION_STARTED: return i18n.str`Investigations after Art 6 Gwg started`; - case AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_OPENED_INT_ORG_PEP: return i18n.str`Account from international organization PEP incorporated`; - case AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: + case TOPS_AmlEventsName.ACCOUNT_CLOSED_INT_ORG_PEP: return i18n.str`Account from international organization PEP removed`; - case AmlEventsName.TEST_EVENT_KEY_1: + case TOPS_AmlEventsName.TEST_EVENT_KEY_1: return i18n.str`TEST_EVENT_KEY_1`; - case AmlEventsName.TEST_EVENT_KEY_2: + case TOPS_AmlEventsName.TEST_EVENT_KEY_2: return i18n.str`TEST_EVENT_KEY_2`; - case AmlEventsName.TEST_EVENT_KEY_3: + case TOPS_AmlEventsName.TEST_EVENT_KEY_3: return i18n.str`TEST_EVENT_KEY_3`; - case AmlEventsName.TEST_EVENT_KEY_4: + case TOPS_AmlEventsName.TEST_EVENT_KEY_4: return i18n.str`TEST_EVENT_KEY_4`; - case AmlEventsName.TEST_EVENT_KEY_5: + case TOPS_AmlEventsName.TEST_EVENT_KEY_5: return i18n.str`TEST_EVENT_KEY_5`; default: { assertUnreachable(event); @@ -191,6 +213,21 @@ function labelForEvent(event: AmlEventsName, i18n: InternationalizationAPI) { } } +function labelForEvent_gls( + event: GLS_AmlEventsName, + i18n: InternationalizationAPI, +) { + switch (event) { + case GLS_AmlEventsName.ACCOUNT_OPENED: + return i18n.str`Account opened`; + case GLS_AmlEventsName.ACCOUNT_CLOSED: + return i18n.str`Account closed`; + default: { + assertUnreachable(event); + } + } +} + function calculateEventsBasedOnState( currentState: AmlDecision | undefined, request: DecisionRequest, @@ -203,15 +240,20 @@ function calculateEventsBasedOnState( } = { on: [], off: [] }; return Object.entries(AML_EVENTS_INFO).reduce((prev, [name, info]) => { const field = { - id: name as UIHandlerId, + id: name, type: "toggle", required: true, - label: labelForEvent(name as AmlEventsName, i18n), + label: labelForEvent(name, i18n, dialect), } satisfies UIFormElementConfig; if ( currentState && - info.shouldBeTriggered(currentState.limits, currentState.properties ?? {}, request.properties ?? {}, ((request.attributes ?? {}) as Record<string, unknown>)) + info.shouldBeTriggered( + currentState.limits, + currentState.properties ?? {}, + request.properties ?? {}, + (request.attributes ?? {}) as Record<string, unknown>, + ) ) { prev.on.push(field); } else { diff --git a/packages/aml-backoffice-ui/src/pages/decision/Information.tsx b/packages/aml-backoffice-ui/src/pages/decision/Information.tsx @@ -6,7 +6,6 @@ import { InputAbsoluteTime, InternationalizationAPI, onComponentUnload, - TalerFormAttributes, UIFieldHandler, UIHandlerId, useForm, @@ -16,6 +15,7 @@ import { h, VNode } from "preact"; import { useEffect, useState } from "preact/compat"; import { useUiFormsContext } from "../../context/ui-forms.js"; import { useCurrentDecisionRequest } from "../../hooks/decision-request.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; /** * Mark for further investigation and explain decision @@ -197,7 +197,7 @@ const formDesign = ( description: i18n.str`Select a form to submit new information about the customer or continue to the next step`, fields: [ { - id: "formId" as UIHandlerId, + id: "formId", type: "selectOne", required: true, label: i18n.str`Form:`, diff --git a/packages/aml-backoffice-ui/src/pages/decision/Justification.tsx b/packages/aml-backoffice-ui/src/pages/decision/Justification.tsx @@ -77,20 +77,20 @@ const formDesign = ( type: "single-column", fields: [ { - id: "justification" as UIHandlerId, + id: "justification", type: "textArea", required: true, label: i18n.str`Justification`, }, { - id: "investigate" as UIHandlerId, + id: "investigate", type: "toggle", label: i18n.str`Keep investigation?`, }, { type: "choiceHorizontal", label: i18n.str`Expiration`, - id: "expiration" as UIHandlerId, + id: "expiration", choices: [ { label: i18n.str`In a week`, @@ -109,7 +109,7 @@ const formDesign = ( ], }, { - id: "expiration" as UIHandlerId, + id: "expiration", type: "absoluteTimeText", placeholder: "dd/MM/yyyy", pattern: "dd/MM/yyyy", @@ -124,7 +124,7 @@ const formDesign = ( }; }), unique: true, - id: "measures" as UIHandlerId, + id: "measures", label: i18n.str`Expiration measure`, help: i18n.str`Measures that the customer will need to satisfy after expiration.`, }, diff --git a/packages/aml-backoffice-ui/src/pages/decision/Measures.tsx b/packages/aml-backoffice-ui/src/pages/decision/Measures.tsx @@ -87,7 +87,7 @@ function formDesign( }; }), ], - id: "measures" as UIHandlerId, + id: "measures", label: i18n.str`Active measures`, help: i18n.str`Measures that the customer will need to satisfy while the rules are active.`, }, diff --git a/packages/aml-backoffice-ui/src/pages/decision/Properties.tsx b/packages/aml-backoffice-ui/src/pages/decision/Properties.tsx @@ -1,27 +1,28 @@ import { - AbsoluteTime, - AmlDecision, + AccountProperties, AmlSpaDialect, - Amounts, - KycAttributes, - LimitOperationType, + GLS_AccountProperties, + GLS_AML_PROPERTIES, + LegitimizationRuleSet, + PropertiesMapInfo, TalerError, + TalerFormAttributes, + TOPS_AccountProperties, + TOPS_AML_PROPERTIES } from "@gnu-taler/taler-util"; import { FormDesign, FormUI, InternationalizationAPI, + Loading, onComponentUnload, - TalerAmlProperties, - TalerFormAttributes, UIFormElementConfig, UIHandlerId, useExchangeApiContext, useForm, - useTranslationContext, + useTranslationContext } from "@gnu-taler/web-util/browser"; import { h, VNode } from "preact"; -import { useAccountInformation } from "../../hooks/account.js"; import { DecisionRequest, useCurrentDecisionRequest, @@ -36,7 +37,6 @@ import { usePreferences } from "../../hooks/preferences.js"; */ export function Properties({ account }: { account: string }): VNode { const activeDecision = useAccountActiveDecision(account); - const accountDetails = useAccountInformation(account); const [request] = useCurrentDecisionRequest(); const { config } = useExchangeApiContext(); const [pref] = usePreferences(); @@ -48,37 +48,30 @@ export function Properties({ account }: { account: string }): VNode { ? undefined : activeDecision.body; - const details = - !accountDetails || - accountDetails instanceof TalerError || - accountDetails.type === "fail" - ? undefined - : accountDetails.body; - const dialect = (pref.testingDialect ? undefined : config.config.aml_spa_dialect) ?? AmlSpaDialect.TESTING; + if (!lastDecision) { + return <Loading /> + } + const calculatedProps = calculatePropertiesBasedOnState( - lastDecision, - details, - request, - dialect, - ); + lastDecision.limits, + lastDecision.properties ?? {}, + request, + dialect, + ); const merged = Object.entries(calculatedProps).reduce( (prev, [key, value]) => { if (prev[key] === undefined) { - prev[key] = value; + prev[key] = !!value; } return prev; }, request.properties ?? {}, ); - if (!details) { - return <div>loading...</div>; - } - return ( <div> <ReloadForm merged={merged} /> @@ -134,7 +127,7 @@ export const propertiesForm = ( { title: i18n.str`Properties`, fields: props.map((f) => - "id" in f ? { ...f, id: ("defined." + f.id) as UIHandlerId } : f, + "id" in f ? { ...f, id: "defined." + f.id } : f, ), }, { @@ -142,20 +135,20 @@ export const propertiesForm = ( description: i18n.str`Add more properties that not listed above.`, fields: [ { - id: "custom" as UIHandlerId, + id: "custom", type: "array", label: i18n.str`New properties`, - labelFieldId: "name" as UIHandlerId, + labelFieldId: "name", fields: [ { type: "text", label: i18n.str`Name`, - id: "name" as UIHandlerId, + id: "name", }, { type: "text", label: i18n.str`Value`, - id: "value" as UIHandlerId, + id: "value", }, ], }, @@ -164,138 +157,122 @@ export const propertiesForm = ( ], }); -export function propertiesByDialect( +function propertiesByDialect( i18n: InternationalizationAPI, // dialect: AmlSpaDialect, ): UIFormElementConfig[] { // if (!dialect) return []; return [ { - id: TalerAmlProperties.AML_ACCOUNT_ACTIVE_DEPOSIT as UIHandlerId, + id: TalerFormAttributes.AML_ACCOUNT_OPEN, label: i18n.str`Is account active for deposit and payments?`, type: "toggle", threeState: true, }, { - id: TalerAmlProperties.AML_DOMESTIC_PEP as UIHandlerId, + id: TalerFormAttributes.AML_DOMESTIC_PEP, label: i18n.str`Does account belong to a domestic PEP?`, type: "toggle", threeState: true, }, { - id: TalerAmlProperties.AML_FOREIGN_PEP as UIHandlerId, + id: TalerFormAttributes.AML_FOREIGN_PEP, label: i18n.str`Does account belong to a foreign PEP?`, type: "toggle", threeState: true, }, { - id: TalerAmlProperties.AML_HIGH_RISK_BUSINESS as UIHandlerId, + id: TalerFormAttributes.AML_HIGH_RISK_BUSINESS, label: i18n.str`Does account belong to a high risk business?`, type: "toggle", threeState: true, }, { - id: TalerAmlProperties.AML_HIGH_RISK_COUNTRY as UIHandlerId, + id: TalerFormAttributes.AML_HIGH_RISK_COUNTRY, label: i18n.str`Does account belong to a person from a high risk country?`, type: "toggle", threeState: true, }, - { - id: TalerAmlProperties.AML_INVESTIGATION_ART6_COMPLETED as UIHandlerId, - label: i18n.str`Was succesfully investigated under Art 6 Gwg?`, - type: "toggle", - threeState: true, - }, - { - id: TalerAmlProperties.AML_INVESTIGATION_ART6_FAILED as UIHandlerId, - label: i18n.str`Was investigated under Art 6 Gwg and failed?`, - type: "toggle", - threeState: true, - }, - { - id: TalerAmlProperties.AML_MROS_REPORTED_ART305 as UIHandlerId, - label: i18n.str`Was reported to MROS by obligation?`, - type: "toggle", - threeState: true, - }, - { - id: TalerAmlProperties.AML_MROS_REPORTED_ART9 as UIHandlerId, - label: i18n.str`Was reported to MROS by right?`, - type: "toggle", - threeState: true, - }, + // { + // id: TalerFormAttributes.AML_INVESTIGATION_ART6_COMPLETED, + // label: i18n.str`Was succesfully investigated under Art 6 Gwg?`, + // type: "toggle", + // threeState: true, + // }, + // { + // id: TalerFormAttributes.AML_INVESTIGATION_ART6_FAILED, + // label: i18n.str`Was investigated under Art 6 Gwg and failed?`, + // type: "toggle", + // threeState: true, + // }, + // { + // id: TalerFormAttributes.AML_MROS_REPORTED_ART305, + // label: i18n.str`Was reported to MROS by obligation?`, + // type: "toggle", + // threeState: true, + // }, + // { + // id: TalerFormAttributes.AML_MROS_REPORTED_ART9, + // label: i18n.str`Was reported to MROS by right?`, + // type: "toggle", + // threeState: true, + // }, ]; } -type PropName = keyof typeof TalerAmlProperties; - type PartialRecord<K extends keyof any, T> = { [P in K]?: T; }; -// 7N6GSTA1RA8XC6QKGJHS4WS7ZDBE5B01ZD8MZ6QXSTH9D2T73HTG + function calculatePropertiesBasedOnState( - currentState: AmlDecision | undefined, - details: KycAttributes | undefined, + currentLimits: LegitimizationRuleSet, + state: AccountProperties, request: DecisionRequest, dialect: AmlSpaDialect, -): PartialRecord<PropName, boolean> { - const result: Record<PropName, boolean | undefined> = { - AML_ACCOUNT_ACTIVE_DEPOSIT: undefined, - AML_DOMESTIC_PEP: undefined, - AML_FOREIGN_PEP: undefined, - AML_HIGH_RISK_BUSINESS: undefined, - AML_HIGH_RISK_COUNTRY: undefined, - AML_INVESTIGATION_ART6_COMPLETED: undefined, - AML_INVESTIGATION_ART6_FAILED: undefined, - AML_MROS_REPORTED_ART305: undefined, - AML_MROS_REPORTED_ART9: undefined, - AML_NO_OPERATION_DURING_PERIOD: undefined, - }; - if (!details) return result; +): PartialRecord<UIHandlerId, string | boolean | undefined> { + const newNewAttributes = ( + request.attributes ? request.attributes.data : {} + ) as Record<string, unknown>; + type Result = PartialRecord<UIHandlerId, string | boolean | undefined>; + const initial: Result = {}; - const hasRuleThatFreezeDeposit = - (request.rules ?? []).findIndex( - (r) => - r.operation_type === LimitOperationType.deposit && - Amounts.isZero(r.threshold), - ) === -1; - - result.AML_ACCOUNT_ACTIVE_DEPOSIT = !hasRuleThatFreezeDeposit; - - const events = [...details.details].sort((a, b) => { - return AbsoluteTime.cmp( - AbsoluteTime.fromProtocolTimestamp(a.collection_time), - AbsoluteTime.fromProtocolTimestamp(b.collection_time), - ); - }); - const consolidated = events.reduce( - (prev, cur) => { - const since = AbsoluteTime.fromProtocolTimestamp(cur.collection_time); - Object.entries(cur.attributes ?? {}).forEach(([key, value]) => { - const v: any = value; - prev[key] = { - value: typeof v === "object" && "text" in v ? v.text : value, - since, - }; - }); - return prev; - }, - {} as { - [attrName: string]: - | { - value: unknown; - since: AbsoluteTime; - } - | undefined; - }, - ); + function mergeProperties<T extends string>( + iv: Result, + list: readonly T[], + info: PropertiesMapInfo<T>, + ): Result { + return list.reduce((result, prop) => { + result[prop] = info[prop].deriveProperty( + currentLimits, + state, + newNewAttributes, + ); + return result; + }, iv); + } - result.AML_HIGH_RISK_COUNTRY = - consolidated["HIGH_RISK_COUNTRY"]?.value === "true"; - result.AML_DOMESTIC_PEP = consolidated["PEP_DOMESTIC"]?.value === "true"; - result.AML_FOREIGN_PEP = consolidated["PEP_FOREIGN"]?.value === "true"; - result.AML_HIGH_RISK_BUSINESS = - consolidated["COUNTRY_RISK_BUSINESS_LEVEL"]?.value === "true"; + switch (dialect) { + case AmlSpaDialect.TOPS: { + return mergeProperties( + initial, + TOPS_AccountProperties, + TOPS_AML_PROPERTIES, + ); + } + case AmlSpaDialect.GLS: { + return mergeProperties( + initial, + GLS_AccountProperties, + GLS_AML_PROPERTIES, + ); + } + case AmlSpaDialect.TESTING: { + return mergeProperties( + initial, + TOPS_AccountProperties, + TOPS_AML_PROPERTIES, + ); + } + } - return result; } diff --git a/packages/aml-backoffice-ui/src/pages/decision/Rules.tsx b/packages/aml-backoffice-ui/src/pages/decision/Rules.tsx @@ -249,7 +249,7 @@ const formDesign = ( type: "single-column", fields: [ { - id: "operation_type" as UIHandlerId, + id: "operation_type", type: "choiceHorizontal", label: i18n.str`Operation type`, required: true, @@ -261,14 +261,14 @@ const formDesign = ( }), }, { - id: "threshold" as UIHandlerId, + id: "threshold", type: "amount", required: true, label: i18n.str`Threshold`, currency, }, { - id: "timeframe" as UIHandlerId, + id: "timeframe", type: "durationText", // required: true, placeholder: "1Y 2M 3D 4h 5m 6s", @@ -276,7 +276,7 @@ const formDesign = ( help: `Use YMDhms next to a number as a unit for Year, Month, Day, hour, minute and seconds.`, }, { - id: "exposed" as UIHandlerId, + id: "exposed", type: "toggle", label: i18n.str`Exposed`, help: i18n.str`Is this limit comunicated to the customer?`, @@ -290,12 +290,12 @@ const formDesign = ( label: m.id, }; }), - id: "measures" as UIHandlerId, + id: "measures", label: i18n.str`Esclation measure`, help: i18n.str`Measures that the customer will need to satisfy to apply for a new threshold.`, }, { - id: "all" as UIHandlerId, + id: "all", type: "toggle", label: i18n.str`All measures`, help: i18n.str`Hint the customer that all measure should be completed`, diff --git a/packages/aml-backoffice-ui/src/pages/decision/Summary.tsx b/packages/aml-backoffice-ui/src/pages/decision/Summary.tsx @@ -62,7 +62,7 @@ export function Summary({ const INVALID_RULES = !decision.deadline || !decision.rules; const INVALID_MEASURES = decision.new_measures === undefined; const INVALID_PROPERTIES = decision.properties === undefined; - const INVALID_EVENTS = decision.inhibit_events === undefined; + const INVALID_EVENTS = false; //decision.inhibit_events === undefined; const INVALID_JUSTIFICATION = decision.justification === undefined || !decision.justification; const INVALID_ACCOUNT = !account; @@ -83,7 +83,7 @@ export function Summary({ custom_events: undefined, custom_properties: undefined, deadline: undefined, - inhibit_events: undefined, + // inhibit_events: undefined, attributes: undefined, justification: undefined, keep_investigating: false, diff --git a/packages/taler-util/src/aml/aml-events.ts b/packages/taler-util/src/aml/aml-events.ts @@ -1,6 +1,9 @@ import { AccountProperties, LegitimizationRuleSet } from "../types-taler-kyc-aml.js"; -export enum AmlEventsName { +/** + * List of events triggered by TOPS + */ +export enum TOPS_AmlEventsName { ACCOUNT_OPENED = "ACCOUNT_OPENED", ACCOUNT_OPENED_HIGH_RISK = "ACCOUNT_OPENED_HIGH_RISK", ACCOUNT_OPENED_DOMESTIC_PEP = "ACCOUNT_OPENED_DOMESTIC_PEP", @@ -27,8 +30,16 @@ export enum AmlEventsName { TEST_EVENT_KEY_5 = "TEST_EVENT_KEY_5", } -export type EventMapInfo = { - [name in AmlEventsName]: { +/** + * List of events triggered by GLS + */ +export enum GLS_AmlEventsName { + ACCOUNT_OPENED = "ACCOUNT_OPENED", + ACCOUNT_CLOSED = "ACCOUNT_CLOSED", +} + +export type EventMapInfo<T> = { + [name in keyof T]: { /** * Based on the current properties and next properties, * the current account limits and new attribues of the account @@ -50,7 +61,7 @@ export type EventMapInfo = { }; }; -export const AML_EVENTS_INFO: EventMapInfo = { +export const AML_EVENTS_INFO: EventMapInfo<typeof TOPS_AmlEventsName> = { ACCOUNT_OPENED: { shouldBeTriggered(limits, prevState, nextState, attributes) { return false @@ -157,3 +168,16 @@ export const AML_EVENTS_INFO: EventMapInfo = { }, }, }; + +export const GLS_AML_EVENTS: EventMapInfo<typeof GLS_AmlEventsName> = { + ACCOUNT_OPENED: { + shouldBeTriggered(limits, prevState, nextState, attributes) { + return false + }, + }, + ACCOUNT_CLOSED: { + shouldBeTriggered(limits, prevState, nextState, attributes) { + return false + }, + }, +} diff --git a/packages/taler-util/src/aml/aml-properties.ts b/packages/taler-util/src/aml/aml-properties.ts @@ -1,22 +1,39 @@ -import { - AccountProperties, - AmlDecision, - AmlSpaDialect, -} from "@gnu-taler/taler-util"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { AccountProperties } from "@gnu-taler/taler-util"; +import { TalerFormAttributes } from "../taler-form-attributes.js"; import { LegitimizationRuleSet } from "../types-taler-kyc-aml.js"; -export type PropertiesMapInfo = { - [name in keyof typeof TalerFormAttributes.AccountProperties]: { +/** + * List of account properties required by TOPS + */ + +export const TOPS_AccountProperties = [ + TalerFormAttributes.FILE_NOTE, + TalerFormAttributes.CUSTOMER_LABEL, + TalerFormAttributes.AML_ACCOUNT_OPEN, + TalerFormAttributes.AML_DOMESTIC_PEP, + TalerFormAttributes.AML_FOREIGN_PEP, + TalerFormAttributes.AML_INTERNATIONAL_ORG_PEP, + TalerFormAttributes.AML_HIGH_RISK_BUSINESS, + TalerFormAttributes.AML_HIGH_RISK_COUNTRY, + TalerFormAttributes.AML_MROS_STATE, +] as const; + +/** + * List of account properties required by GLS + */ +export const GLS_AccountProperties = [TalerFormAttributes.FILE_NOTE] as const; + +export type PropertiesMapInfo<T extends string> = { + [name in T]: { /** * Based on all the current properties, the current account limits and * new attribues of the account calculate if the property should * change. The value "undefined" means no change. - * - * @param limits - * @param state - * @param newAttributes - * @returns + * + * @param limits + * @param state + * @param newAttributes + * @returns */ deriveProperty: ( limits: LegitimizationRuleSet, @@ -26,12 +43,12 @@ export type PropertiesMapInfo = { }; }; -export const AML_PROPERTIES_INFO: PropertiesMapInfo = { - AML_ACCOUNT_ACTIVE_DEPOSIT: { +export const TOPS_AML_PROPERTIES: PropertiesMapInfo< + (typeof TOPS_AccountProperties)[number] +> = { + AML_ACCOUNT_OPEN: { deriveProperty(limits, state, attributes) { - return !!attributes[ - TalerFormAttributes.AccountProperties.AML_ACCOUNT_ACTIVE_DEPOSIT.id - ]; + return !!attributes[TalerFormAttributes.AML_ACCOUNT_OPEN]; }, }, AML_DOMESTIC_PEP: { @@ -44,39 +61,44 @@ export const AML_PROPERTIES_INFO: PropertiesMapInfo = { return undefined; }, }, - AML_HIGH_RISK_BUSINESS: { + AML_INTERNATIONAL_ORG_PEP: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_HIGH_RISK_COUNTRY: { + AML_HIGH_RISK_BUSINESS: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_INVESTIGATION_ART6_COMPLETED: { + AML_HIGH_RISK_COUNTRY: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_INVESTIGATION_ART6_FAILED: { + AML_MROS_STATE: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_MROS_REPORTED_ART305: { + CUSTOMER_LABEL: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_MROS_REPORTED_ART9: { + FILE_NOTE: { deriveProperty(limits, state, attributes) { return undefined; }, }, - AML_NO_OPERATION_DURING_PERIOD: { +}; + +export const GLS_AML_PROPERTIES: PropertiesMapInfo< + (typeof GLS_AccountProperties)[number] +> = { + FILE_NOTE: { deriveProperty(limits, state, attributes) { - return undefined; + return !!attributes[TalerFormAttributes.AML_ACCOUNT_OPEN]; }, }, }; diff --git a/packages/taler-util/src/aml/taler_form_attributes.ts b/packages/taler-util/src/aml/taler_form_attributes.ts @@ -1,2556 +0,0 @@ -/* - This file is part of GNU Taler - Copyright (C) 2012-2025 Taler Systems SA - - GNU Taler is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation, either version 3 of the License, - or (at your option) any later version. - - GNU Taler is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - - SPDX-License-Identifier: LGPL3.0-or-later - - Note: the LGPL does not apply to all components of GNU Taler, - but it does apply to this file. - */ - - -type FormFieldInfo = { - id: string; - description: String; -} - -export namespace TalerFormAttributes { - export const VQF_902_1 = { - /** - * Description: - * - * GANA Type: BusinessAddress - */ - ACCEPTANCE_CORRESPONDENCE_SERVICE_THIRD_PARTY_ADDRESS: { - id: "ACCEPTANCE_CORRESPONDENCE_SERVICE_THIRD_PARTY_ADDRESS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - ACCEPTANCE_CORRESPONDENCE_SERVICE_THIRD_PARTY_FULL_NAME: { - id: "ACCEPTANCE_CORRESPONDENCE_SERVICE_THIRD_PARTY_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'TO_THE_CUSTOMER' | 'HOLD_AT_BANK' | 'TO_THE_MEMBER' | 'TO_A_THIRD_PARTY' - */ - ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE: { - id: "ACCEPTANCE_CORRESPONDENCE_SERVICE_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: Conclusion of the conract - * - * GANA Type: AbsoluteDate - */ - ACCEPTANCE_DATE: { - id: "ACCEPTANCE_DATE", - description: "Conclusion of the conract", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - ACCEPTANCE_FURTHER_INFO: { - id: "ACCEPTANCE_FURTHER_INFO", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: LangCode - */ - ACCEPTANCE_LANGUAGE: { - id: "ACCEPTANCE_LANGUAGE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'FACE_TO_FACE' | 'AUTHENTICATED_COPY' | 'RESIDENTIAL_ADDRESS_VALIDATED' - */ - ACCEPTANCE_METHOD: { - id: "ACCEPTANCE_METHOD", - description: "", - } as FormFieldInfo, - /** - * Description: If the customer is a legal entity. - * - * GANA Type: BusinessAddress - */ - CUSTOMER_ENTITY_ADDRESS: { - id: "CUSTOMER_ENTITY_ADDRESS", - description: "If the customer is a legal entity.", - } as FormFieldInfo, - /** - * Description: If the customer is a legal entity. - * - * GANA Type: String - */ - CUSTOMER_ENTITY_COMPANY_NAME: { - id: "CUSTOMER_ENTITY_COMPANY_NAME", - description: "If the customer is a legal entity.", - } as FormFieldInfo, - /** - * Description: If the customer is a legal entity. - * - * GANA Type: String - */ - CUSTOMER_ENTITY_CONTACT_PERSON_NAME: { - id: "CUSTOMER_ENTITY_CONTACT_PERSON_NAME", - description: "If the customer is a legal entity.", - } as FormFieldInfo, - /** - * Description: If the customer is a legal entity. - * - * GANA Type: Email - */ - CUSTOMER_ENTITY_EMAIL: { - id: "CUSTOMER_ENTITY_EMAIL", - description: "If the customer is a legal entity.", - } as FormFieldInfo, - /** - * Description: Not older than 12 month - * - * GANA Type: String - */ - CUSTOMER_ENTITY_ID: { - id: "CUSTOMER_ENTITY_ID", - description: "Not older than 12 month", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: File - */ - CUSTOMER_ENTITY_ID_COPY: { - id: "CUSTOMER_ENTITY_ID_COPY", - description: "", - } as FormFieldInfo, - /** - * Description: If the customer is a legal entity. - * - * GANA Type: Phone - */ - CUSTOMER_ENTITY_PHONE: { - id: "CUSTOMER_ENTITY_PHONE", - description: "If the customer is a legal entity.", - } as FormFieldInfo, - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'NATURAL_PERSON' | 'LEGAL_ENTITY' - */ - CUSTOMER_INFO_TYPE: { - id: "CUSTOMER_INFO_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: AbsoluteDate - */ - CUSTOMER_NATURAL_BIRTHDATE: { - id: "CUSTOMER_NATURAL_BIRTHDATE", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: String - */ - CUSTOMER_NATURAL_COMPANY_ID_DOC: { - id: "CUSTOMER_NATURAL_COMPANY_ID_DOC", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: String - */ - CUSTOMER_NATURAL_COMPANY_NAME: { - id: "CUSTOMER_NATURAL_COMPANY_NAME", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: Email - */ - CUSTOMER_NATURAL_EMAIL: { - id: "CUSTOMER_NATURAL_EMAIL", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - CUSTOMER_NATURAL_FULL_NAME: { - id: "CUSTOMER_NATURAL_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: CountryCode - */ - CUSTOMER_NATURAL_NATIONALITY: { - id: "CUSTOMER_NATURAL_NATIONALITY", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: String - */ - CUSTOMER_NATURAL_NATIONAL_ID: { - id: "CUSTOMER_NATURAL_NATIONAL_ID", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: File - */ - CUSTOMER_NATURAL_NATIONAL_ID_COPY: { - id: "CUSTOMER_NATURAL_NATIONAL_ID_COPY", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: Phone - */ - CUSTOMER_NATURAL_PHONE: { - id: "CUSTOMER_NATURAL_PHONE", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: String - */ - CUSTOMER_NATURAL_REGISTERED_OFFICE: { - id: "CUSTOMER_NATURAL_REGISTERED_OFFICE", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: If the customer is a natural person. - * - * GANA Type: ResidentialAddress - */ - CUSTOMER_NATURAL_RESIDENTIAL: { - id: "CUSTOMER_NATURAL_RESIDENTIAL", - description: "If the customer is a natural person.", - } as FormFieldInfo, - /** - * Description: Establishment of the beneficial owner of the assets and/or contrilling person - * - * GANA Type: 'NATURAL' | 'OPERATIONAL' | 'FOUNDATION' | 'TRUST' | 'LIFE_INSURANCE' | 'OTHER' - */ - CUSTOMER_TYPE: { - id: "CUSTOMER_TYPE", - description: "Establishment of the beneficial owner of the assets and/or contrilling person", - } as FormFieldInfo, - /** - * Description: Verification whether the customer, beneficial owners of the assets, controlling persons, authorised representatives or other involved persons are listed on an embargo-/terrorism list (date of verification/result) - * - * GANA Type: Paragraph - */ - EMBARGO_TERRORISM_INFO: { - id: "EMBARGO_TERRORISM_INFO", - description: "Verification whether the customer, beneficial owners of the assets, controlling persons, authorised representatives or other involved persons are listed on an embargo-/terrorism list (date of verification/result)", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - ENCLOSURE_BENEFICIAL_OWNER: { - id: "ENCLOSURE_BENEFICIAL_OWNER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - ENCLOSURE_CUSTOMER_DOCUMENTS: { - id: "ENCLOSURE_CUSTOMER_DOCUMENTS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - ENCLOSURE_CUSTOMER_PROFILE: { - id: "ENCLOSURE_CUSTOMER_PROFILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - ENCLOSURE_IDENTIFICATION_DOCUMENTS: { - id: "ENCLOSURE_IDENTIFICATION_DOCUMENTS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - ENCLOSURE_RISK_PROFILE: { - id: "ENCLOSURE_RISK_PROFILE", - description: "", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: List of founder with the fields below. - * - * GANA Type: Form<VQF_902_1_founder>[] - */ - FOUNDER_LIST: { - id: "FOUNDER_LIST", - description: "List of founder with the fields below.", - } as FormFieldInfo, - /** - * Description: Purpose of service requested - * - * GANA Type: Paragraph - */ - RELATIONSHIP_PURPOSE: { - id: "RELATIONSHIP_PURPOSE", - description: "Purpose of service requested", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'MONEY_EXCHANGE' | 'MONEY_ASSET_TRANSFER' | 'OTHER' - */ - RELATIONSHIP_TYPE: { - id: "RELATIONSHIP_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - RELATIONSHIP_TYPE_OTHER: { - id: "RELATIONSHIP_TYPE_OTHER", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_11 = { - /** - * Description: - * - * GANA Type: Paragraph - */ - CONTROLLING_ENTITY_CONTRACTING_PARTNER: { - id: "CONTROLLING_ENTITY_CONTRACTING_PARTNER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - CONTROLLING_ENTITY_DOMICILE: { - id: "CONTROLLING_ENTITY_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - CONTROLLING_ENTITY_FULL_NAME: { - id: "CONTROLLING_ENTITY_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: '25_MORE_RIGHTS' | 'OTHER_WAY' | 'DIRECTOR' - */ - CONTROLLING_ENTITY_LEVEL: { - id: "CONTROLLING_ENTITY_LEVEL", - description: "", - } as FormFieldInfo, - /** - * Description: Is a third person the beneficial owner of the assets? - * - * GANA Type: Boolean - */ - CONTROLLING_ENTITY_THIRD_PERSON: { - id: "CONTROLLING_ENTITY_THIRD_PERSON", - description: "Is a third person the beneficial owner of the assets?", - } as FormFieldInfo, - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - SIGNATURE: { - id: "SIGNATURE", - description: "", - } as FormFieldInfo, - /** - * Description: Contracing partner signature, - * - * GANA Type: AbsoluteDateTime - */ - SIGN_DATE: { - id: "SIGN_DATE", - description: "Contracing partner signature,", - } as FormFieldInfo, - } as const; - export const VQF_902_12 = { - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - FOUNDATION_BENEFICIARY_ADDITION: { - id: "FOUNDATION_BENEFICIARY_ADDITION", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_12_beneficiary>[] - */ - FOUNDATION_BENEFICIARY_LIST: { - id: "FOUNDATION_BENEFICIARY_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - FOUNDATION_CONTRACTING_PARTNER: { - id: "FOUNDATION_CONTRACTING_PARTNER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - FOUNDATION_DISCRETIONARY: { - id: "FOUNDATION_DISCRETIONARY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_12_founder>[] - */ - FOUNDATION_FOUNDER_LIST: { - id: "FOUNDATION_FOUNDER_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_KNOWN_AS: { - id: "FOUNDATION_KNOWN_AS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_NAME: { - id: "FOUNDATION_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_12_pre>[] - */ - FOUNDATION_PRE_LIST: { - id: "FOUNDATION_PRE_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_12_representative>[] - */ - FOUNDATION_REPRESENTATIVE_LIST: { - id: "FOUNDATION_REPRESENTATIVE_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - FOUNDATION_REVOCABLE: { - id: "FOUNDATION_REVOCABLE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - SIGNATURE: { - id: "SIGNATURE", - description: "", - } as FormFieldInfo, - /** - * Description: Contracing partner signature, - * - * GANA Type: AbsoluteDateTime - */ - SIGN_DATE: { - id: "SIGN_DATE", - description: "Contracing partner signature,", - } as FormFieldInfo, - } as const; - export const VQF_902_12_beneficiary = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_BENEFICIARY_BIRTHDATE: { - id: "FOUNDATION_BENEFICIARY_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_BENEFICIARY_COUNTRY: { - id: "FOUNDATION_BENEFICIARY_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - FOUNDATION_BENEFICIARY_DOMICILE: { - id: "FOUNDATION_BENEFICIARY_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_BENEFICIARY_FULL_NAME: { - id: "FOUNDATION_BENEFICIARY_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_BENEFICIARY_NATIONALITY: { - id: "FOUNDATION_BENEFICIARY_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM: { - id: "FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_12_founder = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_FOUNDER_BIRTHDATE: { - id: "FOUNDATION_FOUNDER_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_FOUNDER_COUNTRY: { - id: "FOUNDATION_FOUNDER_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_FOUNDER_DEATHDATE: { - id: "FOUNDATION_FOUNDER_DEATHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - FOUNDATION_FOUNDER_DOMICILE: { - id: "FOUNDATION_FOUNDER_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_FOUNDER_FULL_NAME: { - id: "FOUNDATION_FOUNDER_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_FOUNDER_NATIONALITY: { - id: "FOUNDATION_FOUNDER_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - FOUNDATION_FOUNDER_RIGHT_TO_REVOKE: { - id: "FOUNDATION_FOUNDER_RIGHT_TO_REVOKE", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_12_pre = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_PRE_BIRTHDATE: { - id: "FOUNDATION_PRE_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_PRE_COUNTRY: { - id: "FOUNDATION_PRE_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_PRE_DEATHDATE: { - id: "FOUNDATION_PRE_DEATHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - FOUNDATION_PRE_DOMICILE: { - id: "FOUNDATION_PRE_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_PRE_FULL_NAME: { - id: "FOUNDATION_PRE_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_PRE_NATIONALITY: { - id: "FOUNDATION_PRE_NATIONALITY", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_12_representative = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDATION_REPRESENTATIVE_BIRTHDATE: { - id: "FOUNDATION_REPRESENTATIVE_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_REPRESENTATIVE_COUNTRY: { - id: "FOUNDATION_REPRESENTATIVE_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - FOUNDATION_REPRESENTATIVE_DOMICILE: { - id: "FOUNDATION_REPRESENTATIVE_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDATION_REPRESENTATIVE_FULL_NAME: { - id: "FOUNDATION_REPRESENTATIVE_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDATION_REPRESENTATIVE_NATIONALITY: { - id: "FOUNDATION_REPRESENTATIVE_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE: { - id: "FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13 = { - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - SIGNATURE: { - id: "SIGNATURE", - description: "", - } as FormFieldInfo, - /** - * Description: Contracing partner signature, - * - * GANA Type: AbsoluteDateTime - */ - SIGN_DATE: { - id: "SIGN_DATE", - description: "Contracing partner signature,", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_13_beneficiary>[] - */ - TRUST_BENEFICIARY_LIST: { - id: "TRUST_BENEFICIARY_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - TRUST_CONTRACTING_PARTNER: { - id: "TRUST_CONTRACTING_PARTNER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_DISCRETIONARY: { - id: "TRUST_DISCRETIONARY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_13_further>[] - */ - TRUST_FURTHER_LIST: { - id: "TRUST_FURTHER_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_KNOWN_AS: { - id: "TRUST_KNOWN_AS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_NAME: { - id: "TRUST_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_13_pre>[] - */ - TRUST_PRE_LIST: { - id: "TRUST_PRE_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_13_protector>[] - */ - TRUST_PROTECTOR_LIST: { - id: "TRUST_PROTECTOR_LIST", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_REVOCABLE: { - id: "TRUST_REVOCABLE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Form<VQF_902_13_settlor>[] - */ - TRUST_SETTLOR_LIST: { - id: "TRUST_SETTLOR_LIST", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13_beneficiary = { - /** - * Description: - * - * GANA Type: Paragraph - */ - TRUST_BENEFICIARY_ADDITION: { - id: "TRUST_BENEFICIARY_ADDITION", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_BENEFICIARY_BIRTHDATE: { - id: "TRUST_BENEFICIARY_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_BENEFICIARY_COUNTRY: { - id: "TRUST_BENEFICIARY_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - TRUST_BENEFICIARY_DOMICILE: { - id: "TRUST_BENEFICIARY_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_BENEFICIARY_FULL_NAME: { - id: "TRUST_BENEFICIARY_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_BENEFICIARY_NATIONALITY: { - id: "TRUST_BENEFICIARY_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_BENEFICIARY_RIGHT_TO_CLAIM: { - id: "TRUST_BENEFICIARY_RIGHT_TO_CLAIM", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13_further = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_FURTHER_BIRTHDATE: { - id: "TRUST_FURTHER_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_FURTHER_COUNTRY: { - id: "TRUST_FURTHER_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - TRUST_FURTHER_DOMICILE: { - id: "TRUST_FURTHER_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_FURTHER_FULL_NAME: { - id: "TRUST_FURTHER_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_FURTHER_NATIONALITY: { - id: "TRUST_FURTHER_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_FURTHER_RIGHT_TO_REVOKE: { - id: "TRUST_FURTHER_RIGHT_TO_REVOKE", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13_pre = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_PRE_BIRTHDATE: { - id: "TRUST_PRE_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_PRE_COUNTRY: { - id: "TRUST_PRE_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_PRE_DEATHDATE: { - id: "TRUST_PRE_DEATHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - TRUST_PRE_DOMICILE: { - id: "TRUST_PRE_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_PRE_FULL_NAME: { - id: "TRUST_PRE_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_PRE_NATIONALITY: { - id: "TRUST_PRE_NATIONALITY", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13_protector = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_PROTECTOR_BIRTHDATE: { - id: "TRUST_PROTECTOR_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_PROTECTOR_COUNTRY: { - id: "TRUST_PROTECTOR_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - TRUST_PROTECTOR_DOMICILE: { - id: "TRUST_PROTECTOR_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_PROTECTOR_FULL_NAME: { - id: "TRUST_PROTECTOR_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_PROTECTOR_NATIONALITY: { - id: "TRUST_PROTECTOR_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_PROTECTOR_RIGHT_TO_REVOKE: { - id: "TRUST_PROTECTOR_RIGHT_TO_REVOKE", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_13_settlor = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_SETTLOR_BIRTHDATE: { - id: "TRUST_SETTLOR_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_SETTLOR_COUNTRY: { - id: "TRUST_SETTLOR_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - TRUST_SETTLOR_DEATHDATE: { - id: "TRUST_SETTLOR_DEATHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - TRUST_SETTLOR_DOMICILE: { - id: "TRUST_SETTLOR_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - TRUST_SETTLOR_FULL_NAME: { - id: "TRUST_SETTLOR_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - TRUST_SETTLOR_NATIONALITY: { - id: "TRUST_SETTLOR_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Boolean - */ - TRUST_SETTLOR_RIGHT_TO_REVOKE: { - id: "TRUST_SETTLOR_RIGHT_TO_REVOKE", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_14 = { - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: Gathered or consulted documents - * - * GANA Type: Paragraph - */ - INCRISK_DOCUMENTS: { - id: "INCRISK_DOCUMENTS", - description: "Gathered or consulted documents", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'GATHERING' | 'CONSULTATION' | 'ENQUIRIES' | 'OTHER' - */ - INCRISK_MEANS: { - id: "INCRISK_MEANS", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - INCRISK_MEANS_OTHER: { - id: "INCRISK_MEANS_OTHER", - description: "", - } as FormFieldInfo, - /** - * Description: Description of the circumstances/transactions, which triggered the special clarifications - * - * GANA Type: String - */ - INCRISK_REASON: { - id: "INCRISK_REASON", - description: "Description of the circumstances/transactions, which triggered the special clarifications", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'NO_SUSPICION' | 'REASONABLE_SUSPICION' | 'SIMPLE_SUSPICION' | 'OTHER' - */ - INCRISK_RESULT: { - id: "INCRISK_RESULT", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - INCRISK_RESULT_OTHER: { - id: "INCRISK_RESULT_OTHER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - INCRISK_SUMMARY: { - id: "INCRISK_SUMMARY", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_15 = { - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - INSURANCE_CONTRACTING_PARTNER: { - id: "INSURANCE_CONTRACTING_PARTNER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - INSURANCE_HOLDER_BIRTHDATE: { - id: "INSURANCE_HOLDER_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - INSURANCE_HOLDER_COUNTRY: { - id: "INSURANCE_HOLDER_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - INSURANCE_HOLDER_DOMICILE: { - id: "INSURANCE_HOLDER_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: The beneficial owners of the assets involved in the business relationship. - * - * GANA Type: String - */ - INSURANCE_HOLDER_FULL_NAME: { - id: "INSURANCE_HOLDER_FULL_NAME", - description: "The beneficial owners of the assets involved in the business relationship.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - INSURANCE_HOLDER_NATIONALITY: { - id: "INSURANCE_HOLDER_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - INSURANCE_PAYER_BIRTHDATE: { - id: "INSURANCE_PAYER_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - INSURANCE_PAYER_COUNTRY: { - id: "INSURANCE_PAYER_COUNTRY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - INSURANCE_PAYER_DOMICILE: { - id: "INSURANCE_PAYER_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: The beneficial owners of the assets involved in the business relationship. - * - * GANA Type: String - */ - INSURANCE_PAYER_FULL_NAME: { - id: "INSURANCE_PAYER_FULL_NAME", - description: "The beneficial owners of the assets involved in the business relationship.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - INSURANCE_PAYER_NATIONALITY: { - id: "INSURANCE_PAYER_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: Name or number of the contractual relationship between the contracting party and the financial intermediary - * - * GANA Type: String - */ - INSURANCE_RELATIONSHIP_NAME: { - id: "INSURANCE_RELATIONSHIP_NAME", - description: "Name or number of the contractual relationship between the contracting party and the financial intermediary", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - INSURANCE_RELATIONSHIP_POLICY: { - id: "INSURANCE_RELATIONSHIP_POLICY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - SIGNATURE: { - id: "SIGNATURE", - description: "", - } as FormFieldInfo, - /** - * Description: Contracing partner signature, - * - * GANA Type: AbsoluteDateTime - */ - SIGN_DATE: { - id: "SIGN_DATE", - description: "Contracing partner signature,", - } as FormFieldInfo, - } as const; - export const VQF_902_1_founder = { - /** - * Description: Signatory of representation - * - * GANA Type: String - */ - FOUNDER_AUTHORIZATION_TYPE: { - id: "FOUNDER_AUTHORIZATION_TYPE", - description: "Signatory of representation", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - FOUNDER_BIRTHDATE: { - id: "FOUNDER_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDER_FULL_NAME: { - id: "FOUNDER_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - FOUNDER_NATIONALITY: { - id: "FOUNDER_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: File - */ - FOUNDER_NATIONAL_COPY: { - id: "FOUNDER_NATIONAL_COPY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDER_NATIONAL_ID: { - id: "FOUNDER_NATIONAL_ID", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'CR' | 'MANDATE' | 'OTHER' - */ - FOUNDER_POWER_OF_ATTORNEY: { - id: "FOUNDER_POWER_OF_ATTORNEY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - FOUNDER_POWER_OF_ATTORNEY_OTHER: { - id: "FOUNDER_POWER_OF_ATTORNEY_OTHER", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - FOUNDER_RESIDENTIAL_ADDRESS: { - id: "FOUNDER_RESIDENTIAL_ADDRESS", - description: "", - } as FormFieldInfo, - } as const; - export const VQF_902_4 = { - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - CONTACT_RISK_LEVEL: { - id: "CONTACT_RISK_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - COUNTRY_RISK_BUSINESS_LEVEL: { - id: "COUNTRY_RISK_BUSINESS_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'CUSTOMER' | 'OWNER' - */ - COUNTRY_RISK_BUSINESS_TYPE: { - id: "COUNTRY_RISK_BUSINESS_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - COUNTRY_RISK_NATIONALITY_LEVEL: { - id: "COUNTRY_RISK_NATIONALITY_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'NATIONALITY_CUSTOMER' | 'NATIONALITY_OWNER' | 'DOMICILE_CUSTOMER' | 'DOMICILE_OWNER' | 'DOMICILE_CONTROLLING' - */ - COUNTRY_RISK_NATIONALITY_TYPE: { - id: "COUNTRY_RISK_NATIONALITY_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - COUNTRY_RISK_PAYMENTS_LEVEL: { - id: "COUNTRY_RISK_PAYMENTS_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: Criteria description - * - * GANA Type: String - */ - EXTRA_CRITERA_1_RISK_DEFINITION: { - id: "EXTRA_CRITERA_1_RISK_DEFINITION", - description: "Criteria description", - } as FormFieldInfo, - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - EXTRA_CRITERA_1_RISK_LEVEL: { - id: "EXTRA_CRITERA_1_RISK_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: Criteria description - * - * GANA Type: String - */ - EXTRA_CRITERA_2_RISK_DEFINITION: { - id: "EXTRA_CRITERA_2_RISK_DEFINITION", - description: "Criteria description", - } as FormFieldInfo, - /** - * Description: Based on 902.4.1 country list - * - * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' - */ - EXTRA_CRITERA_2_RISK_LEVEL: { - id: "EXTRA_CRITERA_2_RISK_LEVEL", - description: "Based on 902.4.1 country list", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ - * - * GANA Type: AbsoluteDateTime - */ - HIGH_RISK_ACCEPTANCE_DATE: { - id: "HIGH_RISK_ACCEPTANCE_DATE", - description: "The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___", - } as FormFieldInfo, - /** - * Description: True if the person is in a country for which FATF requires incresed dilegence. - * - * GANA Type: Boolean - */ - HIGH_RISK_COUNTRY: { - id: "HIGH_RISK_COUNTRY", - description: "True if the person is in a country for which FATF requires incresed dilegence.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'TRANSPARENT' | 'HIGH_CASH_TRANSACTION' | 'NOT_WELL_KNOWN' | 'HIGH_RISK_TRADE' | 'UNKNOWN_INDUSTRY' - */ - INDUSTRY_RISK_LEVEL: { - id: "INDUSTRY_RISK_LEVEL", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'CUSTOMER' | 'OWNER' - */ - INDUSTRY_RISK_TYPE: { - id: "INDUSTRY_RISK_TYPE", - description: "", - } as FormFieldInfo, - /** - * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ - * - * GANA Type: AbsoluteDateTime - */ - PEP_ACCEPTANCE_DATE: { - id: "PEP_ACCEPTANCE_DATE", - description: "The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___", - } as FormFieldInfo, - /** - * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 2' - * - * GANA Type: Boolean - */ - PEP_DOMESTIC: { - id: "PEP_DOMESTIC", - description: "True if the person is a PEP defined by 'Art 7 lit. g numeral 2'", - } as FormFieldInfo, - /** - * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 1' - * - * GANA Type: Boolean - */ - PEP_FOREIGN: { - id: "PEP_FOREIGN", - description: "True if the person is a PEP defined by 'Art 7 lit. g numeral 1'", - } as FormFieldInfo, - /** - * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 3' - * - * GANA Type: Boolean - */ - PEP_INTERNATIONAL_ORGANIZATION: { - id: "PEP_INTERNATIONAL_ORGANIZATION", - description: "True if the person is a PEP defined by 'Art 7 lit. g numeral 3'", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'EASY' | 'SOPHISTICATED' | 'OFFSHORE' | 'COMPLEX_STRUCTURE' | 'LARGE_NUMBER_OF_ACCOUNTS' | 'COMPLEX_SERVICE' | 'FREQ_TRANS_WITH_HIGH_RISK' - */ - PRODUCT_RISK_LEVEL: { - id: "PRODUCT_RISK_LEVEL", - description: "", - } as FormFieldInfo, - /** - * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ - * - * GANA Type: AbsoluteDateTime - */ - RISK_CLASIFICATION_ACCEPTANCE_DATE: { - id: "RISK_CLASIFICATION_ACCEPTANCE_DATE", - description: "The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'WITH' | 'WITHOUT' - */ - RISK_CLASIFICATION_LEVEL: { - id: "RISK_CLASIFICATION_LEVEL", - description: "", - } as FormFieldInfo, - /** - * Description: Justification for differing risk assessment - * - * GANA Type: Paragraph - */ - RISK_JUSTIFICATION: { - id: "RISK_JUSTIFICATION", - description: "Justification for differing risk assessment", - } as FormFieldInfo, - } as const; - export const VQF_902_5 = { - /** - * Description: Information on the planned development of the business relationship and the assets. - * - * GANA Type: String - */ - BIZREL_DEVELOPMENT: { - id: "BIZREL_DEVELOPMENT", - description: "Information on the planned development of the business relationship and the assets.", - } as FormFieldInfo, - /** - * Description: In the case of cash or money and asset transfer transacction with regular customer - * - * GANA Type: BusinessAddress - */ - BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS: { - id: "BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS", - description: "In the case of cash or money and asset transfer transacction with regular customer", - } as FormFieldInfo, - /** - * Description: In the case of cash or money and asset transfer transacction with regular customer - * - * GANA Type: String - */ - BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT: { - id: "BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT", - description: "In the case of cash or money and asset transfer transacction with regular customer", - } as FormFieldInfo, - /** - * Description: In the case of cash or money and asset transfer transacction with regular customer - * - * GANA Type: String - */ - BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: { - id: "BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME", - description: "In the case of cash or money and asset transfer transacction with regular customer", - } as FormFieldInfo, - /** - * Description: In the case of cash or money and asset transfer transacction with regular customer - * - * GANA Type: String - */ - BIZREL_FINANCIAL_VOLUME: { - id: "BIZREL_FINANCIAL_VOLUME", - description: "In the case of cash or money and asset transfer transacction with regular customer", - } as FormFieldInfo, - /** - * Description: Other relevant information. - * - * GANA Type: String - */ - BIZREL_FURTHER_INFO: { - id: "BIZREL_FURTHER_INFO", - description: "Other relevant information.", - } as FormFieldInfo, - /** - * Description: Income and assets, liabilities (estimated) - * - * GANA Type: String - */ - BIZREL_INCOME: { - id: "BIZREL_INCOME", - description: "Income and assets, liabilities (estimated)", - } as FormFieldInfo, - /** - * Description: Amount of the involved assets. - * - * GANA Type: Amount - */ - BIZREL_ORIGIN_AMOUNT: { - id: "BIZREL_ORIGIN_AMOUNT", - description: "Amount of the involved assets.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: 'SAVINGS' | 'OWN_BUSINESS' | 'INHERITANCE' | 'OTHER' - */ - BIZREL_ORIGIN_CATEGORY: { - id: "BIZREL_ORIGIN_CATEGORY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - BIZREL_ORIGIN_CATEGORY_OTHER: { - id: "BIZREL_ORIGIN_CATEGORY_OTHER", - description: "", - } as FormFieldInfo, - /** - * Description: Currency of the involved assets. - * - * GANA Type: Amount - */ - BIZREL_ORIGIN_CURRENCY: { - id: "BIZREL_ORIGIN_CURRENCY", - description: "Currency of the involved assets.", - } as FormFieldInfo, - /** - * Description: Detail description of the origings - * - * GANA Type: Paragraph - */ - BIZREL_ORIGIN_DETAIL: { - id: "BIZREL_ORIGIN_DETAIL", - description: "Detail description of the origings", - } as FormFieldInfo, - /** - * Description: Nature of the involved assets. - * - * GANA Type: String - */ - BIZREL_ORIGIN_NATURE: { - id: "BIZREL_ORIGIN_NATURE", - description: "Nature of the involved assets.", - } as FormFieldInfo, - /** - * Description: Profession, business activities, etc. (former, current, potentially planned) - * - * GANA Type: String - */ - BIZREL_PROFESSION: { - id: "BIZREL_PROFESSION", - description: "Profession, business activities, etc. (former, current, potentially planned)", - } as FormFieldInfo, - /** - * Description: Purpose of the business relationship. - * - * GANA Type: String - */ - BIZREL_PURPOSE: { - id: "BIZREL_PURPOSE", - description: "Purpose of the business relationship.", - } as FormFieldInfo, - /** - * Description: Relation to other AMLA-files. - * - * GANA Type: String - */ - BIZREL_THIRDPARTY_AMLA_FILES: { - id: "BIZREL_THIRDPARTY_AMLA_FILES", - description: "Relation to other AMLA-files.", - } as FormFieldInfo, - /** - * Description: Introducer / agents / references. - * - * GANA Type: String - */ - BIZREL_THIRDPARTY_REFERENCES: { - id: "BIZREL_THIRDPARTY_REFERENCES", - description: "Introducer / agents / references.", - } as FormFieldInfo, - /** - * Description: Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship. - * - * GANA Type: String - */ - BIZREL_THIRDPARTY_RELATIONSHIP: { - id: "BIZREL_THIRDPARTY_RELATIONSHIP", - description: "Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship.", - } as FormFieldInfo, - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - } as const; - export const VQF_902_9 = { - /** - * Description: Customer system ID required to correlate different AML forms. - * - * GANA Type: String - */ - CUSTOMER_ID: { - id: "CUSTOMER_ID", - description: "Customer system ID required to correlate different AML forms.", - } as FormFieldInfo, - /** - * Description: When the form was completed. - * - * GANA Type: AbsoluteDateTime - */ - FORM_FILLING_DATE: { - id: "FORM_FILLING_DATE", - description: "When the form was completed.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: Paragraph - */ - IDENTITY_CONTRACTING_PARTNER: { - id: "IDENTITY_CONTRACTING_PARTNER", - description: "", - } as FormFieldInfo, - /** - * Description: The beneficial owners of the assets involved in the business relationship. - * - * GANA Type: Form<VQF_902_9_identity>[] - */ - IDENTITY_LIST: { - id: "IDENTITY_LIST", - description: "The beneficial owners of the assets involved in the business relationship.", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - SIGNATURE: { - id: "SIGNATURE", - description: "", - } as FormFieldInfo, - /** - * Description: Contracing partner signature, - * - * GANA Type: AbsoluteDateTime - */ - SIGN_DATE: { - id: "SIGN_DATE", - description: "Contracing partner signature,", - } as FormFieldInfo, - } as const; - export const FormMetadata = { - /** - * Description: Name of the form completed by the user. - * - * GANA Type: String - */ - FORM_ID: { - id: "FORM_ID", - description: "Name of the form completed by the user.", - } as FormFieldInfo, - /** - * Description: High entropy value used in forms where hash is going to be stored in plain text. - * - * GANA Type: String - */ - FORM_SALT: { - id: "FORM_SALT", - description: "High entropy value used in forms where hash is going to be stored in plain text.", - } as FormFieldInfo, - /** - * Description: Version of the form completed by the user. - * - * GANA Type: Number - */ - FORM_VERSION: { - id: "FORM_VERSION", - description: "Version of the form completed by the user.", - } as FormFieldInfo, - } as const; - export const VQF_902_9_identity = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - IDENTITY_BIRTHDATE: { - id: "IDENTITY_BIRTHDATE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: ResidentialAddress - */ - IDENTITY_DOMICILE: { - id: "IDENTITY_DOMICILE", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - IDENTITY_FULL_NAME: { - id: "IDENTITY_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - IDENTITY_NATIONALITY: { - id: "IDENTITY_NATIONALITY", - description: "", - } as FormFieldInfo, - } as const; - export const GLS_Onboarding = { - /** - * Description: Name of the version of the terms of service accepted by the customer. - * - * GANA Type: Boolean - */ - ACCEPTED_TERMS_OF_SERVICE: { - id: "ACCEPTED_TERMS_OF_SERVICE", - description: "Name of the version of the terms of service accepted by the customer.", - } as FormFieldInfo, - /** - * Description: Building name of the of the individual or business. - * - * GANA Type: String - */ - ADDRESS_BUILDING_NAME: { - id: "ADDRESS_BUILDING_NAME", - description: "Building name of the of the individual or business.", - } as FormFieldInfo, - /** - * Description: Building number of the individual or business. - * - * GANA Type: String - */ - ADDRESS_BUILDING_NUMBER: { - id: "ADDRESS_BUILDING_NUMBER", - description: "Building number of the individual or business.", - } as FormFieldInfo, - /** - * Description: Country where the individual or business resides. Format is 2-letter ISO country-code. - * - * GANA Type: CountryCode - */ - ADDRESS_COUNTRY: { - id: "ADDRESS_COUNTRY", - description: "Country where the individual or business resides. Format is 2-letter ISO country-code.", - } as FormFieldInfo, - /** - * Description: Country subdivision of the individual or business. - * - * GANA Type: String - */ - ADDRESS_COUNTRY_SUBDIVISION: { - id: "ADDRESS_COUNTRY_SUBDIVISION", - description: "Country subdivision of the individual or business.", - } as FormFieldInfo, - /** - * Description: Additional address information of the individual or business. - * - * GANA Type: String - */ - ADDRESS_LINES: { - id: "ADDRESS_LINES", - description: "Additional address information of the individual or business.", - } as FormFieldInfo, - /** - * Description: Street address name of the individual or business. - * - * GANA Type: String - */ - ADDRESS_STREET_NAME: { - id: "ADDRESS_STREET_NAME", - description: "Street address name of the individual or business.", - } as FormFieldInfo, - /** - * Description: Street address number of the individual or business. - * - * GANA Type: String - */ - ADDRESS_STREET_NUMBER: { - id: "ADDRESS_STREET_NUMBER", - description: "Street address number of the individual or business.", - } as FormFieldInfo, - /** - * Description: Town district of the individual or business. - * - * GANA Type: String - */ - ADDRESS_TOWN_DISTRICT: { - id: "ADDRESS_TOWN_DISTRICT", - description: "Town district of the individual or business.", - } as FormFieldInfo, - /** - * Description: Town location of the individual or business. - * - * GANA Type: String - */ - ADDRESS_TOWN_LOCATION: { - id: "ADDRESS_TOWN_LOCATION", - description: "Town location of the individual or business.", - } as FormFieldInfo, - /** - * Description: Postal code of the city where the individual or business resides. - * - * GANA Type: String - */ - ADDRESS_ZIPCODE: { - id: "ADDRESS_ZIPCODE", - description: "Postal code of the city where the individual or business resides.", - } as FormFieldInfo, - /** - * Description: Name of the company or business. - * - * GANA Type: String - */ - BUSINESS_DISPLAY_NAME: { - id: "BUSINESS_DISPLAY_NAME", - description: "Name of the company or business.", - } as FormFieldInfo, - /** - * Description: Industry in which the company or business mainly operate. - * - * GANA Type: String - */ - BUSINESS_INDUSTRY: { - id: "BUSINESS_INDUSTRY", - description: "Industry in which the company or business mainly operate.", - } as FormFieldInfo, - /** - * Description: True if the company or business is a non-profit. - * - * GANA Type: Boolean - */ - BUSINESS_IS_NON_PROFIT: { - id: "BUSINESS_IS_NON_PROFIT", - description: "True if the company or business is a non-profit.", - } as FormFieldInfo, - /** - * Description: City or location where the company or business is registered. - * - * GANA Type: String - */ - BUSINESS_LEGAL_JURISDICTION: { - id: "BUSINESS_LEGAL_JURISDICTION", - description: "City or location where the company or business is registered.", - } as FormFieldInfo, - /** - * Description: List of natural persons that are legal representatives or shareholders. - * - * GANA Type: GLS_BusinessRepresentative[] - */ - BUSINESS_LEGAL_REPRESENTATIVES: { - id: "BUSINESS_LEGAL_REPRESENTATIVES", - description: "List of natural persons that are legal representatives or shareholders.", - } as FormFieldInfo, - /** - * Description: Registration founding date of the company or business. - * - * GANA Type: AbsoluteDate - */ - BUSINESS_REGISTRATION_DATE: { - id: "BUSINESS_REGISTRATION_DATE", - description: "Registration founding date of the company or business.", - } as FormFieldInfo, - /** - * Description: Registration id on legal entity of the company or business. - * - * GANA Type: String - */ - BUSINESS_REGISTRATION_ID: { - id: "BUSINESS_REGISTRATION_ID", - description: "Registration id on legal entity of the company or business.", - } as FormFieldInfo, - /** - * Description: Type of company form or business (limited liability company, general partnership, limited partnership, corporations, etc... ). - * - * GANA Type: String - */ - BUSINESS_TYPE: { - id: "BUSINESS_TYPE", - description: "Type of company form or business (limited liability company, general partnership, limited partnership, corporations, etc... ).", - } as FormFieldInfo, - /** - * Description: DNS domain name owned by the individual or business. - * - * GANA Type: Hostname - */ - CONTACT_DNS_DOMAIN: { - id: "CONTACT_DNS_DOMAIN", - description: "DNS domain name owned by the individual or business.", - } as FormFieldInfo, - /** - * Description: E-mail address to contact the individual or business. Can be validated via E-mail with TAN. - * - * GANA Type: Email - */ - CONTACT_EMAIL: { - id: "CONTACT_EMAIL", - description: "E-mail address to contact the individual or business. Can be validated via E-mail with TAN.", - } as FormFieldInfo, - /** - * Description: Phone number to contact the individual or business. Can be validated via SMS-TAN or phone call. - * - * GANA Type: Phone - */ - CONTACT_PHONE: { - id: "CONTACT_PHONE", - description: "Phone number to contact the individual or business. Can be validated via SMS-TAN or phone call.", - } as FormFieldInfo, - /** - * Description: Web site owned by the individual or business. - * - * GANA Type: HttpHostnamePath - */ - CONTACT_WEB_DOMAIN: { - id: "CONTACT_WEB_DOMAIN", - description: "Web site owned by the individual or business.", - } as FormFieldInfo, - /** - * Description: Date of birth of an individual. Format is YYYY-MM-DD. - * - * GANA Type: AbsoluteDate - */ - PERSON_DATE_OF_BIRTH: { - id: "PERSON_DATE_OF_BIRTH", - description: "Date of birth of an individual. Format is YYYY-MM-DD.", - } as FormFieldInfo, - /** - * Description: Full legal name of an individual as in the national identity card. - * - * GANA Type: String - */ - PERSON_FULL_NAME: { - id: "PERSON_FULL_NAME", - description: "Full legal name of an individual as in the national identity card.", - } as FormFieldInfo, - /** - * Description: Last name of an individual as in the national identity card. - * - * GANA Type: String - */ - PERSON_LAST_NAME: { - id: "PERSON_LAST_NAME", - description: "Last name of an individual as in the national identity card.", - } as FormFieldInfo, - /** - * Description: Nationality of an individual. Format is 2-letter ISO country-code. - * - * GANA Type: CountryCode - */ - PERSON_NATIONALITY: { - id: "PERSON_NATIONALITY", - description: "Nationality of an individual. Format is 2-letter ISO country-code.", - } as FormFieldInfo, - /** - * Description: Identification number or string of national identity card. - * - * GANA Type: String - */ - PERSON_NATIONAL_ID: { - id: "PERSON_NATIONAL_ID", - description: "Identification number or string of national identity card.", - } as FormFieldInfo, - /** - * Description: Scan of a recognized national identity card of an individual. - * - * GANA Type: File - */ - PERSON_NATIONAL_ID_SCAN: { - id: "PERSON_NATIONAL_ID_SCAN", - description: "Scan of a recognized national identity card of an individual.", - } as FormFieldInfo, - /** - * Description: Country name of of the individual or business. - * - * GANA Type: CountryCode - */ - TAX_COUNTRY: { - id: "TAX_COUNTRY", - description: "Country name of of the individual or business.", - } as FormFieldInfo, - /** - * Description: Tax identifier of the individual or business. - * - * GANA Type: String - */ - TAX_ID: { - id: "TAX_ID", - description: "Tax identifier of the individual or business.", - } as FormFieldInfo, - /** - * Description: Is the individual or business economically active or passive. - * - * GANA Type: Boolean - */ - TAX_IS_ACTIVE: { - id: "TAX_IS_ACTIVE", - description: "Is the individual or business economically active or passive.", - } as FormFieldInfo, - /** - * Description: Is the business entitled to deduct input tax. - * - * GANA Type: Boolean - */ - TAX_IS_DEDUCTED: { - id: "TAX_IS_DEDUCTED", - description: "Is the business entitled to deduct input tax.", - } as FormFieldInfo, - /** - * Description: Is business founded or under USA law. - * - * GANA Type: Boolean - */ - TAX_IS_USA_LAW: { - id: "TAX_IS_USA_LAW", - description: "Is business founded or under USA law.", - } as FormFieldInfo, - } as const; - export const GLS_BusinessRepresentative = { - /** - * Description: - * - * GANA Type: AbsoluteDate - */ - GLS_REPRESENTATIVE_DATE_OF_BIRTH: { - id: "GLS_REPRESENTATIVE_DATE_OF_BIRTH", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - GLS_REPRESENTATIVE_FULL_NAME: { - id: "GLS_REPRESENTATIVE_FULL_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - GLS_REPRESENTATIVE_LAST_NAME: { - id: "GLS_REPRESENTATIVE_LAST_NAME", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: CountryCode - */ - GLS_REPRESENTATIVE_NATIONALITY: { - id: "GLS_REPRESENTATIVE_NATIONALITY", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: String - */ - GLS_REPRESENTATIVE_NATIONAL_ID: { - id: "GLS_REPRESENTATIVE_NATIONAL_ID", - description: "", - } as FormFieldInfo, - /** - * Description: - * - * GANA Type: File - */ - GLS_REPRESENTATIVE_NATIONAL_ID_SCAN: { - id: "GLS_REPRESENTATIVE_NATIONAL_ID_SCAN", - description: "", - } as FormFieldInfo, - } as const; - export const AccountProperties = { - /** - * Description: True if deposit limit changed from zero to greater than zero. - * - * GANA Type: Boolean - */ - AML_ACCOUNT_ACTIVE_DEPOSIT: { - id: "AML_ACCOUNT_ACTIVE_DEPOSIT", - description: "True if deposit limit changed from zero to greater than zero.", - } as FormFieldInfo, - /** - * Description: True if this is an account controlled by domestic PEP. - * - * GANA Type: Boolean - */ - AML_DOMESTIC_PEP: { - id: "AML_DOMESTIC_PEP", - description: "True if this is an account controlled by domestic PEP.", - } as FormFieldInfo, - /** - * Description: True if this is an account controlled by foreign PEP. - * - * GANA Type: Boolean - */ - AML_FOREIGN_PEP: { - id: "AML_FOREIGN_PEP", - description: "True if this is an account controlled by foreign PEP.", - } as FormFieldInfo, - /** - * Description: True if this is an account of a high-rish business. - * - * GANA Type: Boolean - */ - AML_HIGH_RISK_BUSINESS: { - id: "AML_HIGH_RISK_BUSINESS", - description: "True if this is an account of a high-rish business.", - } as FormFieldInfo, - /** - * Description: True if this is an account controlled by person from high-risk country. - * - * GANA Type: String - */ - AML_HIGH_RISK_COUNTRY: { - id: "AML_HIGH_RISK_COUNTRY", - description: "True if this is an account controlled by person from high-risk country.", - } as FormFieldInfo, - /** - * Description: True if account is involved in proceedings for which Art 6 GwG, and completed. - * - * GANA Type: Boolean - */ - AML_INVESTIGATION_ART6_COMPLETED: { - id: "AML_INVESTIGATION_ART6_COMPLETED", - description: "True if account is involved in proceedings for which Art 6 GwG, and completed.", - } as FormFieldInfo, - /** - * Description: True if account is involved in proceedings for which Art 6 GwG, but failed. - * - * GANA Type: Boolean - */ - AML_INVESTIGATION_ART6_FAILED: { - id: "AML_INVESTIGATION_ART6_FAILED", - description: "True if account is involved in proceedings for which Art 6 GwG, but failed.", - } as FormFieldInfo, - /** - * Description: True if this account is going to be reported by right to do so (based on Art 305ter Abs. 2 StGB). - * - * GANA Type: Boolean - */ - AML_MROS_REPORTED_ART305: { - id: "AML_MROS_REPORTED_ART305", - description: "True if this account is going to be reported by right to do so (based on Art 305ter Abs. 2 StGB).", - } as FormFieldInfo, - /** - * Description: True if this account is going to be reported by obligation to do so (based on Art 9 Abs. 1 GwG). - * - * GANA Type: Boolean - */ - AML_MROS_REPORTED_ART9: { - id: "AML_MROS_REPORTED_ART9", - description: "True if this account is going to be reported by obligation to do so (based on Art 9 Abs. 1 GwG).", - } as FormFieldInfo, - /** - * Description: True if the account made no operaton during a period of time. - * - * GANA Type: Boolean - */ - AML_NO_OPERATION_DURING_PERIOD: { - id: "AML_NO_OPERATION_DURING_PERIOD", - description: "True if the account made no operaton during a period of time.", - } as FormFieldInfo, - } as const; - - -} diff --git a/packages/taler-util/src/index.ts b/packages/taler-util/src/index.ts @@ -84,7 +84,7 @@ export * from "./account-restrictions.js"; export * from "./aml/aml-events.js"; export * from "./aml/aml-properties.js"; -export * from "./aml/taler_form_attributes.js"; +export * from "./taler-form-attributes.js"; export * from "./iso-4217.js"; export * from "./iso-3166.js"; diff --git a/packages/taler-util/src/taler-form-attributes.ts b/packages/taler-util/src/taler-form-attributes.ts @@ -21,1457 +21,1453 @@ but it does apply to this file. */ -/** - * Imports. - */ - export const TalerFormAttributes = { /** * Description: Suppress flagging this account when it creates a hit on a sanctions list, this is a false-positive. * * GANA Type: Boolean */ - SANCTION_LIST_SUPPRESS: "SANCTION_LIST_SUPPRESS", + SANCTION_LIST_SUPPRESS: "SANCTION_LIST_SUPPRESS" as const, /** * Description: When the form was completed. * * GANA Type: AbsoluteDateTime */ - FORM_FILLING_DATE: "FORM_FILLING_DATE", + FORM_FILLING_DATE: "FORM_FILLING_DATE" as const, /** * Description: Customer system ID required to correlate different AML forms. * * GANA Type: String */ - CUSTOMER_ID: "CUSTOMER_ID", + CUSTOMER_ID: "CUSTOMER_ID" as const, /** * Description: Contracing partner signature, * * GANA Type: AbsoluteDateTime */ - SIGN_DATE: "SIGN_DATE", + SIGN_DATE: "SIGN_DATE" as const, /** * Description: * * GANA Type: String */ - SIGNATURE: "SIGNATURE", + SIGNATURE: "SIGNATURE" as const, /** * Description: * * GANA Type: 'NATURAL_PERSON' | 'LEGAL_ENTITY' */ - CUSTOMER_TYPE: "CUSTOMER_TYPE", + CUSTOMER_TYPE: "CUSTOMER_TYPE" as const, /** * Description: * * GANA Type: String */ - CUSTOMER_NATURAL_FULL_NAME: "CUSTOMER_NATURAL_FULL_NAME", + CUSTOMER_NATURAL_FULL_NAME: "CUSTOMER_NATURAL_FULL_NAME" as const, /** * Description: If the customer is a natural person. * * GANA Type: Phone */ - CUSTOMER_NATURAL_PHONE: "CUSTOMER_NATURAL_PHONE", + CUSTOMER_NATURAL_PHONE: "CUSTOMER_NATURAL_PHONE" as const, /** * Description: If the customer is a natural person. * * GANA Type: ISO Date */ - DATE_OF_BIRTH: "DATE_OF_BIRTH", + DATE_OF_BIRTH: "DATE_OF_BIRTH" as const, /** * Description: If the customer is a natural person. * * GANA Type: File */ - PERSONAL_IDENTIFICATION_DOCUMENT_COPY: "PERSONAL_IDENTIFICATION_DOCUMENT_COPY", + PERSONAL_IDENTIFICATION_DOCUMENT_COPY: "PERSONAL_IDENTIFICATION_DOCUMENT_COPY" as const, /** * Description: Is the customer a sole proprietor? * * GANA Type: Boolean */ - CUSTOMER_IS_SOLE_PROPRIETOR: "CUSTOMER_IS_SOLE_PROPRIETOR", + CUSTOMER_IS_SOLE_PROPRIETOR: "CUSTOMER_IS_SOLE_PROPRIETOR" as const, /** * Description: If the customer is a natural person. * * GANA Type: String */ - COMPANY_NAME: "COMPANY_NAME", + COMPANY_NAME: "COMPANY_NAME" as const, /** * Description: * * GANA Type: String */ - REGISTERED_OFFICE_ADDRESS: "REGISTERED_OFFICE_ADDRESS", + REGISTERED_OFFICE_ADDRESS: "REGISTERED_OFFICE_ADDRESS" as const, /** * Description: If the customer is a legal person. * * GANA Type: String */ - LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY: "LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY", + LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY: "LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY" as const, /** * Description: If the customer is a legal entity. * * GANA Type: String */ - CUSTOMER_ENTITY_COMPANY_NAME: "CUSTOMER_ENTITY_COMPANY_NAME", + CUSTOMER_ENTITY_COMPANY_NAME: "CUSTOMER_ENTITY_COMPANY_NAME" as const, /** * Description: If the customer is a legal entity. * * GANA Type: BusinessAddress */ - CUSTOMER_ENTITY_ADDRESS: "CUSTOMER_ENTITY_ADDRESS", + CUSTOMER_ENTITY_ADDRESS: "CUSTOMER_ENTITY_ADDRESS" as const, /** * Description: Full name of the contact person. * * GANA Type: String */ - CONTACT_PERSON_NAME: "CONTACT_PERSON_NAME", + CONTACT_PERSON_NAME: "CONTACT_PERSON_NAME" as const, /** * Description: If the customer is a legal entity. * * GANA Type: Phone */ - CUSTOMER_ENTITY_PHONE: "CUSTOMER_ENTITY_PHONE", + CUSTOMER_ENTITY_PHONE: "CUSTOMER_ENTITY_PHONE" as const, /** * Description: * * GANA Type: String */ - DESCRIPTION: "DESCRIPTION", + DESCRIPTION: "DESCRIPTION" as const, /** * Description: * * GANA Type: DataUri */ - FILE: "FILE", + FILE: "FILE" as const, /** * Description: List of founder with the fields below. * * GANA Type: Form<VQF_902_1_founder>[] */ - ESTABLISHER_LIST: "ESTABLISHER_LIST", + ESTABLISHER_LIST: "ESTABLISHER_LIST" as const, /** * Description: Full name of a natural person. * * GANA Type: String */ - FULL_NAME: "FULL_NAME", + FULL_NAME: "FULL_NAME" as const, /** * Description: Domicile address. A domicile is a place where you live, an address is just a place where you receive mail. A residential address is somewhere you live but not necessarily your primary place. * * GANA Type: ResidentialAddress */ - DOMICILE_ADDRESS: "DOMICILE_ADDRESS", + DOMICILE_ADDRESS: "DOMICILE_ADDRESS" as const, /** * Description: Nationality, expressed as a country code. * * GANA Type: CountryCode */ - NATIONALITY: "NATIONALITY", + NATIONALITY: "NATIONALITY" as const, /** * Description: Signatory of representation (single, collective two, ...) * * GANA Type: String */ - SIGNING_AUTHORITY_TYPE: "SIGNING_AUTHORITY_TYPE", + SIGNING_AUTHORITY_TYPE: "SIGNING_AUTHORITY_TYPE" as const, /** * Description: Signatory of representation (other type) * * GANA Type: String */ - SIGNING_AUTHORITY_TYPE_OTHER: "SIGNING_AUTHORITY_TYPE_OTHER", + SIGNING_AUTHORITY_TYPE_OTHER: "SIGNING_AUTHORITY_TYPE_OTHER" as const, /** * Description: * * GANA Type: String */ - FOUNDER_NATIONAL_ID: "FOUNDER_NATIONAL_ID", + FOUNDER_NATIONAL_ID: "FOUNDER_NATIONAL_ID" as const, /** * Description: * * GANA Type: File */ - FOUNDER_NATIONAL_COPY: "FOUNDER_NATIONAL_COPY", + FOUNDER_NATIONAL_COPY: "FOUNDER_NATIONAL_COPY" as const, /** * Description: * * GANA Type: 'CR' | 'MANDATE' | 'OTHER' */ - SIGNING_AUTHORITY_EVIDENCE: "SIGNING_AUTHORITY_EVIDENCE", + SIGNING_AUTHORITY_EVIDENCE: "SIGNING_AUTHORITY_EVIDENCE" as const, /** * Description: * * GANA Type: String */ - SIGNING_AUTHORITY_EVIDENCE_OTHER: "SIGNING_AUTHORITY_EVIDENCE_OTHER", + SIGNING_AUTHORITY_EVIDENCE_OTHER: "SIGNING_AUTHORITY_EVIDENCE_OTHER" as const, /** * Description: * * GANA Type: File */ - SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY: "SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY", + SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY: "SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY" as const, /** * Description: Conclusion of the conract * * GANA Type: AbsoluteDate */ - ACCEPTANCE_DATE: "ACCEPTANCE_DATE", + ACCEPTANCE_DATE: "ACCEPTANCE_DATE" as const, /** * Description: * * GANA Type: 'FACE_TO_FACE' | 'AUTHENTICATED_COPY' | 'RESIDENTIAL_ADDRESS_VALIDATED' */ - ACCEPTANCE_METHOD: "ACCEPTANCE_METHOD", + ACCEPTANCE_METHOD: "ACCEPTANCE_METHOD" as const, /** * Description: * * GANA Type: LangCode */ - CORRESPONDENCE_LANGUAGE: "CORRESPONDENCE_LANGUAGE", + CORRESPONDENCE_LANGUAGE: "CORRESPONDENCE_LANGUAGE" as const, /** * Description: * * GANA Type: String */ - ACCEPTANCE_FURTHER_INFO: "ACCEPTANCE_FURTHER_INFO", + ACCEPTANCE_FURTHER_INFO: "ACCEPTANCE_FURTHER_INFO" as const, /** * Description: Customer type under the VQF classification. Establishment of the beneficial owner of the assets and/or controlling person * * GANA Type: 'NATURAL' | 'OPERATIONAL' | 'FOUNDATION' | 'TRUST' | 'LIFE_INSURANCE' | 'OTHER' */ - CUSTOMER_TYPE_VQF: "CUSTOMER_TYPE_VQF", + CUSTOMER_TYPE_VQF: "CUSTOMER_TYPE_VQF" as const, /** * Description: Verification whether the customer, beneficial owners of the assets, controlling persons, authorised representatives or other involved persons are listed on an embargo-/terrorism list (date of verification/result) * * GANA Type: Paragraph */ - EMBARGO_TERRORISM_INFO: "EMBARGO_TERRORISM_INFO", + EMBARGO_TERRORISM_INFO: "EMBARGO_TERRORISM_INFO" as const, /** * Description: Verification date. * * GANA Type: Date */ - EMBARGO_TERRORISM_CHECK_DATE: "EMBARGO_TERRORISM_CHECK_DATE", + EMBARGO_TERRORISM_CHECK_DATE: "EMBARGO_TERRORISM_CHECK_DATE" as const, /** * Description: Verification date. * * GANA Type: 'NOT_LISTED' | 'LISTED' */ - EMBARGO_TERRORISM_CHECK_RESULT: "EMBARGO_TERRORISM_CHECK_RESULT", + EMBARGO_TERRORISM_CHECK_RESULT: "EMBARGO_TERRORISM_CHECK_RESULT" as const, /** * Description: * * GANA Type: 'MONEY_EXCHANGE' | 'MONEY_ASSET_TRANSFER' | 'OTHER' */ - RELATIONSHIP_TYPE: "RELATIONSHIP_TYPE", + RELATIONSHIP_TYPE: "RELATIONSHIP_TYPE" as const, /** * Description: * * GANA Type: String */ - RELATIONSHIP_TYPE_OTHER: "RELATIONSHIP_TYPE_OTHER", + RELATIONSHIP_TYPE_OTHER: "RELATIONSHIP_TYPE_OTHER" as const, /** * Description: Purpose of service requested * * GANA Type: Paragraph */ - RELATIONSHIP_PURPOSE: "RELATIONSHIP_PURPOSE", + RELATIONSHIP_PURPOSE: "RELATIONSHIP_PURPOSE" as const, /** * Description: * * GANA Type: Boolean */ - ENCLOSURE_CUSTOMER_DOCUMENTS: "ENCLOSURE_CUSTOMER_DOCUMENTS", + ENCLOSURE_CUSTOMER_DOCUMENTS: "ENCLOSURE_CUSTOMER_DOCUMENTS" as const, /** * Description: * * GANA Type: Boolean */ - ENCLOSURE_IDENTIFICATION_DOCUMENTS: "ENCLOSURE_IDENTIFICATION_DOCUMENTS", + ENCLOSURE_IDENTIFICATION_DOCUMENTS: "ENCLOSURE_IDENTIFICATION_DOCUMENTS" as const, /** * Description: * * GANA Type: Boolean */ - ENCLOSURE_BENEFICIAL_OWNER: "ENCLOSURE_BENEFICIAL_OWNER", + ENCLOSURE_BENEFICIAL_OWNER: "ENCLOSURE_BENEFICIAL_OWNER" as const, /** * Description: * * GANA Type: Boolean */ - ENCLOSURE_CUSTOMER_PROFILE: "ENCLOSURE_CUSTOMER_PROFILE", + ENCLOSURE_CUSTOMER_PROFILE: "ENCLOSURE_CUSTOMER_PROFILE" as const, /** * Description: * * GANA Type: Boolean */ - ENCLOSURE_RISK_PROFILE: "ENCLOSURE_RISK_PROFILE", + ENCLOSURE_RISK_PROFILE: "ENCLOSURE_RISK_PROFILE" as const, /** * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 1' * * GANA Type: Boolean */ - PEP_FOREIGN: "PEP_FOREIGN", + PEP_FOREIGN: "PEP_FOREIGN" as const, /** * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 2' * * GANA Type: Boolean */ - PEP_DOMESTIC: "PEP_DOMESTIC", + PEP_DOMESTIC: "PEP_DOMESTIC" as const, /** * Description: True if the person is a PEP defined by 'Art 7 lit. g numeral 3' * * GANA Type: Boolean */ - PEP_INTERNATIONAL_ORGANIZATION: "PEP_INTERNATIONAL_ORGANIZATION", + PEP_INTERNATIONAL_ORGANIZATION: "PEP_INTERNATIONAL_ORGANIZATION" as const, /** * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ * * GANA Type: AbsoluteDateTime */ - PEP_ACCEPTANCE_DATE: "PEP_ACCEPTANCE_DATE", + PEP_ACCEPTANCE_DATE: "PEP_ACCEPTANCE_DATE" as const, /** * Description: True if the person is in a country for which FATF requires incresed dilegence. * * GANA Type: Boolean */ - HIGH_RISK_COUNTRY: "HIGH_RISK_COUNTRY", + HIGH_RISK_COUNTRY: "HIGH_RISK_COUNTRY" as const, /** * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ * * GANA Type: AbsoluteDateTime */ - HIGH_RISK_ACCEPTANCE_DATE: "HIGH_RISK_ACCEPTANCE_DATE", + HIGH_RISK_ACCEPTANCE_DATE: "HIGH_RISK_ACCEPTANCE_DATE" as const, /** * Description: * * GANA Type: 'NATIONALITY_CUSTOMER' | 'NATIONALITY_OWNER' | 'DOMICILE_CUSTOMER' | 'DOMICILE_OWNER' | 'DOMICILE_CONTROLLING' */ - COUNTRY_RISK_NATIONALITY_TYPE: "COUNTRY_RISK_NATIONALITY_TYPE", + COUNTRY_RISK_NATIONALITY_TYPE: "COUNTRY_RISK_NATIONALITY_TYPE" as const, /** * Description: Based on 902.4.1 country list * * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' */ - COUNTRY_RISK_NATIONALITY_LEVEL: "COUNTRY_RISK_NATIONALITY_LEVEL", + COUNTRY_RISK_NATIONALITY_LEVEL: "COUNTRY_RISK_NATIONALITY_LEVEL" as const, /** * Description: * * GANA Type: 'CUSTOMER' | 'OWNER' */ - COUNTRY_RISK_BUSINESS_TYPE: "COUNTRY_RISK_BUSINESS_TYPE", + COUNTRY_RISK_BUSINESS_TYPE: "COUNTRY_RISK_BUSINESS_TYPE" as const, /** * Description: Based on 902.4.1 country list * * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' */ - COUNTRY_RISK_BUSINESS_LEVEL: "COUNTRY_RISK_BUSINESS_LEVEL", + COUNTRY_RISK_BUSINESS_LEVEL: "COUNTRY_RISK_BUSINESS_LEVEL" as const, /** * Description: Based on 902.4.1 country list * * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' */ - COUNTRY_RISK_PAYMENTS_LEVEL: "COUNTRY_RISK_PAYMENTS_LEVEL", + COUNTRY_RISK_PAYMENTS_LEVEL: "COUNTRY_RISK_PAYMENTS_LEVEL" as const, /** * Description: * * GANA Type: 'CUSTOMER' | 'OWNER' */ - INDUSTRY_RISK_TYPE: "INDUSTRY_RISK_TYPE", + INDUSTRY_RISK_TYPE: "INDUSTRY_RISK_TYPE" as const, /** * Description: * * GANA Type: 'TRANSPARENT' | 'HIGH_CASH_TRANSACTION' | 'NOT_WELL_KNOWN' | 'HIGH_RISK_TRADE' | 'UNKNOWN_INDUSTRY' */ - INDUSTRY_RISK_LEVEL: "INDUSTRY_RISK_LEVEL", + INDUSTRY_RISK_LEVEL: "INDUSTRY_RISK_LEVEL" as const, /** * Description: Based on 902.4.1 country list * * GANA Type: 'LOW' | 'MEDIUM' | 'HIGH' */ - CONTACT_RISK_LEVEL: "CONTACT_RISK_LEVEL", + CONTACT_RISK_LEVEL: "CONTACT_RISK_LEVEL" as const, /** * Description: * * GANA Type: 'EASY' | 'SOPHISTICATED' | 'OFFSHORE' | 'COMPLEX_STRUCTURE' | 'LARGE_NUMBER_OF_ACCOUNTS' | 'COMPLEX_SERVICE' | 'FREQ_TRANS_WITH_HIGH_RISK' */ - PRODUCT_RISK_LEVEL: "PRODUCT_RISK_LEVEL", + PRODUCT_RISK_LEVEL: "PRODUCT_RISK_LEVEL" as const, /** * Description: * * GANA Type: 'HIGH_RISK' | 'NO_HIGH_RISK' */ - RISK_CLASSIFICATION_LEVEL: "RISK_CLASSIFICATION_LEVEL", + RISK_CLASSIFICATION_LEVEL: "RISK_CLASSIFICATION_LEVEL" as const, /** * Description: Justification for differing risk assessment * * GANA Type: Paragraph */ - RISK_RATIONALY: "RISK_RATIONALY", + RISK_RATIONALY: "RISK_RATIONALY" as const, /** * Description: The decision of the Senior executive body on the acceptance of a business relationsip was obtained on ___ * * GANA Type: AbsoluteDateTime */ - RISK_ACCEPTANCE_DATE: "RISK_ACCEPTANCE_DATE", + RISK_ACCEPTANCE_DATE: "RISK_ACCEPTANCE_DATE" as const, /** * Description: Profession, business activities, etc. (former, current, potentially planned) * * GANA Type: String */ - BIZREL_PROFESSION: "BIZREL_PROFESSION", + BIZREL_PROFESSION: "BIZREL_PROFESSION" as const, /** * Description: Income and assets, liabilities (estimated) * * GANA Type: String */ - BIZREL_INCOME: "BIZREL_INCOME", + BIZREL_INCOME: "BIZREL_INCOME" as const, /** * Description: Does the customer have assets that will be deposited? * * GANA Type: Boolean */ - BIZREL_HAVE_ASSETS: "BIZREL_HAVE_ASSETS", + BIZREL_HAVE_ASSETS: "BIZREL_HAVE_ASSETS" as const, /** * Description: Nature of the involved assets. * * GANA Type: String */ - BIZREL_ORIGIN_NATURE: "BIZREL_ORIGIN_NATURE", + BIZREL_ORIGIN_NATURE: "BIZREL_ORIGIN_NATURE" as const, /** * Description: Currency of the involved assets. * * GANA Type: Amount */ - BIZREL_ORIGIN_CURRENCY: "BIZREL_ORIGIN_CURRENCY", + BIZREL_ORIGIN_CURRENCY: "BIZREL_ORIGIN_CURRENCY" as const, /** * Description: Amount of the involved assets. * * GANA Type: Amount */ - BIZREL_ORIGIN_AMOUNT: "BIZREL_ORIGIN_AMOUNT", + BIZREL_ORIGIN_AMOUNT: "BIZREL_ORIGIN_AMOUNT" as const, /** * Description: * * GANA Type: 'SAVINGS' | 'OWN_BUSINESS' | 'INHERITANCE' | 'OTHER' */ - BIZREL_ORIGIN_CATEGORY: "BIZREL_ORIGIN_CATEGORY", + BIZREL_ORIGIN_CATEGORY: "BIZREL_ORIGIN_CATEGORY" as const, /** * Description: * * GANA Type: String */ - BIZREL_ORIGIN_CATEGORY_OTHER: "BIZREL_ORIGIN_CATEGORY_OTHER", + BIZREL_ORIGIN_CATEGORY_OTHER: "BIZREL_ORIGIN_CATEGORY_OTHER" as const, /** * Description: Detail description of the origings * * GANA Type: Paragraph */ - BIZREL_ORIGIN_DETAIL: "BIZREL_ORIGIN_DETAIL", + BIZREL_ORIGIN_DETAIL: "BIZREL_ORIGIN_DETAIL" as const, /** * Description: Purpose of the business relationship. * * GANA Type: String */ - BIZREL_PURPOSE: "BIZREL_PURPOSE", + BIZREL_PURPOSE: "BIZREL_PURPOSE" as const, /** * Description: Information on the planned development of the business relationship and the assets. * * GANA Type: String */ - BIZREL_DEVELOPMENT: "BIZREL_DEVELOPMENT", + BIZREL_DEVELOPMENT: "BIZREL_DEVELOPMENT" as const, /** * Description: In the case of cash or money and asset transfer transacction with regular customer * * GANA Type: String */ - BIZREL_FINANCIAL_VOLUME: "BIZREL_FINANCIAL_VOLUME", + BIZREL_FINANCIAL_VOLUME: "BIZREL_FINANCIAL_VOLUME" as const, /** * Description: In the case of cash or money and asset transfer transacction with regular customer * * GANA Type: String */ - BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: "BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME", + BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: "BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME" as const, /** * Description: In the case of cash or money and asset transfer transacction with regular customer * * GANA Type: BusinessAddress */ - BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS: "BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS", + BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS: "BIZREL_FINANCIAL_BENEFICIARIES_ADDRESS" as const, /** * Description: In the case of cash or money and asset transfer transacction with regular customer * * GANA Type: String */ - BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT: "BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT", + BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT: "BIZREL_FINANCIAL_BENEFICIARIES_BANK_ACCOUNT" as const, /** * Description: Relation of the customer to the beneficial owner, controlling persons, authorised signatories and other persons involved in the business relationship. * * GANA Type: String */ - BIZREL_THIRDPARTY_RELATIONSHIP: "BIZREL_THIRDPARTY_RELATIONSHIP", + BIZREL_THIRDPARTY_RELATIONSHIP: "BIZREL_THIRDPARTY_RELATIONSHIP" as const, /** * Description: Relation to other AMLA-files. * * GANA Type: String */ - BIZREL_THIRDPARTY_AMLA_FILES: "BIZREL_THIRDPARTY_AMLA_FILES", + BIZREL_THIRDPARTY_AMLA_FILES: "BIZREL_THIRDPARTY_AMLA_FILES" as const, /** * Description: Introducer / agents / references. * * GANA Type: String */ - BIZREL_THIRDPARTY_REFERENCES: "BIZREL_THIRDPARTY_REFERENCES", + BIZREL_THIRDPARTY_REFERENCES: "BIZREL_THIRDPARTY_REFERENCES" as const, /** * Description: Other relevant information. * * GANA Type: String */ - BIZREL_FURTHER_INFO: "BIZREL_FURTHER_INFO", + BIZREL_FURTHER_INFO: "BIZREL_FURTHER_INFO" as const, /** * Description: * * GANA Type: Paragraph */ - IDENTITY_CONTRACTING_PARTNER: "IDENTITY_CONTRACTING_PARTNER", + IDENTITY_CONTRACTING_PARTNER: "IDENTITY_CONTRACTING_PARTNER" as const, /** * Description: * * GANA Type: File */ - ATTACHMENT_SIGNED_DOCUMENT: "ATTACHMENT_SIGNED_DOCUMENT", + ATTACHMENT_SIGNED_DOCUMENT: "ATTACHMENT_SIGNED_DOCUMENT" as const, /** * Description: The beneficial owners of the assets involved in the business relationship. * * GANA Type: Form<VQF_902_9_identity>[] */ - IDENTITY_LIST: "IDENTITY_LIST", + IDENTITY_LIST: "IDENTITY_LIST" as const, /** * Description: Party that is filling out the form. * * GANA Type: 'AML_OFFICER' | 'CUSTOMER' */ - SUBMITTED_BY: "SUBMITTED_BY", + SUBMITTED_BY: "SUBMITTED_BY" as const, /** * Description: * * GANA Type: '25_MORE_RIGHTS' | 'OTHER_WAY' | 'DIRECTOR' */ - CONTROL_REASON: "CONTROL_REASON", + CONTROL_REASON: "CONTROL_REASON" as const, /** * Description: Is a third person the beneficial owner of the assets? * * GANA Type: Boolean */ - CONTROLLING_ENTITY_THIRD_PERSON: "CONTROLLING_ENTITY_THIRD_PERSON", + CONTROLLING_ENTITY_THIRD_PERSON: "CONTROLLING_ENTITY_THIRD_PERSON" as const, /** * Description: * * GANA Type: Paragraph */ - FOUNDATION_CONTRACTING_PARTNER: "FOUNDATION_CONTRACTING_PARTNER", + FOUNDATION_CONTRACTING_PARTNER: "FOUNDATION_CONTRACTING_PARTNER" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_KNOWN_AS: "FOUNDATION_KNOWN_AS", + FOUNDATION_KNOWN_AS: "FOUNDATION_KNOWN_AS" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_NAME: "FOUNDATION_NAME", + FOUNDATION_NAME: "FOUNDATION_NAME" as const, /** * Description: * * GANA Type: Boolean */ - FOUNDATION_DISCRETIONARY: "FOUNDATION_DISCRETIONARY", + FOUNDATION_DISCRETIONARY: "FOUNDATION_DISCRETIONARY" as const, /** * Description: * * GANA Type: Boolean */ - FOUNDATION_REVOCABLE: "FOUNDATION_REVOCABLE", + FOUNDATION_REVOCABLE: "FOUNDATION_REVOCABLE" as const, /** * Description: * * GANA Type: Form<VQF_902_12_founder>[] */ - FOUNDATION_FOUNDER_LIST: "FOUNDATION_FOUNDER_LIST", + FOUNDATION_FOUNDER_LIST: "FOUNDATION_FOUNDER_LIST" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_FOUNDER_FULL_NAME: "FOUNDATION_FOUNDER_FULL_NAME", + FOUNDATION_FOUNDER_FULL_NAME: "FOUNDATION_FOUNDER_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - FOUNDATION_FOUNDER_DOMICILE: "FOUNDATION_FOUNDER_DOMICILE", + FOUNDATION_FOUNDER_DOMICILE: "FOUNDATION_FOUNDER_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_FOUNDER_COUNTRY: "FOUNDATION_FOUNDER_COUNTRY", + FOUNDATION_FOUNDER_COUNTRY: "FOUNDATION_FOUNDER_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_FOUNDER_BIRTHDATE: "FOUNDATION_FOUNDER_BIRTHDATE", + FOUNDATION_FOUNDER_BIRTHDATE: "FOUNDATION_FOUNDER_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_FOUNDER_NATIONALITY: "FOUNDATION_FOUNDER_NATIONALITY", + FOUNDATION_FOUNDER_NATIONALITY: "FOUNDATION_FOUNDER_NATIONALITY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_FOUNDER_DEATHDATE: "FOUNDATION_FOUNDER_DEATHDATE", + FOUNDATION_FOUNDER_DEATHDATE: "FOUNDATION_FOUNDER_DEATHDATE" as const, /** * Description: * * GANA Type: Boolean */ - FOUNDATION_FOUNDER_RIGHT_TO_REVOKE: "FOUNDATION_FOUNDER_RIGHT_TO_REVOKE", + FOUNDATION_FOUNDER_RIGHT_TO_REVOKE: "FOUNDATION_FOUNDER_RIGHT_TO_REVOKE" as const, /** * Description: * * GANA Type: Form<VQF_902_12_pre>[] */ - FOUNDATION_PRE_LIST: "FOUNDATION_PRE_LIST", + FOUNDATION_PRE_LIST: "FOUNDATION_PRE_LIST" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_PRE_FULL_NAME: "FOUNDATION_PRE_FULL_NAME", + FOUNDATION_PRE_FULL_NAME: "FOUNDATION_PRE_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - FOUNDATION_PRE_DOMICILE: "FOUNDATION_PRE_DOMICILE", + FOUNDATION_PRE_DOMICILE: "FOUNDATION_PRE_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_PRE_COUNTRY: "FOUNDATION_PRE_COUNTRY", + FOUNDATION_PRE_COUNTRY: "FOUNDATION_PRE_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_PRE_BIRTHDATE: "FOUNDATION_PRE_BIRTHDATE", + FOUNDATION_PRE_BIRTHDATE: "FOUNDATION_PRE_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_PRE_NATIONALITY: "FOUNDATION_PRE_NATIONALITY", + FOUNDATION_PRE_NATIONALITY: "FOUNDATION_PRE_NATIONALITY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_PRE_DEATHDATE: "FOUNDATION_PRE_DEATHDATE", + FOUNDATION_PRE_DEATHDATE: "FOUNDATION_PRE_DEATHDATE" as const, /** * Description: * * GANA Type: Form<VQF_902_12_beneficiary>[] */ - FOUNDATION_BENEFICIARY_LIST: "FOUNDATION_BENEFICIARY_LIST", + FOUNDATION_BENEFICIARY_LIST: "FOUNDATION_BENEFICIARY_LIST" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_BENEFICIARY_FULL_NAME: "FOUNDATION_BENEFICIARY_FULL_NAME", + FOUNDATION_BENEFICIARY_FULL_NAME: "FOUNDATION_BENEFICIARY_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - FOUNDATION_BENEFICIARY_DOMICILE: "FOUNDATION_BENEFICIARY_DOMICILE", + FOUNDATION_BENEFICIARY_DOMICILE: "FOUNDATION_BENEFICIARY_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_BENEFICIARY_COUNTRY: "FOUNDATION_BENEFICIARY_COUNTRY", + FOUNDATION_BENEFICIARY_COUNTRY: "FOUNDATION_BENEFICIARY_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_BENEFICIARY_BIRTHDATE: "FOUNDATION_BENEFICIARY_BIRTHDATE", + FOUNDATION_BENEFICIARY_BIRTHDATE: "FOUNDATION_BENEFICIARY_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_BENEFICIARY_NATIONALITY: "FOUNDATION_BENEFICIARY_NATIONALITY", + FOUNDATION_BENEFICIARY_NATIONALITY: "FOUNDATION_BENEFICIARY_NATIONALITY" as const, /** * Description: * * GANA Type: Boolean */ - FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM: "FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM", + FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM: "FOUNDATION_BENEFICIARY_RIGHT_TO_CLAIM" as const, /** * Description: * * GANA Type: Paragraph */ - FOUNDATION_BENEFICIARY_ADDITION: "FOUNDATION_BENEFICIARY_ADDITION", + FOUNDATION_BENEFICIARY_ADDITION: "FOUNDATION_BENEFICIARY_ADDITION" as const, /** * Description: * * GANA Type: Form<VQF_902_12_representative>[] */ - FOUNDATION_REPRESENTATIVE_LIST: "FOUNDATION_REPRESENTATIVE_LIST", + FOUNDATION_REPRESENTATIVE_LIST: "FOUNDATION_REPRESENTATIVE_LIST" as const, /** * Description: * * GANA Type: String */ - FOUNDATION_REPRESENTATIVE_FULL_NAME: "FOUNDATION_REPRESENTATIVE_FULL_NAME", + FOUNDATION_REPRESENTATIVE_FULL_NAME: "FOUNDATION_REPRESENTATIVE_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - FOUNDATION_REPRESENTATIVE_DOMICILE: "FOUNDATION_REPRESENTATIVE_DOMICILE", + FOUNDATION_REPRESENTATIVE_DOMICILE: "FOUNDATION_REPRESENTATIVE_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_REPRESENTATIVE_COUNTRY: "FOUNDATION_REPRESENTATIVE_COUNTRY", + FOUNDATION_REPRESENTATIVE_COUNTRY: "FOUNDATION_REPRESENTATIVE_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - FOUNDATION_REPRESENTATIVE_BIRTHDATE: "FOUNDATION_REPRESENTATIVE_BIRTHDATE", + FOUNDATION_REPRESENTATIVE_BIRTHDATE: "FOUNDATION_REPRESENTATIVE_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - FOUNDATION_REPRESENTATIVE_NATIONALITY: "FOUNDATION_REPRESENTATIVE_NATIONALITY", + FOUNDATION_REPRESENTATIVE_NATIONALITY: "FOUNDATION_REPRESENTATIVE_NATIONALITY" as const, /** * Description: * * GANA Type: Boolean */ - FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE: "FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE", + FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE: "FOUNDATION_REPRESENTATIVE_RIGHT_TO_REVOKE" as const, /** * Description: * * GANA Type: Paragraph */ - TRUST_CONTRACTING_PARTNER: "TRUST_CONTRACTING_PARTNER", + TRUST_CONTRACTING_PARTNER: "TRUST_CONTRACTING_PARTNER" as const, /** * Description: * * GANA Type: String */ - TRUST_KNOWN_AS: "TRUST_KNOWN_AS", + TRUST_KNOWN_AS: "TRUST_KNOWN_AS" as const, /** * Description: * * GANA Type: String */ - TRUST_NAME: "TRUST_NAME", + TRUST_NAME: "TRUST_NAME" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_DISCRETIONARY: "TRUST_DISCRETIONARY", + TRUST_DISCRETIONARY: "TRUST_DISCRETIONARY" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_REVOCABLE: "TRUST_REVOCABLE", + TRUST_REVOCABLE: "TRUST_REVOCABLE" as const, /** * Description: * * GANA Type: Form<VQF_902_13_settlor>[] */ - TRUST_SETTLOR_LIST: "TRUST_SETTLOR_LIST", + TRUST_SETTLOR_LIST: "TRUST_SETTLOR_LIST" as const, /** * Description: * * GANA Type: String */ - TRUST_SETTLOR_FULL_NAME: "TRUST_SETTLOR_FULL_NAME", + TRUST_SETTLOR_FULL_NAME: "TRUST_SETTLOR_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - TRUST_SETTLOR_DOMICILE: "TRUST_SETTLOR_DOMICILE", + TRUST_SETTLOR_DOMICILE: "TRUST_SETTLOR_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_SETTLOR_COUNTRY: "TRUST_SETTLOR_COUNTRY", + TRUST_SETTLOR_COUNTRY: "TRUST_SETTLOR_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_SETTLOR_BIRTHDATE: "TRUST_SETTLOR_BIRTHDATE", + TRUST_SETTLOR_BIRTHDATE: "TRUST_SETTLOR_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_SETTLOR_NATIONALITY: "TRUST_SETTLOR_NATIONALITY", + TRUST_SETTLOR_NATIONALITY: "TRUST_SETTLOR_NATIONALITY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_SETTLOR_DEATHDATE: "TRUST_SETTLOR_DEATHDATE", + TRUST_SETTLOR_DEATHDATE: "TRUST_SETTLOR_DEATHDATE" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_SETTLOR_RIGHT_TO_REVOKE: "TRUST_SETTLOR_RIGHT_TO_REVOKE", + TRUST_SETTLOR_RIGHT_TO_REVOKE: "TRUST_SETTLOR_RIGHT_TO_REVOKE" as const, /** * Description: * * GANA Type: Form<VQF_902_13_pre>[] */ - TRUST_PRE_LIST: "TRUST_PRE_LIST", + TRUST_PRE_LIST: "TRUST_PRE_LIST" as const, /** * Description: * * GANA Type: String */ - TRUST_PRE_FULL_NAME: "TRUST_PRE_FULL_NAME", + TRUST_PRE_FULL_NAME: "TRUST_PRE_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - TRUST_PRE_DOMICILE: "TRUST_PRE_DOMICILE", + TRUST_PRE_DOMICILE: "TRUST_PRE_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_PRE_COUNTRY: "TRUST_PRE_COUNTRY", + TRUST_PRE_COUNTRY: "TRUST_PRE_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_PRE_BIRTHDATE: "TRUST_PRE_BIRTHDATE", + TRUST_PRE_BIRTHDATE: "TRUST_PRE_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_PRE_NATIONALITY: "TRUST_PRE_NATIONALITY", + TRUST_PRE_NATIONALITY: "TRUST_PRE_NATIONALITY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_PRE_DEATHDATE: "TRUST_PRE_DEATHDATE", + TRUST_PRE_DEATHDATE: "TRUST_PRE_DEATHDATE" as const, /** * Description: * * GANA Type: Form<VQF_902_13_beneficiary>[] */ - TRUST_BENEFICIARY_LIST: "TRUST_BENEFICIARY_LIST", + TRUST_BENEFICIARY_LIST: "TRUST_BENEFICIARY_LIST" as const, /** * Description: * * GANA Type: String */ - TRUST_BENEFICIARY_FULL_NAME: "TRUST_BENEFICIARY_FULL_NAME", + TRUST_BENEFICIARY_FULL_NAME: "TRUST_BENEFICIARY_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - TRUST_BENEFICIARY_DOMICILE: "TRUST_BENEFICIARY_DOMICILE", + TRUST_BENEFICIARY_DOMICILE: "TRUST_BENEFICIARY_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_BENEFICIARY_COUNTRY: "TRUST_BENEFICIARY_COUNTRY", + TRUST_BENEFICIARY_COUNTRY: "TRUST_BENEFICIARY_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_BENEFICIARY_BIRTHDATE: "TRUST_BENEFICIARY_BIRTHDATE", + TRUST_BENEFICIARY_BIRTHDATE: "TRUST_BENEFICIARY_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_BENEFICIARY_NATIONALITY: "TRUST_BENEFICIARY_NATIONALITY", + TRUST_BENEFICIARY_NATIONALITY: "TRUST_BENEFICIARY_NATIONALITY" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_BENEFICIARY_RIGHT_TO_CLAIM: "TRUST_BENEFICIARY_RIGHT_TO_CLAIM", + TRUST_BENEFICIARY_RIGHT_TO_CLAIM: "TRUST_BENEFICIARY_RIGHT_TO_CLAIM" as const, /** * Description: * * GANA Type: Paragraph */ - TRUST_BENEFICIARY_ADDITION: "TRUST_BENEFICIARY_ADDITION", + TRUST_BENEFICIARY_ADDITION: "TRUST_BENEFICIARY_ADDITION" as const, /** * Description: * * GANA Type: Form<VQF_902_13_protector>[] */ - TRUST_PROTECTOR_LIST: "TRUST_PROTECTOR_LIST", + TRUST_PROTECTOR_LIST: "TRUST_PROTECTOR_LIST" as const, /** * Description: * * GANA Type: String */ - TRUST_PROTECTOR_FULL_NAME: "TRUST_PROTECTOR_FULL_NAME", + TRUST_PROTECTOR_FULL_NAME: "TRUST_PROTECTOR_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - TRUST_PROTECTOR_DOMICILE: "TRUST_PROTECTOR_DOMICILE", + TRUST_PROTECTOR_DOMICILE: "TRUST_PROTECTOR_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_PROTECTOR_COUNTRY: "TRUST_PROTECTOR_COUNTRY", + TRUST_PROTECTOR_COUNTRY: "TRUST_PROTECTOR_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_PROTECTOR_BIRTHDATE: "TRUST_PROTECTOR_BIRTHDATE", + TRUST_PROTECTOR_BIRTHDATE: "TRUST_PROTECTOR_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_PROTECTOR_NATIONALITY: "TRUST_PROTECTOR_NATIONALITY", + TRUST_PROTECTOR_NATIONALITY: "TRUST_PROTECTOR_NATIONALITY" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_PROTECTOR_RIGHT_TO_REVOKE: "TRUST_PROTECTOR_RIGHT_TO_REVOKE", + TRUST_PROTECTOR_RIGHT_TO_REVOKE: "TRUST_PROTECTOR_RIGHT_TO_REVOKE" as const, /** * Description: * * GANA Type: Form<VQF_902_13_further>[] */ - TRUST_FURTHER_LIST: "TRUST_FURTHER_LIST", + TRUST_FURTHER_LIST: "TRUST_FURTHER_LIST" as const, /** * Description: * * GANA Type: String */ - TRUST_FURTHER_FULL_NAME: "TRUST_FURTHER_FULL_NAME", + TRUST_FURTHER_FULL_NAME: "TRUST_FURTHER_FULL_NAME" as const, /** * Description: * * GANA Type: ResidentialAddress */ - TRUST_FURTHER_DOMICILE: "TRUST_FURTHER_DOMICILE", + TRUST_FURTHER_DOMICILE: "TRUST_FURTHER_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_FURTHER_COUNTRY: "TRUST_FURTHER_COUNTRY", + TRUST_FURTHER_COUNTRY: "TRUST_FURTHER_COUNTRY" as const, /** * Description: * * GANA Type: AbsoluteDate */ - TRUST_FURTHER_BIRTHDATE: "TRUST_FURTHER_BIRTHDATE", + TRUST_FURTHER_BIRTHDATE: "TRUST_FURTHER_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - TRUST_FURTHER_NATIONALITY: "TRUST_FURTHER_NATIONALITY", + TRUST_FURTHER_NATIONALITY: "TRUST_FURTHER_NATIONALITY" as const, /** * Description: * * GANA Type: Boolean */ - TRUST_FURTHER_RIGHT_TO_REVOKE: "TRUST_FURTHER_RIGHT_TO_REVOKE", + TRUST_FURTHER_RIGHT_TO_REVOKE: "TRUST_FURTHER_RIGHT_TO_REVOKE" as const, /** * Description: Description of the circumstances/transactions, which triggered the special clarifications * * GANA Type: String */ - INCRISK_REASON: "INCRISK_REASON", + INCRISK_REASON: "INCRISK_REASON" as const, /** * Description: * * GANA Type: 'GATHERING' | 'CONSULTATION' | 'ENQUIRIES' | 'OTHER' */ - INCRISK_MEANS: "INCRISK_MEANS", + INCRISK_MEANS: "INCRISK_MEANS" as const, /** * Description: * * GANA Type: String */ - INCRISK_MEANS_OTHER: "INCRISK_MEANS_OTHER", + INCRISK_MEANS_OTHER: "INCRISK_MEANS_OTHER" as const, /** * Description: * * GANA Type: Paragraph */ - INCRISK_SUMMARY: "INCRISK_SUMMARY", + INCRISK_SUMMARY: "INCRISK_SUMMARY" as const, /** * Description: Gathered or consulted documents * * GANA Type: Paragraph */ - INCRISK_DOCUMENTS: "INCRISK_DOCUMENTS", + INCRISK_DOCUMENTS: "INCRISK_DOCUMENTS" as const, /** * Description: * * GANA Type: 'NO_SUSPICION' | 'REASONABLE_SUSPICION' | 'SIMPLE_SUSPICION' | 'OTHER' */ - INCRISK_RESULT: "INCRISK_RESULT", + INCRISK_RESULT: "INCRISK_RESULT" as const, /** * Description: * * GANA Type: String */ - INCRISK_RESULT_OTHER: "INCRISK_RESULT_OTHER", + INCRISK_RESULT_OTHER: "INCRISK_RESULT_OTHER" as const, /** * Description: * * GANA Type: Paragraph */ - INSURANCE_CONTRACTING_PARTNER: "INSURANCE_CONTRACTING_PARTNER", + INSURANCE_CONTRACTING_PARTNER: "INSURANCE_CONTRACTING_PARTNER" as const, /** * Description: Name or number of the contractual relationship between the contracting party and the financial intermediary * * GANA Type: String */ - INSURANCE_RELATIONSHIP_NAME: "INSURANCE_RELATIONSHIP_NAME", + INSURANCE_RELATIONSHIP_NAME: "INSURANCE_RELATIONSHIP_NAME" as const, /** * Description: * * GANA Type: String */ - INSURANCE_RELATIONSHIP_POLICY: "INSURANCE_RELATIONSHIP_POLICY", + INSURANCE_RELATIONSHIP_POLICY: "INSURANCE_RELATIONSHIP_POLICY" as const, /** * Description: The beneficial owners of the assets involved in the business relationship. * * GANA Type: String */ - INSURANCE_HOLDER_FULL_NAME: "INSURANCE_HOLDER_FULL_NAME", + INSURANCE_HOLDER_FULL_NAME: "INSURANCE_HOLDER_FULL_NAME" as const, /** * Description: * * GANA Type: AbsoluteDate */ - INSURANCE_HOLDER_BIRTHDATE: "INSURANCE_HOLDER_BIRTHDATE", + INSURANCE_HOLDER_BIRTHDATE: "INSURANCE_HOLDER_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - INSURANCE_HOLDER_NATIONALITY: "INSURANCE_HOLDER_NATIONALITY", + INSURANCE_HOLDER_NATIONALITY: "INSURANCE_HOLDER_NATIONALITY" as const, /** * Description: * * GANA Type: ResidentialAddress */ - INSURANCE_HOLDER_DOMICILE: "INSURANCE_HOLDER_DOMICILE", + INSURANCE_HOLDER_DOMICILE: "INSURANCE_HOLDER_DOMICILE" as const, /** * Description: * * GANA Type: CountryCode */ - INSURANCE_HOLDER_COUNTRY: "INSURANCE_HOLDER_COUNTRY", + INSURANCE_HOLDER_COUNTRY: "INSURANCE_HOLDER_COUNTRY" as const, /** * Description: The beneficial owners of the assets involved in the business relationship. * * GANA Type: String */ - INSURANCE_PAYER_FULL_NAME: "INSURANCE_PAYER_FULL_NAME", + INSURANCE_PAYER_FULL_NAME: "INSURANCE_PAYER_FULL_NAME" as const, /** * Description: * * GANA Type: AbsoluteDate */ - INSURANCE_PAYER_BIRTHDATE: "INSURANCE_PAYER_BIRTHDATE", + INSURANCE_PAYER_BIRTHDATE: "INSURANCE_PAYER_BIRTHDATE" as const, /** * Description: * * GANA Type: CountryCode */ - INSURANCE_PAYER_NATIONALITY: "INSURANCE_PAYER_NATIONALITY", + INSURANCE_PAYER_NATIONALITY: "INSURANCE_PAYER_NATIONALITY" as const, /** * Description: * * GANA Type: CountryCode */ - INSURANCE_PAYER_COUNTRY: "INSURANCE_PAYER_COUNTRY", + INSURANCE_PAYER_COUNTRY: "INSURANCE_PAYER_COUNTRY" as const, /** * Description: * * GANA Type: ResidentialAddress */ - INSURANCE_PAYER_DOMICILE: "INSURANCE_PAYER_DOMICILE", + INSURANCE_PAYER_DOMICILE: "INSURANCE_PAYER_DOMICILE" as const, /** * Description: Full legal name of an individual as in the national identity card. * * GANA Type: String */ - PERSON_FULL_NAME: "PERSON_FULL_NAME", + PERSON_FULL_NAME: "PERSON_FULL_NAME" as const, /** * Description: Last name of an individual as in the national identity card. * * GANA Type: String */ - PERSON_LAST_NAME: "PERSON_LAST_NAME", + PERSON_LAST_NAME: "PERSON_LAST_NAME" as const, /** * Description: Identification number or string of national identity card. * * GANA Type: String */ - PERSON_NATIONAL_ID: "PERSON_NATIONAL_ID", + PERSON_NATIONAL_ID: "PERSON_NATIONAL_ID" as const, /** * Description: Date of birth of an individual. Format is YYYY-MM-DD. * * GANA Type: AbsoluteDate */ - PERSON_DATE_OF_BIRTH: "PERSON_DATE_OF_BIRTH", + PERSON_DATE_OF_BIRTH: "PERSON_DATE_OF_BIRTH" as const, /** * Description: Scan of a recognized national identity card of an individual. * * GANA Type: File */ - PERSON_NATIONAL_ID_SCAN: "PERSON_NATIONAL_ID_SCAN", + PERSON_NATIONAL_ID_SCAN: "PERSON_NATIONAL_ID_SCAN" as const, /** * Description: Nationality of an individual. Format is 2-letter ISO country-code. * * GANA Type: CountryCode */ - PERSON_NATIONALITY: "PERSON_NATIONALITY", + PERSON_NATIONALITY: "PERSON_NATIONALITY" as const, /** * Description: Name of the company or business. * * GANA Type: String */ - BUSINESS_DISPLAY_NAME: "BUSINESS_DISPLAY_NAME", + BUSINESS_DISPLAY_NAME: "BUSINESS_DISPLAY_NAME" as const, /** * Description: Type of company form or business (limited liability company, general partnership, limited partnership, corporations, etc... ). * * GANA Type: String */ - BUSINESS_TYPE: "BUSINESS_TYPE", + BUSINESS_TYPE: "BUSINESS_TYPE" as const, /** * Description: Registration id on legal entity of the company or business. * * GANA Type: String */ - BUSINESS_REGISTRATION_ID: "BUSINESS_REGISTRATION_ID", + BUSINESS_REGISTRATION_ID: "BUSINESS_REGISTRATION_ID" as const, /** * Description: City or location where the company or business is registered. * * GANA Type: String */ - BUSINESS_LEGAL_JURISDICTION: "BUSINESS_LEGAL_JURISDICTION", + BUSINESS_LEGAL_JURISDICTION: "BUSINESS_LEGAL_JURISDICTION" as const, /** * Description: Registration founding date of the company or business. * * GANA Type: AbsoluteDate */ - BUSINESS_REGISTRATION_DATE: "BUSINESS_REGISTRATION_DATE", + BUSINESS_REGISTRATION_DATE: "BUSINESS_REGISTRATION_DATE" as const, /** * Description: True if the company or business is a non-profit. * * GANA Type: Boolean */ - BUSINESS_IS_NON_PROFIT: "BUSINESS_IS_NON_PROFIT", + BUSINESS_IS_NON_PROFIT: "BUSINESS_IS_NON_PROFIT" as const, /** * Description: Industry in which the company or business mainly operate. * * GANA Type: String */ - BUSINESS_INDUSTRY: "BUSINESS_INDUSTRY", + BUSINESS_INDUSTRY: "BUSINESS_INDUSTRY" as const, /** * Description: List of natural persons that are legal representatives or shareholders. * * GANA Type: GLS_BusinessRepresentative[] */ - BUSINESS_LEGAL_REPRESENTATIVES: "BUSINESS_LEGAL_REPRESENTATIVES", + BUSINESS_LEGAL_REPRESENTATIVES: "BUSINESS_LEGAL_REPRESENTATIVES" as const, /** * Description: * * GANA Type: String */ - GLS_REPRESENTATIVE_FULL_NAME: "GLS_REPRESENTATIVE_FULL_NAME", + GLS_REPRESENTATIVE_FULL_NAME: "GLS_REPRESENTATIVE_FULL_NAME" as const, /** * Description: * * GANA Type: String */ - GLS_REPRESENTATIVE_LAST_NAME: "GLS_REPRESENTATIVE_LAST_NAME", + GLS_REPRESENTATIVE_LAST_NAME: "GLS_REPRESENTATIVE_LAST_NAME" as const, /** * Description: * * GANA Type: String */ - GLS_REPRESENTATIVE_NATIONAL_ID: "GLS_REPRESENTATIVE_NATIONAL_ID", + GLS_REPRESENTATIVE_NATIONAL_ID: "GLS_REPRESENTATIVE_NATIONAL_ID" as const, /** * Description: * * GANA Type: AbsoluteDate */ - GLS_REPRESENTATIVE_DATE_OF_BIRTH: "GLS_REPRESENTATIVE_DATE_OF_BIRTH", + GLS_REPRESENTATIVE_DATE_OF_BIRTH: "GLS_REPRESENTATIVE_DATE_OF_BIRTH" as const, /** * Description: * * GANA Type: File */ - GLS_REPRESENTATIVE_NATIONAL_ID_SCAN: "GLS_REPRESENTATIVE_NATIONAL_ID_SCAN", + GLS_REPRESENTATIVE_NATIONAL_ID_SCAN: "GLS_REPRESENTATIVE_NATIONAL_ID_SCAN" as const, /** * Description: * * GANA Type: CountryCode */ - GLS_REPRESENTATIVE_NATIONALITY: "GLS_REPRESENTATIVE_NATIONALITY", + GLS_REPRESENTATIVE_NATIONALITY: "GLS_REPRESENTATIVE_NATIONALITY" as const, /** * Description: DNS domain name owned by the individual or business. * * GANA Type: Hostname */ - CONTACT_DNS_DOMAIN: "CONTACT_DNS_DOMAIN", + CONTACT_DNS_DOMAIN: "CONTACT_DNS_DOMAIN" as const, /** * Description: Web site owned by the individual or business. * * GANA Type: HttpHostnamePath */ - CONTACT_WEB_DOMAIN: "CONTACT_WEB_DOMAIN", + CONTACT_WEB_DOMAIN: "CONTACT_WEB_DOMAIN" as const, /** * Description: E-mail address to contact the individual or business. Can be validated via E-mail with TAN. * * GANA Type: Email */ - CONTACT_EMAIL: "CONTACT_EMAIL", + CONTACT_EMAIL: "CONTACT_EMAIL" as const, /** * Description: Phone number to contact the individual or business. Can be validated via SMS-TAN or phone call. * * GANA Type: Phone */ - CONTACT_PHONE: "CONTACT_PHONE", + CONTACT_PHONE: "CONTACT_PHONE" as const, /** * Description: Country where the individual or business resides. Format is 2-letter ISO country-code. * * GANA Type: CountryCode */ - ADDRESS_COUNTRY: "ADDRESS_COUNTRY", + ADDRESS_COUNTRY: "ADDRESS_COUNTRY" as const, /** * Description: Street address name of the individual or business. * * GANA Type: String */ - ADDRESS_STREET_NAME: "ADDRESS_STREET_NAME", + ADDRESS_STREET_NAME: "ADDRESS_STREET_NAME" as const, /** * Description: Street address number of the individual or business. * * GANA Type: String */ - ADDRESS_STREET_NUMBER: "ADDRESS_STREET_NUMBER", + ADDRESS_STREET_NUMBER: "ADDRESS_STREET_NUMBER" as const, /** * Description: Additional address information of the individual or business. * * GANA Type: String */ - ADDRESS_LINES: "ADDRESS_LINES", + ADDRESS_LINES: "ADDRESS_LINES" as const, /** * Description: Building name of the of the individual or business. * * GANA Type: String */ - ADDRESS_BUILDING_NAME: "ADDRESS_BUILDING_NAME", + ADDRESS_BUILDING_NAME: "ADDRESS_BUILDING_NAME" as const, /** * Description: Building number of the individual or business. * * GANA Type: String */ - ADDRESS_BUILDING_NUMBER: "ADDRESS_BUILDING_NUMBER", + ADDRESS_BUILDING_NUMBER: "ADDRESS_BUILDING_NUMBER" as const, /** * Description: Postal code of the city where the individual or business resides. * * GANA Type: String */ - ADDRESS_ZIPCODE: "ADDRESS_ZIPCODE", + ADDRESS_ZIPCODE: "ADDRESS_ZIPCODE" as const, /** * Description: Town location of the individual or business. * * GANA Type: String */ - ADDRESS_TOWN_LOCATION: "ADDRESS_TOWN_LOCATION", + ADDRESS_TOWN_LOCATION: "ADDRESS_TOWN_LOCATION" as const, /** * Description: Town district of the individual or business. * * GANA Type: String */ - ADDRESS_TOWN_DISTRICT: "ADDRESS_TOWN_DISTRICT", + ADDRESS_TOWN_DISTRICT: "ADDRESS_TOWN_DISTRICT" as const, /** * Description: Country subdivision of the individual or business. * * GANA Type: String */ - ADDRESS_COUNTRY_SUBDIVISION: "ADDRESS_COUNTRY_SUBDIVISION", + ADDRESS_COUNTRY_SUBDIVISION: "ADDRESS_COUNTRY_SUBDIVISION" as const, /** * Description: Country name of of the individual or business. * * GANA Type: CountryCode */ - TAX_COUNTRY: "TAX_COUNTRY", + TAX_COUNTRY: "TAX_COUNTRY" as const, /** * Description: Tax identifier of the individual or business. * * GANA Type: String */ - TAX_ID: "TAX_ID", + TAX_ID: "TAX_ID" as const, /** * Description: Is business founded or under USA law. * * GANA Type: Boolean */ - TAX_IS_USA_LAW: "TAX_IS_USA_LAW", + TAX_IS_USA_LAW: "TAX_IS_USA_LAW" as const, /** * Description: Is the individual or business economically active or passive. * * GANA Type: Boolean */ - TAX_IS_ACTIVE: "TAX_IS_ACTIVE", + TAX_IS_ACTIVE: "TAX_IS_ACTIVE" as const, /** * Description: Is the business entitled to deduct input tax. * * GANA Type: Boolean */ - TAX_IS_DEDUCTED: "TAX_IS_DEDUCTED", + TAX_IS_DEDUCTED: "TAX_IS_DEDUCTED" as const, /** * Description: Name of the version of the terms of service accepted by the customer. * * GANA Type: Boolean */ - ACCEPTED_TERMS_OF_SERVICE: "ACCEPTED_TERMS_OF_SERVICE", + ACCEPTED_TERMS_OF_SERVICE: "ACCEPTED_TERMS_OF_SERVICE" as const, /** * Description: Current note on the GWG file. * * GANA Type: String */ - FILE_NOTE: "FILE_NOTE", + FILE_NOTE: "FILE_NOTE" as const, /** * Description: Customer name or internal alias. * * GANA Type: String */ - CUSTOMER_LABEL: "CUSTOMER_LABEL", + CUSTOMER_LABEL: "CUSTOMER_LABEL" as const, /** * Description: Boolean flag indicating whether the account has been opened. The definition of opening an account is deployment-specific. * * GANA Type: Boolean */ - AML_ACCOUNT_OPEN: "AML_ACCOUNT_OPEN", + AML_ACCOUNT_OPEN: "AML_ACCOUNT_OPEN" as const, /** * Description: True if the customer is a domestic PEP. * * GANA Type: Boolean */ - AML_DOMESTIC_PEP: "AML_DOMESTIC_PEP", + AML_DOMESTIC_PEP: "AML_DOMESTIC_PEP" as const, /** * Description: True if the customer is a foreign PEP. * * GANA Type: Boolean */ - AML_FOREIGN_PEP: "AML_FOREIGN_PEP", + AML_FOREIGN_PEP: "AML_FOREIGN_PEP" as const, /** * Description: True if the customer is a international organization PEP. * * GANA Type: Boolean */ - AML_INTERNATIONAL_ORG_PEP: "AML_INTERNATIONAL_ORG_PEP", + AML_INTERNATIONAL_ORG_PEP: "AML_INTERNATIONAL_ORG_PEP" as const, /** * Description: True if the customer is a high-risk business. * * GANA Type: Boolean */ - AML_HIGH_RISK_BUSINESS: "AML_HIGH_RISK_BUSINESS", + AML_HIGH_RISK_BUSINESS: "AML_HIGH_RISK_BUSINESS" as const, /** * Description: True if the customer is associated with a high-risk country. * * GANA Type: Boolean */ - AML_HIGH_RISK_COUNTRY: "AML_HIGH_RISK_COUNTRY", + AML_HIGH_RISK_COUNTRY: "AML_HIGH_RISK_COUNTRY" as const, /** * Description: The MROS reporting state for the account. * * GANA Type: String */ - AML_MROS_STATE: "AML_MROS_STATE", + AML_MROS_STATE: "AML_MROS_STATE" as const, /** * Description: Name of the form completed by the user. * * GANA Type: String */ - FORM_ID: "FORM_ID", + FORM_ID: "FORM_ID" as const, /** * Description: Version of the form completed by the user. * * GANA Type: Number */ - FORM_VERSION: "FORM_VERSION", + FORM_VERSION: "FORM_VERSION" as const, /** * Description: High entropy value used in forms where hash is going to be stored in plain text. * * GANA Type: String */ - FORM_SALT: "FORM_SALT", + FORM_SALT: "FORM_SALT" as const, /** * Description: List of supplemental file attachments. * * GANA Type: List of records, usually the file upload and a description. */ - SUPPLEMENTAL_FILES_LIST: "SUPPLEMENTAL_FILES_LIST", + SUPPLEMENTAL_FILES_LIST: "SUPPLEMENTAL_FILES_LIST" as const, /** * Description: Generic note description * * GANA Type: String */ - NOTE_TEXT: "NOTE_TEXT", + NOTE_TEXT: "NOTE_TEXT" as const, } diff --git a/packages/web-util/src/forms/gana/GLS_Onboarding.ts b/packages/web-util/src/forms/gana/GLS_Onboarding.ts @@ -6,7 +6,7 @@ import { countryNameList, countryNationalityList, } from "../../utils/select-ui-lists.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function GLS_Onboarding( i18n: InternationalizationAPI, diff --git a/packages/web-util/src/forms/gana/VQF_902_11.ts b/packages/web-util/src/forms/gana/VQF_902_11.ts @@ -2,8 +2,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; - +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function VQF_902_11( i18n: InternationalizationAPI, ): DoubleColumnFormDesign { diff --git a/packages/web-util/src/forms/gana/VQF_902_14.ts b/packages/web-util/src/forms/gana/VQF_902_14.ts @@ -2,7 +2,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function VQF_902_14( i18n: InternationalizationAPI, diff --git a/packages/web-util/src/forms/gana/VQF_902_1_customer.ts b/packages/web-util/src/forms/gana/VQF_902_1_customer.ts @@ -20,7 +20,7 @@ import { UIFormElementConfig, } from "../../index.browser.js"; import { countryNationalityList } from "../../utils/select-ui-lists.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; const Descr = { CUSTOMER_INFO_TYPE: ( diff --git a/packages/web-util/src/forms/gana/VQF_902_1_officer.ts b/packages/web-util/src/forms/gana/VQF_902_1_officer.ts @@ -19,7 +19,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; /** * Design of the vqf_902_1_officer form. diff --git a/packages/web-util/src/forms/gana/VQF_902_4.ts b/packages/web-util/src/forms/gana/VQF_902_4.ts @@ -2,7 +2,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function VQF_902_4( i18n: InternationalizationAPI, diff --git a/packages/web-util/src/forms/gana/VQF_902_5.ts b/packages/web-util/src/forms/gana/VQF_902_5.ts @@ -2,7 +2,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function VQF_902_5( i18n: InternationalizationAPI, diff --git a/packages/web-util/src/forms/gana/VQF_902_9.ts b/packages/web-util/src/forms/gana/VQF_902_9.ts @@ -3,7 +3,7 @@ import { InternationalizationAPI, } from "../../index.browser.js"; import { countryNationalityList } from "../../utils/select-ui-lists.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; export function VQF_902_9( i18n: InternationalizationAPI, diff --git a/packages/web-util/src/forms/gana/generic_note.ts b/packages/web-util/src/forms/gana/generic_note.ts @@ -19,7 +19,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; /** * Design of the vqf_902_1_officer form. diff --git a/packages/web-util/src/forms/gana/generic_upload.ts b/packages/web-util/src/forms/gana/generic_upload.ts @@ -19,7 +19,7 @@ import { DoubleColumnFormDesign, InternationalizationAPI, } from "../../index.browser.js"; -import { TalerFormAttributes } from "./taler_form_attributes.js"; +import { TalerFormAttributes } from "@gnu-taler/taler-util"; /** * Design of the vqf_902_1_officer form. diff --git a/packages/web-util/src/forms/gana/taler_aml_properties.ts b/packages/web-util/src/forms/gana/taler_aml_properties.ts @@ -1,32 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2022-2025 Taler Systems S.A. - - GNU Taler is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -/** - * List of all known Taler AML properties, - * across dialects. - */ -export const TalerAmlProperties = { - AML_ACCOUNT_ACTIVE_DEPOSIT: "AML_ACCOUNT_ACTIVE_DEPOSIT", - AML_DOMESTIC_PEP: "AML_DOMESTIC_PEP", - AML_FOREIGN_PEP: "AML_FOREIGN_PEP", - AML_HIGH_RISK_BUSINESS: "AML_HIGH_RISK_BUSINESS", - AML_HIGH_RISK_COUNTRY: "AML_HIGH_RISK_COUNTRY", - AML_INVESTIGATION_ART6_COMPLETED: "AML_INVESTIGATION_ART6_COMPLETED", - AML_INVESTIGATION_ART6_FAILED: "AML_INVESTIGATION_ART6_FAILED", - AML_MROS_REPORTED_ART305: "AML_MROS_REPORTED_ART305", - AML_MROS_REPORTED_ART9: "AML_MROS_REPORTED_ART9", - AML_NO_OPERATION_DURING_PERIOD: "AML_NO_OPERATION_DURING_PERIOD", -}; diff --git a/packages/web-util/src/forms/index.ts b/packages/web-util/src/forms/index.ts @@ -20,8 +20,6 @@ export * from "./FormProvider.js"; export * from "./forms-types.js"; export * from "./forms-ui.js"; export * from "./gana/GLS_Onboarding.js"; -export * from "./gana/taler_aml_properties.js"; -export * from "./gana/taler_form_attributes.js"; export * from "./gana/VQF_902_11.js"; export * from "./gana/VQF_902_14.js"; export * from "./gana/VQF_902_1_customer.js";