@bsv/wallet-toolbox 1.4.3 → 1.4.5
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/docs/client.md +225 -79
- package/docs/monitor.md +32 -1
- package/docs/wallet.md +225 -79
- package/mobile/out/src/WalletPermissionsManager.d.ts +60 -1
- package/mobile/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/mobile/out/src/WalletPermissionsManager.js +223 -15
- package/mobile/out/src/WalletPermissionsManager.js.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/mobile/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/mobile/package-lock.json +2 -2
- package/mobile/package.json +1 -1
- package/out/src/CWIStyleWalletManager.js +1 -1
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +60 -1
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +222 -15
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/__tests/WalletPermissionsManager.initialization.test.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/sdk/CertOps.d.ts +66 -0
- package/out/src/sdk/CertOps.d.ts.map +1 -0
- package/out/src/sdk/CertOps.js +198 -0
- package/out/src/sdk/CertOps.js.map +1 -0
- package/out/src/sdk/StorageSyncReader.d.ts +121 -0
- package/out/src/sdk/StorageSyncReader.d.ts.map +1 -0
- package/out/src/sdk/StorageSyncReader.js +3 -0
- package/out/src/sdk/StorageSyncReader.js.map +1 -0
- package/out/src/sdk/StorageSyncReaderWriter.d.ts +89 -0
- package/out/src/sdk/StorageSyncReaderWriter.d.ts.map +1 -0
- package/out/src/sdk/StorageSyncReaderWriter.js +3 -0
- package/out/src/sdk/StorageSyncReaderWriter.js.map +1 -0
- package/out/src/services/__tests/ARC.test.d.ts +2 -0
- package/out/src/services/__tests/ARC.test.d.ts.map +1 -0
- package/out/src/services/__tests/ARC.test.js +104 -0
- package/out/src/services/__tests/ARC.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts +98 -0
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js +38 -0
- package/out/src/services/chaintracker/chaintracks/BlockHeaderApi.js.map +1 -0
- package/out/src/storage/methods/listActions.d.ts +5 -0
- package/out/src/storage/methods/listActions.d.ts.map +1 -0
- package/out/src/storage/methods/listActions.js +228 -0
- package/out/src/storage/methods/listActions.js.map +1 -0
- package/out/src/storage/methods/listOutputs.d.ts +5 -0
- package/out/src/storage/methods/listOutputs.d.ts.map +1 -0
- package/out/src/storage/methods/listOutputs.js +295 -0
- package/out/src/storage/methods/listOutputs.js.map +1 -0
- package/out/src/storage/schema/entities/Certificate.d.ts +43 -0
- package/out/src/storage/schema/entities/Certificate.d.ts.map +1 -0
- package/out/src/storage/schema/entities/Certificate.js +162 -0
- package/out/src/storage/schema/entities/Certificate.js.map +1 -0
- package/out/src/storage/schema/entities/CertificateField.d.ts +32 -0
- package/out/src/storage/schema/entities/CertificateField.d.ts.map +1 -0
- package/out/src/storage/schema/entities/CertificateField.js +114 -0
- package/out/src/storage/schema/entities/CertificateField.js.map +1 -0
- package/out/src/storage/schema/entities/Commission.d.ts +37 -0
- package/out/src/storage/schema/entities/Commission.d.ts.map +1 -0
- package/out/src/storage/schema/entities/Commission.js +130 -0
- package/out/src/storage/schema/entities/Commission.js.map +1 -0
- package/out/src/storage/schema/entities/Output.d.ts +67 -0
- package/out/src/storage/schema/entities/Output.d.ts.map +1 -0
- package/out/src/storage/schema/entities/Output.js +281 -0
- package/out/src/storage/schema/entities/Output.js.map +1 -0
- package/out/src/storage/schema/entities/OutputBasket.d.ts +35 -0
- package/out/src/storage/schema/entities/OutputBasket.d.ts.map +1 -0
- package/out/src/storage/schema/entities/OutputBasket.js +133 -0
- package/out/src/storage/schema/entities/OutputBasket.js.map +1 -0
- package/out/src/storage/schema/entities/OutputTag.d.ts +31 -0
- package/out/src/storage/schema/entities/OutputTag.d.ts.map +1 -0
- package/out/src/storage/schema/entities/OutputTag.js +104 -0
- package/out/src/storage/schema/entities/OutputTag.js.map +1 -0
- package/out/src/storage/schema/entities/OutputTagMap.d.ts +28 -0
- package/out/src/storage/schema/entities/OutputTagMap.d.ts.map +1 -0
- package/out/src/storage/schema/entities/OutputTagMap.js +101 -0
- package/out/src/storage/schema/entities/OutputTagMap.js.map +1 -0
- package/out/src/storage/schema/entities/ProvenTx.d.ts +84 -0
- package/out/src/storage/schema/entities/ProvenTx.d.ts.map +1 -0
- package/out/src/storage/schema/entities/ProvenTx.js +286 -0
- package/out/src/storage/schema/entities/ProvenTx.js.map +1 -0
- package/out/src/storage/schema/entities/ProvenTxReq.d.ts +135 -0
- package/out/src/storage/schema/entities/ProvenTxReq.d.ts.map +1 -0
- package/out/src/storage/schema/entities/ProvenTxReq.js +532 -0
- package/out/src/storage/schema/entities/ProvenTxReq.js.map +1 -0
- package/out/src/storage/schema/entities/SyncState.d.ts +66 -0
- package/out/src/storage/schema/entities/SyncState.d.ts.map +1 -0
- package/out/src/storage/schema/entities/SyncState.js +284 -0
- package/out/src/storage/schema/entities/SyncState.js.map +1 -0
- package/out/src/storage/schema/entities/Transaction.d.ts +67 -0
- package/out/src/storage/schema/entities/Transaction.d.ts.map +1 -0
- package/out/src/storage/schema/entities/Transaction.js +264 -0
- package/out/src/storage/schema/entities/Transaction.js.map +1 -0
- package/out/src/storage/schema/entities/TxLabel.d.ts +31 -0
- package/out/src/storage/schema/entities/TxLabel.d.ts.map +1 -0
- package/out/src/storage/schema/entities/TxLabel.js +104 -0
- package/out/src/storage/schema/entities/TxLabel.js.map +1 -0
- package/out/src/storage/schema/entities/TxLabelMap.d.ts +28 -0
- package/out/src/storage/schema/entities/TxLabelMap.d.ts.map +1 -0
- package/out/src/storage/schema/entities/TxLabelMap.js +103 -0
- package/out/src/storage/schema/entities/TxLabelMap.js.map +1 -0
- package/out/src/storage/schema/entities/User.d.ts +29 -0
- package/out/src/storage/schema/entities/User.d.ts.map +1 -0
- package/out/src/storage/schema/entities/User.js +100 -0
- package/out/src/storage/schema/entities/User.js.map +1 -0
- package/out/src/storage/schema/tables/Certificate.d.ts +20 -0
- package/out/src/storage/schema/tables/Certificate.d.ts.map +1 -0
- package/out/src/storage/schema/tables/Certificate.js +3 -0
- package/out/src/storage/schema/tables/Certificate.js.map +1 -0
- package/out/src/storage/schema/tables/CertificateField.d.ts +12 -0
- package/out/src/storage/schema/tables/CertificateField.d.ts.map +1 -0
- package/out/src/storage/schema/tables/CertificateField.js +3 -0
- package/out/src/storage/schema/tables/CertificateField.js.map +1 -0
- package/out/src/storage/schema/tables/Commission.d.ts +13 -0
- package/out/src/storage/schema/tables/Commission.d.ts.map +1 -0
- package/out/src/storage/schema/tables/Commission.js +3 -0
- package/out/src/storage/schema/tables/Commission.js.map +1 -0
- package/out/src/storage/schema/tables/MonitorEvent.d.ts +9 -0
- package/out/src/storage/schema/tables/MonitorEvent.d.ts.map +1 -0
- package/out/src/storage/schema/tables/MonitorEvent.js +3 -0
- package/out/src/storage/schema/tables/MonitorEvent.js.map +1 -0
- package/out/src/storage/schema/tables/Output.d.ts +36 -0
- package/out/src/storage/schema/tables/Output.d.ts.map +1 -0
- package/out/src/storage/schema/tables/Output.js +31 -0
- package/out/src/storage/schema/tables/Output.js.map +1 -0
- package/out/src/storage/schema/tables/OutputBasket.d.ts +12 -0
- package/out/src/storage/schema/tables/OutputBasket.d.ts.map +1 -0
- package/out/src/storage/schema/tables/OutputBasket.js +3 -0
- package/out/src/storage/schema/tables/OutputBasket.js.map +1 -0
- package/out/src/storage/schema/tables/OutputTag.d.ts +10 -0
- package/out/src/storage/schema/tables/OutputTag.d.ts.map +1 -0
- package/out/src/storage/schema/tables/OutputTag.js +3 -0
- package/out/src/storage/schema/tables/OutputTag.js.map +1 -0
- package/out/src/storage/schema/tables/OutputTagMap.d.ts +9 -0
- package/out/src/storage/schema/tables/OutputTagMap.d.ts.map +1 -0
- package/out/src/storage/schema/tables/OutputTagMap.js +3 -0
- package/out/src/storage/schema/tables/OutputTagMap.js.map +1 -0
- package/out/src/storage/schema/tables/ProvenTx.d.ts +14 -0
- package/out/src/storage/schema/tables/ProvenTx.d.ts.map +1 -0
- package/out/src/storage/schema/tables/ProvenTx.js +3 -0
- package/out/src/storage/schema/tables/ProvenTx.js.map +1 -0
- package/out/src/storage/schema/tables/ProvenTxReq.d.ts +64 -0
- package/out/src/storage/schema/tables/ProvenTxReq.d.ts.map +1 -0
- package/out/src/storage/schema/tables/ProvenTxReq.js +3 -0
- package/out/src/storage/schema/tables/ProvenTxReq.js.map +1 -0
- package/out/src/storage/schema/tables/SyncState.d.ts +18 -0
- package/out/src/storage/schema/tables/SyncState.d.ts.map +1 -0
- package/out/src/storage/schema/tables/SyncState.js +3 -0
- package/out/src/storage/schema/tables/SyncState.js.map +1 -0
- package/out/src/storage/schema/tables/Transaction.d.ts +37 -0
- package/out/src/storage/schema/tables/Transaction.d.ts.map +1 -0
- package/out/src/storage/schema/tables/Transaction.js +21 -0
- package/out/src/storage/schema/tables/Transaction.js.map +1 -0
- package/out/src/storage/schema/tables/TxLabel.d.ts +10 -0
- package/out/src/storage/schema/tables/TxLabel.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TxLabel.js +3 -0
- package/out/src/storage/schema/tables/TxLabel.js.map +1 -0
- package/out/src/storage/schema/tables/TxLabelMap.d.ts +9 -0
- package/out/src/storage/schema/tables/TxLabelMap.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TxLabelMap.js +3 -0
- package/out/src/storage/schema/tables/TxLabelMap.js.map +1 -0
- package/out/src/storage/schema/tables/User.d.ts +16 -0
- package/out/src/storage/schema/tables/User.d.ts.map +1 -0
- package/out/src/storage/schema/tables/User.js +3 -0
- package/out/src/storage/schema/tables/User.js.map +1 -0
- package/out/test/Wallet/action/abortAction.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/action/abortAction.test.js.map +1 -1
- package/out/test/Wallet/action/createAction.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/action/createAction.test.js.map +1 -1
- package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts.map +1 -1
- package/out/test/{wallet → Wallet}/action/createAction2.test.js.map +1 -1
- package/out/test/Wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js.map +1 -1
- package/out/test/Wallet/action/internalizeAction.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/action/internalizeAction.test.js.map +1 -1
- package/out/test/Wallet/action/relinquishOutput.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js.map +1 -1
- package/out/test/Wallet/construct/Wallet.constructor.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js.map +1 -1
- package/out/test/Wallet/list/listActions.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/list/listActions.test.js.map +1 -1
- package/out/test/Wallet/list/listActions2.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/list/listActions2.test.js.map +1 -1
- package/out/test/Wallet/list/listCertificates.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/list/listCertificates.test.js.map +1 -1
- package/out/test/Wallet/list/listOutputs.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/list/listOutputs.test.js.map +1 -1
- package/out/test/Wallet/local/localWalletMethods.d.ts +28 -0
- package/out/test/Wallet/local/localWalletMethods.d.ts.map +1 -0
- package/out/test/Wallet/local/localWalletMethods.js +281 -0
- package/out/test/Wallet/local/localWalletMethods.js.map +1 -0
- package/out/test/Wallet/support/opers1.man.test.d.ts +2 -0
- package/out/test/Wallet/support/opers1.man.test.d.ts.map +1 -0
- package/out/test/Wallet/support/opers1.man.test.js +202 -0
- package/out/test/Wallet/support/opers1.man.test.js.map +1 -0
- package/out/test/Wallet/sync/Wallet.sync.test.d.ts.map +1 -0
- package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/CWIStyleWalletManager.ts +1 -1
- package/src/WalletPermissionsManager.ts +317 -26
- package/src/__tests/WalletPermissionsManager.initialization.test.ts +1 -1
- package/src/monitor/tasks/TaskCheckNoSends.ts +0 -1
- package/src/monitor/tasks/TaskNewHeader.ts +1 -1
- package/out/test/wallet/action/abortAction.test.d.ts.map +0 -1
- package/out/test/wallet/action/createAction.test.d.ts.map +0 -1
- package/out/test/wallet/action/createActionToGenerateBeefs.man.test.d.ts.map +0 -1
- package/out/test/wallet/action/internalizeAction.test.d.ts.map +0 -1
- package/out/test/wallet/action/relinquishOutput.test.d.ts.map +0 -1
- package/out/test/wallet/construct/Wallet.constructor.test.d.ts.map +0 -1
- package/out/test/wallet/list/listActions.test.d.ts.map +0 -1
- package/out/test/wallet/list/listActions2.test.d.ts.map +0 -1
- package/out/test/wallet/list/listCertificates.test.d.ts.map +0 -1
- package/out/test/wallet/list/listOutputs.test.d.ts.map +0 -1
- package/out/test/wallet/sync/Wallet.sync.test.d.ts.map +0 -1
- /package/out/test/{wallet → Wallet}/action/abortAction.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/abortAction.test.js +0 -0
- /package/out/test/{wallet → Wallet}/action/createAction.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/createAction.test.js +0 -0
- /package/out/test/{wallet → Wallet}/action/createAction2.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/createAction2.test.js +0 -0
- /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.js +0 -0
- /package/out/test/{wallet → Wallet}/action/internalizeAction.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/internalizeAction.test.js +0 -0
- /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/action/relinquishOutput.test.js +0 -0
- /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/construct/Wallet.constructor.test.js +0 -0
- /package/out/test/{wallet → Wallet}/list/listActions.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/list/listActions.test.js +0 -0
- /package/out/test/{wallet → Wallet}/list/listActions2.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/list/listActions2.test.js +0 -0
- /package/out/test/{wallet → Wallet}/list/listCertificates.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/list/listCertificates.test.js +0 -0
- /package/out/test/{wallet → Wallet}/list/listOutputs.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/list/listOutputs.test.js +0 -0
- /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.d.ts +0 -0
- /package/out/test/{wallet → Wallet}/sync/Wallet.sync.test.js +0 -0
- /package/test/{wallet → Wallet}/action/abortAction.test.ts +0 -0
- /package/test/{wallet → Wallet}/action/createAction.test.ts +0 -0
- /package/test/{wallet → Wallet}/action/createAction2.test.ts +0 -0
- /package/test/{wallet → Wallet}/action/createActionToGenerateBeefs.man.test.ts +0 -0
- /package/test/{wallet → Wallet}/action/internalizeAction.test.ts +0 -0
- /package/test/{wallet → Wallet}/action/relinquishOutput.test.ts +0 -0
- /package/test/{wallet → Wallet}/construct/Wallet.constructor.test.ts +0 -0
- /package/test/{wallet → Wallet}/list/listActions.test.ts +0 -0
- /package/test/{wallet → Wallet}/list/listActions2.test.ts +0 -0
- /package/test/{wallet → Wallet}/list/listCertificates.test.ts +0 -0
- /package/test/{wallet → Wallet}/list/listOutputs.test.ts +0 -0
- /package/test/{wallet → Wallet}/sync/Wallet.sync.test.ts +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityOutputTagMap = void 0;
|
|
4
|
+
const index_client_1 = require("../../../index.client");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
class EntityOutputTagMap extends _1.EntityBase {
|
|
7
|
+
constructor(api) {
|
|
8
|
+
const now = new Date();
|
|
9
|
+
super(api || {
|
|
10
|
+
created_at: now,
|
|
11
|
+
updated_at: now,
|
|
12
|
+
outputId: 0,
|
|
13
|
+
outputTagId: 0,
|
|
14
|
+
isDeleted: false
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
updateApi() {
|
|
18
|
+
/* nothing needed yet... */
|
|
19
|
+
}
|
|
20
|
+
get outputTagId() {
|
|
21
|
+
return this.api.outputTagId;
|
|
22
|
+
}
|
|
23
|
+
set outputTagId(v) {
|
|
24
|
+
this.api.outputTagId = v;
|
|
25
|
+
}
|
|
26
|
+
get outputId() {
|
|
27
|
+
return this.api.outputId;
|
|
28
|
+
}
|
|
29
|
+
set outputId(v) {
|
|
30
|
+
this.api.outputId = v;
|
|
31
|
+
}
|
|
32
|
+
get created_at() {
|
|
33
|
+
return this.api.created_at;
|
|
34
|
+
}
|
|
35
|
+
set created_at(v) {
|
|
36
|
+
this.api.created_at = v;
|
|
37
|
+
}
|
|
38
|
+
get updated_at() {
|
|
39
|
+
return this.api.updated_at;
|
|
40
|
+
}
|
|
41
|
+
set updated_at(v) {
|
|
42
|
+
this.api.updated_at = v;
|
|
43
|
+
}
|
|
44
|
+
get isDeleted() {
|
|
45
|
+
return this.api.isDeleted;
|
|
46
|
+
}
|
|
47
|
+
set isDeleted(v) {
|
|
48
|
+
this.api.isDeleted = v;
|
|
49
|
+
}
|
|
50
|
+
get id() {
|
|
51
|
+
throw new index_client_1.sdk.WERR_INVALID_OPERATION('entity has no "id" value');
|
|
52
|
+
}
|
|
53
|
+
get entityName() {
|
|
54
|
+
return 'outputTagMap';
|
|
55
|
+
}
|
|
56
|
+
get entityTable() {
|
|
57
|
+
return 'output_tags_map';
|
|
58
|
+
}
|
|
59
|
+
equals(ei, syncMap) {
|
|
60
|
+
const eo = this.toApi();
|
|
61
|
+
if (eo.outputId !==
|
|
62
|
+
(syncMap ? syncMap.output.idMap[(0, index_client_1.verifyId)(ei.outputId)] : ei.outputId) ||
|
|
63
|
+
eo.outputTagId !==
|
|
64
|
+
(syncMap
|
|
65
|
+
? syncMap.outputTag.idMap[(0, index_client_1.verifyId)(ei.outputTagId)]
|
|
66
|
+
: ei.outputTagId) ||
|
|
67
|
+
eo.isDeleted !== ei.isDeleted)
|
|
68
|
+
return false;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
static async mergeFind(storage, userId, ei, syncMap, trx) {
|
|
72
|
+
const outputId = syncMap.output.idMap[ei.outputId];
|
|
73
|
+
const outputTagId = syncMap.outputTag.idMap[ei.outputTagId];
|
|
74
|
+
const ef = (0, index_client_1.verifyOneOrNone)(await storage.findOutputTagMaps({
|
|
75
|
+
partial: { outputId, outputTagId },
|
|
76
|
+
trx
|
|
77
|
+
}));
|
|
78
|
+
return {
|
|
79
|
+
found: !!ef,
|
|
80
|
+
eo: new EntityOutputTagMap(ef || { ...ei }),
|
|
81
|
+
eiId: -1
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async mergeNew(storage, userId, syncMap, trx) {
|
|
85
|
+
this.outputId = syncMap.output.idMap[this.outputId];
|
|
86
|
+
this.outputTagId = syncMap.outputTag.idMap[this.outputTagId];
|
|
87
|
+
await storage.insertOutputTagMap(this.toApi(), trx);
|
|
88
|
+
}
|
|
89
|
+
async mergeExisting(storage, since, ei, syncMap, trx) {
|
|
90
|
+
let wasMerged = false;
|
|
91
|
+
if (ei.updated_at > this.updated_at) {
|
|
92
|
+
this.isDeleted = ei.isDeleted;
|
|
93
|
+
this.updated_at = new Date();
|
|
94
|
+
await storage.updateOutputTagMap(this.outputId, this.outputTagId, this.toApi(), trx);
|
|
95
|
+
wasMerged = true;
|
|
96
|
+
}
|
|
97
|
+
return wasMerged;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.EntityOutputTagMap = EntityOutputTagMap;
|
|
101
|
+
//# sourceMappingURL=OutputTagMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutputTagMap.js","sourceRoot":"","sources":["../../../../../src/storage/schema/entities/OutputTagMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { MerklePath } from '@bsv/sdk';
|
|
2
|
+
import { sdk, TableProvenTx } from '../../../index.client';
|
|
3
|
+
import { EntityBase, EntityProvenTxReq, EntityStorage, SyncMap } from '.';
|
|
4
|
+
export declare class EntityProvenTx extends EntityBase<TableProvenTx> {
|
|
5
|
+
/**
|
|
6
|
+
* Given a txid and optionally its rawTx, create a new ProvenTx object.
|
|
7
|
+
*
|
|
8
|
+
* rawTx is fetched if not provided.
|
|
9
|
+
*
|
|
10
|
+
* Only succeeds (proven is not undefined) if a proof is confirmed for rawTx,
|
|
11
|
+
* and hash of rawTx is confirmed to match txid
|
|
12
|
+
*
|
|
13
|
+
* The returned ProvenTx and ProvenTxReq objects have not been added to the storage database,
|
|
14
|
+
* this is optional and can be done by the caller if appropriate.
|
|
15
|
+
*
|
|
16
|
+
* @param txid
|
|
17
|
+
* @param services
|
|
18
|
+
* @param rawTx
|
|
19
|
+
* @returns
|
|
20
|
+
*/
|
|
21
|
+
static fromTxid(txid: string, services: sdk.WalletServices, rawTx?: number[]): Promise<ProvenTxFromTxidResult>;
|
|
22
|
+
constructor(api?: TableProvenTx);
|
|
23
|
+
updateApi(): void;
|
|
24
|
+
/**
|
|
25
|
+
* @returns desirialized `MerklePath` object, value is cached.
|
|
26
|
+
*/
|
|
27
|
+
getMerklePath(): MerklePath;
|
|
28
|
+
_mp?: MerklePath;
|
|
29
|
+
get provenTxId(): number;
|
|
30
|
+
set provenTxId(v: number);
|
|
31
|
+
get created_at(): Date;
|
|
32
|
+
set created_at(v: Date);
|
|
33
|
+
get updated_at(): Date;
|
|
34
|
+
set updated_at(v: Date);
|
|
35
|
+
get txid(): string;
|
|
36
|
+
set txid(v: string);
|
|
37
|
+
get height(): number;
|
|
38
|
+
set height(v: number);
|
|
39
|
+
get index(): number;
|
|
40
|
+
set index(v: number);
|
|
41
|
+
get merklePath(): number[];
|
|
42
|
+
set merklePath(v: number[]);
|
|
43
|
+
get rawTx(): number[];
|
|
44
|
+
set rawTx(v: number[]);
|
|
45
|
+
get blockHash(): string;
|
|
46
|
+
set blockHash(v: string);
|
|
47
|
+
get merkleRoot(): string;
|
|
48
|
+
set merkleRoot(v: string);
|
|
49
|
+
get id(): number;
|
|
50
|
+
set id(v: number);
|
|
51
|
+
get entityName(): string;
|
|
52
|
+
get entityTable(): string;
|
|
53
|
+
equals(ei: TableProvenTx, syncMap?: SyncMap | undefined): boolean;
|
|
54
|
+
static mergeFind(storage: EntityStorage, userId: number, ei: TableProvenTx, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<{
|
|
55
|
+
found: boolean;
|
|
56
|
+
eo: EntityProvenTx;
|
|
57
|
+
eiId: number;
|
|
58
|
+
}>;
|
|
59
|
+
mergeNew(storage: EntityStorage, userId: number, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<void>;
|
|
60
|
+
mergeExisting(storage: EntityStorage, since: Date | undefined, ei: TableProvenTx, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* How high attempts can go before status is forced to invalid
|
|
63
|
+
*/
|
|
64
|
+
static getProofAttemptsLimit: number;
|
|
65
|
+
/**
|
|
66
|
+
* How many hours we have to try for a poof
|
|
67
|
+
*/
|
|
68
|
+
static getProofMinutes: number;
|
|
69
|
+
/**
|
|
70
|
+
* Try to create a new ProvenTx from a ProvenTxReq and GetMerkleProofResultApi
|
|
71
|
+
*
|
|
72
|
+
* Otherwise it returns undefined and updates req.status to either 'unknown', 'invalid', or 'unconfirmed'
|
|
73
|
+
*
|
|
74
|
+
* @param req
|
|
75
|
+
* @param gmpResult
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
static fromReq(req: EntityProvenTxReq, gmpResult: sdk.GetMerklePathResult, countsAsAttempt: boolean): Promise<EntityProvenTx | undefined>;
|
|
79
|
+
}
|
|
80
|
+
export interface ProvenTxFromTxidResult {
|
|
81
|
+
proven?: EntityProvenTx;
|
|
82
|
+
rawTx?: number[];
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ProvenTx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenTx.d.ts","sourceRoot":"","sources":["../../../../../src/storage/schema/entities/ProvenTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityProvenTx = void 0;
|
|
4
|
+
const sdk_1 = require("@bsv/sdk");
|
|
5
|
+
const index_client_1 = require("../../../index.client");
|
|
6
|
+
const _1 = require(".");
|
|
7
|
+
class EntityProvenTx extends _1.EntityBase {
|
|
8
|
+
/**
|
|
9
|
+
* Given a txid and optionally its rawTx, create a new ProvenTx object.
|
|
10
|
+
*
|
|
11
|
+
* rawTx is fetched if not provided.
|
|
12
|
+
*
|
|
13
|
+
* Only succeeds (proven is not undefined) if a proof is confirmed for rawTx,
|
|
14
|
+
* and hash of rawTx is confirmed to match txid
|
|
15
|
+
*
|
|
16
|
+
* The returned ProvenTx and ProvenTxReq objects have not been added to the storage database,
|
|
17
|
+
* this is optional and can be done by the caller if appropriate.
|
|
18
|
+
*
|
|
19
|
+
* @param txid
|
|
20
|
+
* @param services
|
|
21
|
+
* @param rawTx
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
static async fromTxid(txid, services, rawTx) {
|
|
25
|
+
var _a;
|
|
26
|
+
const r = { proven: undefined, rawTx };
|
|
27
|
+
const chain = services.chain;
|
|
28
|
+
if (!r.rawTx) {
|
|
29
|
+
const gr = await services.getRawTx(txid);
|
|
30
|
+
if (!(gr === null || gr === void 0 ? void 0 : gr.rawTx))
|
|
31
|
+
// Failing to find anything...
|
|
32
|
+
return r;
|
|
33
|
+
r.rawTx = gr.rawTx;
|
|
34
|
+
}
|
|
35
|
+
const gmpr = await services.getMerklePath(txid);
|
|
36
|
+
if (gmpr.merklePath && gmpr.header) {
|
|
37
|
+
const index = (_a = gmpr.merklePath.path[0].find(l => l.hash === txid)) === null || _a === void 0 ? void 0 : _a.offset;
|
|
38
|
+
if (index !== undefined) {
|
|
39
|
+
const api = {
|
|
40
|
+
created_at: new Date(),
|
|
41
|
+
updated_at: new Date(),
|
|
42
|
+
provenTxId: 0,
|
|
43
|
+
txid,
|
|
44
|
+
height: gmpr.header.height,
|
|
45
|
+
index,
|
|
46
|
+
merklePath: gmpr.merklePath.toBinary(),
|
|
47
|
+
rawTx: r.rawTx,
|
|
48
|
+
blockHash: gmpr.header.hash,
|
|
49
|
+
merkleRoot: gmpr.header.merkleRoot
|
|
50
|
+
};
|
|
51
|
+
r.proven = new EntityProvenTx(api);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return r;
|
|
55
|
+
}
|
|
56
|
+
constructor(api) {
|
|
57
|
+
const now = new Date();
|
|
58
|
+
super(api || {
|
|
59
|
+
provenTxId: 0,
|
|
60
|
+
created_at: now,
|
|
61
|
+
updated_at: now,
|
|
62
|
+
txid: '',
|
|
63
|
+
height: 0,
|
|
64
|
+
index: 0,
|
|
65
|
+
merklePath: [],
|
|
66
|
+
rawTx: [],
|
|
67
|
+
blockHash: '',
|
|
68
|
+
merkleRoot: ''
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
updateApi() {
|
|
72
|
+
/* nothing needed yet... */
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @returns desirialized `MerklePath` object, value is cached.
|
|
76
|
+
*/
|
|
77
|
+
getMerklePath() {
|
|
78
|
+
if (!this._mp)
|
|
79
|
+
this._mp = sdk_1.MerklePath.fromBinary(this.api.merklePath);
|
|
80
|
+
return this._mp;
|
|
81
|
+
}
|
|
82
|
+
get provenTxId() {
|
|
83
|
+
return this.api.provenTxId;
|
|
84
|
+
}
|
|
85
|
+
set provenTxId(v) {
|
|
86
|
+
this.api.provenTxId = v;
|
|
87
|
+
}
|
|
88
|
+
get created_at() {
|
|
89
|
+
return this.api.created_at;
|
|
90
|
+
}
|
|
91
|
+
set created_at(v) {
|
|
92
|
+
this.api.created_at = v;
|
|
93
|
+
}
|
|
94
|
+
get updated_at() {
|
|
95
|
+
return this.api.updated_at;
|
|
96
|
+
}
|
|
97
|
+
set updated_at(v) {
|
|
98
|
+
this.api.updated_at = v;
|
|
99
|
+
}
|
|
100
|
+
get txid() {
|
|
101
|
+
return this.api.txid;
|
|
102
|
+
}
|
|
103
|
+
set txid(v) {
|
|
104
|
+
this.api.txid = v;
|
|
105
|
+
}
|
|
106
|
+
get height() {
|
|
107
|
+
return this.api.height;
|
|
108
|
+
}
|
|
109
|
+
set height(v) {
|
|
110
|
+
this.api.height = v;
|
|
111
|
+
}
|
|
112
|
+
get index() {
|
|
113
|
+
return this.api.index;
|
|
114
|
+
}
|
|
115
|
+
set index(v) {
|
|
116
|
+
this.api.index = v;
|
|
117
|
+
}
|
|
118
|
+
get merklePath() {
|
|
119
|
+
return this.api.merklePath;
|
|
120
|
+
}
|
|
121
|
+
set merklePath(v) {
|
|
122
|
+
this.api.merklePath = v;
|
|
123
|
+
}
|
|
124
|
+
get rawTx() {
|
|
125
|
+
return this.api.rawTx;
|
|
126
|
+
}
|
|
127
|
+
set rawTx(v) {
|
|
128
|
+
this.api.rawTx = v;
|
|
129
|
+
}
|
|
130
|
+
get blockHash() {
|
|
131
|
+
return this.api.blockHash;
|
|
132
|
+
}
|
|
133
|
+
set blockHash(v) {
|
|
134
|
+
this.api.blockHash = v;
|
|
135
|
+
}
|
|
136
|
+
get merkleRoot() {
|
|
137
|
+
return this.api.merkleRoot;
|
|
138
|
+
}
|
|
139
|
+
set merkleRoot(v) {
|
|
140
|
+
this.api.merkleRoot = v;
|
|
141
|
+
}
|
|
142
|
+
get id() {
|
|
143
|
+
return this.api.provenTxId;
|
|
144
|
+
}
|
|
145
|
+
set id(v) {
|
|
146
|
+
this.api.provenTxId = v;
|
|
147
|
+
}
|
|
148
|
+
get entityName() {
|
|
149
|
+
return 'provenTx';
|
|
150
|
+
}
|
|
151
|
+
get entityTable() {
|
|
152
|
+
return 'proven_txs';
|
|
153
|
+
}
|
|
154
|
+
equals(ei, syncMap) {
|
|
155
|
+
const eo = this.toApi();
|
|
156
|
+
if (eo.txid != ei.txid ||
|
|
157
|
+
eo.height != ei.height ||
|
|
158
|
+
eo.index != ei.index ||
|
|
159
|
+
!(0, index_client_1.arraysEqual)(eo.merklePath, ei.merklePath) ||
|
|
160
|
+
!(0, index_client_1.arraysEqual)(eo.rawTx, ei.rawTx) ||
|
|
161
|
+
eo.blockHash !== ei.blockHash ||
|
|
162
|
+
eo.merkleRoot !== ei.merkleRoot
|
|
163
|
+
// equality does not depend on timestamps.
|
|
164
|
+
// || eo.created_at !== ei.created_at
|
|
165
|
+
// || eo.updated_at !== ei.updated_at
|
|
166
|
+
)
|
|
167
|
+
return false;
|
|
168
|
+
if (syncMap) {
|
|
169
|
+
if (eo.provenTxId !== syncMap.provenTx.idMap[ei.provenTxId])
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
if (eo.provenTxId !== ei.provenTxId)
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
static async mergeFind(storage, userId, ei, syncMap, trx) {
|
|
179
|
+
const ef = (0, index_client_1.verifyOneOrNone)(await storage.findProvenTxs({ partial: { txid: ei.txid }, trx }));
|
|
180
|
+
return {
|
|
181
|
+
found: !!ef,
|
|
182
|
+
eo: new EntityProvenTx(ef || { ...ei }),
|
|
183
|
+
eiId: (0, index_client_1.verifyId)(ei.provenTxId)
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
async mergeNew(storage, userId, syncMap, trx) {
|
|
187
|
+
this.provenTxId = 0;
|
|
188
|
+
// TODO: Since these records are a shared resource, the record must be validated before accepting it...
|
|
189
|
+
this.provenTxId = await storage.insertProvenTx(this.toApi(), trx);
|
|
190
|
+
}
|
|
191
|
+
async mergeExisting(storage, since, ei, syncMap, trx) {
|
|
192
|
+
// ProvenTxs are never updated.
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Try to create a new ProvenTx from a ProvenTxReq and GetMerkleProofResultApi
|
|
197
|
+
*
|
|
198
|
+
* Otherwise it returns undefined and updates req.status to either 'unknown', 'invalid', or 'unconfirmed'
|
|
199
|
+
*
|
|
200
|
+
* @param req
|
|
201
|
+
* @param gmpResult
|
|
202
|
+
* @returns
|
|
203
|
+
*/
|
|
204
|
+
static async fromReq(req, gmpResult, countsAsAttempt) {
|
|
205
|
+
if (!req.txid)
|
|
206
|
+
throw new index_client_1.sdk.WERR_MISSING_PARAMETER('req.txid');
|
|
207
|
+
if (!req.rawTx)
|
|
208
|
+
throw new index_client_1.sdk.WERR_MISSING_PARAMETER('req.rawTx');
|
|
209
|
+
if (!req.rawTx)
|
|
210
|
+
throw new index_client_1.sdk.WERR_INTERNAL('rawTx must be valid');
|
|
211
|
+
for (const note of gmpResult.notes || []) {
|
|
212
|
+
req.addHistoryNote(note, true);
|
|
213
|
+
}
|
|
214
|
+
if (!gmpResult.name && !gmpResult.merklePath && !gmpResult.error) {
|
|
215
|
+
// Most likely offline or now services configured.
|
|
216
|
+
// Does not count as a proof attempt.
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
if (!gmpResult.merklePath) {
|
|
220
|
+
if (req.created_at) {
|
|
221
|
+
const reqAgeInMsecs = Date.now() - req.created_at.getTime();
|
|
222
|
+
const reqAgeInMinutes = Math.ceil(reqAgeInMsecs < 1 ? 0 : reqAgeInMsecs / (1000 * 60));
|
|
223
|
+
if (req.attempts > EntityProvenTx.getProofAttemptsLimit &&
|
|
224
|
+
reqAgeInMinutes > EntityProvenTx.getProofMinutes) {
|
|
225
|
+
// Start the process of setting transactions to 'failed'
|
|
226
|
+
req.addHistoryNote({
|
|
227
|
+
what: 'getMerklePathGiveUp',
|
|
228
|
+
attempts: req.attempts,
|
|
229
|
+
limit: EntityProvenTx.getProofAttemptsLimit,
|
|
230
|
+
ageInMinutes: reqAgeInMinutes
|
|
231
|
+
}, true);
|
|
232
|
+
req.notified = false;
|
|
233
|
+
req.status = 'invalid';
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
if (countsAsAttempt)
|
|
239
|
+
req.attempts++;
|
|
240
|
+
const merklePaths = Array.isArray(gmpResult.merklePath)
|
|
241
|
+
? gmpResult.merklePath
|
|
242
|
+
: [gmpResult.merklePath];
|
|
243
|
+
for (const proof of merklePaths) {
|
|
244
|
+
try {
|
|
245
|
+
const now = new Date();
|
|
246
|
+
const leaf = proof.path[0].find(leaf => leaf.txid === true && leaf.hash === req.txid);
|
|
247
|
+
if (!leaf) {
|
|
248
|
+
req.addHistoryNote({ what: 'getMerklePathTxidNotFound' }, true);
|
|
249
|
+
throw new index_client_1.sdk.WERR_INTERNAL('merkle path does not contain leaf for txid');
|
|
250
|
+
}
|
|
251
|
+
const proven = new EntityProvenTx({
|
|
252
|
+
created_at: now,
|
|
253
|
+
updated_at: now,
|
|
254
|
+
provenTxId: 0,
|
|
255
|
+
txid: req.txid,
|
|
256
|
+
height: proof.blockHeight,
|
|
257
|
+
index: leaf.offset,
|
|
258
|
+
merklePath: proof.toBinary(),
|
|
259
|
+
rawTx: req.rawTx,
|
|
260
|
+
merkleRoot: gmpResult.header.merkleRoot,
|
|
261
|
+
blockHash: gmpResult.header.hash
|
|
262
|
+
});
|
|
263
|
+
return proven;
|
|
264
|
+
}
|
|
265
|
+
catch (eu) {
|
|
266
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
267
|
+
req.addHistoryNote({
|
|
268
|
+
what: 'getMerklePathProvenError',
|
|
269
|
+
attempts: req.attempts,
|
|
270
|
+
code: e.code,
|
|
271
|
+
description: e.description
|
|
272
|
+
}, true);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
exports.EntityProvenTx = EntityProvenTx;
|
|
278
|
+
/**
|
|
279
|
+
* How high attempts can go before status is forced to invalid
|
|
280
|
+
*/
|
|
281
|
+
EntityProvenTx.getProofAttemptsLimit = 8;
|
|
282
|
+
/**
|
|
283
|
+
* How many hours we have to try for a poof
|
|
284
|
+
*/
|
|
285
|
+
EntityProvenTx.getProofMinutes = 60;
|
|
286
|
+
//# sourceMappingURL=ProvenTx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenTx.js","sourceRoot":"","sources":["../../../../../src/storage/schema/entities/ProvenTx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { sdk, StorageProvider, TableProvenTxReq, WalletStorageManager } from '../../../index.client';
|
|
2
|
+
import { EntityBase, EntityStorage, SyncMap } from '.';
|
|
3
|
+
export declare class EntityProvenTxReq extends EntityBase<TableProvenTxReq> {
|
|
4
|
+
static fromStorageTxid(storage: EntityStorage, txid: string, trx?: sdk.TrxToken): Promise<EntityProvenTxReq | undefined>;
|
|
5
|
+
static fromStorageId(storage: EntityStorage, id: number, trx?: sdk.TrxToken): Promise<EntityProvenTxReq>;
|
|
6
|
+
static fromTxid(txid: string, rawTx: number[], inputBEEF?: number[]): EntityProvenTxReq;
|
|
7
|
+
history: ProvenTxReqHistory;
|
|
8
|
+
notify: ProvenTxReqNotify;
|
|
9
|
+
packApiHistory(): void;
|
|
10
|
+
packApiNotify(): void;
|
|
11
|
+
unpackApiHistory(): void;
|
|
12
|
+
unpackApiNotify(): void;
|
|
13
|
+
get apiHistory(): string;
|
|
14
|
+
get apiNotify(): string;
|
|
15
|
+
set apiHistory(v: string);
|
|
16
|
+
set apiNotify(v: string);
|
|
17
|
+
updateApi(): void;
|
|
18
|
+
unpackApi(): void;
|
|
19
|
+
refreshFromStorage(storage: EntityStorage | WalletStorageManager): Promise<void>;
|
|
20
|
+
constructor(api?: TableProvenTxReq);
|
|
21
|
+
/**
|
|
22
|
+
* Returns history to only what followed since date.
|
|
23
|
+
*/
|
|
24
|
+
historySince(since: Date): ProvenTxReqHistory;
|
|
25
|
+
historyPretty(since?: Date, indent?: number): string;
|
|
26
|
+
prettyNote(note: sdk.ReqHistoryNote): string;
|
|
27
|
+
getHistorySummary(): ProvenTxReqHistorySummaryApi;
|
|
28
|
+
parseHistoryNote(note: sdk.ReqHistoryNote, summary?: ProvenTxReqHistorySummaryApi): string;
|
|
29
|
+
addNotifyTransactionId(id: number): void;
|
|
30
|
+
/**
|
|
31
|
+
* Adds a note to history.
|
|
32
|
+
* Notes with identical property values to an existing note are ignored.
|
|
33
|
+
* @param note Note to add
|
|
34
|
+
* @param noDupes if true, only newest note with same `what` value is retained.
|
|
35
|
+
*/
|
|
36
|
+
addHistoryNote(note: sdk.ReqHistoryNote, noDupes?: boolean): void;
|
|
37
|
+
/**
|
|
38
|
+
* Updates database record with current state of this EntityUser
|
|
39
|
+
|
|
40
|
+
* @param storage
|
|
41
|
+
* @param trx
|
|
42
|
+
*/
|
|
43
|
+
updateStorage(storage: EntityStorage, trx?: sdk.TrxToken): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Update storage with changes to non-static properties:
|
|
46
|
+
* updated_at
|
|
47
|
+
* provenTxId
|
|
48
|
+
* status
|
|
49
|
+
* history
|
|
50
|
+
* notify
|
|
51
|
+
* notified
|
|
52
|
+
* attempts
|
|
53
|
+
* batch
|
|
54
|
+
*
|
|
55
|
+
* @param storage
|
|
56
|
+
* @param trx
|
|
57
|
+
*/
|
|
58
|
+
updateStorageDynamicProperties(storage: WalletStorageManager | StorageProvider, trx?: sdk.TrxToken): Promise<void>;
|
|
59
|
+
insertOrMerge(storage: EntityStorage, trx?: sdk.TrxToken): Promise<EntityProvenTxReq>;
|
|
60
|
+
/**
|
|
61
|
+
* See `ProvenTxReqStatusApi`
|
|
62
|
+
*/
|
|
63
|
+
get status(): sdk.ProvenTxReqStatus;
|
|
64
|
+
set status(v: sdk.ProvenTxReqStatus);
|
|
65
|
+
get provenTxReqId(): number;
|
|
66
|
+
set provenTxReqId(v: number);
|
|
67
|
+
get created_at(): Date;
|
|
68
|
+
set created_at(v: Date);
|
|
69
|
+
get updated_at(): Date;
|
|
70
|
+
set updated_at(v: Date);
|
|
71
|
+
get txid(): string;
|
|
72
|
+
set txid(v: string);
|
|
73
|
+
get inputBEEF(): number[] | undefined;
|
|
74
|
+
set inputBEEF(v: number[] | undefined);
|
|
75
|
+
get rawTx(): number[];
|
|
76
|
+
set rawTx(v: number[]);
|
|
77
|
+
get attempts(): number;
|
|
78
|
+
set attempts(v: number);
|
|
79
|
+
get provenTxId(): number | undefined;
|
|
80
|
+
set provenTxId(v: number | undefined);
|
|
81
|
+
get notified(): boolean;
|
|
82
|
+
set notified(v: boolean);
|
|
83
|
+
get batch(): string | undefined;
|
|
84
|
+
set batch(v: string | undefined);
|
|
85
|
+
get id(): number;
|
|
86
|
+
set id(v: number);
|
|
87
|
+
get entityName(): string;
|
|
88
|
+
get entityTable(): string;
|
|
89
|
+
/**
|
|
90
|
+
* 'convergent' equality must satisfy (A sync B) equals (B sync A)
|
|
91
|
+
*/
|
|
92
|
+
equals(ei: TableProvenTxReq, syncMap?: SyncMap | undefined): boolean;
|
|
93
|
+
static mergeFind(storage: EntityStorage, userId: number, ei: TableProvenTxReq, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<{
|
|
94
|
+
found: boolean;
|
|
95
|
+
eo: EntityProvenTxReq;
|
|
96
|
+
eiId: number;
|
|
97
|
+
}>;
|
|
98
|
+
mapNotifyTransactionIds(syncMap: SyncMap): void;
|
|
99
|
+
mergeNotifyTransactionIds(ei: TableProvenTxReq, syncMap?: SyncMap): void;
|
|
100
|
+
mergeHistory(ei: TableProvenTxReq, syncMap?: SyncMap, noDupes?: boolean): void;
|
|
101
|
+
static isTerminalStatus(status: sdk.ProvenTxReqStatus): boolean;
|
|
102
|
+
mergeNew(storage: EntityStorage, userId: number, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* When merging `ProvenTxReq`, care is taken to avoid short-cirtuiting notification: `status` must not transition to `completed` without
|
|
105
|
+
* passing through `notifying`. Thus a full convergent merge passes through these sequence steps:
|
|
106
|
+
* 1. Remote storage completes before local storage.
|
|
107
|
+
* 2. The remotely completed req and ProvenTx sync to local storage.
|
|
108
|
+
* 3. The local storage transitions to `notifying`, after merging the remote attempts and history.
|
|
109
|
+
* 4. The local storage notifies, transitioning to `completed`.
|
|
110
|
+
* 5. Having been updated, the local req, but not ProvenTx sync to remote storage, but do not merge because the earlier `completed` wins.
|
|
111
|
+
* 6. Convergent equality is achieved (completing work - history and attempts are equal)
|
|
112
|
+
*
|
|
113
|
+
* On terminal failure: `doubleSpend` trumps `invalid` as it contains more data.
|
|
114
|
+
*/
|
|
115
|
+
mergeExisting(storage: EntityStorage, since: Date | undefined, ei: TableProvenTxReq, syncMap: SyncMap, trx?: sdk.TrxToken): Promise<boolean>;
|
|
116
|
+
}
|
|
117
|
+
export interface ProvenTxReqHistorySummaryApi {
|
|
118
|
+
setToCompleted: boolean;
|
|
119
|
+
setToCallback: boolean;
|
|
120
|
+
setToUnmined: boolean;
|
|
121
|
+
setToDoubleSpend: boolean;
|
|
122
|
+
setToSending: boolean;
|
|
123
|
+
setToUnconfirmed: boolean;
|
|
124
|
+
}
|
|
125
|
+
export interface ProvenTxReqHistory {
|
|
126
|
+
/**
|
|
127
|
+
* Keys are Date().toISOString()
|
|
128
|
+
* Values are a description of what happened.
|
|
129
|
+
*/
|
|
130
|
+
notes?: sdk.ReqHistoryNote[];
|
|
131
|
+
}
|
|
132
|
+
export interface ProvenTxReqNotify {
|
|
133
|
+
transactionIds?: number[];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ProvenTxReq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvenTxReq.d.ts","sourceRoot":"","sources":["../../../../../src/storage/schema/entities/ProvenTxReq.ts"],"names":[],"mappings":"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"}
|