/**
 * Generated ISO20022 Type Definitions
 * This file is auto-generated from oids.json.
 */
import * as ASN1 from '../../lib/utils/asn1.js';
import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
type KeetaNetAccount = InstanceType<typeof KeetaNetLib.Account>;
/** Country code or name */
/** OID: 1.3.6.1.4.1.62675.1.2.0 */
export type Country = string;
/** Country subdivision (state/province) */
/** OID: 1.3.6.1.4.1.62675.1.2.1 */
export type CountrySubDivision = string;
/** Postal code */
/** OID: 1.3.6.1.4.1.62675.1.2.3 */
export type PostalCode = string;
/** Town or city name */
/** OID: 1.3.6.1.4.1.62675.1.2.4 */
export type TownName = string;
/** Building number */
/** OID: 1.3.6.1.4.1.62675.1.2.5 */
export type BuildingNumber = string;
/** Street name */
/** OID: 1.3.6.1.4.1.62675.1.2.6 */
export type StreetName = string;
/** Free-form address lines */
/** OID: 1.3.6.1.4.1.62675.1.2.7 */
export type AddressLines = string[];
/** Sub-department */
/** OID: 1.3.6.1.4.1.62675.1.2.8 */
export type SubDepartment = string;
/** Department */
/** OID: 1.3.6.1.4.1.62675.1.2.9 */
export type Department = string;
/** Purpose of email address */
/** OID: 1.3.6.1.4.1.62675.1.3.0 */
export type EmailAddressPurpose = string;
/** Name prefix code */
/** OID: 1.3.6.1.4.1.62675.1.0.0 */
export type NamePrefixCode = 'DOCT' | 'MIST' | 'MISS' | 'MIKS' | 'MME';
/** Preferred contact method */
/** OID: 1.3.6.1.4.1.62675.1.9.0 */
export type PreferredContactMethodCode = 'LETT' | 'MAIL' | 'PHON' | 'FAXX' | 'CELL';
/** Person identification scheme name proprietary values */
/** OID: 1.3.6.1.4.1.62675.1.8.1.1.0 */
export type PersonIdentificationSchemeNameProprietary = 'DRLC' | 'CPPT' | 'ARNU' | 'SSN' | 'TXID' | 'VISA' | 'WPPT';
/** Address type classification */
/** OID: 1.3.6.1.4.1.62675.1.2.10 */
export type AddressType = string;
/** Organization identification scheme name */
/** OID: 1.3.6.1.4.1.62675.1.8.0.2 */
export type OrganizationIdentificationSchemeNameChoice = string;
/** Person identification scheme name */
/** OID: 1.3.6.1.4.1.62675.1.8.1.1 */
export type PersonIdentificationSchemeNameChoice = string | PersonIdentificationSchemeNameProprietary;
/** Generic organization identification */
/** OID: 1.3.6.1.4.1.62675.1.8.0.1 */
export interface GenericOrganizationIdentification {
    id: Id;
    schemeName?: OrganizationIdentificationSchemeNameChoice;
    issuer?: Issuer;
}
export interface OrganizationIdentificationBicChoice {
    tag: 0;
    name: 'bic';
    value: string;
}
export interface OrganizationIdentificationLeiChoice {
    tag: 1;
    name: 'lei';
    value: string;
}
export interface OrganizationIdentificationOtherChoice {
    tag: 2;
    name: 'other';
    value: GenericOrganizationIdentification[];
}
export type OrganizationIdentificationChoice = OrganizationIdentificationBicChoice | OrganizationIdentificationLeiChoice | OrganizationIdentificationOtherChoice;
export type OrganizationIdentification = OrganizationIdentificationChoice[];
/** Generic person identification */
/** OID: 1.3.6.1.4.1.62675.1.8.1.0 */
export interface GenericPersonIdentification {
    id: Id;
    schemeName?: PersonIdentificationSchemeNameChoice;
    issuer?: Issuer;
}
export interface PersonIdentificationDateAndPlaceOfBirthChoice {
    tag: 0;
    name: 'dateAndPlaceOfBirth';
    value: DateAndPlaceOfBirth;
}
export interface PersonIdentificationOtherChoice {
    tag: 1;
    name: 'other';
    value: GenericPersonIdentification[];
}
export type PersonIdentificationChoice = PersonIdentificationDateAndPlaceOfBirthChoice | PersonIdentificationOtherChoice;
export type PersonIdentification = PersonIdentificationChoice[];
/** Other contact method */
/** OID: 1.3.6.1.4.1.62675.1.9.1 */
export interface OtherContact {
    id?: Id;
    channelType: string;
}
/** ASN.1 schema for AddressType */
export declare const AddressTypeSchema: ASN1.Schema;
/** ASN.1 schema for OrganizationIdentificationSchemeNameChoice */
export declare const OrganizationIdentificationSchemeNameChoiceSchema: ASN1.Schema;
/** ASN.1 schema for PersonIdentificationSchemeNameChoice */
export declare const PersonIdentificationSchemeNameChoiceSchema: ASN1.Schema;
/** ASN.1 schema for GenericOrganizationIdentification */
export declare const GenericOrganizationIdentificationSchema: ASN1.Schema;
/** ASN.1 schema for GenericPersonIdentification */
export declare const GenericPersonIdentificationSchema: ASN1.Schema;
/** ASN.1 schema for OtherContact */
export declare const OtherContactSchema: ASN1.Schema;
/** ASN.1 schema for OrganizationIdentification */
export declare const OrganizationIdentificationSchema: ASN1.Schema;
export declare const OrganizationIdentificationFields: readonly ["bic", "lei", "other"];
/** ASN.1 schema for PersonIdentification */
export declare const PersonIdentificationSchema: ASN1.Schema;
export declare const PersonIdentificationFields: readonly ["dateAndPlaceOfBirth", "other"];
/** Person's full name */
/** OID: 1.3.6.1.4.1.62675.1.0 */
export type FullName = string;
/** Person's first name */
/** OID: 1.3.6.1.4.1.62675.1.0.1 */
export type FirstName = string;
/** Person's last name */
/** OID: 1.3.6.1.4.1.62675.1.0.2 */
export type LastName = string;
/** Person's middle name */
/** OID: 1.3.6.1.4.1.62675.1.0.3 */
export type MiddleName = string;
/** Date of birth */
/** OID: 1.3.6.1.4.1.62675.1.1 */
export type DateOfBirth = Date;
/** Physical address */
/** OID: 1.3.6.1.4.1.62675.1.2 */
export interface Address {
    addressType?: AddressType;
    department?: Department;
    subDepartment?: SubDepartment;
    streetName?: StreetName;
    buildingNumber?: BuildingNumber;
    postalCode?: PostalCode;
    townName?: TownName;
    countrySubDivision?: CountrySubDivision;
    country?: Country;
    addressLines?: AddressLines;
}
/** Email address */
/** OID: 1.3.6.1.4.1.62675.1.3 */
export type Email = string;
/** Phone number */
/** OID: 1.3.6.1.4.1.62675.1.4 */
export type PhoneNumber = string;
/** Date and place of birth information */
/** OID: 1.3.6.1.4.1.62675.1.5 */
export interface DateAndPlaceOfBirth {
    birthDate: BirthDate;
    provinceOfBirth?: CountrySubDivision;
    cityOfBirth: TownName;
    countryOfBirth: Country;
}
/** Job title */
/** OID: 1.3.6.1.4.1.62675.1.6 */
export type JobTitle = string;
/** Job responsibility */
/** OID: 1.3.6.1.4.1.62675.1.6.1 */
export type JobResponsibility = string;
/** Identifier */
/** OID: 1.3.6.1.4.1.62675.1.7 */
export type Id = string;
/** Issuer identifier */
/** OID: 1.3.6.1.4.1.62675.1.7.1 */
export type Issuer = string;
/** Entity type (organization or person) */
/** OID: 1.3.6.1.4.1.62675.1.8 */
export interface EntityType {
    organization?: GenericOrganizationIdentification[];
    person?: GenericPersonIdentification[];
}
/** Contact details */
/** OID: 1.3.6.1.4.1.62675.1.9 */
export interface ContactDetails {
    namePrefix?: NamePrefixCode;
    fullName?: FullName;
    phoneNumber?: PhoneNumber;
    mobileNumber?: PhoneNumber;
    faxNumber?: PhoneNumber;
    emailAddress?: EmailAddress;
    emailPurpose?: EmailAddressPurpose;
    jobTitle?: JobTitle;
    jobResponsibility?: JobResponsibility;
    department?: Department;
    other?: OtherContact[];
    preferredMethod?: PreferredContactMethodCode;
}
/** Nationality */
/** OID: 1.3.6.1.4.1.62675.1.10 */
export type Nationality = string;
/** Generic document structure with metadata */
/** OID: 1.3.6.1.4.1.62675.1.11 */
export interface Document {
    documentNumber: string;
    front?: Reference;
    back?: Reference;
    selfie?: Reference;
    fullName?: string;
    firstName?: string;
    lastName?: string;
    dob?: Date;
    gender?: string;
    address?: Address;
    expiresAt?: Date;
    issuedAt?: Date;
    issuingState?: string;
    issuingCountry?: string;
    refNumber?: string;
    nationality?: string;
    curp?: string;
    claveDeElector?: string;
    classifiedDocumentType?: string;
    curpValidationResponse?: string;
    sambaActivityHistoryResponse?: string;
}
/** Driver's license document */
/** OID: 1.3.6.1.4.1.62675.1.11.0 */
export type DocumentDriversLicense = Document;
/** ID card document */
/** OID: 1.3.6.1.4.1.62675.1.11.1 */
export type DocumentIdCard = Document;
/** Passport document */
/** OID: 1.3.6.1.4.1.62675.1.11.2 */
export type DocumentPassport = Document;
/** Passport card document */
/** OID: 1.3.6.1.4.1.62675.1.11.3 */
export type DocumentPassportCard = Document;
/** Permit document */
/** OID: 1.3.6.1.4.1.62675.1.11.4 */
export type DocumentPermit = Document;
/** Visa document */
/** OID: 1.3.6.1.4.1.62675.1.11.5 */
export type DocumentVisa = Document;
/** Residence document */
/** OID: 1.3.6.1.4.1.62675.1.11.6 */
export type DocumentResidenceDocument = Document;
/** DigestInfo from RFC 3447 */
export interface DigestInfo {
    digestAlgorithm: ASN1.ASN1OID;
    digest: Buffer;
}
export declare const DigestInfoSchema: ASN1.Schema;
/** External reference pointer */
export interface ExternalReference {
    url: string;
    contentType: string;
}
export declare const ExternalReferenceSchema: ASN1.Schema;
/** Reference */
export interface Reference {
    external: ExternalReference;
    digest: DigestInfo;
    encryptionAlgorithm: ASN1.ASN1OID;
    /**
     * TODOC
     */
    $blob: (principals?: KeetaNetAccount[]) => Promise<Blob>;
}
export declare const ReferenceSchema: ASN1.Schema;
/** Alias for DateOfBirth */
export type BirthDate = DateOfBirth;
/** Alias for Email */
export type EmailAddress = Email;
/** Union type of all sensitive attribute types */
export type SensitiveAttributeType = FullName | FirstName | LastName | MiddleName | DateOfBirth | Address | Email | PhoneNumber | DateAndPlaceOfBirth | JobTitle | JobResponsibility | Id | Issuer | EntityType | ContactDetails | Nationality | Document | DocumentDriversLicense | DocumentIdCard | DocumentPassport | DocumentPassportCard | DocumentPermit | DocumentVisa | DocumentResidenceDocument;
/** Map of attribute name to acceptable input type for CertificateBuilder.setAttribute */
export interface CertificateAttributeValueMap {
    'fullName': FullName;
    'firstName': FirstName;
    'lastName': LastName;
    'middleName': MiddleName;
    'dateOfBirth': DateOfBirth;
    'address': Address;
    'email': Email;
    'phoneNumber': PhoneNumber;
    'dateAndPlaceOfBirth': DateAndPlaceOfBirth;
    'jobTitle': JobTitle;
    'jobResponsibility': JobResponsibility;
    'id': Id;
    'issuer': Issuer;
    'entityType': EntityType;
    'contactDetails': ContactDetails;
    'nationality': Nationality;
    'document': Document;
    'documentDriversLicense': DocumentDriversLicense;
    'documentIdCard': DocumentIdCard;
    'documentPassport': DocumentPassport;
    'documentPassportCard': DocumentPassportCard;
    'documentPermit': DocumentPermit;
    'documentVisa': DocumentVisa;
    'documentResidenceDocument': DocumentResidenceDocument;
}
/** Helper generic to get attribute value type by name */
export type CertificateAttributeValue<Name extends keyof CertificateAttributeValueMap> = CertificateAttributeValueMap[Name];
export declare const AddressFields: readonly ["addressLines", "addressType", "buildingNumber", "country", "countrySubDivision", "department", "postalCode", "streetName", "subDepartment", "townName"];
export declare const AddressSchema: ASN1.Schema;
export declare const DateAndPlaceOfBirthFields: readonly ["birthDate", "cityOfBirth", "countryOfBirth", "provinceOfBirth"];
export declare const DateAndPlaceOfBirthSchema: ASN1.Schema;
export declare const EntityTypeFields: readonly ["organization", "person"];
export declare const EntityTypeSchema: ASN1.Schema;
export declare const ContactDetailsFields: readonly ["department", "emailAddress", "emailPurpose", "faxNumber", "fullName", "jobResponsibility", "jobTitle", "mobileNumber", "namePrefix", "other", "phoneNumber", "preferredMethod"];
export declare const ContactDetailsSchema: ASN1.Schema;
export declare const DocumentFields: readonly ["documentNumber", "front", "back", "selfie", "fullName", "firstName", "lastName", "dob", "gender", "address", "expiresAt", "issuedAt", "issuingState", "issuingCountry", "refNumber", "nationality", "curp", "claveDeElector", "classifiedDocumentType", "curpValidationResponse", "sambaActivityHistoryResponse"];
export declare const DocumentSchema: ASN1.Schema;
export declare const CertificateAttributeOIDDB: {
    readonly fullName: "1.3.6.1.4.1.62675.1.0";
    readonly firstName: "1.3.6.1.4.1.62675.1.0.1";
    readonly lastName: "1.3.6.1.4.1.62675.1.0.2";
    readonly middleName: "1.3.6.1.4.1.62675.1.0.3";
    readonly dateOfBirth: "1.3.6.1.4.1.62675.1.1";
    readonly address: "1.3.6.1.4.1.62675.1.2";
    readonly email: "1.3.6.1.4.1.62675.1.3";
    readonly phoneNumber: "1.3.6.1.4.1.62675.1.4";
    readonly dateAndPlaceOfBirth: "1.3.6.1.4.1.62675.1.5";
    readonly jobTitle: "1.3.6.1.4.1.62675.1.6";
    readonly jobResponsibility: "1.3.6.1.4.1.62675.1.6.1";
    readonly id: "1.3.6.1.4.1.62675.1.7";
    readonly issuer: "1.3.6.1.4.1.62675.1.7.1";
    readonly entityType: "1.3.6.1.4.1.62675.1.8";
    readonly contactDetails: "1.3.6.1.4.1.62675.1.9";
    readonly nationality: "1.3.6.1.4.1.62675.1.10";
    readonly document: "1.3.6.1.4.1.62675.1.11";
    readonly documentDriversLicense: "1.3.6.1.4.1.62675.1.11.0";
    readonly documentIdCard: "1.3.6.1.4.1.62675.1.11.1";
    readonly documentPassport: "1.3.6.1.4.1.62675.1.11.2";
    readonly documentPassportCard: "1.3.6.1.4.1.62675.1.11.3";
    readonly documentPermit: "1.3.6.1.4.1.62675.1.11.4";
    readonly documentVisa: "1.3.6.1.4.1.62675.1.11.5";
    readonly documentResidenceDocument: "1.3.6.1.4.1.62675.1.11.6";
};
export declare const SENSITIVE_CERTIFICATE_ATTRIBUTES: readonly ["fullName", "firstName", "lastName", "middleName", "dateOfBirth", "address", "email", "phoneNumber", "dateAndPlaceOfBirth", "jobTitle", "jobResponsibility", "id", "issuer", "entityType", "contactDetails", "nationality", "document", "documentDriversLicense", "documentIdCard", "documentPassport", "documentPassportCard", "documentPermit", "documentVisa", "documentResidenceDocument"];
export type SensitiveCertificateAttributeNames = typeof SENSITIVE_CERTIFICATE_ATTRIBUTES[number];
export declare const SensitiveCertificateAttributeNames: readonly ["FullName", "FirstName", "LastName", "MiddleName", "DateOfBirth", "Address", "Email", "PhoneNumber", "DateAndPlaceOfBirth", "JobTitle", "JobResponsibility", "Id", "Issuer", "EntityType", "ContactDetails", "Nationality", "Document", "DocumentDriversLicense", "DocumentIdCard", "DocumentPassport", "DocumentPassportCard", "DocumentPermit", "DocumentVisa", "DocumentResidenceDocument"];
export declare const CertificateAttributeFieldNames: {
    readonly [K in keyof typeof CertificateAttributeOIDDB]?: readonly string[];
};
export declare const CertificateAttributeSchema: {
    readonly [K in keyof typeof CertificateAttributeOIDDB]: ASN1.Schema;
};
export {};
//# sourceMappingURL=iso20022.generated.d.ts.map