@notabene/javascript-sdk 2.15.0 → 2.16.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,3 @@
1
- import type { Agent as Agent_2 } from '@taprsvp/types';
2
- import type { DID as DID_2 } from '@taprsvp/types';
3
-
4
1
  /**
5
2
  * A blockchain account
6
3
  * @public
@@ -13,6 +10,26 @@ export declare interface Account {
13
10
  identifier?: string;
14
11
  }
15
12
 
13
+ /**
14
+ * Additional Document Reference
15
+ * Reference to an additional document related to the invoice
16
+ */
17
+ declare interface AdditionalDocumentReference {
18
+ /**
19
+ * Document identifier
20
+ */
21
+ id: string;
22
+ /**
23
+ * Type of document
24
+ * Uses UBL Document Type Code standard
25
+ */
26
+ documentType?: DocumentTypeCode;
27
+ /**
28
+ * URL where the document can be accessed
29
+ */
30
+ url?: string;
31
+ }
32
+
16
33
  /**
17
34
  * Address
18
35
  * Represents a physical address
@@ -53,6 +70,59 @@ declare type Address = {
53
70
  country: ISOCountryCode;
54
71
  };
55
72
 
73
+ /**
74
+ * Represents an address
75
+ *
76
+ * Per IVMS101 spec section 5.2.6.1, an address contains location information
77
+ * that can be expressed either as:
78
+ * - Structured fields (streetName, buildingNumber, etc.)
79
+ * - Unstructured addressLine array (free-form text)
80
+ *
81
+ * Constraint C8 requires at least one of:
82
+ * - addressLine OR
83
+ * - (streetName AND (buildingName OR buildingNumber))
84
+ */
85
+ declare interface Address_2 {
86
+ /** Identifies the nature of the address */
87
+ addressType: AddressTypeCode_2;
88
+ /** Identification of a division of a large organisation or building */
89
+ department?: string;
90
+ /** Identification of a sub-division of a large organisation or building */
91
+ subDepartment?: string;
92
+ /** Name of a street or thoroughfare */
93
+ streetName?: string;
94
+ /** Number that identifies the position of a building on a street */
95
+ buildingNumber?: string;
96
+ /** Name of the building or house */
97
+ buildingName?: string;
98
+ /** Floor or storey within a building */
99
+ floor?: string;
100
+ /** Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for */
101
+ postBox?: string;
102
+ /** Building room number */
103
+ room?: string;
104
+ /** Identifier consisting of a group of letters and/or numbers */
105
+ postcode?: string;
106
+ /** Name of a built-up area, with defined boundaries, and a local government */
107
+ townName: string;
108
+ /** Specific location name within the town */
109
+ townLocationName?: string;
110
+ /** Identifies a subdivision within a country subdivision */
111
+ districtName?: string;
112
+ /** Identifies a subdivision of a country */
113
+ countrySubDivision?: string;
114
+ /** Nation with its own government */
115
+ country: CountryCode;
116
+ /**
117
+ * Information that locates and identifies a specific address, as defined by postal services,
118
+ * presented in free format text.
119
+ *
120
+ * Array of 0 to 7 lines, each max 70 characters (Max70Text)
121
+ * @maxItems 7
122
+ */
123
+ addressLine?: string[];
124
+ }
125
+
56
126
  /**
57
127
  * Address Type Code
58
128
  * Specifies the type of address
@@ -60,6 +130,9 @@ declare type Address = {
60
130
  */
61
131
  declare type AddressTypeCode = 'HOME' | 'BIZZ' | 'GEOG';
62
132
 
133
+ /** Codes identifying the nature of an address */
134
+ declare type AddressTypeCode_2 = "HOME" | "BIZZ" | "GEOG";
135
+
63
136
  /**
64
137
  * Who is the agent acting on behalf of the counterparty
65
138
  * @public
@@ -73,6 +146,76 @@ export declare interface Agent {
73
146
  verified?: boolean;
74
147
  }
75
148
 
149
+ /**
150
+ * Agent Interface
151
+ * Represents software acting on behalf of participants in TAP transactions.
152
+ * Agents handle communication, compliance, and transaction processing.
153
+ *
154
+ * @example
155
+ * ```typescript
156
+ * const originatorAgent: Agent = {
157
+ * "@id": "did:web:vasp.example.com",
158
+ * role: "SourceAddress",
159
+ * for: "did:example:customer123",
160
+ * name: "Example VASP Agent",
161
+ * leiCode: "969500KN90DZLPGW6898",
162
+ * url: "https://vasp.example.com",
163
+ * email: "compliance@vasp.example.com",
164
+ * geographicAddress: [{
165
+ * addressType: "HOME",
166
+ * streetName: "123 Main St",
167
+ * buildingNumber: "123",
168
+ * postCode: "12345",
169
+ * townName: "Example City",
170
+ * country: "US"
171
+ * }],
172
+ * policies: [{
173
+ * "@type": "RequireAuthorization",
174
+ * purpose: "AML compliance verification"
175
+ * }],
176
+ * serviceUrl: "https://vasp.example.com/didcomm"
177
+ * };
178
+ * ```
179
+ */
180
+ declare interface Agent_2 extends Partial<Organization> {
181
+ /**
182
+ * Unique identifier for the participant
183
+ * Can be either a DID or an IRI
184
+ */
185
+ "@id": DID_2 | IRI;
186
+ /**
187
+ * Role of the participant in the transaction
188
+ * Standard values for Agents are: "SettlementAddress", "SourceAddress", "CustodialService"
189
+ * All role values MUST use PascalCase
190
+ * Optional for all participant types
191
+ */
192
+ role?: AgentRoles;
193
+ /**
194
+ * DID of the party this participant acts for
195
+ * Used when participant is an agent acting on behalf of another party
196
+ * Required for type "Agent", optional for other types
197
+ * Can be a single DID or an array of DIDs representing multiple parties
198
+ */
199
+ for: DID_2 | DID_2[];
200
+ /**
201
+ * List of policies that apply to this participant
202
+ * Defines requirements and constraints on the participant's actions
203
+ */
204
+ policies?: Policies[];
205
+ /**
206
+ * Optional DIDComm service endpoint URL
207
+ * This field SHOULD only be used as a fallback when no DIDComm service endpoint
208
+ * is resolvable from the agent's DID document. Particularly useful for self-hosted
209
+ * and decentralized agents. For security purposes, this field SHOULD be ignored
210
+ * if a valid DIDComm service endpoint is already listed in the DID document.
211
+ *
212
+ * @example "https://agent.example.com/didcomm"
213
+ */
214
+ serviceUrl?: IRI;
215
+ }
216
+
217
+ declare type AgentRoles = "SettlementAddress" | "SourceAddress" | "CustodialService" | "EscrowAgent" | string;
218
+
76
219
  /**
77
220
  * Explicit layout configuration for the agent selection step.
78
221
  *
@@ -103,8 +246,8 @@ export declare enum AgentType {
103
246
  }
104
247
 
105
248
  declare interface BaseRequestConfig {
106
- originatorId?: DID_2;
107
- beneficiaryId?: DID_2;
249
+ originatorId?: IRI;
250
+ beneficiaryId?: IRI;
108
251
  }
109
252
 
110
253
  /**
@@ -129,7 +272,6 @@ declare type BeneficiaryFields = {
129
272
 
130
273
  declare type BeneficiaryV2 = {
131
274
  beneficiaryPerson: PersonV2[];
132
- customerIdentification?: string;
133
275
  };
134
276
 
135
277
  /**
@@ -677,6 +819,8 @@ export declare type CounterpartyAssistConfig = boolean | {
677
819
  identityVerification?: IdentityVerificationConfig;
678
820
  };
679
821
 
822
+ declare type CountryCode = "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AQ" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BQ" | "BA" | "BW" | "BV" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "CV" | "KH" | "CM" | "CA" | "KY" | "CF" | "TD" | "CL" | "CN" | "CX" | "CC" | "CO" | "KM" | "CD" | "CG" | "CK" | "CR" | "HR" | "CU" | "CW" | "CY" | "CZ" | "CI" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "SZ" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "TF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GG" | "GN" | "GW" | "GY" | "HT" | "HM" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MK" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PN" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SB" | "SO" | "ZA" | "GS" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TR" | "TM" | "TC" | "TV" | "UG" | "UA" | "AE" | "GB" | "UM" | "US" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "EH" | "YE" | "ZM" | "ZW" | "AX" | "XX";
823
+
680
824
  /**
681
825
  * A crypto credential
682
826
  * @public
@@ -759,6 +903,45 @@ export declare type Destination = BlockchainAddress | CAIP10 | CryptoCredential
759
903
  */
