@notabene/javascript-sdk 2.13.0 → 2.14.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.
@@ -10,7 +10,7 @@
10
10
  "author": "Notabene <developers@notabene.id>",
11
11
  "license": "MIT",
12
12
  "packageManager": "yarn@4.5.1",
13
- "version": "2.13.0",
13
+ "version": "2.14.0-next.4",
14
14
  "source": "src/notabene.ts",
15
15
  "main": "dist/cjs/notabene.cjs",
16
16
  "module": "dist/esm/notabene.js",
@@ -32,7 +32,7 @@
32
32
  "import": "./dist/esm/notabene.js",
33
33
  "require": "./dist/cjs/notabene.cjs"
34
34
  },
35
- "./src/ivms/types": "./src/ivms/types.ts"
35
+ "./src/ivms/types": "./src/ivms/index.ts"
36
36
  },
37
37
  "browserslist": "> 0.5%, last 2 versions, not dead",
38
38
  "publishConfig": {
@@ -104,5 +104,9 @@
104
104
  "extends": [
105
105
  "@commitlint/config-conventional"
106
106
  ]
107
+ },
108
+ "dependencies": {
109
+ "@taprsvp/types": "^1.13.0",
110
+ "jose": "^6.1.0"
107
111
  }
108
112
  }
@@ -1,3 +1,6 @@
1
+ import type { Agent as Agent_2 } from '@taprsvp/types';
2
+ import type { DID as DID_2 } from '@taprsvp/types';
3
+
1
4
  /**
2
5
  * A blockchain account
3
6
  * @public
@@ -99,6 +102,11 @@ declare type BeneficiaryFields = {
99
102
  destination?: Destination;
100
103
  };
101
104
 
105
+ declare type BeneficiaryV2 = {
106
+ beneficiaryPerson: PersonV2[];
107
+ customerIdentification?: string;
108
+ };
109
+
102
110
  /**
103
111
  * Beneficiary VASP
104
112
  * Represents the VASP which receives the VA transfer
@@ -320,6 +328,151 @@ export declare interface ComponentResponse {
320
328
  errors: ValidationError[];
321
329
  }
322
330
 
331
+ /**
332
+ * Transforms a Notabene component response to IVMS101 format
333
+ *
334
+ * @param response - The response from the Notabene Embedded Component
335
+ * @param delegateToken - The JWT delegate token for extracting the originator ID
336
+ * @param config - Configuration object with optional IDs
337
+ * @param config.originatorId - Optional originator ID (auto-extracted from delegateToken if not provided)
338
+ * @param config.beneficiaryId - Optional beneficiary ID (auto-generated if not provided)
339
+ * @param config.referenceId - Optional reference ID for the transaction
340
+ * @param config.originator - Optional originator data in V2 format
341
+ * @returns The transformed request body in IVMS101 format
342
+ *
343
+ * @example
344
+ * ```typescript
345
+ * import { componentResponseToIVMS101 } from '$lib/notabene-tx-transformer';
346
+ *
347
+ * const requestBody = componentResponseToIVMS101(
348
+ * result.response,
349
+ * session.user.token,
350
+ * { originator: myOriginatorData }
351
+ * );
352
+ *
353
+ * await fetch('/entity/${vaspDid}/tx/${txId}/append', {
354
+ * method: 'POST',
355
+ * body: JSON.stringify(requestBody)
356
+ * });
357
+ * ```
358
+ */
359
+ export declare function componentResponseToIVMS101(response: TransactionResponse<Withdrawal>, delegateToken: string, config?: ResponseToTxRequestConfig): TransactionIVMS101Request;
360
+
361
+ /**
362
+ * Transforms a Notabene component response to a Version 2 transaction create API request body
363
+ *
364
+ * @param response - The response from the Notabene Embedded Component
365
+ * @param delegateToken - The JWT delegate token for extracting the originator ID
366
+ * @param config - Configuration object with optional IDs
367
+ * @param config.originatorId - Optional originator ID (auto-extracted from delegateToken if not provided)
368
+ * @param config.beneficiaryId - Optional beneficiary ID (auto-generated if not provided)
369
+ * @param config.referenceId - Optional reference ID for the transaction
370
+ * @returns The transformed request body ready for the Version 2 transaction create API
371
+ *
372
+ * @example
373
+ * ```typescript
374
+ * import { componentResponseToTxCreateRequest } from '$lib/notabene-tx-transformer';
375
+ *
376
+ * withdrawal.on('complete', async (result) => {
377
+ * const requestBody = componentResponseToTxCreateRequest(
378
+ * result.response,
379
+ * {
380
+ * originatorId: 'mailto:user@example.com',
381
+ * beneficiaryId: 'urn:beneficiary:recipient',
382
+ * referenceId: 'tx-12345'
383
+ * }
384
+ * );
385
+ *
386
+ * await fetch('/entity/${vaspDid}/tx', {
387
+ * method: 'POST',
388
+ * body: JSON.stringify(requestBody)
389
+ * });
390
+ * });
391
+ * ```
392
+ */
393
+ export declare function componentResponseToTxCreateRequest(response: TransactionResponse<Withdrawal>, delegateToken: string, config?: Omit<ResponseToTxRequestConfig, 'originator'>): TransactionCreateRequestV2;
394
+
395
+ /**
396
+ * Transforms a Notabene component response into txCreate, IVMS101, and confirmRelationship request bodies
397
+ *
398
+ * This is a convenience function that generates the transaction creation request,
399
+ * the IVMS101 data, and optionally the relationship confirmation proof in a single call,
400
+ * which is useful for V2 workflows where you need to create a transaction first,
401
+ * then append IVMS101 data to it, and finally confirm the relationship.
402
+ *
403
+ * @param response - The response from the Notabene Embedded Component
404
+ * @param delegateToken - The JWT delegate token for extracting the originator ID
405
+ * @param config - Optional configuration for IDs and reference
406
+ * @param config.originatorId - Optional originator ID (auto-extracted from delegateToken if not provided)
407
+ * @param config.beneficiaryId - Optional beneficiary ID (auto-generated if not provided)
408
+ * @param config.referenceId - Optional reference ID (auto-generated if not provided)
409
+ * @param config.originator - Optional originator data in V2 format
410
+ * @returns Object with `createTx`, `ivms101`, and optional `confirmRelationship` properties containing the respective request bodies
411
+ *
412
+ * @example
413
+ * ```typescript
414
+ * import { componentResponseToTxRequests } from '$lib/notabene-tx-transformer';
415
+ *
416
+ * withdrawal.on('complete', async (result) => {
417
+ * const { createTx, ivms101, confirmRelationship } = componentResponseToTxRequests(
418
+ * result.response,
419
+ * session.user.token,
420
+ * { originator: originatorData }
421
+ * );
422
+ *
423
+ * // First, create the transaction
424
+ * const txResponse = await fetch('/entity/${vaspDid}/tx', {
425
+ * method: 'POST',
426
+ * body: JSON.stringify(createTx)
427
+ * });
428
+ *
429
+ * // Then, append IVMS101 data
430
+ * const txId = txResponse.transfer['@id'];
431
+ * await fetch(`/entity/${vaspDid}/tx/${txId}/append`, {
432
+ * method: 'POST',
433
+ * body: JSON.stringify(ivms101)
434
+ * });
435
+ *
436
+ * // Finally, confirm relationship
437
+ * if (confirmRelationship) {
438
+ * await fetch(`/entity/${vaspDid}/relationship?to=${to}&from=${from}`, {
439
+ * method: 'PATCH',
440
+ * body: JSON.stringify({ proof: confirmRelationship.proof })
441
+ * });
442
+ * }
443
+ * });
444
+ * ```
445
+ */
446
+ export declare function componentResponseToTxRequests(response: TransactionResponse<Withdrawal>, delegateToken: string, config?: ResponseToTxRequestConfig): {
447
+ createTx: TransactionCreateRequestV2;
448
+ ivms101: TransactionIVMS101Request;
449
+ confirmRelationship?: {
450
+ proof: OwnershipProof;
451
+ };
452
+ };
453
+
454
+ /**
455
+ * Transforms a Notabene component response to a Version 1 API request body
456
+ *
457
+ * @param response - The response from the Notabene TX Create component
458
+ * @returns The transformed request body ready for the Version 1 API
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * import { componentResponseToV1TxCreateRequest } from '$lib/notabene-tx-transformer';
463
+ *
464
+ * withdrawal.on('complete', async (result) => {
465
+ * const requestBody = componentResponseToV1TxCreateRequest(result.response);
466
+ *
467
+ * await fetch(endpointUrl, {
468
+ * method: 'POST',
469
+ * body: JSON.stringify(requestBody)
470
+ * });
471
+ * });
472
+ * ```
473
+ */
474
+ export declare function componentResponseToV1TxCreateRequest(response: TransactionResponse<Withdrawal>): TransactionCreateRequest;
475
+
323
476
  export declare interface ConnectionData<T extends ComponentRequest> {
324
477
  readonly tx: T;
325
478
  readonly authToken?: string;
@@ -1132,6 +1285,12 @@ declare type NaturalPersonNameID = {
1132
1285
  nameIdentifierType?: NaturalPersonNameTypeCode;
1133
1286
  };
1134
1287
 
1288
+ declare type NaturalPersonNameIDV2 = {
1289
+ primaryIdentifier?: string;
1290
+ secondaryIdentifier?: string;
1291
+ naturalPersonNameIdentifierType?: NaturalPersonNameTypeCode;
1292
+ };
1293
+
1135
1294
  /**
1136
1295
  * Natural Person Name Type Code
1137
1296
  * Specifies the type of name for a natural person
@@ -1140,6 +1299,14 @@ declare type NaturalPersonNameID = {
1140
1299
  */
1141
1300
  declare type NaturalPersonNameTypeCode = 'ALIA' | 'BIRT' | 'MAID' | 'LEGL' | 'MISC';
1142
1301
 
1302
+ declare type NaturalPersonNameV2 = Omit<NaturalPersonName, 'nameIdentifier'> & {
1303
+ nameIdentifier?: NaturalPersonNameIDV2[];
1304
+ };
1305
+
1306
+ declare type NaturalPersonV2 = Omit<NaturalPerson_2, 'name'> & {
1307
+ name: NaturalPersonNameV2;
1308
+ };
1309
+
1143
1310
  /**
1144
1311
  * Primary constructor for Notabene UX elements
1145
1312
  *
@@ -1311,6 +1478,11 @@ declare type OriginatorFields = {
1311
1478
  source?: Source | Source[];
1312
1479
  };
1313
1480
 
1481
+ declare type OriginatorV2 = {
1482
+ originatorPerson: PersonV2[];
1483
+ customerIdentification?: string;
1484
+ };
1485
+
1314
1486
  /**
1315
1487
  * Base interface for proving ownership of an account or address
1316
1488
  *
@@ -1399,6 +1571,11 @@ export declare enum PersonType {
1399
1571
  SELF = "self"
1400
1572
  }
1401
1573
 
1574
+ declare type PersonV2 = Omit<Person, 'naturalPerson'> & {
1575
+ naturalPerson?: NaturalPersonV2;
1576
+ accountNumber?: string[];
1577
+ };
1578
+
1402
1579
  /**
1403
1580
  * Status of the ownership proof verification process
1404
1581
  *
@@ -1497,6 +1674,13 @@ export declare type ResizeRequest = {
1497
1674
  height: number;
1498
1675
  };
1499
1676
 
1677
+ export declare interface ResponseToTxRequestConfig {
1678
+ originatorId?: DID_2;
1679
+ beneficiaryId?: DID_2;
1680
+ referenceId?: string;
1681
+ originator?: OriginatorV2;
1682
+ }
1683
+
1500
1684
  /**
1501
1685
  * Ownership Proof using Screenshot
1502
1686
  * @public
@@ -1680,6 +1864,44 @@ export declare interface Transaction extends ComponentRequest {
1680
1864
  */
1681
1865
  export declare type TransactionAsset = NotabeneAsset | CAIP19 | DTI;
1682
1866
 
1867
+ export declare interface TransactionCreateRequest {
1868
+ transactionAsset: any;
1869
+ transactionAmount: string;
1870
+ beneficiaryDid?: string;
1871
+ originatorVASPdid: string;
1872
+ beneficiaryVASPdid?: string;
1873
+ beneficiaryVASPname?: string;
1874
+ beneficiaryVASPwebsite?: string;
1875
+ transactionBlockchainInfo: {
1876
+ origin?: string;
1877
+ destination?: string;
1878
+ };
1879
+ beneficiaryProof?: any;
1880
+ beneficiary?: any;
1881
+ originator?: any;
1882
+ originatorEqualsBeneficiary?: boolean;
1883
+ }
1884
+
1885
+ export declare interface TransactionCreateRequestV2 {
1886
+ originator: {
1887
+ '@id': string;
1888
+ };
1889
+ beneficiary: {
1890
+ '@id': string;
1891
+ };
1892
+ asset: string;
1893
+ amount: string;
1894
+ agents: Agent_2[];
1895
+ ref: string;
1896
+ }
1897
+
1898
+ export declare interface TransactionIVMS101Request {
1899
+ ivms101: {
1900
+ originator?: OriginatorV2;
1901
+ beneficiary?: BeneficiaryV2;
1902
+ };
1903
+ }
1904
+
1683
1905
  /**
1684
1906
  * Configuration options for Transaction components
1685
1907
  * @public
@@ -1701,6 +1923,7 @@ export declare interface TransactionOptions {
1701
1923
  vasps?: VASPOptions;
1702
1924
  hide?: ValidationSections[];
1703
1925
  counterpartyAssist?: CounterpartyAssistConfig;
1926
+ autoSubmit?: boolean;
1704
1927
  }
1705
1928
 
1706
1929
  /**