@trustvc/trustvc 1.0.4 → 1.1.0

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.
Files changed (43) hide show
  1. package/dist/core/endorsement-chain/fetchEscrowTransfer.d.mts +8 -0
  2. package/dist/core/endorsement-chain/fetchEscrowTransfer.d.ts +8 -0
  3. package/dist/core/endorsement-chain/fetchEscrowTransfer.js +167 -0
  4. package/dist/core/endorsement-chain/fetchTokenTransfer.d.mts +8 -0
  5. package/dist/core/endorsement-chain/fetchTokenTransfer.d.ts +8 -0
  6. package/dist/core/endorsement-chain/fetchTokenTransfer.js +58 -0
  7. package/dist/core/endorsement-chain/helpers.d.mts +11 -0
  8. package/dist/core/endorsement-chain/helpers.d.ts +11 -0
  9. package/dist/core/endorsement-chain/helpers.js +99 -0
  10. package/dist/core/endorsement-chain/index.d.mts +11 -0
  11. package/dist/core/endorsement-chain/index.d.ts +11 -0
  12. package/dist/core/endorsement-chain/index.js +47 -0
  13. package/dist/core/endorsement-chain/retrieveEndorsementChain.d.mts +8 -0
  14. package/dist/core/endorsement-chain/retrieveEndorsementChain.d.ts +8 -0
  15. package/dist/core/endorsement-chain/retrieveEndorsementChain.js +43 -0
  16. package/dist/core/endorsement-chain/types.d.mts +50 -0
  17. package/dist/core/endorsement-chain/types.d.ts +50 -0
  18. package/dist/core/endorsement-chain/types.js +2 -0
  19. package/dist/core/endorsement-chain/useEndorsementChain.d.mts +14 -0
  20. package/dist/core/endorsement-chain/useEndorsementChain.d.ts +14 -0
  21. package/dist/core/endorsement-chain/useEndorsementChain.js +103 -0
  22. package/dist/core/index.d.mts +11 -0
  23. package/dist/core/index.d.ts +11 -0
  24. package/dist/core/index.js +7 -0
  25. package/dist/esm/core/endorsement-chain/fetchEscrowTransfer.js +164 -0
  26. package/dist/esm/core/endorsement-chain/fetchTokenTransfer.js +56 -0
  27. package/dist/esm/core/endorsement-chain/helpers.js +94 -0
  28. package/dist/esm/core/endorsement-chain/index.js +6 -0
  29. package/dist/esm/core/endorsement-chain/retrieveEndorsementChain.js +41 -0
  30. package/dist/esm/core/endorsement-chain/types.js +1 -0
  31. package/dist/esm/core/endorsement-chain/useEndorsementChain.js +98 -0
  32. package/dist/esm/core/index.js +1 -0
  33. package/dist/esm/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.js +33 -30
  34. package/dist/esm/verify/fragments/document-status/w3cCredentialStatus.js +20 -10
  35. package/dist/index.d.mts +10 -0
  36. package/dist/index.d.ts +10 -0
  37. package/dist/token-registry-v5/typedContractMethod.d.mts +1 -1
  38. package/dist/token-registry-v5/typedContractMethod.d.ts +1 -1
  39. package/dist/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.js +33 -30
  40. package/dist/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.types.d.mts +1 -9
  41. package/dist/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.types.d.ts +1 -9
  42. package/dist/verify/fragments/document-status/w3cCredentialStatus.js +19 -9
  43. package/package.json +7 -7
