@trustvc/trustvc 1.0.5 → 1.1.1
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.
- package/dist/{core → cjs/core}/documentBuilder.js +7 -5
- package/dist/cjs/core/endorsement-chain/fetchEscrowTransfer.js +167 -0
- package/dist/cjs/core/endorsement-chain/fetchTokenTransfer.js +58 -0
- package/dist/cjs/core/endorsement-chain/helpers.js +99 -0
- package/dist/cjs/core/endorsement-chain/index.js +47 -0
- package/dist/cjs/core/endorsement-chain/retrieveEndorsementChain.js +43 -0
- package/dist/cjs/core/endorsement-chain/useEndorsementChain.js +103 -0
- package/dist/{core → cjs/core}/index.js +7 -0
- package/dist/cjs/token-registry-v5/typedContractMethod.js +2 -0
- package/dist/cjs/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.types.js +2 -0
- package/dist/cjs/w3c/types.js +2 -0
- package/dist/esm/core/documentBuilder.js +7 -5
- package/dist/esm/core/endorsement-chain/fetchEscrowTransfer.js +164 -0
- package/dist/esm/core/endorsement-chain/fetchTokenTransfer.js +56 -0
- package/dist/esm/core/endorsement-chain/helpers.js +94 -0
- package/dist/esm/core/endorsement-chain/index.js +6 -0
- package/dist/esm/core/endorsement-chain/retrieveEndorsementChain.js +41 -0
- package/dist/esm/core/endorsement-chain/types.js +1 -0
- package/dist/esm/core/endorsement-chain/useEndorsementChain.js +98 -0
- package/dist/esm/core/index.js +1 -0
- package/dist/esm/token-registry-v5/index.js +1 -1
- package/dist/esm/token-registry-v5/typedContractMethod.js +1 -1
- package/dist/esm/w3c/types.js +1 -2
- package/dist/types/core/endorsement-chain/fetchEscrowTransfer.d.ts +8 -0
- package/dist/types/core/endorsement-chain/fetchTokenTransfer.d.ts +8 -0
- package/dist/types/core/endorsement-chain/helpers.d.ts +11 -0
- package/dist/types/core/endorsement-chain/index.d.ts +11 -0
- package/dist/types/core/endorsement-chain/retrieveEndorsementChain.d.ts +8 -0
- package/dist/types/core/endorsement-chain/types.d.ts +50 -0
- package/dist/types/core/endorsement-chain/useEndorsementChain.d.ts +14 -0
- package/dist/types/core/index.d.ts +16 -0
- package/dist/{index-DK8Em_TZ.d.ts → types/index-BVNDN0vp.d.ts} +3 -2
- package/dist/{index.d.ts → types/index.d.ts} +13 -3
- package/dist/{token-registry-v5 → types/token-registry-v5}/index.d.ts +2 -1
- package/dist/{verify → types/verify}/fragments/document-status/transferableRecords/transferableRecordVerifier.types.d.ts +10 -1
- package/dist/{verify → types/verify}/fragments/index.d.ts +1 -1
- package/dist/{verify → types/verify}/index.d.ts +1 -1
- package/package.json +36 -36
- package/dist/constants.d.mts +0 -3
- package/dist/core/decrypt.d.mts +0 -3
- package/dist/core/documentBuilder.d.mts +0 -6
- package/dist/core/encrypt.d.mts +0 -3
- package/dist/core/index.d.mts +0 -5
- package/dist/core/index.d.ts +0 -5
- package/dist/core/verify.d.mts +0 -6
- package/dist/dnsprove/index.d.mts +0 -1
- package/dist/index-1ws_BWZW.d.mts +0 -22
- package/dist/index-CUw8WpjA.d.mts +0 -22
- package/dist/index-CjwEVGoM.d.mts +0 -22
- package/dist/index-ClF4_Nqk.d.mts +0 -22
- package/dist/index-DwAYXQn2.d.mts +0 -22
- package/dist/index.d.mts +0 -51
- package/dist/open-attestation/index.d.mts +0 -13
- package/dist/open-attestation/sign.d.mts +0 -9
- package/dist/open-attestation/types.d.mts +0 -9
- package/dist/open-attestation/utils.d.mts +0 -42
- package/dist/open-attestation/verify.d.mts +0 -5
- package/dist/open-attestation/wrap.d.mts +0 -9
- package/dist/token-registry-v4/contractAddress.d.mts +0 -13
- package/dist/token-registry-v4/contracts.d.mts +0 -1
- package/dist/token-registry-v4/index.d.mts +0 -3
- package/dist/token-registry-v4/roleHash.d.mts +0 -11
- package/dist/token-registry-v4/supportInterfaceIds.d.mts +0 -12
- package/dist/token-registry-v5/contractAddress.d.mts +0 -13
- package/dist/token-registry-v5/contracts.d.mts +0 -1
- package/dist/token-registry-v5/index.d.mts +0 -3
- package/dist/token-registry-v5/roleHash.d.mts +0 -11
- package/dist/token-registry-v5/supportInterfaceIds.d.mts +0 -12
- package/dist/token-registry-v5/typedContractMethod.d.mts +0 -9
- package/dist/token-registry-v5/typedContractMethod.js +0 -10
- package/dist/utils/errorMessages/index.d.mts +0 -1
- package/dist/utils/fragment/index.d.mts +0 -1
- package/dist/utils/index.d.mts +0 -4
- package/dist/utils/network/index.d.mts +0 -1
- package/dist/utils/stringUtils/index.d.mts +0 -9
- package/dist/utils/supportedChains/index.d.mts +0 -1
- package/dist/verify/fragments/document-integrity/w3cSignatureIntegrity.d.mts +0 -5
- package/dist/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.d.mts +0 -7
- package/dist/verify/fragments/document-status/transferableRecords/transferableRecordVerifier.types.d.mts +0 -22
- package/dist/verify/fragments/document-status/transferableRecords/utils.d.mts +0 -18
- package/dist/verify/fragments/document-status/w3cCredentialStatus.d.mts +0 -5
- package/dist/verify/fragments/index.d.mts +0 -6
- package/dist/verify/fragments/issuer-identity/w3cIssuerIdentity.d.mts +0 -5
- package/dist/verify/index.d.mts +0 -9
- package/dist/verify/verify.d.mts +0 -29
- package/dist/w3c/context/index.d.mts +0 -1
- package/dist/w3c/credential-status/index.d.mts +0 -1
- package/dist/w3c/index.d.mts +0 -10
- package/dist/w3c/issuer/index.d.mts +0 -1
- package/dist/w3c/sign.d.mts +0 -6
- package/dist/w3c/types.d.mts +0 -2
- package/dist/w3c/types.js +0 -27
- package/dist/w3c/vc/index.d.mts +0 -1
- package/dist/w3c/verify.d.mts +0 -5
- package/dist/{constants.js → cjs/constants.js} +0 -0
- package/dist/{core → cjs/core}/decrypt.js +0 -0
- package/dist/{core → cjs/core}/encrypt.js +0 -0
- package/dist/{verify/fragments/document-status/transferableRecords/transferableRecordVerifier.types.js → cjs/core/endorsement-chain/types.js} +0 -0
- package/dist/{core → cjs/core}/verify.js +0 -0
- package/dist/{dnsprove → cjs/dnsprove}/index.js +0 -0
- package/dist/{index.js → cjs/index.js} +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/index.js +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/sign.js +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/types.js +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/utils.js +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/verify.js +0 -0
- package/dist/{open-attestation → cjs/open-attestation}/wrap.js +0 -0
- package/dist/{token-registry-v4 → cjs/token-registry-v4}/contractAddress.js +0 -0
- package/dist/{token-registry-v4 → cjs/token-registry-v4}/contracts.js +0 -0
- package/dist/{token-registry-v4 → cjs/token-registry-v4}/index.js +0 -0
- package/dist/{token-registry-v4 → cjs/token-registry-v4}/roleHash.js +0 -0
- package/dist/{token-registry-v4 → cjs/token-registry-v4}/supportInterfaceIds.js +0 -0
- package/dist/{token-registry-v5 → cjs/token-registry-v5}/contractAddress.js +0 -0
- package/dist/{token-registry-v5 → cjs/token-registry-v5}/contracts.js +0 -0
- package/dist/{token-registry-v5 → cjs/token-registry-v5}/index.js +5 -5
- package/dist/{token-registry-v5 → cjs/token-registry-v5}/roleHash.js +0 -0
- package/dist/{token-registry-v5 → cjs/token-registry-v5}/supportInterfaceIds.js +0 -0
- package/dist/{utils → cjs/utils}/errorMessages/index.js +0 -0
- package/dist/{utils → cjs/utils}/fragment/index.js +0 -0
- package/dist/{utils → cjs/utils}/index.js +0 -0
- package/dist/{utils → cjs/utils}/network/index.js +0 -0
- package/dist/{utils → cjs/utils}/stringUtils/index.js +0 -0
- package/dist/{utils → cjs/utils}/supportedChains/index.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/document-integrity/w3cSignatureIntegrity.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/document-status/transferableRecords/transferableRecordVerifier.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/document-status/transferableRecords/utils.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/document-status/w3cCredentialStatus.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/index.js +0 -0
- package/dist/{verify → cjs/verify}/fragments/issuer-identity/w3cIssuerIdentity.js +0 -0
- package/dist/{verify → cjs/verify}/index.js +0 -0
- package/dist/{verify → cjs/verify}/verify.js +0 -0
- package/dist/{w3c → cjs/w3c}/context/index.js +0 -0
- package/dist/{w3c → cjs/w3c}/credential-status/index.js +0 -0
- package/dist/{w3c → cjs/w3c}/index.js +0 -0
- package/dist/{w3c → cjs/w3c}/issuer/index.js +0 -0
- package/dist/{w3c → cjs/w3c}/sign.js +0 -0
- package/dist/{w3c → cjs/w3c}/vc/index.js +0 -0
- package/dist/{w3c → cjs/w3c}/verify.js +0 -0
- package/dist/{constants.d.ts → types/constants.d.ts} +0 -0
- package/dist/{core → types/core}/decrypt.d.ts +0 -0
- package/dist/{core → types/core}/documentBuilder.d.ts +0 -0
- package/dist/{core → types/core}/encrypt.d.ts +0 -0
- package/dist/{core → types/core}/verify.d.ts +0 -0
- package/dist/{dnsprove → types/dnsprove}/index.d.ts +0 -0
- package/dist/{index-1ws_BWZW.d.ts → types/index-1ws_BWZW.d.ts} +0 -0
- package/dist/{index-CjwEVGoM.d.ts → types/index-CjwEVGoM.d.ts} +0 -0
- package/dist/{index-ClF4_Nqk.d.ts → types/index-ClF4_Nqk.d.ts} +0 -0
- package/dist/{index-DwAYXQn2.d.ts → types/index-DwAYXQn2.d.ts} +0 -0
- package/dist/{open-attestation → types/open-attestation}/index.d.ts +0 -0
- package/dist/{open-attestation → types/open-attestation}/sign.d.ts +0 -0
- package/dist/{open-attestation → types/open-attestation}/types.d.ts +0 -0
- package/dist/{open-attestation → types/open-attestation}/utils.d.ts +0 -0
- package/dist/{open-attestation → types/open-attestation}/verify.d.ts +0 -0
- package/dist/{open-attestation → types/open-attestation}/wrap.d.ts +0 -0
- package/dist/{token-registry-v4 → types/token-registry-v4}/contractAddress.d.ts +0 -0
- package/dist/{token-registry-v4 → types/token-registry-v4}/contracts.d.ts +0 -0
- package/dist/{token-registry-v4 → types/token-registry-v4}/index.d.ts +0 -0
- package/dist/{token-registry-v4 → types/token-registry-v4}/roleHash.d.ts +0 -0
- package/dist/{token-registry-v4 → types/token-registry-v4}/supportInterfaceIds.d.ts +0 -0
- package/dist/{token-registry-v5 → types/token-registry-v5}/contractAddress.d.ts +0 -0
- package/dist/{token-registry-v5 → types/token-registry-v5}/contracts.d.ts +0 -0
- package/dist/{token-registry-v5 → types/token-registry-v5}/roleHash.d.ts +0 -0
- package/dist/{token-registry-v5 → types/token-registry-v5}/supportInterfaceIds.d.ts +0 -0
- package/dist/{token-registry-v5 → types/token-registry-v5}/typedContractMethod.d.ts +1 -1
- /package/dist/{utils → types/utils}/errorMessages/index.d.ts +0 -0
- /package/dist/{utils → types/utils}/fragment/index.d.ts +0 -0
- /package/dist/{utils → types/utils}/index.d.ts +0 -0
- /package/dist/{utils → types/utils}/network/index.d.ts +0 -0
- /package/dist/{utils → types/utils}/stringUtils/index.d.ts +0 -0
- /package/dist/{utils → types/utils}/supportedChains/index.d.ts +0 -0
- /package/dist/{verify → types/verify}/fragments/document-integrity/w3cSignatureIntegrity.d.ts +0 -0
- /package/dist/{verify → types/verify}/fragments/document-status/transferableRecords/transferableRecordVerifier.d.ts +0 -0
- /package/dist/{verify → types/verify}/fragments/document-status/transferableRecords/utils.d.ts +0 -0
- /package/dist/{verify → types/verify}/fragments/document-status/w3cCredentialStatus.d.ts +0 -0
- /package/dist/{verify → types/verify}/fragments/issuer-identity/w3cIssuerIdentity.d.ts +0 -0
- /package/dist/{verify → types/verify}/verify.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/context/index.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/credential-status/index.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/index.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/issuer/index.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/sign.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/types.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/vc/index.d.ts +0 -0
- /package/dist/{w3c → types/w3c}/verify.d.ts +0 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { TitleEscrow__factory } from '../../token-registry-v4/contracts';
|
|
2
|
+
import { TitleEscrow__factory as TitleEscrow__factory$1 } from '../../token-registry-v5/contracts';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
+
const fetchEscrowTransfersV4 = /* @__PURE__ */ __name(async (provider, address) => {
|
|
7
|
+
const titleEscrowContract = TitleEscrow__factory.connect(address, provider);
|
|
8
|
+
const holderChangeLogsDeferred = await fetchHolderTransfers(titleEscrowContract, provider);
|
|
9
|
+
const ownerChangeLogsDeferred = await fetchOwnerTransfers(titleEscrowContract, provider);
|
|
10
|
+
const [holderChangeLogs, ownerChangeLogs] = await Promise.all([
|
|
11
|
+
holderChangeLogsDeferred,
|
|
12
|
+
ownerChangeLogsDeferred
|
|
13
|
+
]);
|
|
14
|
+
return [...holderChangeLogs, ...ownerChangeLogs];
|
|
15
|
+
}, "fetchEscrowTransfersV4");
|
|
16
|
+
const fetchEscrowTransfersV5 = /* @__PURE__ */ __name(async (provider, address) => {
|
|
17
|
+
const titleEscrowContract = TitleEscrow__factory$1.connect(address, provider);
|
|
18
|
+
const holderChangeLogsDeferred = await fetchAllTransfers(titleEscrowContract);
|
|
19
|
+
return holderChangeLogsDeferred;
|
|
20
|
+
}, "fetchEscrowTransfersV5");
|
|
21
|
+
const getParsedLogs = /* @__PURE__ */ __name((logs, titleEscrow) => {
|
|
22
|
+
return logs.map((log) => {
|
|
23
|
+
if (!log.blockNumber) throw new Error("Block number not present");
|
|
24
|
+
return {
|
|
25
|
+
...log,
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
...titleEscrow.interface.parseLog(log)
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
}, "getParsedLogs");
|
|
31
|
+
const fetchOwnerTransfers = /* @__PURE__ */ __name(async (titleEscrowContract, provider) => {
|
|
32
|
+
const ownerChangeFilter = titleEscrowContract.filters.BeneficiaryTransfer(null, null);
|
|
33
|
+
const ownerChangeLogs = await provider.getLogs({ ...ownerChangeFilter, fromBlock: 0 });
|
|
34
|
+
const ownerChangeLogsParsed = getParsedLogs(ownerChangeLogs, titleEscrowContract);
|
|
35
|
+
return ownerChangeLogsParsed.map((event) => ({
|
|
36
|
+
type: "TRANSFER_BENEFICIARY",
|
|
37
|
+
owner: event.args.toBeneficiary,
|
|
38
|
+
blockNumber: event.blockNumber,
|
|
39
|
+
transactionHash: event.transactionHash,
|
|
40
|
+
transactionIndex: event.transactionIndex
|
|
41
|
+
}));
|
|
42
|
+
}, "fetchOwnerTransfers");
|
|
43
|
+
const fetchHolderTransfers = /* @__PURE__ */ __name(async (titleEscrowContract, provider) => {
|
|
44
|
+
const holderChangeFilter = titleEscrowContract.filters.HolderTransfer(null, null);
|
|
45
|
+
const holderChangeLogs = await provider.getLogs({ ...holderChangeFilter, fromBlock: 0 });
|
|
46
|
+
const holderChangeLogsParsed = getParsedLogs(holderChangeLogs, titleEscrowContract);
|
|
47
|
+
return holderChangeLogsParsed.map((event) => ({
|
|
48
|
+
type: "TRANSFER_HOLDER",
|
|
49
|
+
blockNumber: event.blockNumber,
|
|
50
|
+
holder: event.args.toHolder,
|
|
51
|
+
transactionHash: event.transactionHash,
|
|
52
|
+
transactionIndex: event.transactionIndex
|
|
53
|
+
}));
|
|
54
|
+
}, "fetchHolderTransfers");
|
|
55
|
+
const fetchAllTransfers = /* @__PURE__ */ __name(async (titleEscrowContract) => {
|
|
56
|
+
const allFilters = [
|
|
57
|
+
titleEscrowContract.filters.HolderTransfer,
|
|
58
|
+
titleEscrowContract.filters.BeneficiaryTransfer,
|
|
59
|
+
titleEscrowContract.filters.TokenReceived,
|
|
60
|
+
titleEscrowContract.filters.ReturnToIssuer,
|
|
61
|
+
// titleEscrowContract.filters.Nomination,
|
|
62
|
+
titleEscrowContract.filters.RejectTransferOwners,
|
|
63
|
+
titleEscrowContract.filters.RejectTransferBeneficiary,
|
|
64
|
+
titleEscrowContract.filters.RejectTransferHolder,
|
|
65
|
+
titleEscrowContract.filters.Shred
|
|
66
|
+
];
|
|
67
|
+
const allLogs = await Promise.all(
|
|
68
|
+
allFilters.map(async (filter) => {
|
|
69
|
+
const logs = await titleEscrowContract.queryFilter(filter, 0, "latest");
|
|
70
|
+
return logs;
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
const holderChangeLogsParsed = getParsedLogs(allLogs.flat(), titleEscrowContract);
|
|
74
|
+
const tokenRegistryAddress = await titleEscrowContract.registry();
|
|
75
|
+
return holderChangeLogsParsed.map((event) => {
|
|
76
|
+
if (event?.name === "HolderTransfer") {
|
|
77
|
+
return {
|
|
78
|
+
type: "TRANSFER_HOLDER",
|
|
79
|
+
blockNumber: event.blockNumber,
|
|
80
|
+
holder: event.args.toHolder,
|
|
81
|
+
transactionHash: event.transactionHash,
|
|
82
|
+
transactionIndex: event.transactionIndex,
|
|
83
|
+
remark: event.args?.remark
|
|
84
|
+
};
|
|
85
|
+
} else if (event?.name === "BeneficiaryTransfer") {
|
|
86
|
+
return {
|
|
87
|
+
type: "TRANSFER_BENEFICIARY",
|
|
88
|
+
owner: event.args.toBeneficiary,
|
|
89
|
+
blockNumber: event.blockNumber,
|
|
90
|
+
transactionHash: event.transactionHash,
|
|
91
|
+
transactionIndex: event.transactionIndex,
|
|
92
|
+
remark: event.args?.remark
|
|
93
|
+
};
|
|
94
|
+
} else if (event?.name === "TokenReceived") {
|
|
95
|
+
const type = identifyTokenReceivedType(event);
|
|
96
|
+
return {
|
|
97
|
+
type,
|
|
98
|
+
from: type === "INITIAL" ? "0x0000000000000000000000000000000000000000" : tokenRegistryAddress,
|
|
99
|
+
to: titleEscrowContract.address,
|
|
100
|
+
blockNumber: event.blockNumber,
|
|
101
|
+
transactionHash: event.transactionHash,
|
|
102
|
+
transactionIndex: event.transactionIndex,
|
|
103
|
+
remark: event.args?.remark
|
|
104
|
+
};
|
|
105
|
+
} else if (event?.name === "ReturnToIssuer") {
|
|
106
|
+
return {
|
|
107
|
+
type: "RETURNED_TO_ISSUER",
|
|
108
|
+
blockNumber: event.blockNumber,
|
|
109
|
+
from: titleEscrowContract.address,
|
|
110
|
+
to: tokenRegistryAddress,
|
|
111
|
+
transactionHash: event.transactionHash,
|
|
112
|
+
transactionIndex: event.transactionIndex,
|
|
113
|
+
remark: event.args?.remark
|
|
114
|
+
};
|
|
115
|
+
} else if (event?.name === "Nomination") {
|
|
116
|
+
return void 0;
|
|
117
|
+
} else if (event?.name === "RejectTransferOwners") {
|
|
118
|
+
return {
|
|
119
|
+
type: "REJECT_TRANSFER_OWNERS",
|
|
120
|
+
blockNumber: event.blockNumber,
|
|
121
|
+
transactionHash: event.transactionHash,
|
|
122
|
+
transactionIndex: event.transactionIndex,
|
|
123
|
+
remark: event.args?.remark
|
|
124
|
+
};
|
|
125
|
+
} else if (event?.name === "RejectTransferBeneficiary") {
|
|
126
|
+
return {
|
|
127
|
+
type: "REJECT_TRANSFER_BENEFICIARY",
|
|
128
|
+
blockNumber: event.blockNumber,
|
|
129
|
+
transactionHash: event.transactionHash,
|
|
130
|
+
transactionIndex: event.transactionIndex,
|
|
131
|
+
remark: event.args?.remark
|
|
132
|
+
};
|
|
133
|
+
} else if (event?.name === "RejectTransferHolder") {
|
|
134
|
+
return {
|
|
135
|
+
type: "REJECT_TRANSFER_HOLDER",
|
|
136
|
+
blockNumber: event.blockNumber,
|
|
137
|
+
transactionHash: event.transactionHash,
|
|
138
|
+
transactionIndex: event.transactionIndex,
|
|
139
|
+
remark: event.args?.remark
|
|
140
|
+
};
|
|
141
|
+
} else if (event?.name === "Shred") {
|
|
142
|
+
return {
|
|
143
|
+
type: "RETURN_TO_ISSUER_ACCEPTED",
|
|
144
|
+
blockNumber: event.blockNumber,
|
|
145
|
+
from: tokenRegistryAddress,
|
|
146
|
+
to: "0x00000000000000000000000000000000000dead",
|
|
147
|
+
transactionHash: event.transactionHash,
|
|
148
|
+
transactionIndex: event.transactionIndex,
|
|
149
|
+
remark: event.args?.remark
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return void 0;
|
|
153
|
+
}).filter((event) => event !== void 0);
|
|
154
|
+
}, "fetchAllTransfers");
|
|
155
|
+
function identifyTokenReceivedType(event) {
|
|
156
|
+
if (event.args.isMinting) {
|
|
157
|
+
return "INITIAL";
|
|
158
|
+
} else {
|
|
159
|
+
return "RETURN_TO_ISSUER_REJECTED";
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
__name(identifyTokenReceivedType, "identifyTokenReceivedType");
|
|
163
|
+
|
|
164
|
+
export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { sortLogChain } from '../endorsement-chain/helpers';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const fetchTokenTransfers = /* @__PURE__ */ __name(async (tokenRegistry, tokenId) => {
|
|
6
|
+
const logs = await fetchLogs(tokenRegistry, tokenId);
|
|
7
|
+
const parsedLogs = parseLogs(logs, tokenRegistry);
|
|
8
|
+
const tokenRegistryAddress = tokenRegistry.address;
|
|
9
|
+
const reformattedLogs = parsedLogs.map(
|
|
10
|
+
(event) => formatTokenTransferEvent(event, tokenRegistryAddress)
|
|
11
|
+
);
|
|
12
|
+
sortLogChain(reformattedLogs);
|
|
13
|
+
return reformattedLogs;
|
|
14
|
+
}, "fetchTokenTransfers");
|
|
15
|
+
const fetchLogs = /* @__PURE__ */ __name(async (tokenRegistry, tokenId) => {
|
|
16
|
+
const transferLogFilter = tokenRegistry.filters.Transfer(null, null, tokenId);
|
|
17
|
+
const logs = await tokenRegistry.queryFilter(transferLogFilter, 0);
|
|
18
|
+
if (logs.length === 0) {
|
|
19
|
+
throw new Error("Unminted Title Escrow");
|
|
20
|
+
}
|
|
21
|
+
return logs;
|
|
22
|
+
}, "fetchLogs");
|
|
23
|
+
const parseLogs = /* @__PURE__ */ __name((logs, tokenRegistry) => {
|
|
24
|
+
return logs.map((log) => {
|
|
25
|
+
if (!log.args) throw new Error(`Transfer log malformed: ${log}`);
|
|
26
|
+
if (!log.blockNumber) throw new Error("Block number not present");
|
|
27
|
+
if (!log.transactionHash) throw new Error("Transaction hash not present");
|
|
28
|
+
return {
|
|
29
|
+
...log,
|
|
30
|
+
...tokenRegistry.interface.parseLog(log)
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}, "parseLogs");
|
|
34
|
+
const formatTokenTransferEvent = /* @__PURE__ */ __name((event, tokenRegistryAddress) => {
|
|
35
|
+
const type = identifyTokenTransferEvent(event, tokenRegistryAddress);
|
|
36
|
+
return {
|
|
37
|
+
type,
|
|
38
|
+
from: event.args.from,
|
|
39
|
+
to: event.args.to,
|
|
40
|
+
blockNumber: event.blockNumber,
|
|
41
|
+
transactionHash: event.transactionHash,
|
|
42
|
+
transactionIndex: event.transactionIndex
|
|
43
|
+
};
|
|
44
|
+
}, "formatTokenTransferEvent");
|
|
45
|
+
const identifyTokenTransferEvent = /* @__PURE__ */ __name((log, tokenRegistryAddress) => {
|
|
46
|
+
const InitialAddress = "0x0000000000000000000000000000000000000000";
|
|
47
|
+
const BurnAddress = "0x000000000000000000000000000000000000dEaD";
|
|
48
|
+
const { from, to } = log.args;
|
|
49
|
+
if (to === tokenRegistryAddress) return "SURRENDERED";
|
|
50
|
+
if (to === BurnAddress) return "SURRENDER_ACCEPTED";
|
|
51
|
+
if (from === tokenRegistryAddress) return "SURRENDER_REJECTED";
|
|
52
|
+
if (from === InitialAddress) return "INITIAL";
|
|
53
|
+
throw new Error("Unidentified transfer event");
|
|
54
|
+
}, "identifyTokenTransferEvent");
|
|
55
|
+
|
|
56
|
+
export { fetchTokenTransfers };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { groupBy } from 'lodash';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const fetchEventTime = /* @__PURE__ */ __name(async (blockNumber, provider) => {
|
|
6
|
+
const msecToSec = 1e3;
|
|
7
|
+
const eventTimestamp = (await provider.getBlock(blockNumber)).timestamp * msecToSec;
|
|
8
|
+
return eventTimestamp;
|
|
9
|
+
}, "fetchEventTime");
|
|
10
|
+
const getHolderOwner = /* @__PURE__ */ __name((events) => {
|
|
11
|
+
let owner = "";
|
|
12
|
+
let holder = "";
|
|
13
|
+
for (const event of events) {
|
|
14
|
+
owner = event.owner || owner;
|
|
15
|
+
holder = event.holder || holder;
|
|
16
|
+
}
|
|
17
|
+
return { owner, holder };
|
|
18
|
+
}, "getHolderOwner");
|
|
19
|
+
const mergeTransfersV4 = /* @__PURE__ */ __name((transferEvents) => {
|
|
20
|
+
const groupedEventsDict = groupBy(
|
|
21
|
+
transferEvents,
|
|
22
|
+
"transactionHash"
|
|
23
|
+
);
|
|
24
|
+
const transactionHashValues = Object.values(groupedEventsDict);
|
|
25
|
+
const mergedTransaction = transactionHashValues.flatMap((groupedEvents) => {
|
|
26
|
+
if (groupedEvents.length === 1) return groupedEvents;
|
|
27
|
+
if (groupedEvents.length === 2) {
|
|
28
|
+
const type = "TRANSFER_OWNERS";
|
|
29
|
+
const base = groupedEvents[0];
|
|
30
|
+
const { owner, holder } = getHolderOwner(groupedEvents);
|
|
31
|
+
return [{ ...base, type, owner, holder }];
|
|
32
|
+
}
|
|
33
|
+
if (groupedEvents.length === 3) {
|
|
34
|
+
const base = groupedEvents[0];
|
|
35
|
+
const type = "INITIAL";
|
|
36
|
+
const { owner, holder } = getHolderOwner(groupedEvents);
|
|
37
|
+
const found = groupedEvents.find((x) => {
|
|
38
|
+
return x.type === "INITIAL" || x.type === "SURRENDER_ACCEPTED";
|
|
39
|
+
});
|
|
40
|
+
return [{ ...base, owner, holder, type: found?.type || type }];
|
|
41
|
+
}
|
|
42
|
+
throw new Error("Invalid hash, update your configuration");
|
|
43
|
+
});
|
|
44
|
+
return mergedTransaction;
|
|
45
|
+
}, "mergeTransfersV4");
|
|
46
|
+
const mergeTransfersV5 = /* @__PURE__ */ __name((transferEvents) => {
|
|
47
|
+
const groupedEventsDict = groupBy(
|
|
48
|
+
transferEvents,
|
|
49
|
+
"transactionHash"
|
|
50
|
+
);
|
|
51
|
+
const transactionHashValues = Object.values(groupedEventsDict);
|
|
52
|
+
const mergedTransaction = transactionHashValues.flatMap((groupedEvents) => {
|
|
53
|
+
if (groupedEvents.length === 1) return groupedEvents;
|
|
54
|
+
if (groupedEvents.length > 1) {
|
|
55
|
+
const { owner, holder } = getHolderOwner(groupedEvents);
|
|
56
|
+
const base = groupedEvents[0];
|
|
57
|
+
const type = identifyEventTypeFromLogs(groupedEvents);
|
|
58
|
+
return [{ ...base, owner, holder, type }];
|
|
59
|
+
}
|
|
60
|
+
throw new Error("Invalid hash, update your configuration");
|
|
61
|
+
});
|
|
62
|
+
return mergedTransaction;
|
|
63
|
+
}, "mergeTransfersV5");
|
|
64
|
+
const identifyEventTypeFromLogs = /* @__PURE__ */ __name((groupedEvents) => {
|
|
65
|
+
for (const event of groupedEvents) {
|
|
66
|
+
if ([
|
|
67
|
+
"INITIAL",
|
|
68
|
+
"RETURNED_TO_ISSUER",
|
|
69
|
+
"RETURN_TO_ISSUER_ACCEPTED",
|
|
70
|
+
"RETURN_TO_ISSUER_REJECTED"
|
|
71
|
+
].includes(event.type) || event.type.startsWith("REJECT_")) {
|
|
72
|
+
return event.type;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const isTransferHolder = groupedEvents.some((event) => event.type === "TRANSFER_HOLDER");
|
|
76
|
+
const isTransferBeneficiary = groupedEvents.some(
|
|
77
|
+
(event) => event.type === "TRANSFER_BENEFICIARY"
|
|
78
|
+
);
|
|
79
|
+
if (isTransferHolder && isTransferBeneficiary) {
|
|
80
|
+
return "TRANSFER_OWNERS";
|
|
81
|
+
} else if (isTransferHolder) {
|
|
82
|
+
return "TRANSFER_HOLDER";
|
|
83
|
+
} else if (isTransferBeneficiary) {
|
|
84
|
+
return "TRANSFER_BENEFICIARY";
|
|
85
|
+
}
|
|
86
|
+
throw new Error("Unable to identify event type");
|
|
87
|
+
}, "identifyEventTypeFromLogs");
|
|
88
|
+
const sortLogChain = /* @__PURE__ */ __name((logChain) => {
|
|
89
|
+
return logChain.sort((a, b) => {
|
|
90
|
+
return a.blockNumber - b.blockNumber;
|
|
91
|
+
});
|
|
92
|
+
}, "sortLogChain");
|
|
93
|
+
|
|
94
|
+
export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { sortLogChain, fetchEventTime } from '../endorsement-chain/helpers';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
5
|
+
const getEndorsementChain = /* @__PURE__ */ __name(async (provider, logChain) => {
|
|
6
|
+
const historyChain = [];
|
|
7
|
+
sortLogChain(logChain);
|
|
8
|
+
let previousBeneficiary = "";
|
|
9
|
+
let previousHolder = "";
|
|
10
|
+
const timestampPromises = logChain.map((log) => fetchEventTime(log.blockNumber, provider));
|
|
11
|
+
const timestamps = await Promise.all(timestampPromises);
|
|
12
|
+
logChain.forEach((log, index) => {
|
|
13
|
+
const timestamp = timestamps[index];
|
|
14
|
+
const transactionDetails = {
|
|
15
|
+
type: log.type,
|
|
16
|
+
transactionHash: log.transactionHash,
|
|
17
|
+
transactionIndex: log.transactionIndex,
|
|
18
|
+
blockNumber: log.blockNumber,
|
|
19
|
+
owner: log.owner || previousBeneficiary,
|
|
20
|
+
holder: log.holder || previousHolder,
|
|
21
|
+
timestamp,
|
|
22
|
+
remark: log?.remark || ""
|
|
23
|
+
};
|
|
24
|
+
if (log.type === "TRANSFER_OWNERS" || log.type === "TRANSFER_BENEFICIARY" || log.type === "TRANSFER_HOLDER" || log.type === "INITIAL") {
|
|
25
|
+
historyChain.push(transactionDetails);
|
|
26
|
+
previousHolder = transactionDetails.holder;
|
|
27
|
+
previousBeneficiary = transactionDetails.owner;
|
|
28
|
+
} else if (log.type === "SURRENDER_ACCEPTED" || log.type === "RETURN_TO_ISSUER_ACCEPTED") {
|
|
29
|
+
previousHolder = "";
|
|
30
|
+
previousBeneficiary = "";
|
|
31
|
+
historyChain.push(transactionDetails);
|
|
32
|
+
} else if (log.type === "SURRENDERED" || log.type === "SURRENDER_REJECTED" || log.type === "RETURNED_TO_ISSUER" || log.type === "RETURN_TO_ISSUER_REJECTED") {
|
|
33
|
+
historyChain.push(transactionDetails);
|
|
34
|
+
} else {
|
|
35
|
+
historyChain.push(transactionDetails);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return historyChain;
|
|
39
|
+
}, "getEndorsementChain");
|
|
40
|
+
|
|
41
|
+
export { getEndorsementChain };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { decrypt } from '../decrypt';
|
|
3
|
+
import { fetchEscrowTransfersV4, fetchEscrowTransfersV5 } from '../endorsement-chain/fetchEscrowTransfer';
|
|
4
|
+
import { fetchTokenTransfers } from '../endorsement-chain/fetchTokenTransfer';
|
|
5
|
+
import { mergeTransfersV4, mergeTransfersV5 } from '../endorsement-chain/helpers';
|
|
6
|
+
import { getEndorsementChain } from '../endorsement-chain/retrieveEndorsementChain';
|
|
7
|
+
import { TradeTrustToken__factory } from '../../token-registry-v4/contracts';
|
|
8
|
+
import { supportInterfaceIds } from '../../token-registry-v4/supportInterfaceIds';
|
|
9
|
+
import { supportInterfaceIds as supportInterfaceIds$1 } from '../../token-registry-v5/supportInterfaceIds';
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
const TitleEscrowInterface = {
|
|
14
|
+
V4: supportInterfaceIds.TitleEscrow,
|
|
15
|
+
V5: supportInterfaceIds$1.TitleEscrow
|
|
16
|
+
};
|
|
17
|
+
const fetchTitleEscrowFactoryAddress = /* @__PURE__ */ __name(async (tokenRegistry) => {
|
|
18
|
+
return tokenRegistry.titleEscrowFactory();
|
|
19
|
+
}, "fetchTitleEscrowFactoryAddress");
|
|
20
|
+
const resolveTitleEscrowAddress = /* @__PURE__ */ __name(async (titleEscrowFactoryContract, tokenRegistryAddress, tokenId) => {
|
|
21
|
+
try {
|
|
22
|
+
return await titleEscrowFactoryContract.getEscrowAddress(tokenRegistryAddress, tokenId);
|
|
23
|
+
} catch {
|
|
24
|
+
return titleEscrowFactoryContract.getAddress(tokenRegistryAddress, tokenId);
|
|
25
|
+
}
|
|
26
|
+
}, "resolveTitleEscrowAddress");
|
|
27
|
+
const getTitleEscrowAddress = /* @__PURE__ */ __name(async (tokenRegistryAddress, tokenId, provider) => {
|
|
28
|
+
const tokenRegistryAbi = [
|
|
29
|
+
"function titleEscrowFactory() external view returns (address)",
|
|
30
|
+
"function ownerOf(uint256 tokenId) view returns (address)"
|
|
31
|
+
];
|
|
32
|
+
const tokenRegistry = new ethers.Contract(tokenRegistryAddress, tokenRegistryAbi, provider);
|
|
33
|
+
const titleEscrowOwner = await tokenRegistry.ownerOf(tokenId);
|
|
34
|
+
const BURN_ADDRESS = "0x000000000000000000000000000000000000dEaD";
|
|
35
|
+
const isInactiveEscrow = [BURN_ADDRESS, tokenRegistryAddress].map((address) => address.toLowerCase()).includes(titleEscrowOwner.toLowerCase());
|
|
36
|
+
if (!isInactiveEscrow) return titleEscrowOwner;
|
|
37
|
+
const titleEscrowFactoryAddress = await fetchTitleEscrowFactoryAddress(tokenRegistry);
|
|
38
|
+
const titleEscrowFactoryContract = new ethers.Contract(
|
|
39
|
+
titleEscrowFactoryAddress,
|
|
40
|
+
[
|
|
41
|
+
"function getAddress(address, uint256) view returns (address)",
|
|
42
|
+
"function getEscrowAddress(address, uint256) view returns (address)"
|
|
43
|
+
],
|
|
44
|
+
provider
|
|
45
|
+
);
|
|
46
|
+
return resolveTitleEscrowAddress(titleEscrowFactoryContract, tokenRegistryAddress, tokenId);
|
|
47
|
+
}, "getTitleEscrowAddress");
|
|
48
|
+
const checkSupportsInterface = /* @__PURE__ */ __name(async (titleEscrowAddress, interfaceId, provider) => {
|
|
49
|
+
try {
|
|
50
|
+
const titleEscrowAbi = [
|
|
51
|
+
"function supportsInterface(bytes4 interfaceId) external view returns (bool)"
|
|
52
|
+
];
|
|
53
|
+
const titleEscrowContract = new ethers.Contract(titleEscrowAddress, titleEscrowAbi, provider);
|
|
54
|
+
return await titleEscrowContract.supportsInterface(interfaceId);
|
|
55
|
+
} catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}, "checkSupportsInterface");
|
|
59
|
+
const isTitleEscrowVersion = /* @__PURE__ */ __name(async (versionInterface, tokenRegistryAddress, tokenId, provider) => {
|
|
60
|
+
try {
|
|
61
|
+
const titleEscrowAddress = await getTitleEscrowAddress(tokenRegistryAddress, tokenId, provider);
|
|
62
|
+
return await checkSupportsInterface(titleEscrowAddress, versionInterface, provider);
|
|
63
|
+
} catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}, "isTitleEscrowVersion");
|
|
67
|
+
const fetchEndorsementChain = /* @__PURE__ */ __name(async (tokenRegistry, tokenId, provider, keyId) => {
|
|
68
|
+
if (!tokenRegistry || !tokenId || !provider) {
|
|
69
|
+
throw new Error("Missing required dependencies");
|
|
70
|
+
}
|
|
71
|
+
const [isV4, isV5] = await Promise.all([
|
|
72
|
+
isTitleEscrowVersion(TitleEscrowInterface.V4, tokenRegistry, tokenId, provider),
|
|
73
|
+
isTitleEscrowVersion(TitleEscrowInterface.V5, tokenRegistry, tokenId, provider)
|
|
74
|
+
]);
|
|
75
|
+
if (!isV4 && !isV5) {
|
|
76
|
+
throw new Error("Only Token Registry V4/V5 is supported");
|
|
77
|
+
}
|
|
78
|
+
const titleEscrowAddress = await getTitleEscrowAddress(tokenRegistry, tokenId, provider);
|
|
79
|
+
let transferEvents = [];
|
|
80
|
+
if (isV4) {
|
|
81
|
+
const tokenRegistryContract = TradeTrustToken__factory.connect(tokenRegistry, provider);
|
|
82
|
+
const [tokenLogs, titleEscrowLogs] = await Promise.all([
|
|
83
|
+
fetchTokenTransfers(tokenRegistryContract, tokenId),
|
|
84
|
+
fetchEscrowTransfersV4(provider, titleEscrowAddress)
|
|
85
|
+
]);
|
|
86
|
+
transferEvents = mergeTransfersV4([...titleEscrowLogs, ...tokenLogs]);
|
|
87
|
+
} else if (isV5) {
|
|
88
|
+
const titleEscrowLogs = await fetchEscrowTransfersV5(provider, titleEscrowAddress);
|
|
89
|
+
transferEvents = mergeTransfersV5(titleEscrowLogs);
|
|
90
|
+
}
|
|
91
|
+
const endorsementChain = await getEndorsementChain(provider, transferEvents);
|
|
92
|
+
return isV4 ? endorsementChain : endorsementChain.map((event) => ({
|
|
93
|
+
...event,
|
|
94
|
+
remark: event?.remark?.slice(2) ? decrypt(event.remark.slice(2), keyId ?? "") : ""
|
|
95
|
+
}));
|
|
96
|
+
}, "fetchEndorsementChain");
|
|
97
|
+
|
|
98
|
+
export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion };
|
package/dist/esm/core/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
|
package/dist/esm/w3c/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { PrivateKeyPair } from '@trustvc/w3c-issuer';
|
|
1
|
+
|
|
@@ -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,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,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,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,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,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,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 };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export { decrypt } from './decrypt.js';
|
|
2
|
+
export { encrypt } from './encrypt.js';
|
|
3
|
+
export { verifyDocument } from './verify.js';
|
|
4
|
+
export { fetchEscrowTransfersV4, fetchEscrowTransfersV5 } from './endorsement-chain/fetchEscrowTransfer.js';
|
|
5
|
+
export { fetchTokenTransfers } from './endorsement-chain/fetchTokenTransfer.js';
|
|
6
|
+
export { fetchEventTime, mergeTransfersV4, mergeTransfersV5, sortLogChain } from './endorsement-chain/helpers.js';
|
|
7
|
+
export { getEndorsementChain } from './endorsement-chain/retrieveEndorsementChain.js';
|
|
8
|
+
export { EndorsementChain, ParsedLog, TitleEscrowTransferEvent, TitleEscrowTransferEventType, TokenTransferEvent, TokenTransferEventType, TradeTrustTokenEventType, TransferBaseEvent, TransferEvent, TransferEventType, TypedEvent } from './endorsement-chain/types.js';
|
|
9
|
+
export { TitleEscrowInterface, fetchEndorsementChain, getTitleEscrowAddress, isTitleEscrowVersion } from './endorsement-chain/useEndorsementChain.js';
|
|
10
|
+
import '@trustvc/w3c-vc';
|
|
11
|
+
import '@tradetrust-tt/tt-verify/dist/types/src/types/core';
|
|
12
|
+
import 'ethers';
|
|
13
|
+
import '@tradetrust-tt/token-registry-v4/contracts';
|
|
14
|
+
import '@ethersproject/abstract-provider';
|
|
15
|
+
import 'ethers/lib/utils';
|
|
16
|
+
import '@ethersproject/providers';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { openAttestationDidIdentityProof, openAttestationDidSignedDocumentStatus, openAttestationDnsDidIdentityProof, openAttestationDnsTxtIdentityProof, openAttestationEthereumDocumentStoreStatus, openAttestationEthereumTokenRegistryStatus, openAttestationHash } from '@tradetrust-tt/tt-verify';
|
|
2
2
|
import { w3cSignatureIntegrity } from './verify/fragments/document-integrity/w3cSignatureIntegrity.js';
|
|
3
|
-
import { credentialStatusTransferableRecordVerifier } from './verify/fragments/document-status/transferableRecords/transferableRecordVerifier.js';
|
|
3
|
+
import { TRANSFERABLE_RECORDS_TYPE, credentialStatusTransferableRecordVerifier } from './verify/fragments/document-status/transferableRecords/transferableRecordVerifier.js';
|
|
4
4
|
import { w3cCredentialStatus } from './verify/fragments/document-status/w3cCredentialStatus.js';
|
|
5
5
|
import { w3cIssuerIdentity } from './verify/fragments/issuer-identity/w3cIssuerIdentity.js';
|
|
6
6
|
|
|
7
|
+
declare const index_TRANSFERABLE_RECORDS_TYPE: typeof TRANSFERABLE_RECORDS_TYPE;
|
|
7
8
|
declare const index_credentialStatusTransferableRecordVerifier: typeof credentialStatusTransferableRecordVerifier;
|
|
8
9
|
declare const index_openAttestationDidIdentityProof: typeof openAttestationDidIdentityProof;
|
|
9
10
|
declare const index_openAttestationDidSignedDocumentStatus: typeof openAttestationDidSignedDocumentStatus;
|
|
@@ -16,7 +17,7 @@ declare const index_w3cCredentialStatus: typeof w3cCredentialStatus;
|
|
|
16
17
|
declare const index_w3cIssuerIdentity: typeof w3cIssuerIdentity;
|
|
17
18
|
declare const index_w3cSignatureIntegrity: typeof w3cSignatureIntegrity;
|
|
18
19
|
declare namespace index {
|
|
19
|
-
export { index_credentialStatusTransferableRecordVerifier as credentialStatusTransferableRecordVerifier, index_openAttestationDidIdentityProof as openAttestationDidIdentityProof, index_openAttestationDidSignedDocumentStatus as openAttestationDidSignedDocumentStatus, index_openAttestationDnsDidIdentityProof as openAttestationDnsDidIdentityProof, index_openAttestationDnsTxtIdentityProof as openAttestationDnsTxtIdentityProof, index_openAttestationEthereumDocumentStoreStatus as openAttestationEthereumDocumentStoreStatus, index_openAttestationEthereumTokenRegistryStatus as openAttestationEthereumTokenRegistryStatus, index_openAttestationHash as openAttestationHash, index_w3cCredentialStatus as w3cCredentialStatus, index_w3cIssuerIdentity as w3cIssuerIdentity, index_w3cSignatureIntegrity as w3cSignatureIntegrity };
|
|
20
|
+
export { index_TRANSFERABLE_RECORDS_TYPE as TRANSFERABLE_RECORDS_TYPE, index_credentialStatusTransferableRecordVerifier as credentialStatusTransferableRecordVerifier, index_openAttestationDidIdentityProof as openAttestationDidIdentityProof, index_openAttestationDidSignedDocumentStatus as openAttestationDidSignedDocumentStatus, index_openAttestationDnsDidIdentityProof as openAttestationDnsDidIdentityProof, index_openAttestationDnsTxtIdentityProof as openAttestationDnsTxtIdentityProof, index_openAttestationEthereumDocumentStoreStatus as openAttestationEthereumDocumentStoreStatus, index_openAttestationEthereumTokenRegistryStatus as openAttestationEthereumTokenRegistryStatus, index_openAttestationHash as openAttestationHash, index_w3cCredentialStatus as w3cCredentialStatus, index_w3cIssuerIdentity as w3cIssuerIdentity, index_w3cSignatureIntegrity as w3cSignatureIntegrity };
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
export { index as i };
|