760
904
  export declare type DID = `did:${string}:${string}`;
761
905
 
906
+ /**
907
+ * Decentralized Identifier (DID)
908
+ * A globally unique persistent identifier that doesn't require a centralized registration authority.
909
+ *
910
+ * Format: `did:method:method-specific-id`
911
+ *
912
+ * @example "did:web:example.com"
913
+ * @example "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
914
+ * @see {@link https://www.w3.org/TR/did-core/ | DID Core Specification}
915
+ */
916
+ declare type DID_2 = `did:${string}:${string}`;
917
+
918
+ /**
919
+ * UBL Document Type Code standard
920
+ * Based on UBL 2.1 document types
921
+ *
922
+ * @see {@link http://docs.oasis-open.org/ubl/os-UBL-2.1/cl/gc/default/DocumentTypeCode-2.1.gc | UBL Document Type Codes}
923
+ */
924
+ declare enum DocumentTypeCode {
925
+ Order = "Order",
926
+ OrderResponse = "OrderResponse",
927
+ OrderChange = "OrderChange",
928
+ OrderCancellation = "OrderCancellation",
929
+ Quotation = "Quotation",
930
+ DespatchAdvice = "DespatchAdvice",
931
+ ReceiptAdvice = "ReceiptAdvice",
932
+ Invoice = "Invoice",
933
+ CreditNote = "CreditNote",
934
+ DebitNote = "DebitNote",
935
+ SelfBilledInvoice = "SelfBilledInvoice",
936
+ RemittanceAdvice = "RemittanceAdvice",
937
+ Statement = "Statement",
938
+ CertificateOfOrigin = "CertificateOfOrigin",
939
+ Contract = "Contract",
940
+ Timesheet = "Timesheet",
941
+ Waybill = "Waybill",
942
+ Manifest = "Manifest"
943
+ }
944
+
762
945
  /**
763
946
  * Digital Token Identifier (DTI) following ISO 24165 standard
764
947
  *
@@ -1006,6 +1189,122 @@ export declare type InvalidValue<T> = {
1006
1189
  errors: ValidationError[];
1007
1190
  };
1008
1191
 
1192
+ /**
1193
+ * Invoice
1194
+ * Represents a detailed invoice as defined in TAIP-16
1195
+ *
1196
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-16.md | TAIP-16: Invoices}
1197
+ */
1198
+ export declare interface Invoice {
1199
+ /**
1200
+ * Unique identifier for the invoice
1201
+ *
1202
+ * @example "INV001"
1203
+ * @validation Must be a unique identifier for the invoice
1204
+ */
1205
+ id: string;
1206
+ /**
1207
+ * Date when the invoice was issued
1208
+ * ISO 8601 date format (YYYY-MM-DD)
1209
+ *
1210
+ * @example "2025-04-22"
1211
+ * @validation Must be a valid date in ISO 8601 format
1212
+ */
1213
+ issueDate: string;
1214
+ /**
1215
+ * Currency code for the invoice amounts
1216
+ * ISO 4217 currency code
1217
+ * Should be consistent with the currency field in the Payment Request if present
1218
+ *
1219
+ * @example "USD"
1220
+ * @example "EUR"
1221
+ * @validation Must be a valid ISO 4217 currency code
1222
+ */
1223
+ currencyCode: IsoCurrency;
1224
+ /**
1225
+ * Individual items being invoiced
1226
+ *
1227
+ * @validation Must be an array of LineItem objects
1228
+ */
1229
+ lineItems: LineItem[];
1230
+ /**
1231
+ * Aggregate tax information
1232
+ *
1233
+ * @validation Must be a TaxTotal object if present
1234
+ */
1235
+ taxTotal?: TaxTotal;
1236
+ /**
1237
+ * Total amount of the invoice, including taxes
1238
+ * Must match the amount in the Payment Request body
1239
+ *
1240
+ * @validation Must be a positive number
1241
+ */
1242
+ total: number;
1243
+ /**
1244
+ * Sum of line totals before taxes
1245
+ *
1246
+ * @validation Must be a positive number if present
1247
+ */
1248
+ subTotal?: number;
1249
+ /**
1250
+ * Date when payment is due
1251
+ * ISO 8601 date format (YYYY-MM-DD)
1252
+ *
1253
+ * @example "2025-05-22"
1254
+ * @validation Must be a valid date in ISO 8601 format if present
1255
+ */
1256
+ dueDate?: string;
1257
+ /**
1258
+ * Additional notes or terms for the invoice
1259
+ *
1260
+ * @validation Must be a string if present
1261
+ */
1262
+ note?: string;
1263
+ /**
1264
+ * Terms of payment
1265
+ *
1266
+ * @example "Net 30"
1267
+ * @validation Must be a string if present
1268
+ */
1269
+ paymentTerms?: string;
1270
+ /**
1271
+ * Buyer's accounting code
1272
+ * Used to route costs to specific accounts
1273
+ *
1274
+ * @validation Must be a string if present
1275
+ */
1276
+ accountingCost?: string;
1277
+ /**
1278
+ * Reference to a related order
1279
+ *
1280
+ * @validation Must be an OrderReference object if present
1281
+ */
1282
+ orderReference?: OrderReference;
1283
+ /**
1284
+ * References to additional documents
1285
+ *
1286
+ * @validation Must be an array of AdditionalDocumentReference objects if present
1287
+ */
1288
+ additionalDocumentReference?: AdditionalDocumentReference[];
1289
+ }
1290
+
1291
+ /** Output fields populated by the component on completion */
1292
+ export declare interface InvoiceReaderResponse {
1293
+ /** TAIP-16 compliant invoice data (populated by the component after PDF parsing) */
1294
+ invoice?: Invoice;
1295
+ merchant?: Party;
1296
+ customer?: Party;
1297
+ }
1298
+
1299
+ /**
1300
+ * Internationalized Resource Identifier (IRI)
1301
+ * A unique identifier that may contain international characters.
1302
+ * Used for identifying resources, particularly in JSON-LD contexts.
1303
+ *
1304
+ * @see {@link https://www.w3.org/TR/json-ld11/#iris | JSON-LD 1.1 IRIs}
1305
+ */
1306
+ declare type IRI = `${string}:${string}`;
1307
+
1009
1308
  /**
1010
1309
  * ISO-3166 Alpha-2 country code
1011
1310
  * @example "US" for United States, "GB" for United Kingdom
@@ -1019,6 +1318,326 @@ declare type ISOCountryCode = string;
1019
1318
  */
1020
1319
  declare type ISOCurrency = string;
1021
1320
 