@@ -0,0 +1,8 @@
1
+ import { providers } from 'ethers';
2
+ import { TitleEscrowTransferEvent, TransferBaseEvent } from './types.mjs';
3
+ import 'ethers/lib/utils';
4
+
5
+ declare const fetchEscrowTransfersV4: (provider: providers.Provider, address: string) => Promise<TitleEscrowTransferEvent[]>;
6
+ declare const fetchEscrowTransfersV5: (provider: providers.Provider, address: string) => Promise<TransferBaseEvent[]>;
7
+
8
+ export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 };
@@ -0,0 +1,8 @@
1
+ import { providers } from 'ethers';
2
+ import { TitleEscrowTransferEvent, TransferBaseEvent } from './types.js';
3
+ import 'ethers/lib/utils';
4
+
5
+ declare const fetchEscrowTransfersV4: (provider: providers.Provider, address: string) => Promise<TitleEscrowTransferEvent[]>;
6
+ declare const fetchEscrowTransfersV5: (provider: providers.Provider, address: string) => Promise<TransferBaseEvent[]>;
7
+
8
+ export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 };
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ var contracts = require('../../token-registry-v4/contracts');
4
+ var contracts$1 = require('../../token-registry-v5/contracts');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ const fetchEscrowTransfersV4 = /* @__PURE__ */ __name(async (provider, address) => {
9
+ const titleEscrowContract = contracts.TitleEscrow__factory.connect(address, provider);
10
+ const holderChangeLogsDeferred = await fetchHolderTransfers(titleEscrowContract, provider);
11
+ const ownerChangeLogsDeferred = await fetchOwnerTransfers(titleEscrowContract, provider);
12
+ const [holderChangeLogs, ownerChangeLogs] = await Promise.all([
13
+ holderChangeLogsDeferred,
14
+ ownerChangeLogsDeferred
15
+ ]);
16
+ return [...holderChangeLogs, ...ownerChangeLogs];
17
+ }, "fetchEscrowTransfersV4");
18
+ const fetchEscrowTransfersV5 = /* @__PURE__ */ __name(async (provider, address) => {
19
+ const titleEscrowContract = contracts$1.TitleEscrow__factory.connect(address, provider);
20
+ const holderChangeLogsDeferred = await fetchAllTransfers(titleEscrowContract);
21
+ return holderChangeLogsDeferred;
22
+ }, "fetchEscrowTransfersV5");
23
+ const getParsedLogs = /* @__PURE__ */ __name((logs, titleEscrow) => {
24
+ return logs.map((log) => {
25
+ if (!log.blockNumber) throw new Error("Block number not present");
26
+ return {
27
+ ...log,
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ ...titleEscrow.interface.parseLog(log)
30
+ };
31
+ });
32
+ }, "getParsedLogs");
33
+ const fetchOwnerTransfers = /* @__PURE__ */ __name(async (titleEscrowContract, provider) => {
34
+ const ownerChangeFilter = titleEscrowContract.filters.BeneficiaryTransfer(null, null);
35
+ const ownerChangeLogs = await provider.getLogs({ ...ownerChangeFilter, fromBlock: 0 });
36
+ const ownerChangeLogsParsed = getParsedLogs(ownerChangeLogs, titleEscrowContract);
37
+ return ownerChangeLogsParsed.map((event) => ({
38
+ type: "TRANSFER_BENEFICIARY",
39
+ owner: event.args.toBeneficiary,
40
+ blockNumber: event.blockNumber,
41
+ transactionHash: event.transactionHash,
42
+ transactionIndex: event.transactionIndex
43
+ }));
44
+ }, "fetchOwnerTransfers");
45
+ const fetchHolderTransfers = /* @__PURE__ */ __name(async (titleEscrowContract, provider) => {
46
+ const holderChangeFilter = titleEscrowContract.filters.HolderTransfer(null, null);
47
+ const holderChangeLogs = await provider.getLogs({ ...holderChangeFilter, fromBlock: 0 });
48
+ const holderChangeLogsParsed = getParsedLogs(holderChangeLogs, titleEscrowContract);
49
+ return holderChangeLogsParsed.map((event) => ({
50
+ type: "TRANSFER_HOLDER",
51
+ blockNumber: event.blockNumber,
52
+ holder: event.args.toHolder,
53
+ transactionHash: event.transactionHash,
54
+ transactionIndex: event.transactionIndex
55
+ }));
56
+ }, "fetchHolderTransfers");
57
+ const fetchAllTransfers = /* @__PURE__ */ __name(async (titleEscrowContract) => {
58
+ const allFilters = [
59
+ titleEscrowContract.filters.HolderTransfer,
60
+ titleEscrowContract.filters.BeneficiaryTransfer,
61
+ titleEscrowContract.filters.TokenReceived,
62
+ titleEscrowContract.filters.ReturnToIssuer,
63
+ // titleEscrowContract.filters.Nomination,
64
+ titleEscrowContract.filters.RejectTransferOwners,
65
+ titleEscrowContract.filters.RejectTransferBeneficiary,
66
+ titleEscrowContract.filters.RejectTransferHolder,
67
+ titleEscrowContract.filters.Shred
68
+ ];
69
+ const allLogs = await Promise.all(
70
+ allFilters.map(async (filter) => {
71
+ const logs = await titleEscrowContract.queryFilter(filter, 0, "latest");
72
+ return logs;
73
+ })
74
+ );
75
+ const holderChangeLogsParsed = getParsedLogs(allLogs.flat(), titleEscrowContract);
76
+ const tokenRegistryAddress = await titleEscrowContract.registry();
77
+ return holderChangeLogsParsed.map((event) => {
78
+ if (event?.name === "HolderTransfer") {
79
+ return {
80
+ type: "TRANSFER_HOLDER",
81
+ blockNumber: event.blockNumber,
82
+ holder: event.args.toHolder,
83
+ transactionHash: event.transactionHash,
84
+ transactionIndex: event.transactionIndex,
85
+ remark: event.args?.remark
86
+ };
87
+ } else if (event?.name === "BeneficiaryTransfer") {
88
+ return {
89
+ type: "TRANSFER_BENEFICIARY",
90
+ owner: event.args.toBeneficiary,
91
+ blockNumber: event.blockNumber,
92
+ transactionHash: event.transactionHash,
93
+ transactionIndex: event.transactionIndex,
94
+ remark: event.args?.remark
95
+ };
96
+ } else if (event?.name === "TokenReceived") {
97
+ const type = identifyTokenReceivedType(event);
98
+ return {
99
+ type,
100
+ from: type === "INITIAL" ? "0x0000000000000000000000000000000000000000" : tokenRegistryAddress,
101
+ to: titleEscrowContract.address,
102
+ blockNumber: event.blockNumber,
103
+ transactionHash: event.transactionHash,
104
+ transactionIndex: event.transactionIndex,
105
+ remark: event.args?.remark
106
+ };
107
+ } else if (event?.name === "ReturnToIssuer") {
108
+ return {
109
+ type: "RETURNED_TO_ISSUER",
110
+ blockNumber: event.blockNumber,
111
+ from: titleEscrowContract.address,
112
+ to: tokenRegistryAddress,
113
+ transactionHash: event.transactionHash,
114
+ transactionIndex: event.transactionIndex,
115
+ remark: event.args?.remark
116
+ };
117
+ } else if (event?.name === "Nomination") {
118
+ return void 0;
119
+ } else if (event?.name === "RejectTransferOwners") {
120
+ return {
121
+ type: "REJECT_TRANSFER_OWNERS",
122
+ blockNumber: event.blockNumber,
123
+ transactionHash: event.transactionHash,
124
+ transactionIndex: event.transactionIndex,
125
+ remark: event.args?.remark
126
+ };
127
+ } else if (event?.name === "RejectTransferBeneficiary") {
128
+ return {
129
+ type: "REJECT_TRANSFER_BENEFICIARY",
130
+ blockNumber: event.blockNumber,
131
+ transactionHash: event.transactionHash,
132
+ transactionIndex: event.transactionIndex,
133
+ remark: event.args?.remark
134
+ };
135
+ } else if (event?.name === "RejectTransferHolder") {
136
+ return {
137
+ type: "REJECT_TRANSFER_HOLDER",
138
+ blockNumber: event.blockNumber,
139
+ transactionHash: event.transactionHash,
140
+ transactionIndex: event.transactionIndex,
141
+ remark: event.args?.remark
142
+ };
143
+ } else if (event?.name === "Shred") {
144
+ return {
145
+ type: "RETURN_TO_ISSUER_ACCEPTED",
146
+ blockNumber: event.blockNumber,
147
+ from: tokenRegistryAddress,
148
+ to: "0x00000000000000000000000000000000000dead",
149
+ transactionHash: event.transactionHash,
150
+ transactionIndex: event.transactionIndex,
151
+ remark: event.args?.remark
152
+ };
153
+ }
154
+ return void 0;
155
+ }).filter((event) => event !== void 0);
156
+ }, "fetchAllTransfers");
157
+ function identifyTokenReceivedType(event) {
158
+ if (event.args.isMinting) {
159
+ return "INITIAL";
160
+ } else {
161
+ return "RETURN_TO_ISSUER_REJECTED";
162
+ }
163
+ }
164
+ __name(identifyTokenReceivedType, "identifyTokenReceivedType");
165
+
166
+ exports.fetchEscrowTransfersV4 = fetchEscrowTransfersV4;
167
+ exports.fetchEscrowTransfersV5 = fetchEscrowTransfersV5;
@@ -0,0 +1,8 @@
1
+ import { TokenTransferEvent } from './types.mjs';
2
+ import { TradeTrustToken } from '@tradetrust-tt/token-registry-v4/contracts';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const fetchTokenTransfers: (tokenRegistry: TradeTrustToken, tokenId: string) => Promise<TokenTransferEvent[]>;
7
+
8
+ export { fetchTokenTransfers };
@@ -0,0 +1,8 @@
1
+ import { TokenTransferEvent } from './types.js';
2
+ import { TradeTrustToken } from '@tradetrust-tt/token-registry-v4/contracts';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const fetchTokenTransfers: (tokenRegistry: TradeTrustToken, tokenId: string) => Promise<TokenTransferEvent[]>;
7
+
8
+ export { fetchTokenTransfers };
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ var helpers = require('../endorsement-chain/helpers');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ const fetchTokenTransfers = /* @__PURE__ */ __name(async (tokenRegistry, tokenId) => {
8
+ const logs = await fetchLogs(tokenRegistry, tokenId);
9
+ const parsedLogs = parseLogs(logs, tokenRegistry);
10
+ const tokenRegistryAddress = tokenRegistry.address;
11
+ const reformattedLogs = parsedLogs.map(
12
+ (event) => formatTokenTransferEvent(event, tokenRegistryAddress)
13
+ );
14
+ helpers.sortLogChain(reformattedLogs);
15
+ return reformattedLogs;
16
+ }, "fetchTokenTransfers");
17
+ const fetchLogs = /* @__PURE__ */ __name(async (tokenRegistry, tokenId) => {
18
+ const transferLogFilter = tokenRegistry.filters.Transfer(null, null, tokenId);
19
+ const logs = await tokenRegistry.queryFilter(transferLogFilter, 0);
20
+ if (logs.length === 0) {
21
+ throw new Error("Unminted Title Escrow");
22
+ }
23
+ return logs;
24
+ }, "fetchLogs");
25
+ const parseLogs = /* @__PURE__ */ __name((logs, tokenRegistry) => {
26
+ return logs.map((log) => {
27
+ if (!log.args) throw new Error(`Transfer log malformed: ${log}`);
28
+ if (!log.blockNumber) throw new Error("Block number not present");
29
+ if (!log.transactionHash) throw new Error("Transaction hash not present");
30
+ return {
31
+ ...log,
32
+ ...tokenRegistry.interface.parseLog(log)
33
+ };
34
+ });
35
+ }, "parseLogs");
36
+ const formatTokenTransferEvent = /* @__PURE__ */ __name((event, tokenRegistryAddress) => {
37
+ const type = identifyTokenTransferEvent(event, tokenRegistryAddress);
38
+ return {
39
+ type,
40
+ from: event.args.from,
41
+ to: event.args.to,
42
+ blockNumber: event.blockNumber,
43
+ transactionHash: event.transactionHash,
44
+ transactionIndex: event.transactionIndex
45
+ };
46
+ }, "formatTokenTransferEvent");
47
+ const identifyTokenTransferEvent = /* @__PURE__ */ __name((log, tokenRegistryAddress) => {
48
+ const InitialAddress = "0x0000000000000000000000000000000000000000";
49
+ const BurnAddress = "0x000000000000000000000000000000000000dEaD";
50
+ const { from, to } = log.args;
51
+ if (to === tokenRegistryAddress) return "SURRENDERED";
52
+ if (to === BurnAddress) return "SURRENDER_ACCEPTED";
53
+ if (from === tokenRegistryAddress) return "SURRENDER_REJECTED";
54
+ if (from === InitialAddress) return "INITIAL";
55
+ throw new Error("Unidentified transfer event");
56
+ }, "identifyTokenTransferEvent");
57
+
58
+ exports.fetchTokenTransfers = fetchTokenTransfers;
@@ -0,0 +1,11 @@
1
+ import { Provider } from '@ethersproject/abstract-provider';
2
+ import { TransferBaseEvent } from './types.mjs';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const fetchEventTime: (blockNumber: number, provider: Provider) => Promise<number>;
7
+ declare const mergeTransfersV4: (transferEvents: TransferBaseEvent[]) => TransferBaseEvent[];
8
+ declare const mergeTransfersV5: (transferEvents: TransferBaseEvent[]) => TransferBaseEvent[];
9
+ declare const sortLogChain: (logChain: TransferBaseEvent[]) => TransferBaseEvent[];
10
+
11
+ export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain };
@@ -0,0 +1,11 @@
1
+ import { Provider } from '@ethersproject/abstract-provider';
2
+ import { TransferBaseEvent } from './types.js';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const fetchEventTime: (blockNumber: number, provider: Provider) => Promise<number>;
7
+ declare const mergeTransfersV4: (transferEvents: TransferBaseEvent[]) => TransferBaseEvent[];
8
+ declare const mergeTransfersV5: (transferEvents: TransferBaseEvent[]) => TransferBaseEvent[];
9
+ declare const sortLogChain: (logChain: TransferBaseEvent[]) => TransferBaseEvent[];
10
+
11
+ export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain };
@@ -0,0 +1,99 @@
1
+ 'use strict';
2
+
3
+ var lodash = require('lodash');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ const fetchEventTime = /* @__PURE__ */ __name(async (blockNumber, provider) => {
8
+ const msecToSec = 1e3;
9
+ const eventTimestamp = (await provider.getBlock(blockNumber)).timestamp * msecToSec;
10
+ return eventTimestamp;
11
+ }, "fetchEventTime");
12
+ const getHolderOwner = /* @__PURE__ */ __name((events) => {
13
+ let owner = "";
14
+ let holder = "";
15
+ for (const event of events) {
16
+ owner = event.owner || owner;
17
+ holder = event.holder || holder;
18
+ }
19
+ return { owner, holder };
20
+ }, "getHolderOwner");
21
+ const mergeTransfersV4 = /* @__PURE__ */ __name((transferEvents) => {
22
+ const groupedEventsDict = lodash.groupBy(
23
+ transferEvents,
24
+ "transactionHash"
25
+ );
26
+ const transactionHashValues = Object.values(groupedEventsDict);
27
+ const mergedTransaction = transactionHashValues.flatMap((groupedEvents) => {
28
+ if (groupedEvents.length === 1) return groupedEvents;
29
+ if (groupedEvents.length === 2) {
30
+ const type = "TRANSFER_OWNERS";
31
+ const base = groupedEvents[0];
32
+ const { owner, holder } = getHolderOwner(groupedEvents);
33
+ return [{ ...base, type, owner, holder }];
34
+ }
35
+ if (groupedEvents.length === 3) {
36
+ const base = groupedEvents[0];
37
+ const type = "INITIAL";
38
+ const { owner, holder } = getHolderOwner(groupedEvents);
39
+ const found = groupedEvents.find((x) => {
40
+ return x.type === "INITIAL" || x.type === "SURRENDER_ACCEPTED";
41
+ });
42
+ return [{ ...base, owner, holder, type: found?.type || type }];
43
+ }
44
+ throw new Error("Invalid hash, update your configuration");
45
+ });
46
+ return mergedTransaction;
47
+ }, "mergeTransfersV4");
48
+ const mergeTransfersV5 = /* @__PURE__ */ __name((transferEvents) => {
49
+ const groupedEventsDict = lodash.groupBy(
50
+ transferEvents,
51
+ "transactionHash"
52
+ );
53
+ const transactionHashValues = Object.values(groupedEventsDict);
54
+ const mergedTransaction = transactionHashValues.flatMap((groupedEvents) => {
55
+ if (groupedEvents.length === 1) return groupedEvents;
56
+ if (groupedEvents.length > 1) {
57
+ const { owner, holder } = getHolderOwner(groupedEvents);
58
+ const base = groupedEvents[0];
59
+ const type = identifyEventTypeFromLogs(groupedEvents);
60
+ return [{ ...base, owner, holder, type }];
61
+ }
62
+ throw new Error("Invalid hash, update your configuration");
63
+ });
64
+ return mergedTransaction;
65
+ }, "mergeTransfersV5");
66
+ const identifyEventTypeFromLogs = /* @__PURE__ */ __name((groupedEvents) => {
67
+ for (const event of groupedEvents) {
68
+ if ([
69
+ "INITIAL",
70
+ "RETURNED_TO_ISSUER",
71
+ "RETURN_TO_ISSUER_ACCEPTED",
72
+ "RETURN_TO_ISSUER_REJECTED"
73
+ ].includes(event.type) || event.type.startsWith("REJECT_")) {
74
+ return event.type;
75
+ }
76
+ }
77
+ const isTransferHolder = groupedEvents.some((event) => event.type === "TRANSFER_HOLDER");
78
+ const isTransferBeneficiary = groupedEvents.some(
79
+ (event) => event.type === "TRANSFER_BENEFICIARY"
80
+ );
81
+ if (isTransferHolder && isTransferBeneficiary) {
82
+ return "TRANSFER_OWNERS";
83
+ } else if (isTransferHolder) {
84
+ return "TRANSFER_HOLDER";
85
+ } else if (isTransferBeneficiary) {
86
+ return "TRANSFER_BENEFICIARY";
87
+ }
88
+ throw new Error("Unable to identify event type");
89
+ }, "identifyEventTypeFromLogs");
90
+ const sortLogChain = /* @__PURE__ */ __name((logChain) => {
91
+ return logChain.sort((a, b) => {
92
+ return a.blockNumber - b.blockNumber;
93
+ });
94
+ }, "sortLogChain");
95
+
96
+ exports.fetchEventTime = fetchEventTime;
97
+ exports.mergeTransfersV4 = mergeTransfersV4;
98
+ exports.mergeTransfersV5 = mergeTransfersV5;
99
+ exports.sortLogChain = sortLogChain;
@@ -0,0 +1,11 @@
1
+ export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 } from './fetchEscrowTransfer.mjs';
2
+ export { fetchTokenTransfers } from './fetchTokenTransfer.mjs';
3
+ export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain } from './helpers.mjs';
4
+ export { getEndorsementChain } from './retrieveEndorsementChain.mjs';
5
+ export { EndorsementChain, ParsedLog, TitleEscrowTransferEvent, TitleEscrowTransferEventType, TokenTransferEvent, TokenTransferEventType, TradeTrustTokenEventType, TransferBaseEvent, TransferEvent, TransferEventType, TypedEvent } from './types.mjs';
6
+ export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion } from './useEndorsementChain.mjs';
7
+ import 'ethers';
8
+ import '@tradetrust-tt/token-registry-v4/contracts';
9
+ import '@ethersproject/abstract-provider';
10
+ import 'ethers/lib/utils';
11
+ import '@ethersproject/providers';
@@ -0,0 +1,11 @@
1
+ export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 } from './fetchEscrowTransfer.js';
2
+ export { fetchTokenTransfers } from './fetchTokenTransfer.js';
3
+ export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain } from './helpers.js';
4
+ export { getEndorsementChain } from './retrieveEndorsementChain.js';
5
+ export { EndorsementChain, ParsedLog, TitleEscrowTransferEvent, TitleEscrowTransferEventType, TokenTransferEvent, TokenTransferEventType, TradeTrustTokenEventType, TransferBaseEvent, TransferEvent, TransferEventType, TypedEvent } from './types.js';
6
+ export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion } from './useEndorsementChain.js';
7
+ import 'ethers';
8
+ import '@tradetrust-tt/token-registry-v4/contracts';
9
+ import '@ethersproject/abstract-provider';
10
+ import 'ethers/lib/utils';
11
+ import '@ethersproject/providers';
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var fetchEscrowTransfer = require('./fetchEscrowTransfer');
4
+ var fetchTokenTransfer = require('./fetchTokenTransfer');
5
+ var helpers = require('./helpers');
6
+ var retrieveEndorsementChain = require('./retrieveEndorsementChain');
7
+ var types = require('./types');
8
+ var useEndorsementChain = require('./useEndorsementChain');
9
+
10
+
11
+
12
+ Object.keys(fetchEscrowTransfer).forEach(function (k) {
13
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
14
+ enumerable: true,
15
+ get: function () { return fetchEscrowTransfer[k]; }
16
+ });
17
+ });
18
+ Object.keys(fetchTokenTransfer).forEach(function (k) {
19
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
20
+ enumerable: true,
21
+ get: function () { return fetchTokenTransfer[k]; }
22
+ });
23
+ });
24
+ Object.keys(helpers).forEach(function (k) {
25
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
26
+ enumerable: true,
27
+ get: function () { return helpers[k]; }
28
+ });
29
+ });
30
+ Object.keys(retrieveEndorsementChain).forEach(function (k) {
31
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
32
+ enumerable: true,
33
+ get: function () { return retrieveEndorsementChain[k]; }
34
+ });
35
+ });
36
+ Object.keys(types).forEach(function (k) {
37
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
38
+ enumerable: true,
39
+ get: function () { return types[k]; }
40
+ });
41
+ });
42
+ Object.keys(useEndorsementChain).forEach(function (k) {
43
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
44
+ enumerable: true,
45
+ get: function () { return useEndorsementChain[k]; }
46
+ });
47
+ });
@@ -0,0 +1,8 @@
1
+ import { Provider } from '@ethersproject/abstract-provider';
2
+ import { TransferBaseEvent, EndorsementChain } from './types.mjs';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const getEndorsementChain: (provider: Provider, logChain: TransferBaseEvent[]) => Promise<EndorsementChain>;
7
+
8
+ export { getEndorsementChain };
@@ -0,0 +1,8 @@
1
+ import { Provider } from '@ethersproject/abstract-provider';
2
+ import { TransferBaseEvent, EndorsementChain } from './types.js';
3
+ import 'ethers';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const getEndorsementChain: (provider: Provider, logChain: TransferBaseEvent[]) => Promise<EndorsementChain>;
7
+
8
+ export { getEndorsementChain };
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var helpers = require('../endorsement-chain/helpers');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ const getEndorsementChain = /* @__PURE__ */ __name(async (provider, logChain) => {
8
+ const historyChain = [];
9
+ helpers.sortLogChain(logChain);
10
+ let previousBeneficiary = "";
11
+ let previousHolder = "";
12
+ const timestampPromises = logChain.map((log) => helpers.fetchEventTime(log.blockNumber, provider));
13
+ const timestamps = await Promise.all(timestampPromises);
14
+ logChain.forEach((log, index) => {
15
+ const timestamp = timestamps[index];
16
+ const transactionDetails = {
17
+ type: log.type,
18
+ transactionHash: log.transactionHash,
19
+ transactionIndex: log.transactionIndex,
20
+ blockNumber: log.blockNumber,
21
+ owner: log.owner || previousBeneficiary,
22
+ holder: log.holder || previousHolder,
23
+ timestamp,
24
+ remark: log?.remark || ""
25
+ };
26
+ if (log.type === "TRANSFER_OWNERS" || log.type === "TRANSFER_BENEFICIARY" || log.type === "TRANSFER_HOLDER" || log.type === "INITIAL") {
27
+ historyChain.push(transactionDetails);
28
+ previousHolder = transactionDetails.holder;
29
+ previousBeneficiary = transactionDetails.owner;
30
+ } else if (log.type === "SURRENDER_ACCEPTED" || log.type === "RETURN_TO_ISSUER_ACCEPTED") {
31
+ previousHolder = "";
32
+ previousBeneficiary = "";
33
+ historyChain.push(transactionDetails);
34
+ } else if (log.type === "SURRENDERED" || log.type === "SURRENDER_REJECTED" || log.type === "RETURNED_TO_ISSUER" || log.type === "RETURN_TO_ISSUER_REJECTED") {
35
+ historyChain.push(transactionDetails);
36
+ } else {
37
+ historyChain.push(transactionDetails);
38
+ }
39
+ });
40
+ return historyChain;
41
+ }, "getEndorsementChain");
42
+
43
+ exports.getEndorsementChain = getEndorsementChain;
@@ -0,0 +1,50 @@
1
+ import { Event } from 'ethers';
2
+ import { EventFragment, Result } from 'ethers/lib/utils';
3
+
4
+ type TradeTrustTokenEventType = 'INITIAL' | 'NEW_OWNERS' | 'ENDORSE' | 'TRANSFER' | 'SURRENDERED' | 'RETURNED_TO_ISSUER' | 'SURRENDER_REJECTED' | 'RETURN_TO_ISSUER_REJECTED' | 'SURRENDER_ACCEPTED' | 'RETURN_TO_ISSUER_ACCEPTED' | 'TRANSFER_TO_WALLET' | 'INVALID';
5
+ type TransferEventType = TokenTransferEventType | TitleEscrowTransferEventType;
6
+ interface TransferBaseEvent {
7
+ type: TransferEventType;
8
+ transactionIndex: number;
9
+ holder?: string;
10
+ owner?: string;
11
+ transactionHash: string;
12
+ blockNumber: number;
13
+ remark?: string;
14
+ }
15
+ type TokenTransferEventType = 'INITIAL' | 'SURRENDERED' | 'RETURNED_TO_ISSUER' | 'SURRENDER_REJECTED' | 'RETURN_TO_ISSUER_REJECTED' | 'SURRENDER_ACCEPTED' | 'RETURN_TO_ISSUER_ACCEPTED';
16
+ interface TitleEscrowTransferEvent extends TransferBaseEvent {
17
+ type: TitleEscrowTransferEventType;
18
+ }
19
+ type TitleEscrowTransferEventType = 'TRANSFER_BENEFICIARY' | 'TRANSFER_HOLDER' | 'TRANSFER_OWNERS' | 'REJECT_TRANSFER_BENEFICIARY' | 'REJECT_TRANSFER_HOLDER' | 'REJECT_TRANSFER_OWNERS';
20
+ interface TokenTransferEvent extends TransferBaseEvent {
21
+ type: TokenTransferEventType;
22
+ from: string;
23
+ to: string;
24
+ }
25
+ interface TransferEvent extends TransferBaseEvent {
26
+ timestamp: number;
27
+ holder: string;
28
+ owner: string;
29
+ }
30
+ type EndorsementChain = TransferEvent[];
31
+ interface ParsedLog {
32
+ eventFragment: EventFragment;
33
+ name: string;
34
+ signature: string;
35
+ topic: string;
36
+ args: Result;
37
+ blockNumber: number;
38
+ blockHash: string;
39
+ transactionIndex: number;
40
+ removed: boolean;
41
+ logIndex: number;
42
+ transactionHash: string;
43
+ address: string;
44
+ data: string;
45
+ }
46
+ interface TypedEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends Event {
47
+ args: TArgsArray & TArgsObject;
48
+ }
49
+
50
+ export type { EndorsementChain, ParsedLog, TitleEscrowTransferEvent, TitleEscrowTransferEventType, TokenTransferEvent, TokenTransferEventType, TradeTrustTokenEventType, TransferBaseEvent, TransferEvent, TransferEventType, TypedEvent };
@@ -0,0 +1,50 @@
1
+ import { Event } from 'ethers';
2
+ import { EventFragment, Result } from 'ethers/lib/utils';
3
+
4
+ type TradeTrustTokenEventType = 'INITIAL' | 'NEW_OWNERS' | 'ENDORSE' | 'TRANSFER' | 'SURRENDERED' | 'RETURNED_TO_ISSUER' | 'SURRENDER_REJECTED' | 'RETURN_TO_ISSUER_REJECTED' | 'SURRENDER_ACCEPTED' | 'RETURN_TO_ISSUER_ACCEPTED' | 'TRANSFER_TO_WALLET' | 'INVALID';
5
+ type TransferEventType = TokenTransferEventType | TitleEscrowTransferEventType;
6
+ interface TransferBaseEvent {
7
+ type: TransferEventType;
8
+ transactionIndex: number;
9
+ holder?: string;
10
+ owner?: string;
11
+ transactionHash: string;
12
+ blockNumber: number;
13
+ remark?: string;
14
+ }
15
+ type TokenTransferEventType = 'INITIAL' | 'SURRENDERED' | 'RETURNED_TO_ISSUER' | 'SURRENDER_REJECTED' | 'RETURN_TO_ISSUER_REJECTED' | 'SURRENDER_ACCEPTED' | 'RETURN_TO_ISSUER_ACCEPTED';
16
+ interface TitleEscrowTransferEvent extends TransferBaseEvent {
17
+ type: TitleEscrowTransferEventType;
18
+ }
19
+ type TitleEscrowTransferEventType = 'TRANSFER_BENEFICIARY' | 'TRANSFER_HOLDER' | 'TRANSFER_OWNERS' | 'REJECT_TRANSFER_BENEFICIARY' | 'REJECT_TRANSFER_HOLDER' | 'REJECT_TRANSFER_OWNERS';
20
+ interface TokenTransferEvent extends TransferBaseEvent {
21
+ type: TokenTransferEventType;
22
+ from: string;
23
+ to: string;
24
+ }
25
+ interface TransferEvent extends TransferBaseEvent {
26
+ timestamp: number;
27
+ holder: string;
28
+ owner: string;
29
+ }
30
+ type EndorsementChain = TransferEvent[];
31
+ interface ParsedLog {
32
+ eventFragment: EventFragment;
33
+ name: string;
34
+ signature: string;
35
+ topic: string;
36
+ args: Result;
37
+ blockNumber: number;
38
+ blockHash: string;
39
+ transactionIndex: number;
40
+ removed: boolean;
41
+ logIndex: number;
42
+ transactionHash: string;
43
+ address: string;
44
+ data: string;
45
+ }
46
+ interface TypedEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends Event {
47
+ args: TArgsArray & TArgsObject;
48
+ }
49
+
50
+ export type { EndorsementChain, ParsedLog, TitleEscrowTransferEvent, TitleEscrowTransferEventType, TokenTransferEvent, TokenTransferEventType, TradeTrustTokenEventType, TransferBaseEvent, TransferEvent, TransferEventType, TypedEvent };
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,14 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { ethers } from 'ethers';
3
+ import { EndorsementChain } from './types.mjs';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const TitleEscrowInterface: {
7
+ V4: string;
8
+ V5: string;
9
+ };
10
+ declare const getTitleEscrowAddress: (tokenRegistryAddress: string, tokenId: string, provider: ethers.providers.Provider) => Promise<string>;
11
+ declare const isTitleEscrowVersion: (versionInterface: string, tokenRegistryAddress: string, tokenId: string, provider: ethers.providers.Provider) => Promise<boolean>;
12
+ declare const fetchEndorsementChain: (tokenRegistry: string, tokenId: string, provider: Provider, keyId?: string) => Promise<EndorsementChain>;
13
+
14
+ export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion };
@@ -0,0 +1,14 @@
1
+ import { Provider } from '@ethersproject/providers';
2
+ import { ethers } from 'ethers';
3
+ import { EndorsementChain } from './types.js';
4
+ import 'ethers/lib/utils';
5
+
6
+ declare const TitleEscrowInterface: {
7
+ V4: string;
8
+ V5: string;
9
+ };
10
+ declare const getTitleEscrowAddress: (tokenRegistryAddress: string, tokenId: string, provider: ethers.providers.Provider) => Promise<string>;
11
+ declare const isTitleEscrowVersion: (versionInterface: string, tokenRegistryAddress: string, tokenId: string, provider: ethers.providers.Provider) => Promise<boolean>;
12
+ declare const fetchEndorsementChain: (tokenRegistry: string, tokenId: string, provider: Provider, keyId?: string) => Promise<EndorsementChain>;
13
+
14
+ export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion };