import {z} from 'zod' export type IndividualName = {firstName: string, lastName: string, middleName?: string | undefined}; export type PhysicalAddressVerification = {address1: string, address2?: string | undefined, city: string, country: string, postalCode: string, subDivision: string}; export type RfiIndividualPersonalInfoLightAttestation = {type: 'individualPersonalInfoLight', name?: IndividualName | undefined, birthDate?: string | undefined, nationality?: string | undefined, phoneNumber?: string | undefined, residentialAddress?: PhysicalAddressVerification | undefined}; export type RfiIndividualPersonalInfoAttestation = {type: 'individualPersonalInfo', name?: IndividualName | undefined, birthDate?: string | undefined, nationality?: string | undefined, isPoliticallyExposed?: boolean | undefined}; export type RfiIndividualContactInfoAttestation = {type: 'individualContactInfo', email?: string | undefined, phoneNumber?: string | undefined}; export type RfiIndividualResidentialAddressAttestation = {type: 'individualResidentialAddress', address?: PhysicalAddressVerification | undefined}; export type RfiIndividualIdentityDocumentAttestation = {type: 'individualIdentityDocument', governmentId?: ({countryCode: string, passportDocumentId: string, passportNumber: string, type: 'passport'} | {countryCode: string, driverLicenseBackDocumentId: string, driverLicenseFrontDocumentId: string, driverLicenseNumber: string, type: 'driverLicense'} | {cnhBackDocumentId?: string | undefined, cnhFrontDocumentId: string, cnhNumber: string, type: 'cnh'} | {countryCode: string, nationalIdBackDocumentId: string, nationalIdFrontDocumentId: string, nationalIdNumber: string, type: 'nationalId'} | {countryCode: string, stateIdBackDocumentId: string, stateIdFrontDocumentId: string, stateIdNumber: string, type: 'stateId'} | {countryCode: string, passportCardBackDocumentId: string, passportCardFrontDocumentId: string, passportCardNumber: string, type: 'passportCard'} | {countryCode: string, permanentResidenceCardBackDocumentId: string, permanentResidenceCardFrontDocumentId: string, permanentResidenceCardNumber: string, type: 'permanentResidenceCard'} | {countryCode: string, type: 'visa', visaBackDocumentId: string, visaFrontDocumentId: string, visaNumber: string} | {countryCode: string, residencePermitBackDocumentId: string, residencePermitFrontDocumentId: string, residencePermitNumber: string, type: 'residencePermit'} | {citizenshipCertificateDocumentId: string, citizenshipCertificateNumber: string, countryCode: string, type: 'citizenshipCertificate'} | {consularIdBackDocumentId: string, consularIdFrontDocumentId: string, consularIdNumber: string, countryCode: string, type: 'consularId'} | {countryCode: string, foreignIdBackDocumentId: string, foreignIdFrontDocumentId: string, foreignIdNumber: string, type: 'foreignId'} | {countryCode: string, healthInsuranceCardBackDocumentId: string, healthInsuranceCardFrontDocumentId: string, healthInsuranceCardNumber: string, type: 'healthInsuranceCard'} | {countryCode: string, internalPassportDocumentId: string, internalPassportNumber: string, type: 'internalPassport'} | {countryCode: string, keypassIdBackDocumentId: string, keypassIdFrontDocumentId: string, keypassIdNumber: string, type: 'keypassId'} | {countryCode: string, longTermPassBackDocumentId: string, longTermPassFrontDocumentId: string, longTermPassNumber: string, type: 'longTermPass'} | {countryCode: string, municipalIdBackDocumentId: string, municipalIdFrontDocumentId: string, municipalIdNumber: string, type: 'municipalId'} | {countryCode: string, myNumberCardBackDocumentId: string, myNumberCardFrontDocumentId: string, myNumberCardNumber: string, type: 'myNumberCard'} | {countryCode: string, nbiClearanceDocumentId: string, nbiClearanceNumber: string, type: 'nbiClearance'} | {countryCode: string, ofwIdBackDocumentId: string, ofwIdFrontDocumentId: string, ofwIdNumber: string, type: 'ofwId'} | {countryCode: string, panCardDocumentId: string, panCardNumber: string, type: 'panCard'} | {countryCode: string, postalIdBackDocumentId: string, postalIdFrontDocumentId: string, postalIdNumber: string, type: 'postalId'} | {countryCode: string, sssIdBackDocumentId: string, sssIdFrontDocumentId: string, sssIdNumber: string, type: 'sssId'} | {countryCode: string, travelDocumentDocumentId: string, travelDocumentNumber: string, type: 'travelDocument'} | {countryCode: string, tribalIdBackDocumentId: string, tribalIdFrontDocumentId: string, tribalIdNumber: string, type: 'tribalId'} | {countryCode: string, type: 'umid', umidBackDocumentId: string, umidFrontDocumentId: string, umidNumber: string} | {countryCode: string, type: 'voterId', voterIdBackDocumentId: string, voterIdFrontDocumentId: string, voterIdNumber: string} | {countryCode: string, type: 'workPermit', workPermitBackDocumentId: string, workPermitFrontDocumentId: string, workPermitNumber: string}) | undefined}; export type RfiIndividualFinancialInfoAttestation = {type: 'individualFinancialInfo', sourceOfFunds?: ('COMPANY_FUNDS' | 'ECOMMERCE_RESELLER' | 'GAMBLING_PROCEEDS' | 'GIFTS' | 'GOVERNMENT_BENEFITS_TAX_REFUNDS' | 'INHERITANCE' | 'INVESTMENTS_LOANS' | 'PENSION_RETIREMENT' | 'SALARY' | 'SALE_OF_ASSETS_REAL_ESTATE' | 'SAVINGS' | 'SOMEONE_ELSES_FUNDS') | undefined, employmentStatus?: ('EMPLOYED' | 'HOMEMAKER' | 'RETIRED' | 'SELF_EMPLOYED' | 'STUDENT' | 'UNEMPLOYED') | undefined, employer?: string | undefined, latestOccupation?: ('ACCOMMODATION_AND_FOOD_SERVICE_MANAGER' | 'ACCOUNTANT' | 'ACCOUNTING_ASSOCIATE_PROFESSIONAL' | 'ACCOUNTING_BOOKKEEPING_AND_ESTIMATING_CLERK' | 'ACTOR' | 'ACTUARIES_MATHEMATICIAN_AND_STATISTICIAN' | 'ADMINISTRATIVE_AND_SPECIALIZED_SECRETARY' | 'ADMINISTRATIVE_SERVICES_MANAGER' | 'ADVERTISING_AND_PUBLIC_RELATIONS_MANAGER' | 'AEROSPACE_ENGINEER' | 'AGED_CARE_WORKER' | 'AGRICULTURAL_AND_INDUSTRIAL_MACHINERY_MECHANIC_AND_REPAIRER' | 'AGRICULTURAL_ENGINEER' | 'AGRICULTURAL_FORESTRY_AND_FISHERY_LABOURER' | 'AGRICULTURAL_FORESTRY_AND_FISHERY_PRODUCTS_OPERATOR' | 'AGRICULTURAL_OR_INDUSTRIAL_MACHINERY_ASSEMBLER' | 'AIRCRAFT_ENGINE_MECHANIC_AND_REPAIRER' | 'AIRCRAFT_PILOT_AND_RELATED_ASSOCIATE_PROFESSIONAL' | 'AIR_TRAFFIC_CONTROLLER' | 'AIR_TRAFFIC_SAFETY_ELECTRONICS_TECHNICIAN' | 'AQUACULTURE_WORKER' | 'ARCHITECT' | 'ARCHIVIST_AND_CURATOR' | 'ARMED_FORCES_OCCUPATION' | 'ART_DIRECTOR_AND_MEDIA_PRODUCER' | 'ASSEMBLER' | 'ASTRONOMERS_METEOROLOGIST_AND_GEOPHYSICIST' | 'ATHLETE_AND_SPORTS_PLAYER' | 'ATTENDANTS_PERSONAL_SERVICES_WORKER_AND_TRAVEL_GUIDE' | 'AUTHOR_AND_RELATED_WRITER' | 'AUTOMOTIVE_AND_SURFACE_CLEANING_WORKER' | 'AVIATION_SERVICE_WORKER' | 'BAKERS_PASTRY_COOK_AND_CONFECTIONERY_MAKER' | 'BANK_TELLER_AND_RELATED_CLERK' | 'BEVERAGE_PROCESSING_AND_RELATED_WORKER' | 'BIOLOGICAL_SCIENTIST' | 'BIOMEDICAL_ENGINEER' | 'BLACKSMITHS_HAMMERSMITH_AND_FORGING_PRESS_WORKER' | 'BOOKMAKERS_CROUPIER_AND_RELATED_GAMING_WORKER' | 'BRANCH_MANAGER' | 'BRICKLAYER_AND_RELATED_WORKER' | 'BROADCASTING_AND_AUDIO_VISUAL_TECHNICIAN' | 'BUILDING_AND_HOUSEKEEPING_SUPERVISOR' | 'BUILDING_AND_RELATED_ELECTRICIAN' | 'BUILDING_CARETAKER' | 'BUILDING_FRAME_AND_RELATED_TRADES_WORKER' | 'BUILDING_INSULATION_WORKER' | 'BUILDING_STRUCTURE_CLEANER' | 'BUSINESS_PROFESSIONAL' | 'BUSINESS_SERVICES_AGENT' | 'BUS_AND_TRAM_DRIVER' | 'BUTCHERS_FISHMONGER_AND_RELATED_FOOD_PREPARER' | 'CARPENTER_AND_JOINER' | 'CARPET_FLOOR_AND_WALL_TILER' | 'CAR_VAN_AND_MOTORCYCLE_DRIVER' | 'CASHIER_AND_TICKET_CLERK' | 'CHEMICAL_AND_PHYSICAL_SCIENCE_TECHNICIAN' | 'CHEMICAL_ENGINEER' | 'CHEMICAL_PROCESSING_PLANT_CONTROLLER' | 'CHEMIST' | 'CHIEF_EXECUTIVE_AND_MANAGING_DIRECTOR' | 'CHILD_CARE_WORKER_AND_TEACHERS_AIDE' | 'CHIMNEY_SWEEP_AND_RELATED_WORKER' | 'CIVIL_ENGINEERING_TECHNICIAN' | 'CIVIL_ENGINEER' | 'CLEANER_AND_HELPER' | 'CLINICAL_AND_DIAGNOSTIC_LABORATORY_TECHNICIAN' | 'COOK' | 'CREDIT_AND_LOANS_OFFICER' | 'CROP_FARMER' | 'DAIRY_AND_MILK_PRODUCTS_MACHINE_OPERATOR' | 'DANCER_AND_CHOREOGRAPHER' | 'DATABASE_AND_NETWORK_PROFESSIONAL' | 'DATA_ENTRY_CLERK' | 'DEBT_COLLECTOR_AND_RELATED_WORKER' | 'DECORATOR_AND_COMMERCIAL_DESIGNER' | 'DENTIST' | 'DESIGNER' | 'DIETITIAN_AND_NUTRITIONIST' | 'DIRECTOR_AND_PRODUCER' | 'DOMESTIC_CLEANER_AND_HELPER' | 'DOORKEEPER_AND_RELATED_WORKER' | 'DRAFTER' | 'DRIVING_INSTRUCTOR' | 'ECONOMICS_PROFESSOR' | 'ECONOMIST' | 'EDUCATION_MANAGER' | 'EDUCATION_METHODS_SPECIALIST' | 'ELECTROMECHANICAL_EQUIPMENT_ASSEMBLER' | 'ELECTRONICS_ENGINEER' | 'ELECTRONIC_ENGINEERING_TECHNICIAN' | 'ELECTRONIC_EQUIPMENT_INSTALLER_AND_REPAIRER' | 'ELEMENTARY_SCHOOL_TEACHER' | 'EMBEDDED_SYSTEMS_ENGINEER' | 'EMPLOYMENT_SERVICES_MANAGER' | 'ENGINEERING_PROFESSIONAL' | 'ENVIRONMENTAL_AND_OCCUPATIONAL_HEALTH_INSPECTOR' | 'ENVIRONMENTAL_ENGINEER' | 'ENVIRONMENTAL_PROTECTION_PROFESSIONAL' | 'EVENT_PLANNER' | 'EXCAVATING_AND_EARTHMOVING_EQUIPMENT_OPERATOR' | 'FARM_EQUIPMENT_MECHANIC' | 'FASHION_AND_OTHER_MODEL' | 'FIBRE_PREPARING_SPINNING_AND_WINDING_MACHINE_OPERATOR' | 'FILM_STAGE_AND_RELATED_DIRECTOR_AND_PRODUCER' | 'FINANCE_MANAGER' | 'FINANCIAL_ANALYST' | 'FINANCIAL_AND_INSURANCE_SERVICES_BRANCH_MANAGER' | 'FINANCIAL_SERVICES_MANAGER' | 'FIRE_FIGHTER' | 'FISHERY_WORKERS_HUNTER_AND_TRAPPER' | 'FITNESS_AND_RECREATION_INSTRUCTOR_AND_PROGRAM_LEADER' | 'FLIGHT_ATTENDANT_AND_TRAVEL_STEWARD' | 'FLOOR_LAYER_AND_TILE_SETTER' | 'FLORIST' | 'FOOD_AND_RELATED_PRODUCTS_MACHINE_OPERATOR' | 'FOOD_PREPARATION_ASSISTANT' | 'FOOD_PROCESSING_AND_RELATED_TRADES_WORKER' | 'FOOD_SERVICE_MANAGER' | 'FORESTRY_AND_RELATED_WORKER' | 'FORESTRY_TECHNICIAN' | 'FREIGHT_HANDLER' | 'FUNERAL_DIRECTOR_AND_EMBALMER' | 'FURNITURE_FINISHER_AND_RELATED_WORKER' | 'FUR_AND_LEATHER_PREPARING_MACHINE_OPERATOR' | 'GARMENT_AND_RELATED_TRADES_WORKER' | 'GAS_AND_WATER_OPERATIONS_ENGINEER' | 'GENERAL_OFFICE_CLERK' | 'GEOLOGIST_AND_GEOPHYSICIST' | 'GLASS_MAKERS_CUTTERS_GRINDER_AND_FINISHER' | 'GLAZIER' | 'GRAIN_MILLER_AND_RELATED_WORKER' | 'GRAPHIC_AND_MULTIMEDIA_DESIGNER' | 'HAIRDRESSER' | 'HANDICRAFT_WORKER' | 'HAND_LAUNDERER_AND_PRESSER' | 'HAND_PACKER' | 'HEALTH_ASSOCIATE_PROFESSIONAL' | 'HEALTH_CARE_ASSISTANT' | 'HEALTH_PROFESSIONAL' | 'HEALTH_SERVICES_MANAGER' | 'HEAVY_TRUCK_AND_LORRY_DRIVER' | 'HIGH_SCHOOL_TEACHER' | 'HOME_BASED_PERSONAL_CARE_WORKER' | 'HOSPITALITY_RETAIL_AND_OTHER_SERVICES_MANAGER' | 'HOSPITAL_ORDERLY' | 'HOTEL_AND_RESTAURANT_MANAGER' | 'HOTEL_RECEPTIONIST' | 'HOUSEKEEPER_AND_RELATED_WORKER' | 'HUMAN_RESOURCES_SPECIALIST' | 'HUMAN_RESOURCE_MANAGER' | 'ICT_OPERATION_AND_USER_SUPPORT_TECHNICIAN' | 'ICT_OPERATIONS_TECHNICIAN' | 'ICT_SERVICE_MANAGER' | 'ICT_USER_SUPPORT_TECHNICIAN' | 'ILLUSTRATOR_AND_GRAPHIC_DESIGNER' | 'IMAGE_AND_SOUND_RECORDING_EQUIPMENT_OPERATOR' | 'INCINERATOR_AND_WATER_TREATMENT_PLANT_OPERATOR' | 'INDUSTRIAL_AND_PRODUCTION_ENGINEER' | 'INFORMATION_AND_COMMUNICATIONS_TECHNOLOGY_SERVICE_MANAGER' | 'INFORMATION_CLERK' | 'INFORMATION_SERVICES_MANAGER' | 'INSURANCE_REPRESENTATIVE' | 'INTERIOR_DESIGNER_AND_DECORATOR' | 'JEWELLERY_AND_PRECIOUS_METAL_WORKER' | 'JUDGE' | 'KEYBOARD_OPERATOR' | 'KITCHEN_HELPER' | 'LAUNDRY_MACHINE_OPERATOR' | 'LAWYER' | 'LEGAL_PROFESSIONAL' | 'LEGAL_SECRETARY' | 'LEGISLATOR_AND_SENIOR_OFFICIAL' | 'LIBRARIAN_AND_RELATED_INFORMATION_PROFESSIONAL' | 'LIBRARY_CLERK' | 'LIFE_SCIENCE_TECHNICIAN' | 'LIVESTOCK_AND_DAIRY_PRODUCER' | 'LIVESTOCK_FARMER' | 'LODGING_HOUSEKEEPING_AND_RESTAURANT_SERVICES_WORKER' | 'LOGGING_AND_FORESTRY_LABOURER' | 'LOGISTICIAN_AND_RELATED_PROFESSIONAL' | 'MACHINE_TOOL_OPERATOR' | 'MAIL_CARRIER_AND_SORTING_CLERK' | 'MANAGEMENT_AND_ORGANIZATION_ANALYST' | 'MANAGING_DIRECTOR_AND_CHIEF_EXECUTIVE' | 'MANUFACTURING_LABOURER' | 'MANUFACTURING_MANAGER' | 'MARKETING_AND_SALES_MANAGER' | 'MARKETING_PROFESSIONAL' | 'MARKET_GARDENER_AND_CROP_GROWER' | 'MARKET_ORIENTED_ANIMAL_PRODUCER' | 'MARKET_ORIENTED_SKILLED_AGRICULTURAL_WORKER' | 'MATHEMATICIANS_ACTUARY_AND_STATISTICIAN' | 'MEAT_FISH_AND_RELATED_FOOD_PREPARER' | 'MECHANICAL_ENGINEERING_TECHNICIAN' | 'MECHANICAL_ENGINEER' | 'MECHANICAL_MACHINERY_ASSEMBLER' | 'MEDICAL_AND_DENTAL_PROSTHETIC_TECHNICIAN' | 'MEDICAL_AND_PHARMACEUTICAL_SALES_REPRESENTATIVE' | 'MEDICAL_DIAGNOSTIC_AND_TREATMENT_TECHNICIAN' | 'MEDICAL_DOCTOR' | 'MEDICAL_EQUIPMENT_TECHNICIAN' | 'MEDICAL_IMAGING_AND_THERAPEUTIC_EQUIPMENT_TECHNICIAN' | 'MEDICAL_LABORATORY_TECHNICIAN' | 'MEDICAL_RECORD_AND_HEALTH_INFORMATION_TECHNICIAN' | 'METAL_FINISHING_PLATING_AND_COATING_MACHINE_OPERATOR' | 'METAL_PROCESSING_PLANT_OPERATOR' | 'METAL_WORKING_MACHINE_TOOL_SETTER_AND_OPERATOR' | 'METEOROLOGIST' | 'MIDWIFERY_AND_NURSING_PROFESSIONAL' | 'MIDWIFERY_ASSOCIATE_PROFESSIONAL' | 'MIDWIFE' | 'MINERAL_AND_STONE_PROCESSING_PLANT_OPERATOR' | 'MINING_AND_CONSTRUCTION_LABOURER' | 'MINING_AND_METALLURGICAL_PROCESS_CONTROLLER' | 'MINING_CONSTRUCTION_AND_MANUFACTURING_SUPERVISOR' | 'MINING_ENGINEERS_METALLURGIST_AND_RELATED_PROFESSIONAL' | 'MIXED_CROP_AND_LIVESTOCK_FARMER' | 'MOBILE_PLANT_OPERATOR' | 'MOTOR_VEHICLE_MECHANIC_AND_REPAIRER' | 'MOTOR_VEHICLE_WINDOW_CLEANER_AND_RELATED_WORKER' | 'MUSICIANS_SINGER_AND_COMPOSER' | 'NUMERICAL_CLERK' | 'NURSING_AND_MIDWIFERY_ASSOCIATE_PROFESSIONAL' | 'NURSING_PROFESSIONAL' | 'OCCUPATIONAL_HEALTH_AND_SAFETY_PROFESSIONAL' | 'OFFICE_CLERK' | 'OFFICE_MANAGER' | 'OFFICE_SUPERVISOR' | 'OPTICAL_AND_ELECTRONIC_EQUIPMENT_OPERATOR' | 'PAINTERS_BUILDING_STRUCTURE_CLEANER_AND_RELATED_TRADES_WORKER' | 'PARAMEDICAL_PRACTITIONER' | 'PAYROLL_CLERK' | 'PERSONAL_CARE_WORKER' | 'PERSONAL_CARE_WORKERS_IN_HEALTH_SERVICE' | 'PERSONAL_SERVICES_WORKER' | 'PERSONNEL_CLERK' | 'PEST_CONTROLLER_AND_FUMIGATOR' | 'PETROLEUM_AND_NATURAL_GAS_REFINING_PLANT_OPERATOR' | 'PHARMACEUTICAL_TECHNICIAN_AND_ASSISTANT' | 'PHARMACIST' | 'PHILOSOPHY_AND_RELIGION_PROFESSIONAL' | 'PHOTOGRAPHER' | 'PHYSICAL_AND_EARTH_SCIENCE_TECHNICIAN' | 'PHYSICAL_AND_ENGINEERING_SCIENCE_TECHNICIAN' | 'PHYSICIST_AND_CHEMIST' | 'PHYSIOTHERAPIST' | 'PLANER_AND_MACHINE_TOOL_SETTER' | 'PLASTERER' | 'PLUMBER_AND_PIPE_FITTER' | 'POLICE_INSPECTOR_AND_DETECTIVE' | 'POLICE_OFFICER' | 'POLICY_ADMINISTRATION_PROFESSIONAL' | 'POLICY_AND_PLANNING_MANAGER' | 'POSTAL_MAIL_CARRIER' | 'POWER_PRODUCTION_PLANT_OPERATOR' | 'PRECIOUS_METALS_WORKER' | 'PRECISION_INSTRUMENT_MAKER_AND_REPAIRER' | 'PRECISION_WORKERS_IN_METAL_AND_RELATED_MATERIAL' | 'PRE_PRIMARY_SCHOOL_TEACHER' | 'PRINTING_AND_RELATED_TRADES_WORKER' | 'PRISON_GUARD' | 'PROCESS_CONTROL_TECHNICIAN' | 'PRODUCTION_CLERK' | 'PRODUCTION_MANAGER' | 'PRODUCT_AND_GARMENT_DESIGNER' | 'PRODUCT_GRADER_AND_TESTER' | 'PRODUCT_LABELLER' | 'PROFESSIONAL_SERVICES_MANAGER' | 'PROGRAMMER' | 'PROGRAM_ANALYST' | 'PROPERTY_MANAGER' | 'PROTECTIVE_SERVICES_WORKER' | 'PSYCHOLOGIST' | 'PUBLIC_RELATIONS_PROFESSIONAL' | 'PULP_AND_PAPERMAKING_PLANT_OPERATOR' | 'QUALITY_INSPECTOR' | 'RADIO_AND_TELEVISION_ANNOUNCER' | 'RAILWAY_BRAKE_SIGNAL_AND_SWITCH_OPERATOR' | 'RAIL_AND_MOTOR_VEHICLE_DRIVER' | 'REAL_ESTATE_AGENT_AND_PROPERTY_MANAGER' | 'RECEPTIONIST' | 'RECYCLE_WORKER' | 'REFUSE_WORKER_AND_OTHER_ELEMENTARY_WORKER' | 'RELIGIOUS_ASSOCIATE_PROFESSIONAL' | 'RELIGIOUS_PROFESSIONAL' | 'RESEARCH_AND_DEVELOPMENT_MANAGER' | 'RESTAURANT_MANAGER' | 'RETAIL_AND_WHOLESALE_BUYER' | 'RETAIL_AND_WHOLESALE_TRADE_MANAGER' | 'RIGGER_AND_CABLE_SPLICER' | 'ROOFER' | 'RUBBER_AND_PLASTIC_PRODUCTS_MACHINE_OPERATOR' | 'SALES_AND_MARKETING_MANAGER' | 'SALES_AND_PURCHASING_AGENT_AND_BROKER' | 'SALES_DEMONSTRATOR' | 'SALES_MARKETING_AND_PUBLIC_RELATIONS_PROFESSIONAL' | 'SALES_PROFESSIONAL' | 'SALES_WORKER' | 'SAWMILL_SAWYER_AND_WOOD_TREATER' | 'SCIENCE_AND_ENGINEERING_ASSOCIATE_PROFESSIONAL' | 'SCIENCE_ENGINEERING_AND_ICT_SALES_PROFESSIONAL' | 'SCIENCE_PROFESSIONAL' | 'SECRETARY' | 'SECURITIES_AND_FINANCE_DEALER_AND_BROKER' | 'SECURITY_GUARD' | 'SENIOR_GOVERNMENT_OFFICIAL' | 'SERVICE_AND_SALES_WORKER' | 'SEWING_EMBROIDERY_AND_RELATED_WORKER' | 'SHEET_METAL_WORKER' | 'SHELF_FILLER' | 'SHIP_AND_AIRCRAFT_CONTROLLER_AND_TECHNICIAN' | 'SHIP_DECK_CREW_AND_RELATED_WORKER' | 'SHIP_DECK_OFFICER_AND_PILOT' | 'SHIP_ENGINEER' | 'SHOE_MAKER_AND_RELATED_WORKER' | 'SHOP_SALESPERSON' | 'SHOP_SALES_ASSISTANT' | 'SKILLED_AGRICULTURAL_FORESTRY_AND_FISHERY_WORKER' | 'SOCIAL_AND_RELIGIOUS_PROFESSIONAL' | 'SOCIAL_WORKER' | 'SOCIAL_WORK_AND_COUNSELLING_PROFESSIONAL' | 'SOCIOLOGISTS_ANTHROPOLOGIST_AND_RELATED_PROFESSIONAL' | 'SOFTWARE_AND_APPLICATIONS_DEVELOPER_AND_ANALYST' | 'SOFTWARE_DEVELOPER' | 'SPECIAL_EDUCATION_TEACHER' | 'SPEECH_THERAPIST' | 'SPORTS_AND_FITNESS_WORKER' | 'SPORTS_COACHES_INSTRUCTOR_AND_OFFICIAL' | 'STATIONARY_PLANT_AND_MACHINE_OPERATOR' | 'STEEL_STRUCTURAL_AND_RELATED_TRADES_WORKER' | 'STOCKMAN' | 'STOCK_CLERK' | 'STONEMASONS_STONE_CUTTERS_SPLITTER_AND_CARVER' | 'STONE_CUTTERS_CARVER_AND_FINISHER' | 'STREET_AND_MARKET_SALESPERSON' | 'STREET_SERVICES_WORKER' | 'STREET_VENDOR' | 'STRUCTURAL_METAL_PREPARER_AND_ERECTOR' | 'SUBSISTENCE_CROP_FARMER' | 'SUBSISTENCE_FARMERS_FISHERS_HUNTER_AND_GATHERER' | 'SUBSISTENCE_FISHERS_HUNTERS_TRAPPER_AND_GATHERER' | 'SUBSISTENCE_LIVESTOCK_FARMER' | 'SUPPLY_AND_DISTRIBUTION_MANAGER' | 'SUPPLY_DISTRIBUTION_AND_RELATED_MANAGER' | 'SURGEON' | 'SURVEYOR' | 'SWITCHBOARD_OPERATOR' | 'SYSTEMS_ADMINISTRATOR' | 'TAILORS_DRESSMAKERS_FURRIER_AND_HATTER' | 'TANNER_AND_FELLMONGER' | 'TAX_AND_RELATED_GOVERNMENT_ASSOCIATE_PROFESSIONAL' | 'TECHNICAL_AND_MEDICAL_SALES_PROFESSIONAL' | 'TELECOMMUNICATION_AND_BROADCASTING_TECHNICIAN' | 'TELECOMMUNICATIONS_ENGINEER' | 'TELEPHONE_SALESPERSON' | 'TELEPHONE_SWITCHBOARD_OPERATOR' | 'TERTIARY_EDUCATION_TEACHER' | 'TEXTILE_LEATHER_AND_RELATED_TRADES_WORKER' | 'TOBACCO_PREPARER_AND_TOBACCO_PRODUCTS_MAKER' | 'TOOL_MAKER_AND_RELATED_WORKER' | 'TOWN_AND_TRAFFIC_PLANNER' | 'TRADE_BROKER' | 'TRADITIONAL_AND_COMPLEMENTARY_MEDICINE_PROFESSIONAL' | 'TRAINING_AND_STAFF_DEVELOPMENT_PROFESSIONAL' | 'TRANSPORT_AND_STORAGE_LABOURER' | 'TRANSPORT_CLERK' | 'TRANSPORT_CONDUCTOR' | 'TRAVEL_ATTENDANT_AND_TRAVEL_STEWARD' | 'TRAVEL_CONSULTANT_AND_CLERK' | 'TRAVEL_GUIDE' | 'TYPIST_AND_WORD_PROCESSING_OPERATOR' | 'UNIVERSITY_AND_HIGHER_EDUCATION_TEACHER' | 'UPHOLSTERER_AND_RELATED_WORKER' | 'VEHICLE_WINDOW_CLEANER' | 'VETERINARIAN' | 'VETERINARY_TECHNICIAN_AND_ASSISTANT' | 'VISUAL_ARTIST' | 'VOCATIONAL_EDUCATION_TEACHER' | 'WAITER' | 'WATCH_AND_CLOCK_MAKER_AND_REPAIRER' | 'WEAVING_AND_KNITTING_MACHINE_OPERATOR' | 'WEB_AND_MULTIMEDIA_DEVELOPER' | 'WEB_DEVELOPER' | 'WEB_TECHNICIAN' | 'WELDER_AND_FLAME_CUTTER' | 'WELL_DRILLER_AND_BORER_AND_RELATED_WORKER' | 'WOOD_PROCESSING_AND_PAPERMAKING_PLANT_OPERATOR' | 'WOOD_TREATER' | 'WOOD_WORKING_MACHINE_TOOL_SETTER_AND_OPERATOR' | 'WRITER_AND_CREATIVE_OR_PERFORMING_ARTIST' | 'YOUTH_AND_COMMUNITY_WORKER') | undefined, primaryAccountPurpose?: ('CHARITABLE_DONATIONS' | 'ECOMMERCE_RETAIL_PAYMENTS' | 'INVESTMENT_PURPOSES' | 'OPERATING_A_COMPANY' | 'PAYMENTS_TO_FROM_FRIENDS_OR_FAMILY_ABROAD' | 'PERSONAL_OR_LIVING_EXPENSES' | 'PROTECT_WEALTH' | 'PURCHASE_GOODS_AND_SERVICES' | 'RECEIVE_PAYMENTS_FOR_FREELANCING' | 'RECEIVE_SALARY') | undefined, monthlyUsdVolume?: ('0-4999' | '5000-9999' | '10000-49999' | '50000+') | undefined, isTransactingOnBehalfOfOthers?: boolean | undefined, transactionCurrencies?: (Array<'ARS' | 'BOB' | 'BRL' | 'CLP' | 'COP' | 'CRC' | 'EUR' | 'MXN' | 'PEN' | 'USD' | 'ZAR'>) | undefined}; export type RfiIndividualTaxInfoAttestation = {type: 'individualTaxInfo', taxIdentificationNumber?: string | undefined, taxIdentificationNumberType?: ('SSN' | 'ITIN' | 'CPF' | 'CURP' | 'CUIL' | 'NINO' | 'INE' | 'RFC' | 'NIF' | 'STEUER_ID' | 'TCKN' | 'TIN' | 'PAN' | 'ADOAZ' | 'AHV' | 'AOM' | 'BSN' | 'BVN' | 'CDI' | 'CNP' | 'CPR' | 'EGN' | 'EMIRATES_ID' | 'EMSO' | 'FIN' | 'FN' | 'FODSELSNR' | 'HETU' | 'HKID' | 'IDNP' | 'IIN' | 'IK' | 'ITR' | 'JMBG' | 'MN' | 'NIN' | 'NRIC' | 'NRN' | 'PERSONNUMMER' | 'PESEL' | 'PIN' | 'PINFL' | 'PPSN' | 'RICN' | 'RNOKPP' | 'RODNE_CISLO' | 'RP' | 'RRN' | 'SI' | 'SIN' | 'SPI' | 'TFN' | 'UCN' | 'UTR' | 'BIR' | 'BIN' | 'BP' | 'CF' | 'CN' | 'CRIB' | 'CUI' | 'CUIT' | 'ID' | 'ID_BROJ' | 'IDNO' | 'IF' | 'INN' | 'IRD' | 'MATRICULE' | 'MST' | 'NIT' | 'NPWP' | 'NRT' | 'NTN' | 'OIB' | 'PIB' | 'RC' | 'RIF' | 'RN' | 'RTN' | 'RUC' | 'RUT' | 'TRN' | 'UNP' | 'USC' | 'VAT' | 'VOEN') | undefined}; export type RfiIndividualEEAInfoAttestation = {type: 'individualEeaInfo', placeOfBirthCountry?: string | undefined, placeOfBirthCity?: string | undefined}; export type ProofOfAddressDocumentReference = {documentType: 'BANK_STATEMENT' | 'GOVERNMENT_ISSUED_LETTER' | 'UTILITY_BILL', documentId: string}; export type RfiIndividualProofOfAddressAttestation = {type: 'individualProofOfAddress', proofOfAddressDocuments?: Array | undefined}; export type SourceOfFundsDocumentReference = {documentType: 'CRYPTO_DIGITAL_ASSETS' | 'EMPLOYMENT_INCOME' | 'INHERITANCE_GIFT' | 'INVESTMENTS_DIVIDENDS' | 'LOANS_CREDIT_FACILITIES' | 'OTHER_VERIFIED_SOURCES' | 'PENSION_SOCIAL_BENEFITS' | 'SALE_OF_ASSETS' | 'SAVINGS_ACCUMULATED_FUNDS' | 'SELF_EMPLOYMENT_BUSINESS_INCOME', documentId: string}; export type RfiIndividualSourceOfFundsAttestation = {type: 'individualSourceOfFunds', sourceOfFundsDocuments?: Array | undefined}; export type RfiIndividualSelfiePhotoAttestation = {type: 'individualSelfiePhoto', documentId?: string | undefined}; export type RfiBusinessIdentificationAttestation = {type: 'businessIdentification', businessName?: string | undefined, registrationNumber?: string | undefined, dbaName?: string | undefined}; export type RfiBusinessTaxInfoAttestation = {type: 'businessTaxInfo', taxIdentificationNumber?: string | undefined, taxIdentificationNumberType?: ('EIN' | 'CNPJ' | 'CUIT' | 'RFC' | 'NIT' | 'RUC' | 'SIRET' | 'SIREN' | 'CRN' | 'KBO' | 'KVK' | 'PARTITA_IVA' | 'VAT' | 'NIF' | 'GSTIN' | 'ABN' | 'ACN' | 'ADOSZAM' | 'ARBN' | 'BCE' | 'BIN_BD' | 'BIN_KZ' | 'BN' | 'BRN' | 'CEDULA_JURIDICA' | 'CIN' | 'CR' | 'CRO' | 'CVR' | 'EDB' | 'EDRPOU' | 'EN' | 'FN' | 'GST' | 'HN' | 'ICE' | 'ICO' | 'IDU' | 'IMONES_KODAS' | 'MATICNA' | 'NINEA' | 'NIP' | 'NIPT' | 'OGRN' | 'ORGNR' | 'RCCM' | 'REGISTRIKOOD' | 'RN' | 'RNC' | 'SSM' | 'UEN' | 'UIC' | 'UID' | 'USC' | 'UST_IDNR' | 'VKN' | 'Y_TUNNUS' | 'BIR' | 'BIN' | 'BP' | 'CF' | 'CN' | 'CRIB' | 'CUI' | 'ID' | 'ID_BROJ' | 'IDNO' | 'IF' | 'INN' | 'IRD' | 'MATRICULE' | 'MST' | 'NPWP' | 'NRT' | 'NTN' | 'OIB' | 'PAN' | 'PIB' | 'RC' | 'RIF' | 'RTN' | 'RUT' | 'TIN' | 'TRN' | 'UNP' | 'VOEN') | undefined}; export type RfiBusinessAddressAttestation = {type: 'businessAddress', registeredAddress?: PhysicalAddressVerification | undefined, operatingAddressSameAsRegistration?: boolean | undefined, operatingAddress?: PhysicalAddressVerification | undefined}; export type RfiBusinessContactInfoAttestation = {type: 'businessContactInfo', phoneNumber?: string | undefined, email?: string | undefined}; export type RfiBusinessDetailsAttestation = {type: 'businessDetails', businessWebsite?: string | undefined, legalStructure?: ('CORPORATION' | 'LLC' | 'PARTNERSHIP' | 'SOLE_PROPRIETORSHIP' | 'TRUST' | 'NON_PROFIT_ORGANIZATION' | 'FOUNDATION' | 'DAO' | 'COOPERATIVE') | undefined, dateOfIncorporation?: string | undefined, industry?: ('AGRICULTURE_FORESTRY_FISHING_HUNTING' | 'MINING_QUARRYING_OIL_GAS_EXTRACTION' | 'UTILITIES' | 'CONSTRUCTION' | 'MANUFACTURING' | 'WHOLESALE_TRADE' | 'TRANSPORTATION_AND_WAREHOUSING' | 'INFORMATION_AND_SOFTWARE' | 'FINANCE_AND_INSURANCE' | 'PROFESSIONAL_AND_TECHNICAL_SERVICES' | 'MANAGEMENT_OF_COMPANIES_AND_ENTERPRISES' | 'ADMINISTRATIVE_AND_SUPPORT_SERVICES' | 'PUBLIC_ADMINISTRATION' | 'EDUCATIONAL_SERVICES' | 'HEALTH_CARE_AND_SOCIAL_ASSISTANCE' | 'ARTS_ENTERTAINMENT_AND_RECREATION' | 'ACCOMMODATION_AND_FOOD_SERVICES' | 'OTHER_SERVICES') | undefined, businessDescription?: string | undefined, intendedMuralUsage?: string | undefined}; export type RfiBusinessOperationsAttestation = {type: 'businessOperations', transmittingCustomerFunds?: boolean | undefined, customerFundsTransmissionDetails?: string | undefined, primaryTargetMarket?: ('COMMERCIAL' | 'RETAIL' | 'GOVERNMENT' | 'OTHER') | undefined, primaryTargetMarketOtherDescription?: string | undefined, expectedCounterpartyCountries?: Array | undefined, highRiskBusinessActivities?: (Array<'MONEY_SERVICES' | 'LENDING_BANKING' | 'HOLD_CLIENT_FUNDS' | 'FOREIGN_EXCHANGE' | 'VIRTUAL_CURRENCIES_BROKERAGE' | 'OTC' | 'INVESTMENT_SERVICES' | 'THIRD_PARTY_PAYMENT_PROCESSING' | 'MARIJUANA_SERVICES' | 'ADULT_ENTERTAINMENT' | 'WEAPONS_FIREARMS_EXPLOSIVES' | 'GAMBLING'>) | undefined}; export type RfiBusinessFinancialInfoAttestation = {type: 'businessFinancialInfo', primaryIncomeSourceCategory?: ('BUSINESS_REVENUE' | 'EQUITY_FUNDING' | 'INVESTMENT_PROCEEDS' | 'BUSINESS_LOANS' | 'SALE_OF_ASSETS' | 'THIRD_PARTY_FUNDS' | 'LEGAL_SETTLEMENTS_TAX_REFUNDS' | 'GRANTS' | 'OTHER') | undefined, primaryIncomeSourceDescription?: string | undefined, annualRevenue?: ('LESS_THAN_100K' | 'BETWEEN_100K_AND_1M' | 'BETWEEN_1M_AND_10M' | 'BETWEEN_10M_AND_50M' | 'BETWEEN_50M_AND_250M' | 'MORE_THAN_250M') | undefined, estimatedMonthlyVolume?: number | undefined}; export type FormationDocumentReference = {documentType: 'ARTICLES_OF_INCORPORATION' | 'BUSINESS_LICENSE' | 'OTHER', documentId: string}; export type RfiBusinessFormationDocumentsAttestation = {type: 'businessFormationDocuments', formationDocuments?: Array | undefined}; export type UboOwnershipDocumentReference = {documentType: 'SHAREHOLDER_REGISTRY' | 'OWNERSHIP_STRUCTURE' | 'OTHER', documentId: string}; export type RfiBusinessUboOwnershipDocumentsAttestation = {type: 'businessUboOwnershipDocuments', uboOwnershipDocuments?: Array | undefined}; export type BusinessProofOfAddressDocumentReference = {documentType: 'UTILITY_BILL' | 'BANK_STATEMENT' | 'GOVERNMENT_ISSUED_LETTER', documentId: string}; export type RfiBusinessProofOfAddressDocumentsAttestation = {type: 'businessProofOfAddressDocuments', proofOfAddressDocuments?: Array | undefined}; export type FlowOfFundsDocumentReference = {documentType: 'FLOW_OF_FUNDS' | 'BANK_STATEMENT', documentId: string}; export type RfiBusinessFlowOfFundsDocumentAttestation = {type: 'businessFlowOfFundsDocument', document?: FlowOfFundsDocumentReference | undefined}; export type BusinessSourceOfFundsDocumentReference = {documentType: 'BANK_STATEMENT' | 'AUDITED_FINANCIAL_STATEMENT' | 'CUSTOMER_AGREEMENT' | 'INVOICE' | 'INVESTMENT_COMMITMENT' | 'UBO_SOURCE_OF_FUNDS', documentId: string}; export type RfiBusinessSourceOfFundsDocumentsAttestation = {type: 'businessSourceOfFundsDocuments', sourceOfFundsDocuments?: Array | undefined}; export type SupplementalDocumentReference = {documentId: string, detailId: string}; export type SupplementalDocumentAttestation = {type: 'supplementalDocument', documents: Array}; export type SupplementalInfoAnswer = {detailId: string, answer: string}; export type SupplementalInfoAttestation = {type: 'supplementalInfo', answers: Array}; export type RfiBusinessAssociatedPersonAttestation = {type: 'businessAssociatedPerson', associatedPersonId: string}; export type RfiAssociatedPersonPersonalInfoAttestation = {type: 'associatedPersonPersonalInfo', associatedPersonId: string, name?: IndividualName | undefined, birthDate?: string | undefined, nationality?: string | undefined, isPoliticallyExposed?: boolean | undefined, jobTitle?: string | undefined, ownershipPercentage?: number | undefined}; export type RfiAssociatedPersonContactInfoAttestation = {type: 'associatedPersonContactInfo', associatedPersonId: string, email?: string | undefined, phoneNumber?: string | undefined}; export type RfiAssociatedPersonResidentialAddressAttestation = {type: 'associatedPersonResidentialAddress', associatedPersonId: string, address?: PhysicalAddressVerification | undefined}; export type RfiAssociatedPersonTaxInfoAttestation = {type: 'associatedPersonTaxInfo', associatedPersonId: string, taxIdentificationNumber?: string | undefined, taxIdentificationNumberType?: ('SSN' | 'ITIN' | 'CPF' | 'CURP' | 'CUIL' | 'NINO' | 'INE' | 'RFC' | 'NIF' | 'STEUER_ID' | 'TCKN' | 'TIN' | 'PAN' | 'ADOAZ' | 'AHV' | 'AOM' | 'BSN' | 'BVN' | 'CDI' | 'CNP' | 'CPR' | 'EGN' | 'EMIRATES_ID' | 'EMSO' | 'FIN' | 'FN' | 'FODSELSNR' | 'HETU' | 'HKID' | 'IDNP' | 'IIN' | 'IK' | 'ITR' | 'JMBG' | 'MN' | 'NIN' | 'NRIC' | 'NRN' | 'PERSONNUMMER' | 'PESEL' | 'PIN' | 'PINFL' | 'PPSN' | 'RICN' | 'RNOKPP' | 'RODNE_CISLO' | 'RP' | 'RRN' | 'SI' | 'SIN' | 'SPI' | 'TFN' | 'UCN' | 'UTR' | 'BIR' | 'BIN' | 'BP' | 'CF' | 'CN' | 'CRIB' | 'CUI' | 'CUIT' | 'ID' | 'ID_BROJ' | 'IDNO' | 'IF' | 'INN' | 'IRD' | 'MATRICULE' | 'MST' | 'NIT' | 'NPWP' | 'NRT' | 'NTN' | 'OIB' | 'PIB' | 'RC' | 'RIF' | 'RN' | 'RTN' | 'RUC' | 'RUT' | 'TRN' | 'UNP' | 'USC' | 'VAT' | 'VOEN') | undefined}; export type RfiAssociatedPersonIdentityDocumentAttestation = {type: 'associatedPersonIdentityDocument', associatedPersonId: string, governmentId?: ({countryCode: string, passportDocumentId: string, passportNumber: string, type: 'passport'} | {countryCode: string, driverLicenseBackDocumentId: string, driverLicenseFrontDocumentId: string, driverLicenseNumber: string, type: 'driverLicense'} | {cnhBackDocumentId?: string | undefined, cnhFrontDocumentId: string, cnhNumber: string, type: 'cnh'} | {countryCode: string, nationalIdBackDocumentId: string, nationalIdFrontDocumentId: string, nationalIdNumber: string, type: 'nationalId'} | {countryCode: string, stateIdBackDocumentId: string, stateIdFrontDocumentId: string, stateIdNumber: string, type: 'stateId'} | {countryCode: string, passportCardBackDocumentId: string, passportCardFrontDocumentId: string, passportCardNumber: string, type: 'passportCard'} | {countryCode: string, permanentResidenceCardBackDocumentId: string, permanentResidenceCardFrontDocumentId: string, permanentResidenceCardNumber: string, type: 'permanentResidenceCard'} | {countryCode: string, type: 'visa', visaBackDocumentId: string, visaFrontDocumentId: string, visaNumber: string} | {countryCode: string, residencePermitBackDocumentId: string, residencePermitFrontDocumentId: string, residencePermitNumber: string, type: 'residencePermit'} | {citizenshipCertificateDocumentId: string, citizenshipCertificateNumber: string, countryCode: string, type: 'citizenshipCertificate'} | {consularIdBackDocumentId: string, consularIdFrontDocumentId: string, consularIdNumber: string, countryCode: string, type: 'consularId'} | {countryCode: string, foreignIdBackDocumentId: string, foreignIdFrontDocumentId: string, foreignIdNumber: string, type: 'foreignId'} | {countryCode: string, healthInsuranceCardBackDocumentId: string, healthInsuranceCardFrontDocumentId: string, healthInsuranceCardNumber: string, type: 'healthInsuranceCard'} | {countryCode: string, internalPassportDocumentId: string, internalPassportNumber: string, type: 'internalPassport'} | {countryCode: string, keypassIdBackDocumentId: string, keypassIdFrontDocumentId: string, keypassIdNumber: string, type: 'keypassId'} | {countryCode: string, longTermPassBackDocumentId: string, longTermPassFrontDocumentId: string, longTermPassNumber: string, type: 'longTermPass'} | {countryCode: string, municipalIdBackDocumentId: string, municipalIdFrontDocumentId: string, municipalIdNumber: string, type: 'municipalId'} | {countryCode: string, myNumberCardBackDocumentId: string, myNumberCardFrontDocumentId: string, myNumberCardNumber: string, type: 'myNumberCard'} | {countryCode: string, nbiClearanceDocumentId: string, nbiClearanceNumber: string, type: 'nbiClearance'} | {countryCode: string, ofwIdBackDocumentId: string, ofwIdFrontDocumentId: string, ofwIdNumber: string, type: 'ofwId'} | {countryCode: string, panCardDocumentId: string, panCardNumber: string, type: 'panCard'} | {countryCode: string, postalIdBackDocumentId: string, postalIdFrontDocumentId: string, postalIdNumber: string, type: 'postalId'} | {countryCode: string, sssIdBackDocumentId: string, sssIdFrontDocumentId: string, sssIdNumber: string, type: 'sssId'} | {countryCode: string, travelDocumentDocumentId: string, travelDocumentNumber: string, type: 'travelDocument'} | {countryCode: string, tribalIdBackDocumentId: string, tribalIdFrontDocumentId: string, tribalIdNumber: string, type: 'tribalId'} | {countryCode: string, type: 'umid', umidBackDocumentId: string, umidFrontDocumentId: string, umidNumber: string} | {countryCode: string, type: 'voterId', voterIdBackDocumentId: string, voterIdFrontDocumentId: string, voterIdNumber: string} | {countryCode: string, type: 'workPermit', workPermitBackDocumentId: string, workPermitFrontDocumentId: string, workPermitNumber: string}) | undefined}; export type RfiAssociatedPersonProofOfAddressAttestation = {type: 'associatedPersonProofOfAddress', associatedPersonId: string, proofOfAddressDocuments?: Array | undefined}; export type RfiAssociatedPersonEEAInfoAttestation = {type: 'associatedPersonEeaInfo', associatedPersonId: string, isDirector?: boolean | undefined, placeOfBirthCountry?: string | undefined, placeOfBirthCity?: string | undefined}; export type SignatoryAuthorityDocumentReference = {documentType: 'LETTER_OF_AUTHORITY' | 'BOARD_RESOLUTION' | 'POWER_OF_ATTORNEY', documentId: string}; export type RfiAssociatedPersonProofOfSignatoryAuthorityAttestation = {type: 'associatedPersonProofOfSignatoryAuthority', associatedPersonId: string, signatoryAuthorityDocuments?: Array | undefined}; export type RfiAssociatedPersonSupplementalDocumentAttestation = {type: 'associatedPersonSupplementalDocument', associatedPersonId: string, documents: Array}; export type RfiAssociatedPersonSupplementalInfoAttestation = {type: 'associatedPersonSupplementalInfo', associatedPersonId: string, answers: Array}; export type RfiUploadAttestationsRequest = {attestations: Array}; export type UpdateApiApiComplianceOrganizationIdRfisRfiIdAttestationsArgs = {organizationId: string, rfiId: string, body: RfiUploadAttestationsRequest}; export type UpdateApiApiComplianceOrganizationIdRfisRfiIdAttestationsOptions = {baseUrl?: string | undefined, bearer?: string | undefined, fetch?: typeof fetch | undefined}; export const addressNotFoundFailureInfo = z.object({type: z.literal("addressNotFound"), failureCode: z.literal("ADDRESS_NOT_FOUND"), description: z.string().optional()}); export const physicalAddressVerification = z.object({address1: z.string(), address2: z.string().optional(), city: z.string(), country: z.string(), postalCode: z.string(), subDivision: z.string()}); export const addressSuggestedCorrectionFailureInfo = z.object({type: z.literal("addressSuggestedCorrection"), failureCode: z.literal("ADDRESS_SUGGESTED_CORRECTION"), description: z.string().optional(), submittedAddress: physicalAddressVerification, suggestedAddress: physicalAddressVerification}); export const generalFailureInfo = z.object({type: z.literal("general"), failureCode: z.enum(["INCORRECT_DOCUMENT", "POOR_QUALITY", "MISSING_INFORMATION", "INCONSISTENT_DATA", "EXPIRED_DOCUMENT", "OTHER"]), description: z.string().optional()}); export const governmentIdFailureInfo = z.object({type: z.literal("governmentId"), governmentIdFailure: z.discriminatedUnion("type", [z.object({type: z.literal("minimumAgeNotMet"), description: z.string().optional()}), z.object({type: z.literal("documentAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("documentCopyNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("documentTypeNotAccepted"), description: z.string().optional(), selectedDocumentType: z.enum(["PASSPORT", "PASSPORT_CARD", "DRIVER_LICENSE", "STATE_ID", "PERMANENT_RESIDENCE_CARD", "VISA", "NATIONAL_ID", "RESIDENCE_PERMIT", "VOTER_ID", "CITIZENSHIP_CERTIFICATE", "HEALTH_INSURANCE_CARD", "WORK_PERMIT", "CONSULAR_ID", "FOREIGN_ID", "MY_NUMBER_CARD", "PAN_CARD", "LONG_TERM_PASS", "NBI_CLEARANCE", "OFW_ID", "POSTAL_ID", "SSS_ID", "UMID", "MUNICIPAL_ID", "TRAVEL_DOCUMENT", "INTERNAL_PASSPORT", "TRIBAL_ID", "KEYPASS_ID", "CNH"]).optional(), detectedDocumentType: z.enum(["PASSPORT", "PASSPORT_CARD", "DRIVER_LICENSE", "STATE_ID", "PERMANENT_RESIDENCE_CARD", "VISA", "NATIONAL_ID", "RESIDENCE_PERMIT", "VOTER_ID", "CITIZENSHIP_CERTIFICATE", "HEALTH_INSURANCE_CARD", "WORK_PERMIT", "CONSULAR_ID", "FOREIGN_ID", "MY_NUMBER_CARD", "PAN_CARD", "LONG_TERM_PASS", "NBI_CLEARANCE", "OFW_ID", "POSTAL_ID", "SSS_ID", "UMID", "MUNICIPAL_ID", "TRAVEL_DOCUMENT", "INTERNAL_PASSPORT", "TRIBAL_ID", "KEYPASS_ID", "CNH"]).optional(), detectedCountryCode: z.string().optional(), outOfCirculation: z.boolean().optional()}), z.object({type: z.literal("documentCountryNotAccepted"), description: z.string().optional(), detectedCountryCode: z.string().optional(), selectedCountryCode: z.string().optional()}), z.object({type: z.literal("documentExpiredOrDamaged"), description: z.string().optional(), expirationDate: z.string().optional()}), z.object({type: z.literal("documentDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("documentSideMissing"), description: z.string().optional()}), z.object({type: z.literal("documentUnreadable"), description: z.string().optional()}), z.object({type: z.literal("documentVerificationFailed"), description: z.string().optional()})])}); export const proofOfAddressFailureInfo = z.object({type: z.literal("proofOfAddress"), documentId: z.string().optional(), proofOfAddressFailure: z.discriminatedUnion("type", [z.object({type: z.literal("proofOfAddressAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("proofOfAddressTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("proofOfAddressExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("proofOfAddressDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("proofOfAddressUnreadable"), description: z.string().optional()}), z.object({type: z.literal("proofOfAddressVerificationFailed"), description: z.string().optional()})])}); export const sourceOfFundsFailureInfo = z.object({type: z.literal("sourceOfFunds"), documentId: z.string().optional(), sourceOfFundsFailure: z.discriminatedUnion("type", [z.object({type: z.literal("sourceOfFundsAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("sourceOfFundsTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("sourceOfFundsExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("sourceOfFundsDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("sourceOfFundsUnreadable"), description: z.string().optional()}), z.object({type: z.literal("sourceOfFundsVerificationFailed"), description: z.string().optional()})])}); export const formationDocumentsFailureInfo = z.object({type: z.literal("formationDocuments"), documentId: z.string().optional(), formationDocumentsFailure: z.discriminatedUnion("type", [z.object({type: z.literal("formationDocumentsAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("formationDocumentsTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("formationDocumentsExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("formationDocumentsDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("formationDocumentsUnreadable"), description: z.string().optional()}), z.object({type: z.literal("formationDocumentsVerificationFailed"), description: z.string().optional()})])}); export const uboOwnershipFailureInfo = z.object({type: z.literal("uboOwnership"), documentId: z.string().optional(), uboOwnershipFailure: z.discriminatedUnion("type", [z.object({type: z.literal("uboOwnershipAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("uboOwnershipTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("uboOwnershipExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("uboOwnershipDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("uboOwnershipUnreadable"), description: z.string().optional()}), z.object({type: z.literal("uboOwnershipVerificationFailed"), description: z.string().optional()})])}); export const flowOfFundsFailureInfo = z.object({type: z.literal("flowOfFunds"), documentId: z.string().optional(), flowOfFundsFailure: z.discriminatedUnion("type", [z.object({type: z.literal("flowOfFundsAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("flowOfFundsTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("flowOfFundsExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("flowOfFundsDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("flowOfFundsUnreadable"), description: z.string().optional()}), z.object({type: z.literal("flowOfFundsVerificationFailed"), description: z.string().optional()})])}); export const proofOfSignatoryAuthorityFailureInfo = z.object({type: z.literal("proofOfSignatoryAuthority"), documentId: z.string().optional(), proofOfSignatoryAuthorityFailure: z.discriminatedUnion("type", [z.object({type: z.literal("proofOfSignatoryAuthorityAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("proofOfSignatoryAuthorityTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("proofOfSignatoryAuthorityExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("proofOfSignatoryAuthorityDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("proofOfSignatoryAuthorityUnreadable"), description: z.string().optional()}), z.object({type: z.literal("proofOfSignatoryAuthorityVerificationFailed"), description: z.string().optional()})])}); export const supplementalDocumentFailureInfo = z.object({type: z.literal("supplementalDocument"), documentId: z.string().optional(), supplementalDocumentFailure: z.discriminatedUnion("type", [z.object({type: z.literal("supplementalDocumentAuthenticityCheckFailed"), description: z.string().optional()}), z.object({type: z.literal("supplementalDocumentTypeNotAccepted"), description: z.string().optional()}), z.object({type: z.literal("supplementalDocumentExpiredOrDamaged"), description: z.string().optional()}), z.object({type: z.literal("supplementalDocumentDataMismatch"), description: z.string().optional()}), z.object({type: z.literal("supplementalDocumentUnreadable"), description: z.string().optional()}), z.object({type: z.literal("supplementalDocumentVerificationFailed"), description: z.string().optional()})])}); export const attestationValidationFailure = z.object({failureInfo: z.discriminatedUnion("type", [addressNotFoundFailureInfo, addressSuggestedCorrectionFailureInfo, generalFailureInfo, governmentIdFailureInfo, proofOfAddressFailureInfo, sourceOfFundsFailureInfo, formationDocumentsFailureInfo, uboOwnershipFailureInfo, flowOfFundsFailureInfo, proofOfSignatoryAuthorityFailureInfo, supplementalDocumentFailureInfo]), field: z.enum(["address", "residentialAddress", "registeredAddress", "operatingAddress"]).optional(), severity: z.enum(["BLOCKING", "WARNING"])}); export const rfiAttestationResponse = z.object({id: z.string(), attestationType: z.enum(["individualPersonalInfoLight", "individualPersonalInfo", "individualContactInfo", "individualResidentialAddress", "individualIdentityDocument", "individualFinancialInfo", "individualTaxInfo", "individualEeaInfo", "individualProofOfAddress", "individualSourceOfFunds", "individualSelfiePhoto", "businessIdentification", "businessTaxInfo", "businessAddress", "businessContactInfo", "businessDetails", "businessOperations", "businessFinancialInfo", "businessFormationDocuments", "businessUboOwnershipDocuments", "businessProofOfAddressDocuments", "businessFlowOfFundsDocument", "businessSourceOfFundsDocuments", "businessAssociatedPersons", "supplementalDocument", "supplementalInfo"]), createdAt: z.string(), validationStatus: z.discriminatedUnion("type", [z.object({type: z.literal("pending")}), z.object({type: z.literal("approved")}), z.object({failures: z.array(attestationValidationFailure), type: z.literal("failed")})])}); export const rfiAssociatedPersonAttestationResponse = z.object({id: z.string(), attestationType: z.enum(["associatedPersonPersonalInfo", "associatedPersonContactInfo", "associatedPersonResidentialAddress", "associatedPersonTaxInfo", "associatedPersonIdentityDocument", "associatedPersonProofOfAddress", "associatedPersonEeaInfo", "associatedPersonProofOfSignatoryAuthority", "associatedPersonSupplementalDocument", "associatedPersonSupplementalInfo"]), createdAt: z.string(), validationStatus: z.discriminatedUnion("type", [z.object({type: z.literal("pending")}), z.object({type: z.literal("approved")}), z.object({failures: z.array(attestationValidationFailure), type: z.literal("failed")})])}); export const rfiUploadedAssociatedPerson = z.object({associatedPersonId: z.string(), attestations: z.array(rfiAssociatedPersonAttestationResponse)}); export const rfiUploadAttestationsResponse = z.object({reviewAttestations: z.array(rfiAttestationResponse), associatedPersons: z.array(rfiUploadedAssociatedPerson)}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Upload attestations for a request for information (RFI) * * PUT /api/compliance/{organizationId}/rfis/{rfiId}/attestations */ export const updateApiApiComplianceOrganizationIdRfisRfiIdAttestations = async (args: UpdateApiApiComplianceOrganizationIdRfisRfiIdAttestationsArgs, options?: UpdateApiApiComplianceOrganizationIdRfisRfiIdAttestationsOptions) => { const {baseUrl = "https://api.muralpay.com", fetch: fetchFn = fetch, bearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (bearer !== undefined) headers.set('authorization', `Bearer ${bearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/compliance/${encodeURIComponent(String(args.organizationId))}/rfis/${encodeURIComponent(String(args.rfiId))}/attestations${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PUT", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(rfiUploadAttestationsResponse, await res.json()) };