1321
+ /**
1322
+ * ISO 4217 Currency Codes
1323
+ * Three-letter codes representing currencies according to the ISO 4217 standard.
1324
+ *
1325
+ * @see {@link https://www.iso.org/iso-4217-currency-codes.html | ISO 4217}
1326
+ */
1327
+ declare type IsoCurrency =
1328
+ /** United Arab Emirates Dirham */
1329
+ "AED"
1330
+ /** Afghan Afghani */
1331
+ | "AFN"
1332
+ /** Albanian Lek */
1333
+ | "ALL"
1334
+ /** Armenian Dram */
1335
+ | "AMD"
1336
+ /** Netherlands Antillean Guilder */
1337
+ | "ANG"
1338
+ /** Angolan Kwanza */
1339
+ | "AOA"
1340
+ /** Argentine Peso */
1341
+ | "ARS"
1342
+ /** Australian Dollar */
1343
+ | "AUD"
1344
+ /** Aruban Florin */
1345
+ | "AWG"
1346
+ /** Azerbaijani Manat */
1347
+ | "AZN"
1348
+ /** Bosnia and Herzegovina Convertible Mark */
1349
+ | "BAM"
1350
+ /** Barbados Dollar */
1351
+ | "BBD"
1352
+ /** Bangladeshi Taka */
1353
+ | "BDT"
1354
+ /** Bulgarian Lev */
1355
+ | "BGN"
1356
+ /** Bahraini Dinar */
1357
+ | "BHD"
1358
+ /** Burundian Franc */
1359
+ | "BIF"
1360
+ /** Bermudian Dollar */
1361
+ | "BMD"
1362
+ /** Brunei Dollar */
1363
+ | "BND"
1364
+ /** Boliviano */
1365
+ | "BOB"
1366
+ /** Brazilian Real */
1367
+ | "BRL"
1368
+ /** Bahamian Dollar */
1369
+ | "BSD"
1370
+ /** Bhutanese Ngultrum */
1371
+ | "BTN"
1372
+ /** Botswana Pula */
1373
+ | "BWP"
1374
+ /** Belarusian Ruble */
1375
+ | "BYN"
1376
+ /** Belize Dollar */
1377
+ | "BZD"
1378
+ /** Canadian Dollar */
1379
+ | "CAD"
1380
+ /** Congolese Franc */
1381
+ | "CDF"
1382
+ /** Swiss Franc */
1383
+ | "CHF"
1384
+ /** Chilean Peso */
1385
+ | "CLP"
1386
+ /** Chinese Yuan */
1387
+ | "CNY"
1388
+ /** Colombian Peso */
1389
+ | "COP"
1390
+ /** Costa Rican Colon */
1391
+ | "CRC"
1392
+ /** Cuban Peso */
1393
+ | "CUP"
1394
+ /** Cape Verde Escudo */
1395
+ | "CVE"
1396
+ /** Czech Koruna */
1397
+ | "CZK"
1398
+ /** Djiboutian Franc */
1399
+ | "DJF"
1400
+ /** Danish Krone */
1401
+ | "DKK"
1402
+ /** Dominican Peso */
1403
+ | "DOP"
1404
+ /** Algerian Dinar */
1405
+ | "DZD"
1406
+ /** Egyptian Pound */
1407
+ | "EGP"
1408
+ /** Eritrean Nakfa */
1409
+ | "ERN"
1410
+ /** Ethiopian Birr */
1411
+ | "ETB"
1412
+ /** Euro */
1413
+ | "EUR"
1414
+ /** Fiji Dollar */
1415
+ | "FJD"
1416
+ /** Falkland Islands Pound */
1417
+ | "FKP"
1418
+ /** Pound Sterling */
1419
+ | "GBP"
1420
+ /** Georgian Lari */
1421
+ | "GEL"
1422
+ /** Ghanaian Cedi */
1423
+ | "GHS"
1424
+ /** Gibraltar Pound */
1425
+ | "GIP"
1426
+ /** Gambian Dalasi */
1427
+ | "GMD"
1428
+ /** Guinean Franc */
1429
+ | "GNF"
1430
+ /** Guatemalan Quetzal */
1431
+ | "GTQ"
1432
+ /** Guyanese Dollar */
1433
+ | "GYD"
1434
+ /** Hong Kong Dollar */
1435
+ | "HKD"
1436
+ /** Honduran Lempira */
1437
+ | "HNL"
1438
+ /** Croatian Kuna */
1439
+ | "HRK"
1440
+ /** Haitian Gourde */
1441
+ | "HTG"
1442
+ /** Hungarian Forint */
1443
+ | "HUF"
1444
+ /** Indonesian Rupiah */
1445
+ | "IDR"
1446
+ /** Israeli New Shekel */
1447
+ | "ILS"
1448
+ /** Indian Rupee */
1449
+ | "INR"
1450
+ /** Iraqi Dinar */
1451
+ | "IQD"
1452
+ /** Iranian Rial */
1453
+ | "IRR"
1454
+ /** Icelandic Króna */
1455
+ | "ISK"
1456
+ /** Jamaican Dollar */
1457
+ | "JMD"
1458
+ /** Jordanian Dinar */
1459
+ | "JOD"
1460
+ /** Japanese Yen */
1461
+ | "JPY"
1462
+ /** Kenyan Shilling */
1463
+ | "KES"
1464
+ /** Kyrgyzstani Som */
1465
+ | "KGS"
1466
+ /** Cambodian Riel */
1467
+ | "KHR"
1468
+ /** Comoro Franc */
1469
+ | "KMF"
1470
+ /** North Korean Won */
1471
+ | "KPW"
1472
+ /** South Korean Won */
1473
+ | "KRW"
1474
+ /** Kuwaiti Dinar */
1475
+ | "KWD"
1476
+ /** Cayman Islands Dollar */
1477
+ | "KYD"
1478
+ /** Kazakhstani Tenge */
1479
+ | "KZT"
1480
+ /** Lao Kip */
1481
+ | "LAK"
1482
+ /** Lebanese Pound */
1483
+ | "LBP"
1484
+ /** Sri Lankan Rupee */
1485
+ | "LKR"
1486
+ /** Liberian Dollar */
1487
+ | "LRD"
1488
+ /** Lesotho Loti */
1489
+ | "LSL"
1490
+ /** Libyan Dinar */
1491
+ | "LYD"
1492
+ /** Moroccan Dirham */
1493
+ | "MAD"
1494
+ /** Moldovan Leu */
1495
+ | "MDL"
1496
+ /** Malagasy Ariary */
1497
+ | "MGA"
1498
+ /** Macedonian Denar */
1499
+ | "MKD"
1500
+ /** Myanmar Kyat */
1501
+ | "MMK"
1502
+ /** Mongolian Tugrik */
1503
+ | "MNT"
1504
+ /** Macanese Pataca */
1505
+ | "MOP"
1506
+ /** Mauritanian Ouguiya */
1507
+ | "MRU"
1508
+ /** Mauritian Rupee */
1509
+ | "MUR"
1510
+ /** Maldivian Rufiyaa */
1511
+ | "MVR"
1512
+ /** Malawian Kwacha */
1513
+ | "MWK"
1514
+ /** Mexican Peso */
1515
+ | "MXN"
1516
+ /** Malaysian Ringgit */
1517
+ | "MYR"
1518
+ /** Mozambican Metical */
1519
+ | "MZN"
1520
+ /** Namibian Dollar */
1521
+ | "NAD"
1522
+ /** Nigerian Naira */
1523
+ | "NGN"
1524
+ /** Nicaraguan Córdoba */
1525
+ | "NIO"
1526
+ /** Norwegian Krone */
1527
+ | "NOK"
1528
+ /** Nepalese Rupee */
1529
+ | "NPR"
1530
+ /** New Zealand Dollar */
1531
+ | "NZD"
1532
+ /** Omani Rial */
1533
+ | "OMR"
1534
+ /** Panamanian Balboa */
1535
+ | "PAB"
1536
+ /** Peruvian Sol */
1537
+ | "PEN"
1538
+ /** Papua New Guinean Kina */
1539
+ | "PGK"
1540
+ /** Philippine Peso */
1541
+ | "PHP"
1542
+ /** Pakistani Rupee */
1543
+ | "PKR"
1544
+ /** Polish Złoty */
1545
+ | "PLN"
1546
+ /** Paraguayan Guaraní */
1547
+ | "PYG"
1548
+ /** Qatari Riyal */
1549
+ | "QAR"
1550
+ /** Romanian Leu */
1551
+ | "RON"
1552
+ /** Serbian Dinar */
1553
+ | "RSD"
1554
+ /** Russian Ruble */
1555
+ | "RUB"
1556
+ /** Rwandan Franc */
1557
+ | "RWF"
1558
+ /** Saudi Riyal */
1559
+ | "SAR"
1560
+ /** Solomon Islands Dollar */
1561
+ | "SBD"
1562
+ /** Seychelles Rupee */
1563
+ | "SCR"
1564
+ /** Sudanese Pound */
1565
+ | "SDG"
1566
+ /** Swedish Krona */
1567
+ | "SEK"
1568
+ /** Singapore Dollar */
1569
+ | "SGD"
1570
+ /** Saint Helena Pound */
1571
+ | "SHP"
1572
+ /** Sierra Leonean Leone */
1573
+ | "SLL"
1574
+ /** Somali Shilling */
1575
+ | "SOS"
1576
+ /** Surinamese Dollar */
1577
+ | "SRD"
1578
+ /** South Sudanese Pound */
1579
+ | "SSP"
1580
+ /** São Tomé and Príncipe Dobra */
1581
+ | "STN"
1582
+ /** Salvadoran Colón */
1583
+ | "SVC"
1584
+ /** Syrian Pound */
1585
+ | "SYP"
1586
+ /** Swazi Lilangeni */
1587
+ | "SZL"
1588
+ /** Thai Baht */
1589
+ | "THB"
1590
+ /** Tajikistani Somoni */
1591
+ | "TJS"
1592
+ /** Turkmenistan Manat */
1593
+ | "TMT"
1594
+ /** Tunisian Dinar */
1595
+ | "TND"
1596
+ /** Tongan Paʻanga */
1597
+ | "TOP"
1598
+ /** Turkish Lira */
1599
+ | "TRY"
1600
+ /** Trinidad and Tobago Dollar */
1601
+ | "TTD"
1602
+ /** New Taiwan Dollar */
1603
+ | "TWD"
1604
+ /** Tanzanian Shilling */
1605
+ | "TZS"
1606
+ /** Ukrainian Hryvnia */
1607
+ | "UAH"
1608
+ /** Ugandan Shilling */
1609
+ | "UGX"
1610
+ /** United States Dollar */
1611
+ | "USD"
1612
+ /** Uruguayan Peso */
1613
+ | "UYU"
1614
+ /** Uzbekistan Som */
1615
+ | "UZS"
1616
+ /** Venezuelan Bolívar Soberano */
1617
+ | "VES"
1618
+ /** Vietnamese Đồng */
1619
+ | "VND"
1620
+ /** Vanuatu Vatu */
1621
+ | "VUV"
1622
+ /** Samoan Tala */
1623
+ | "WST"
1624
+ /** CFA Franc BEAC */
1625
+ | "XAF"
1626
+ /** East Caribbean Dollar */
1627
+ | "XCD"
1628
+ /** CFA Franc BCEAO */
1629
+ | "XOF"
1630
+ /** CFP Franc */
1631
+ | "XPF"
1632
+ /** Yemeni Rial */
1633
+ | "YER"
1634
+ /** South African Rand */
1635
+ | "ZAR"
1636
+ /** Zambian Kwacha */
1637
+ | "ZMW"
1638
+ /** Zimbabwean Dollar */
1639
+ | "ZWL";
1640
+
1022
1641
  /**
1023
1642
  * A point in time, represented as a day within the calendar year. Compliant with ISO 8601.
1024
1643
  * Format: YYYY-MM-DD
@@ -1041,6 +1660,19 @@ export declare type IVMS101 = {
1041
1660
  payloadMetadata?: PayloadMetadata;
1042
1661
  };
1043
1662
 
1663
+ /**
1664
+ * Base interface for JSON-LD objects
1665
+ * Provides the core structure for JSON-LD compatible objects with type information.
1666
+ *
1667
+ * @template T - The type string that identifies the object type
1668
+ */
1669
+ declare interface JsonLdObject<T extends string> {
1670
+ "@context"?: IRI | Record<string, string>;
1671
+ "@type": T;
1672
+ }
1673
+
1674
+ declare type LegalEntityNationalIdentifierTypeCode = Omit<NationalIdentifierTypeCode_2, "ARNU" | "CCPT" | "DRLC" | "SOCS" | "IDCD">;
1675
+
1044
1676
  /**
1045
1677
  * Interface representing a legal entity (organization/company) involved in a transaction
1046
1678
  *
@@ -1132,6 +1764,14 @@ declare type LegalPersonNameID = {
1132
1764
  legalPersonNameIdentifierType: LegalPersonNameTypeCode;
1133
1765
  };
1134
1766
 
1767
+ /** Represents a legal person's name identifier */
1768
+ declare interface LegalPersonNameId {
1769
+ /** Name by which the legal person is known */
1770
+ legalPersonName: string;
1771
+ /** The nature of the name specified */
1772
+ legalPersonNameIdentifierType: LegalPersonNameTypeCode_2;
1773
+ }
1774
+
1135
1775
  /**
1136
1776
  * Legal Person Name Type Code
1137
1777
  * Specifies the type of name for a legal person
@@ -1139,12 +1779,87 @@ declare type LegalPersonNameID = {
1139
1779
  */
1140
1780
  declare type LegalPersonNameTypeCode = 'LEGL' | 'SHRT' | 'TRAD';
1141
1781
 
1782
+ /** Codes representing the nature of a legal person's name */
1783
+ declare type LegalPersonNameTypeCode_2 = "LEGL" | "SHRT" | "TRAD";
1784
+
1142
1785
  /**
1143
1786
  * A LEI Legal Entity Identifier
1144
1787
  * @public
1145
1788
  */
1146
1789
  export declare type LEI = string;
1147
1790
 
1791
+ /**
1792
+ * Legal Entity Identifier (LEI)
1793
+ * A 20-character alphanumeric code that uniquely identifies legal entities globally.
1794
+ *
1795
+ * @example "969500KN90DZLPGW6898"
1796
+ * @see {@link https://www.iso.org/standard/59771.html | ISO 17442}
1797
+ */
1798
+ declare type LEICode = string;
1799
+
1800
+ /**
1801
+ * Line Item
1802
+ * Represents an individual item in an invoice
1803
+ */
1804
+ declare interface LineItem {
1805
+ /**
1806
+ * Unique identifier for the line item within the invoice
1807
+ */
1808
+ id: string;
1809
+ /**
1810
+ * Description of the item or service
1811
+ */
1812
+ description: string;
1813
+ /**
1814
+ * Product name
1815
+ * Based on schema.org/Product
1816
+ * If not provided, description serves as the display name
1817
+ *
1818
+ * @example "Premium Widget Model A"
1819
+ */
1820
+ name?: string;
1821
+ /**
1822
+ * URL to an image of the product
1823
+ * Based on schema.org/Product
1824
+ *
1825
+ * @example "https://example.com/products/widget-a.jpg"
1826
+ */
1827
+ image?: string;
1828
+ /**
1829
+ * URL to the product page
1830
+ * Based on schema.org/Product
1831
+ *
1832
+ * @example "https://example.com/products/widget-a"
1833
+ */
1834
+ url?: string;
1835
+ /**
1836
+ * Quantity of the item
1837
+ */
1838
+ quantity: number;
1839
+ /**
1840
+ * Unit of measure code
1841
+ * Uses UBL Unit of Measure Code standard
1842
+ *
1843
+ * @example UnitCode.Each
1844
+ * @example UnitCode.Kilogram
1845
+ * @example UnitCode.Hour
1846
+ */
1847
+ unitCode?: UnitCode;
1848
+ /**
1849
+ * Price per unit
1850
+ */
1851
+ unitPrice: number;
1852
+ /**
1853
+ * Total amount for this line item
1854
+ * Typically quantity × unitPrice
1855
+ */
1856
+ lineTotal: number;
1857
+ /**
1858
+ * Tax category information specific to this line item
1859
+ */
1860
+ taxCategory?: TaxCategory;
1861
+ }
1862
+
1148
1863
  /**
1149
1864
  * Local Legal Person Name ID
1150
1865
  * Represents a local name identifier for a legal person
@@ -1209,6 +1924,18 @@ export declare type NationalIdentification = {
1209
1924
  registrationAuthority?: string;
1210
1925
  };
1211
1926
 
1927
+ /** Represents a national identification */
1928
+ declare interface NationalIdentification_2<C> {
1929
+ /** An identifier issued by an appropriate issuing authority */
1930
+ nationalIdentifier: string;
1931
+ /** Specifies the type of identifier */
1932
+ nationalIdentifierType: C;
1933
+ /** Country of the issuing authority */
1934
+ countryOfIssue?: CountryCode;
1935
+ /** A code specifying the registration authority */
1936
+ registrationAuthority?: string;
1937
+ }
1938
+
1212
1939
  /**
1213
1940
  * National Identifier Type Code
1214
1941
  * Specifies the type of national identifier
@@ -1216,6 +1943,22 @@ export declare type NationalIdentification = {
1216
1943
  */
1217
1944
  declare type NationalIdentifierTypeCode = 'ARNU' | 'CCPT' | 'RAID' | 'DRLC' | 'FIIN' | 'TXID' | 'SOCS' | 'IDCD' | 'LEIX' | 'MISC';
1218
1945
 
1946
+ /**
1947
+ * Codes identifying the type of national identification
1948
+ *
1949
+ * - **ARNU**: Alien registration number - Number assigned by a government agency to identify foreign nationals
1950
+ * - **CCPT**: Passport number - Number assigned by a passport authority
1951
+ * - **RAID**: Registration authority identifier - Identifier of a legal entity as maintained by a registration authority
1952
+ * - **DRLC**: Driver license number - Number assigned to a driver's license
1953
+ * - **FIIN**: Foreign investment identity number - Number assigned to a foreign investor (other than the alien number)
1954
+ * - **TXID**: Tax identification number - Number assigned by a tax authority to an entity
1955
+ * - **SOCS**: Social security number - Number assigned by a social security agency
1956
+ * - **IDCD**: Identity card number - Number assigned by a national authority to an identity card
1957
+ * - **LEIX**: Legal Entity Identifier - Legal Entity Identifier (LEI) assigned in accordance with ISO 17442
1958
+ * - **MISC**: Miscellaneous - Other types of national identification not covered by the above codes
1959
+ */
1960
+ declare type NationalIdentifierTypeCode_2 = "ARNU" | "CCPT" | "RAID" | "DRLC" | "FIIN" | "TXID" | "SOCS" | "IDCD" | "LEIX" | "MISC";
1961
+
1219
1962
  /**
1220
1963
  * Field properties for national identifier type selection
1221
1964
  * @public
@@ -1323,6 +2066,16 @@ declare type NaturalPersonNameID = {
1323
2066
  nameIdentifierType?: NaturalPersonNameTypeCode;
1324
2067
  };
1325
2068
 
2069
+ /** Represents a natural person's name identifier */
2070
+ declare interface NaturalPersonNameId {
2071
+ /** This may be the family name, maiden name, or married name */
2072
+ primaryIdentifier: string;
2073
+ /** These may be forenames, given names, initials, or other secondary names */
2074
+ secondaryIdentifier?: string;
2075
+ /** The nature of the name specified */
2076
+ naturalPersonNameIdentifierType: NaturalPersonNameTypeCode_2;
2077
+ }
2078
+
1326
2079
  declare type NaturalPersonNameIDV2 = {
1327
2080
  primaryIdentifier?: string;
1328
2081
  secondaryIdentifier?: string;
@@ -1337,12 +2090,23 @@ declare type NaturalPersonNameIDV2 = {
1337
2090
  */
1338
2091
  declare type NaturalPersonNameTypeCode = 'ALIA' | 'BIRT' | 'MAID' | 'LEGL' | 'MISC';
1339
2092
 
2093
+ /**
2094
+ * IVMS101 Core Types
2095
+ * Shared type definitions used by both IVMS101.2020 and IVMS101.2023 versions
2096
+ */
2097
+
2098
+ /** Codes representing the nature of a natural person's name */
2099
+ declare type NaturalPersonNameTypeCode_2 = "ALIA" | "BIRT" | "MAID" | "LEGL" | "MISC";
2100
+
1340
2101
  declare type NaturalPersonNameV2 = Omit<NaturalPersonName, 'nameIdentifier'> & {
1341
2102
  nameIdentifier?: NaturalPersonNameIDV2[];
1342
2103
  };
1343
2104
 
2105
+ declare type NaturalPersonNationalIdentifierTypeCode = Omit<NationalIdentifierTypeCode_2, "LEIX" | "RAID">;
2106
+
1344
2107
  declare type NaturalPersonV2 = Omit<NaturalPerson_2, 'name'> & {
1345
2108
  name: NaturalPersonNameV2;
2109
+ customerIdentification?: string;
1346
2110
  };
1347
2111
 
1348
2112
  /**
@@ -1417,6 +2181,17 @@ declare class Notabene {
1417
2181
  * @public
1418
2182
  */
1419
2183
  createDepositRequest(value: DepositRequest, options?: DepositRequestOptions, callbacks?: CallbackOptions): EmbeddedComponent<DepositRequest, DepositRequestOptions>;
2184
+ /**
2185
+ * Creates an invoice reader component for extracting TAIP-16 invoice data from PDF invoices
2186
+ *
2187
+ * The component provides a PDF drag-and-drop upload UI. On upload, the PDF is
2188
+ * parsed and the extracted invoice data is returned. On completion,
2189
+ * the response contains the TAIP-16 invoice data.
2190
+ *
2191
+ * @returns A new EmbeddedComponent instance for invoice reader creation
2192
+ * @public
2193
+ */
2194
+ createInvoiceReader(): EmbeddedComponent<InvoiceReaderResponse, Record<string, never>>;
1420
2195
  /**
1421
2196
  * Creates a deposit assist component
1422
2197
  *
@@ -1478,6 +2253,171 @@ export declare interface NotabeneConfig {
1478
2253
  locale?: string;
1479
2254
  }
1480
2255
 
2256
+ /**
2257
+ * Order Reference
2258
+ * Reference to a related order
2259
+ */
2260
+ declare interface OrderReference {
2261
+ /**
2262
+ * Order identifier
2263
+ */
2264
+ id: string;
2265
+ /**
2266
+ * Date when the order was issued
2267
+ * ISO 8601 date format (YYYY-MM-DD)
2268
+ */
2269
+ issueDate?: string;
2270
+ }
2271
+
2272
+ /**
2273
+ * Organization Interface
2274
+ * Represents a legal entity (company, institution, merchant) in TAP transactions.
2275
+ * Supports both schema.org/Organization properties and IVMS101 identity data for compliance.
2276
+ *
2277
+ * Organizations typically have less privacy concerns than natural persons, making direct
2278
+ * inclusion of IVMS101 data more common for transparency and compliance purposes.
2279
+ *
2280
+ * @example
2281
+ * ```typescript
2282
+ * // Basic organization with schema.org properties
2283
+ * const basicOrg: Organization = {
2284
+ * "@id": "did:web:example.com",
2285
+ * "@type": "https://schema.org/Organization",
2286
+ * name: "Example Corp",
2287
+ * url: "https://example.com",
2288
+ * email: "contact@example.com"
2289
+ * };
2290
+ *
2291
+ * // VASP with full compliance data
2292
+ * const vasp: Organization = {
2293
+ * "@id": "did:web:vasp.example.com",
2294
+ * "@type": "https://schema.org/Organization",
2295
+ * name: "Example Virtual Asset Service Provider",
2296
+ * leiCode: "969500KN90DZLPGW6898",
2297
+ * url: "https://vasp.example.com",
2298
+ * logo: "https://vasp.example.com/logo.png",
2299
+ * description: "Licensed Virtual Asset Service Provider",
2300
+ * email: "compliance@vasp.example.com",
2301
+ * telephone: "+1-555-123-4567",
2302
+ * geographicAddress: [{
2303
+ * addressType: "BIZZ",
2304
+ * streetName: "456 Financial District",
2305
+ * buildingNumber: "456",
2306
+ * postCode: "10005",
2307
+ * townName: "New York",
2308
+ * country: "US"
2309
+ * }],
2310
+ * nationalIdentifier: {
2311
+ * nationalIdentifier: "12-3456789",
2312
+ * nationalIdentifierType: "TXID", // Tax ID
2313
+ * countryOfIssue: "US"
2314
+ * },
2315
+ * countryOfRegistration: "US"
2316
+ * };
2317
+ *
2318
+ * // Merchant with MCC
2319
+ * const merchant: Organization = {
2320
+ * "@id": "did:web:coffee.example.com",
2321
+ * "@type": "https://schema.org/Organization",
2322
+ * name: "Downtown Coffee Shop",
2323
+ * mcc: "5812", // Restaurant
2324
+ * url: "https://coffee.example.com",
2325
+ * geographicAddress: [{
2326
+ * addressType: "BIZZ",
2327
+ * streetName: "123 Main Street",
2328
+ * buildingNumber: "123",
2329
+ * postCode: "12345",
2330
+ * townName: "Anytown",
2331
+ * country: "US"
2332
+ * }]
2333
+ * };
2334
+ * ```
2335
+ *
2336
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-6.md | TAIP-6: Party Identification}
2337
+ * @see {@link https://schema.org/Organization | schema.org/Organization}
2338
+ */
2339
+ declare interface Organization extends Participant {
2340
+ "@type": "https://schema.org/Organization";
2341
+ /**
2342
+ * Legal Entity Identifier (LEI) code
2343
+ * 20-character alphanumeric code that uniquely identifies legal entities globally
2344
+ * Used to uniquely identify legal entities involved in financial transactions
2345
+ * @example "969500KN90DZLPGW6898"
2346
+ * @see {@link https://www.iso.org/standard/59771.html | ISO 17442}
2347
+ */
2348
+ leiCode?: LEICode;
2349
+ /**
2350
+ * Legal name of the organization
2351
+ * Can be a simple string or structured IVMS101 name identifiers
2352
+ * For regulated entities, IVMS101 format may be required for compliance
2353
+ * @example "Example Corporation Inc." // Simple string
2354
+ * @example [{ legalPersonName: "Example Corp", legalPersonNameIdentifierType: "LEGL" }] // IVMS101
2355
+ */
2356
+ name?: string | LegalPersonNameId[];
2357
+ /**
2358
+ * Customer identification string
2359
+ * Internal identifier used by the institution for this organization
2360
+ * @example "CORP-789012"
2361
+ */
2362
+ customerIdentification?: string;
2363
+ /**
2364
+ * National identification documents
2365
+ * Government-issued identifiers like tax ID, business registration number
2366
+ * @example { nationalIdentifier: "12-3456789", nationalIdentifierType: "TXID", countryOfIssue: "US" }
2367
+ */
2368
+ nationalIdentifier?: NationalIdentification_2<LegalEntityNationalIdentifierTypeCode>;
2369
+ /**
2370
+ * Merchant Category Code (ISO 18245)
2371
+ * Standard classification code for merchant types in payment transactions
2372
+ * Used primarily for merchants in payment requests
2373
+ *
2374
+ * @example "5411" // Grocery stores and supermarkets
2375
+ * @example "5812" // Restaurants
2376
+ * @example "5734" // Computer software stores
2377
+ * @example "6012" // Financial institutions
2378
+ * @see {@link https://www.iso.org/standard/33365.html | ISO 18245}
2379
+ */
2380
+ mcc?: string;
2381
+ /**
2382
+ * URL pointing to the organization's website
2383
+ * Based on schema.org/Organization
2384
+ * @example "https://example.vasp.com"
2385
+ * @example "https://merchant.example.com"
2386
+ */
2387
+ url?: string;
2388
+ /**
2389
+ * URL pointing to the organization's logo image
2390
+ * Based on schema.org/Organization
2391
+ * @example "https://example.vasp.com/logo.png"
2392
+ * @example "https://cdn.example.com/assets/logo.svg"
2393
+ */
2394
+ logo?: string;
2395
+ /**
2396
+ * Description of the organization
2397
+ * Based on schema.org/Organization
2398
+ * @example "Licensed Virtual Asset Service Provider"
2399
+ * @example "Online marketplace for digital assets and collectibles"
2400
+ * @example "Full-service financial institution"
2401
+ */
2402
+ description?: string;
2403
+ /**
2404
+ * Physical addresses of the organization
2405
+ * IVMS101 format addresses for regulatory compliance
2406
+ * Supports multiple address types (BIZZ for business, etc.)
2407
+ * @example [{ addressType: "BIZZ", streetName: "456 Business Ave", townName: "Finance City", country: "US" }]
2408
+ */
2409
+ geographicAddress?: Address_2[];
2410
+ /**
2411
+ * Country of registration/incorporation
2412
+ * ISO 3166-1 alpha-2 country code where the organization is legally registered
2413
+ * @example "US" // United States
2414
+ * @example "GB" // United Kingdom
2415
+ * @example "SG" // Singapore
2416
+ * @example "CH" // Switzerland
2417
+ */
2418
+ countryOfRegistration?: CountryCode;
2419
+ }
2420
+
1481
2421
  /**
1482
2422
  * Originating VASP
1483
2423
  * Represents the VASP which initiates the VA transfer
@@ -1510,7 +2450,6 @@ declare type OriginatorFields = {
1510
2450
 
1511
2451
  declare type OriginatorV2 = {
1512
2452
  originatorPerson: PersonV2[];
1513
- customerIdentification?: string;
1514
2453
  };
1515
2454
 
1516
2455
  /**
@@ -1541,6 +2480,40 @@ export declare interface OwnershipProof {
1541
2480
  address: CAIP10;
1542
2481
  }
1543
2482
 
2483
+ /**
2484
+ * Participant in a TAP transaction
2485
+ * Represents either a party (originator/beneficiary) or an agent in the transaction.
2486
+ * Can include verification methods and policies.
2487
+ *
2488
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-5.md | TAIP-5: Agents}
2489
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-6.md | TAIP-6: Party Identification}
2490
+ */
2491
+ declare interface Participant {
2492
+ /**
2493
+ * Unique identifier for the participant
2494
+ * Can be either a DID or an IRI
2495
+ */
2496
+ "@id": DID_2 | IRI;
2497
+ "@context"?: string | string[];
2498
+ "@type"?: string | string[];
2499
+ /**
2500
+ * Contact email address
2501
+ * Based on schema.org/Organization and schema.org/Person
2502
+ * @example "compliance@example.vasp.com"
2503
+ */
2504
+ email?: string;
2505
+ /**
2506
+ * Contact telephone number
2507
+ * Based on schema.org/Organization and schema.org/Person
2508
+ * @example "+1-555-123-4567"
2509
+ */
2510
+ telephone?: string;
2511
+ }
2512
+
2513
+ declare type Party = Person_2 | Organization;
2514
+
2515
+ declare type PartyType = "originator" | "beneficiary" | "customer" | "merchant" | "principal";
2516
+
1544
2517
  /**
1545
2518
  * 6.7
1546
2519
  * Data describing the contents of the payload.
@@ -1574,6 +2547,115 @@ declare type Person = {
1574
2547
  legalPerson?: LegalPerson_2;
1575
2548
  };
1576
2549
 
2550
+ /**
2551
+ * Person Interface
2552
+ * Represents a natural person (individual) in TAP transactions.
2553
+ * Supports both schema.org/Person properties and IVMS101 identity data for compliance.
2554
+ *
2555
+ * **Privacy Considerations**: For natural person information, consider using selective disclosure
2556
+ * (TAIP-8) to protect sensitive data, especially when including IVMS101 fields like national
2557
+ * identifiers and detailed addresses.
2558
+ *
2559
+ * @example
2560
+ * ```typescript
2561
+ * // Basic person with schema.org properties
2562
+ * const basicPerson: Person = {
2563
+ * "@id": "did:example:alice",
2564
+ * "@type": "https://schema.org/Person",
2565
+ * name: "Alice Johnson",
2566
+ * email: "alice@example.com"
2567
+ * };
2568
+ *
2569
+ * // Person with IVMS101 compliance data
2570
+ * const compliancePerson: Person = {
2571
+ * "@id": "did:example:bob",
2572
+ * "@type": "https://schema.org/Person",
2573
+ * name: [{
2574
+ * primaryIdentifier: "Robert",
2575
+ * secondaryIdentifier: "Smith",
2576
+ * nameIdentifierType: "LEGL"
2577
+ * }],
2578
+ * geographicAddress: [{
2579
+ * addressType: "HOME",
2580
+ * streetName: "123 Main Street",
2581
+ * buildingNumber: "123",
2582
+ * postCode: "12345",
2583
+ * townName: "Example City",
2584
+ * country: "US"
2585
+ * }],
2586
+ * nationalIdentifier: {
2587
+ * nationalIdentifier: "123-45-6789",
2588
+ * nationalIdentifierType: "ARNU", // Social Security Number
2589
+ * countryOfIssue: "US"
2590
+ * },
2591
+ * dateAndPlaceOfBirth: {
2592
+ * dateOfBirth: "1990-01-15",
2593
+ * placeOfBirth: "New York, NY, US"
2594
+ * },
2595
+ * countryOfResidence: "US"
2596
+ * };
2597
+ * ```
2598
+ *
2599
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-6.md | TAIP-6: Party Identification}
2600
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-8.md | TAIP-8: Selective Disclosure}
2601
+ */
2602
+ declare interface Person_2 extends Participant {
2603
+ "@type": "https://schema.org/Person";
2604
+ /**
2605
+ * SHA-256 hash of the normalized participant name
2606
+ * Used for privacy-preserving name matching per TAIP-12
2607
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-12.md | TAIP-12: Privacy-Preserving Name Matching}
2608
+ */
2609
+ nameHash?: string;
2610
+ /**
2611
+ * Customer identification string
2612
+ * Internal identifier used by the institution for this person
2613
+ * @example "CUST-123456"
2614
+ */
2615
+ customerIdentification?: string;
2616
+ /**
2617
+ * Person's name
2618
+ * Can be a simple string or structured IVMS101 name identifiers
2619
+ * For compliance use cases, IVMS101 format provides more detailed name structure
2620
+ * @example "Alice Johnson" // Simple string
2621
+ * @example [{ primaryIdentifier: "Alice", secondaryIdentifier: "Johnson", nameIdentifierType: "LEGL" }] // IVMS101
2622
+ */
2623
+ name?: string | NaturalPersonNameId[];
2624
+ /**
2625
+ * Geographic addresses associated with the person
2626
+ * IVMS101 format addresses for travel rule compliance
2627
+ * Supports multiple address types (HOME, BIZZ, etc.)
2628
+ * @example [{ addressType: "HOME", streetName: "123 Main St", townName: "City", country: "US" }]
2629
+ */
2630
+ geographicAddress?: Address_2[];
2631
+ /**
2632
+ * National identification documents
2633
+ * Government-issued identifiers like passport, SSN, driver's license
2634
+ * **Privacy**: Consider selective disclosure for sensitive ID information
2635
+ * @example { nationalIdentifier: "123-45-6789", nationalIdentifierType: "ARNU", countryOfIssue: "US" }
2636
+ */
2637
+ nationalIdentifier?: NationalIdentification_2<NaturalPersonNationalIdentifierTypeCode>;
2638
+ /**
2639
+ * Date and place of birth information
2640
+ * Used for identity verification and compliance
2641
+ * **Privacy**: Highly sensitive data - recommend selective disclosure
2642
+ */
2643
+ dateAndPlaceOfBirth?: {
2644
+ /** Date of birth in ISO 8601 format (YYYY-MM-DD) */
2645
+ dateOfBirth: string;
2646
+ /** Place of birth (city, state/province, country) */
2647
+ placeOfBirth: string;
2648
+ };
2649
+ /**
2650
+ * Country of residence
2651
+ * ISO 3166-1 alpha-2 country code where the person resides
2652
+ * @example "US"
2653
+ * @example "CA"
2654
+ * @example "GB"
2655
+ */
2656
+ countryOfResidence?: CountryCode;
2657
+ }
2658
+
1577
2659
  /**
1578
2660
  * The type of counterparty. Either a natural person or a legal person. If the customer is the same as the counterparty then the counterparty is a self.
1579
2661
  * @public
@@ -1606,6 +2688,46 @@ declare type PersonV2 = Omit<Person, 'naturalPerson'> & {
1606
2688
  accountNumber?: string[];
1607
2689
  };
1608
2690
 
2691
+ /**
2692
+ * Policy type definition
2693
+ * Union type of all possible policy types in TAP.
2694
+ */
2695
+ declare type Policies = RequireAuthorization | RequirePresentation | RequireRelationshipConfirmation | RequirePurpose;
2696
+
2697
+ /**
2698
+ * Base interface for all TAP policy types.
2699
+ * Policies define requirements and constraints that must be satisfied during a transaction.
2700
+ * Each specific policy type extends this base interface with its own requirements.
2701
+ *
2702
+ * @template T - The specific policy type identifier (e.g. "RequireAuthorization", "RequirePresentation")
2703
+ *
2704
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-7.md | TAIP-7: Policies}
2705
+ */
2706
+ declare interface Policy<T extends string> extends JsonLdObject<T> {
2707
+ /** The type identifier for this policy */
2708
+ "@type": T;
2709
+ /**
2710
+ * Optional DID of the party or agent required to fulfill this policy
2711
+ * Can be a single DID or an array of DIDs
2712
+ */
2713
+ from?: DID_2 | IRI;
2714
+ /**
2715
+ * Optional role of the party required to fulfill this policy
2716
+ * E.g. 'SettlementAddress', 'SourceAddress', or 'CustodialService'
2717
+ */
2718
+ fromRole?: AgentRoles;
2719
+ /**
2720
+ * Optional agent representing a party required to fulfill this policy
2721
+ * E.g. 'originator' or 'beneficiary' in TAIP-3
2722
+ */
2723
+ fromAgent?: PartyType;
2724
+ /**
2725
+ * Optional human-readable description of the policy's purpose
2726
+ * Used to explain why this requirement exists
2727
+ */
2728
+ purpose?: string;
2729
+ }
2730
+
1609
2731
  /**
1610
2732
  * Status of the ownership proof verification process
1611
2733
  *
@@ -1693,6 +2815,74 @@ export declare interface RefreshSource {
1693
2815
 
1694
2816
  declare type RequestID = UUID;
1695
2817
 
2818
+ /**
2819
+ * Policy requiring authorization before proceeding
2820
+ * Used to ensure specific agents authorize a transaction.
2821
+ *
2822
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-7.md | TAIP-7: Policies}
2823
+ */
2824
+ declare interface RequireAuthorization extends Policy<"RequireAuthorization"> {
2825
+ }
2826
+
2827
+ /**
2828
+ * Policy requiring presentation of verifiable credentials
2829
+ * Used to request specific verifiable credentials from participants.
2830
+ *
2831
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-7.md | TAIP-7: Policies}
2832
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-8.md | TAIP-8: Verifiable Credentials}
2833
+ */
2834
+ declare interface RequirePresentation extends Policy<"RequirePresentation"> {
2835
+ /**
2836
+ * Optional DID of the party the presentation is about
2837
+ * Used when requesting credentials about a specific party
2838
+ */
2839
+ aboutParty?: DID_2 | IRI;
2840
+ /**
2841
+ * Optional DID of the agent the presentation is about
2842
+ * Used when requesting credentials about a specific agent
2843
+ */
2844
+ aboutAgent?: DID_2 | IRI;
2845
+ /**
2846
+ * Presentation Exchange definition
2847
+ * Specifies the required credentials and constraints
2848
+ */
2849
+ presentationDefinition: string;
2850
+ /**
2851
+ * Optional credential type shorthand
2852
+ * Simplified way to request a specific credential type
2853
+ */
2854
+ credentialType?: string;
2855
+ }
2856
+
2857
+ /**
2858
+ * Policy requiring purpose codes for transactions
2859
+ * Used to enforce the inclusion of ISO 20022 purpose codes.
2860
+ *
2861
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-13.md | TAIP-13: Purpose Codes}
2862
+ */
2863
+ declare interface RequirePurpose extends Policy<"RequirePurpose"> {
2864
+ /**
2865
+ * Required purpose code fields
2866
+ * Specifies which purpose code types must be included
2867
+ */
2868
+ required: Array<"purpose" | "categoryPurpose">;
2869
+ }
2870
+
2871
+ /**
2872
+ * Policy requiring relationship confirmation
2873
+ * Used to verify control of addresses and relationships between parties.
2874
+ *
2875
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-7.md | TAIP-7: Policies}
2876
+ * @see {@link https://github.com/TransactionAuthorizationProtocol/TAIPs/blob/main/TAIPs/taip-9.md | TAIP-9: Proof of Relationship}
2877
+ */
2878
+ declare interface RequireRelationshipConfirmation extends Policy<"RequireRelationshipConfirmation"> {
2879
+ /**
2880
+ * Required nonce for signature
2881
+ * Prevents replay attacks
2882
+ */
2883
+ nonce: string;
2884
+ }
2885
+
1696
2886
  /**
1697
2887
  * Represents a resize request component message. This is handled by the library.
1698
2888
  * @internal
@@ -1844,6 +3034,131 @@ export declare enum Status {
1844
3034
  BANNED = "banned"
1845
3035
  }
1846
3036
 
3037
+ /**
3038
+ * Tax Category
3039
+ * Represents a tax category with its rate and scheme
3040
+ */
3041
+ declare interface TaxCategory {
3042
+ /**
3043
+ * Tax category identifier
3044
+ * Uses UBL Tax Category Code standard
3045
+ *
3046
+ * @example TaxCategoryCode.StandardRate
3047
+ * @example TaxCategoryCode.ZeroRated
3048
+ * @example TaxCategoryCode.ExemptFromTax
3049
+ */
3050
+ id: TaxCategoryCode;
3051
+ /**
3052
+ * Tax rate percentage
3053
+ *
3054
+ * @example 20.0 // 20% VAT
3055
+ * @example 0.0 // Zero rate
3056
+ */
3057
+ percent: number;
3058
+ /**
3059
+ * Tax scheme identifier
3060
+ * Uses UBL Tax Scheme Code standard
3061
+ *
3062
+ * @example TaxSchemeCode.ValueAddedTax
3063
+ * @example TaxSchemeCode.GoodsAndServicesTax
3064
+ * @example TaxSchemeCode.SalesTax
3065
+ */
3066
+ taxScheme: TaxSchemeCode | string;
3067
+ }
3068
+
3069
+ /**
3070
+ * UBL Tax Category Code standard (UN/ECE 5305 Tax Category Code)
3071
+ * Based on UN/CEFACT and EU tax categories
3072
+ *
3073
+ * @see {@link http://docs.oasis-open.org/ubl/os-UBL-2.1/cl/gc/default/TaxCategory-2.1.gc | UBL Tax Category Codes}
3074
+ * @see {@link https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/ | PEPPOL BIS 3.0 Tax Category Codes}
3075
+ */
3076
+ declare enum TaxCategoryCode {
3077
+ StandardRate = "S",
3078
+ ZeroRated = "Z",
3079
+ ExemptFromTax = "E",
3080
+ VATReverseCharge = "AE",
3081
+ FreeExportItem = "G",
3082
+ OutsideScopeOfTax = "O",
3083
+ VATExemptIntraCommunity = "K",
3084
+ CanaryIslandsIndirectTax = "L",
3085
+ CeutaMelillaTax = "M",
3086
+ HigherRate = "H",
3087
+ LowerRate = "AA",
3088
+ TransferredVAT = "B",
3089
+ MixedTaxRate = "A",
3090
+ ExemptForResale = "AB",
3091
+ VATReverseChargeAlt = "AC",
3092
+ VATExemptIntraCommunityAlt = "AD",
3093
+ ExemptFromTaxDeprecated = "C",
3094
+ ExemptArticle309 = "D"
3095
+ }
3096
+
3097
+ /**
3098
+ * UBL Tax Scheme Code standard (UN/ECE 5305 Tax Type Code)
3099
+ * Based on UN/CEFACT tax types
3100
+ *
3101
+ * @see {@link http://docs.oasis-open.org/ubl/os-UBL-2.1/cl/gc/default/TaxScheme-2.1.gc | UBL Tax Scheme Codes}
3102
+ */
3103
+ declare enum TaxSchemeCode {
3104
+ ProfitTax = "AAA",
3105
+ CorporateIncomeTax = "AAB",
3106
+ PersonalIncomeTax = "AAC",
3107
+ SocialSecurityTax = "AAD",
3108
+ PropertyTax = "AAE",
3109
+ InheritanceTax = "AAF",
3110
+ GiftTax = "AAG",
3111
+ CapitalGainsTax = "AAH",
3112
+ WealthTax = "AAI",
3113
+ StampDuty = "AAJ",
3114
+ ConsumptionTax = "CST",
3115
+ CustomsDuty = "CUS",
3116
+ EnvironmentalTax = "ENV",
3117
+ ExciseTax = "EXC",
3118
+ ExportTax = "EXP",
3119
+ FreightTax = "FRT",
3120
+ GoodsAndServicesTax = "GST",
3121
+ ImportTax = "IMP",
3122
+ OtherTax = "OTH",
3123
+ SalesTax = "SAL",
3124
+ TurnoverTax = "TOT",
3125
+ ValueAddedTax = "VAT"
3126
+ }
3127
+
3128
+ /**
3129
+ * Tax Subtotal
3130
+ * Breakdown of taxes by category
3131
+ */
3132
+ declare interface TaxSubtotal {
3133
+ /**
3134
+ * Amount subject to this tax
3135
+ */
3136
+ taxableAmount: number;
3137
+ /**
3138
+ * Tax amount for this category
3139
+ */
3140
+ taxAmount: number;
3141
+ /**
3142
+ * Tax category information
3143
+ */
3144
+ taxCategory: TaxCategory;
3145
+ }
3146
+
3147
+ /**
3148
+ * Tax Total
3149
+ * Aggregate tax information for the invoice
3150
+ */
3151
+ declare interface TaxTotal {
3152
+ /**
3153
+ * Total tax amount for the invoice
3154
+ */
3155
+ taxAmount: number;
3156
+ /**
3157
+ * Breakdown of taxes by category
3158
+ */
3159
+ taxSubtotal?: TaxSubtotal[];
3160
+ }
3161
+
1847
3162
  /**
1848
3163
  * The theme of the Notabene SDK
1849
3164
  * @public
@@ -1972,6 +3287,7 @@ export declare interface TransactionOptions {
1972
3287
  microTransfer?: {
1973
3288
  destination: BlockchainAddress;
1974
3289
  amountSubunits: string;
3290
+ requireHash?: boolean;
1975
3291
  };
1976
3292
  fallbacks?: ProofTypes[];
1977
3293
  deminimis?: ThresholdOptions;
@@ -2052,6 +3368,43 @@ declare type TransliterationMethodCode = 'arab' | 'aran' | 'armn' | 'cyrl' | 'de
2052
3368
 
2053
3369
  */ export declare type TravelAddress = `ta${string}`;
2054
3370
 
3371
+ /**
3372
+ * UBL Unit of Measure Code standard
3373
+ * Based on UN/CEFACT code list
3374
+ *
3375
+ * @see {@link http://docs.oasis-open.org/ubl/os-UBL-2.1/cl/gc/default/UnitOfMeasureCode-2.1.gc | UBL Unit of Measure Codes}
3376
+ */
3377
+ declare enum UnitCode {
3378
+ Kilogram = "KGM",
3379
+ Gram = "GRM",
3380
+ Milligram = "MGM",
3381
+ Tonne = "TNE",
3382
+ Liter = "LTR",
3383
+ Milliliter = "MLT",
3384
+ CubicMillimeter = "MMQ",
3385
+ CubicCentimeter = "CMQ",
3386
+ CubicDecimeter = "DMQ",
3387
+ CubicMeter = "MTQ",
3388
+ Millimeter = "MMT",
3389
+ Centimeter = "CMT",
3390
+ Decimeter = "DMT",
3391
+ Meter = "MTR",
3392
+ Kilometer = "KMT",
3393
+ SquareMeter = "MTK",
3394
+ Each = "EA",
3395
+ Piece = "PCE",
3396
+ NumberOfPairs = "NPR",
3397
+ Second = "SEC",
3398
+ Minute = "MIN",
3399
+ Hour = "HUR",
3400
+ Day = "DAY",
3401
+ Week = "WEE",
3402
+ Month = "MON",
3403
+ Year = "ANN",
3404
+ KilowattHour = "KWH",
3405
+ NumberOfArticles = "NAR"
3406
+ }
3407
+
2055
3408
  /**
2056
3409
  * Message type for updating component state and configuration from host application
2057
3410
  *
@@ -2079,6 +3432,7 @@ export declare type UpdateValue<T, O> = {
2079
3432
 
2080
3433
  /**
2081
3434
  * A Uniform Resource Identifier
3435
+ * @remarks This type will be narrowed to `` `${string}:${string}` `` in the next major release.
2082
3436
  * @public
2083
3437
  */
2084
3438
  declare type URI = string;