@bsv/wallet-toolbox-client 2.1.25 → 3.0.0-alpha.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.
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletLogger.d.ts.map +1 -1
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/monitor/LeasedMonitorTask.d.ts +43 -0
- package/out/src/monitor/LeasedMonitorTask.d.ts.map +1 -0
- package/out/src/monitor/LeasedMonitorTask.js +89 -0
- package/out/src/monitor/LeasedMonitorTask.js.map +1 -0
- package/out/src/monitor/Monitor.d.ts +7 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +7 -0
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/V7LeasedTask.d.ts +43 -0
- package/out/src/monitor/V7LeasedTask.d.ts.map +1 -0
- package/out/src/monitor/V7LeasedTask.js +89 -0
- package/out/src/monitor/V7LeasedTask.js.map +1 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +2 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +55 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +59 -59
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +32 -0
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +50 -1
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +10 -5
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +114 -1
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +164 -4
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/idbHelpers.d.ts +5 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +42 -0
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +116 -4
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +22 -5
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +172 -5
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +82 -14
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +43 -2
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
- package/out/src/storage/schema/monitorLease.d.ts +57 -0
- package/out/src/storage/schema/monitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/monitorLease.js +101 -0
- package/out/src/storage/schema/monitorLease.js.map +1 -0
- package/out/src/storage/schema/processingFsm.d.ts +27 -0
- package/out/src/storage/schema/processingFsm.d.ts.map +1 -0
- package/out/src/storage/schema/processingFsm.js +132 -0
- package/out/src/storage/schema/processingFsm.js.map +1 -0
- package/out/src/storage/schema/tables/TableAction.d.ts +38 -0
- package/out/src/storage/schema/tables/TableAction.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableAction.js +3 -0
- package/out/src/storage/schema/tables/TableAction.js.map +1 -0
- package/out/src/storage/schema/tables/TableChainTip.d.ts +17 -0
- package/out/src/storage/schema/tables/TableChainTip.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableChainTip.js +3 -0
- package/out/src/storage/schema/tables/TableChainTip.js.map +1 -0
- package/out/src/storage/schema/tables/TableMonitorLease.d.ts +23 -0
- package/out/src/storage/schema/tables/TableMonitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableMonitorLease.js +3 -0
- package/out/src/storage/schema/tables/TableMonitorLease.js.map +1 -0
- package/out/src/storage/schema/tables/TableOutput.d.ts +7 -0
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.js.map +1 -1
- package/out/src/storage/schema/tables/TableTransactionNew.d.ts +50 -0
- package/out/src/storage/schema/tables/TableTransactionNew.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionNew.js +3 -0
- package/out/src/storage/schema/tables/TableTransactionNew.js.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionV7.d.ts +50 -0
- package/out/src/storage/schema/tables/TableTransactionV7.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTransactionV7.js +3 -0
- package/out/src/storage/schema/tables/TableTransactionV7.js.map +1 -0
- package/out/src/storage/schema/tables/TableTxAudit.d.ts +26 -0
- package/out/src/storage/schema/tables/TableTxAudit.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TableTxAudit.js +3 -0
- package/out/src/storage/schema/tables/TableTxAudit.js.map +1 -0
- package/out/src/storage/schema/tables/index.d.ts +5 -0
- package/out/src/storage/schema/tables/index.d.ts.map +1 -1
- package/out/src/storage/schema/tables/index.js +5 -0
- package/out/src/storage/schema/tables/index.js.map +1 -1
- package/out/src/storage/schema/transactionCrud.d.ts +41 -0
- package/out/src/storage/schema/transactionCrud.d.ts.map +1 -0
- package/out/src/storage/schema/transactionCrud.js +205 -0
- package/out/src/storage/schema/transactionCrud.js.map +1 -0
- package/out/src/storage/schema/transactionService.d.ts +315 -0
- package/out/src/storage/schema/transactionService.d.ts.map +1 -0
- package/out/src/storage/schema/transactionService.js +783 -0
- package/out/src/storage/schema/transactionService.js.map +1 -0
- package/out/src/storage/schema/txAudit.d.ts +33 -0
- package/out/src/storage/schema/txAudit.d.ts.map +1 -0
- package/out/src/storage/schema/txAudit.js +64 -0
- package/out/src/storage/schema/txAudit.js.map +1 -0
- package/out/src/storage/schema/v7Crud.d.ts +41 -0
- package/out/src/storage/schema/v7Crud.d.ts.map +1 -0
- package/out/src/storage/schema/v7Crud.js +205 -0
- package/out/src/storage/schema/v7Crud.js.map +1 -0
- package/out/src/storage/schema/v7Fsm.d.ts +27 -0
- package/out/src/storage/schema/v7Fsm.d.ts.map +1 -0
- package/out/src/storage/schema/v7Fsm.js +124 -0
- package/out/src/storage/schema/v7Fsm.js.map +1 -0
- package/out/src/storage/schema/v7MonitorLease.d.ts +57 -0
- package/out/src/storage/schema/v7MonitorLease.d.ts.map +1 -0
- package/out/src/storage/schema/v7MonitorLease.js +101 -0
- package/out/src/storage/schema/v7MonitorLease.js.map +1 -0
- package/out/src/storage/schema/v7Service.d.ts +305 -0
- package/out/src/storage/schema/v7Service.d.ts.map +1 -0
- package/out/src/storage/schema/v7Service.js +757 -0
- package/out/src/storage/schema/v7Service.js.map +1 -0
- package/out/src/storage/schema/v7TxAudit.d.ts +33 -0
- package/out/src/storage/schema/v7TxAudit.d.ts.map +1 -0
- package/out/src/storage/schema/v7TxAudit.js +64 -0
- package/out/src/storage/schema/v7TxAudit.js.map +1 -0
- package/out/src/storage/storageProviderHelpers.js +1 -1
- package/out/src/storage/storageProviderHelpers.js.map +1 -1
- package/out/tsconfig.client.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Knex } from 'knex';
|
|
2
|
+
import { TableMonitorLease } from './tables';
|
|
3
|
+
/**
|
|
4
|
+
* V7 monitor lease primitive.
|
|
5
|
+
*
|
|
6
|
+
* A `monitor_lease` row records the owner that may currently execute a named
|
|
7
|
+
* task. Acquisition is opportunistic: a Monitor calls `tryClaimLease()` to
|
|
8
|
+
* insert or take over a stale row; if it succeeds it owns the task until
|
|
9
|
+
* `expiresAt`. While running it calls `renewLease()` to extend the deadline.
|
|
10
|
+
* On clean shutdown it calls `releaseLease()`.
|
|
11
|
+
*
|
|
12
|
+
* The Knex driver expresses claim + takeover as a single conditional UPDATE
|
|
13
|
+
* so that two contending Monitors cannot both believe they own the task — at
|
|
14
|
+
* most one row write will succeed per (task, expiry) pair.
|
|
15
|
+
*/
|
|
16
|
+
export interface MonitorLeaseClaim {
|
|
17
|
+
taskName: string;
|
|
18
|
+
ownerId: string;
|
|
19
|
+
ttlMs: number;
|
|
20
|
+
note?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface MonitorLeaseRenew {
|
|
23
|
+
taskName: string;
|
|
24
|
+
ownerId: string;
|
|
25
|
+
ttlMs: number;
|
|
26
|
+
note?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface MonitorLeaseRelease {
|
|
29
|
+
taskName: string;
|
|
30
|
+
ownerId: string;
|
|
31
|
+
}
|
|
32
|
+
export interface MonitorLeaseResult {
|
|
33
|
+
acquired: boolean;
|
|
34
|
+
lease?: TableMonitorLease;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Try to claim a lease on `taskName`. Succeeds iff:
|
|
38
|
+
* - no row exists for the task, OR
|
|
39
|
+
* - the existing row has `expiresAt <= now`, OR
|
|
40
|
+
* - the existing row's `ownerId` already equals the requested owner.
|
|
41
|
+
*
|
|
42
|
+
* On success the row is upserted with `expiresAt = now + ttlMs` and
|
|
43
|
+
* `renewCount = renewCount + 1` (0 for fresh rows).
|
|
44
|
+
*/
|
|
45
|
+
export declare function tryClaimLease(knex: Knex, claim: MonitorLeaseClaim, now?: Date): Promise<MonitorLeaseResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Extend the current owner's lease. Fails (returns `acquired: false`) when the
|
|
48
|
+
* row does not exist, is owned by someone else, or has already expired.
|
|
49
|
+
*/
|
|
50
|
+
export declare function renewLease(knex: Knex, renew: MonitorLeaseRenew, now?: Date): Promise<MonitorLeaseResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Release the lease (no-op when not owned by the caller).
|
|
53
|
+
* The row is deleted so subsequent claimants do not see an inherited
|
|
54
|
+
* `renew_count`.
|
|
55
|
+
*/
|
|
56
|
+
export declare function releaseLease(knex: Knex, release: MonitorLeaseRelease): Promise<boolean>;
|
|
57
|
+
//# sourceMappingURL=v7MonitorLease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v7MonitorLease.d.ts","sourceRoot":"","sources":["../../../../../src/storage/schema/v7MonitorLease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,iBAAiB,EACxB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,iBAAiB,EACxB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAkB7B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAK9F"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tryClaimLease = tryClaimLease;
|
|
4
|
+
exports.renewLease = renewLease;
|
|
5
|
+
exports.releaseLease = releaseLease;
|
|
6
|
+
/**
|
|
7
|
+
* Try to claim a lease on `taskName`. Succeeds iff:
|
|
8
|
+
* - no row exists for the task, OR
|
|
9
|
+
* - the existing row has `expiresAt <= now`, OR
|
|
10
|
+
* - the existing row's `ownerId` already equals the requested owner.
|
|
11
|
+
*
|
|
12
|
+
* On success the row is upserted with `expiresAt = now + ttlMs` and
|
|
13
|
+
* `renewCount = renewCount + 1` (0 for fresh rows).
|
|
14
|
+
*/
|
|
15
|
+
async function tryClaimLease(knex, claim, now = new Date()) {
|
|
16
|
+
const expiresAt = new Date(now.getTime() + claim.ttlMs);
|
|
17
|
+
return await knex.transaction(async (trx) => {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
const existing = await trx('monitor_lease').where({ task_name: claim.taskName }).forUpdate().first();
|
|
20
|
+
const canClaim = existing == null ||
|
|
21
|
+
new Date(existing.expires_at).getTime() <= now.getTime() ||
|
|
22
|
+
existing.owner_id === claim.ownerId;
|
|
23
|
+
if (!canClaim)
|
|
24
|
+
return { acquired: false };
|
|
25
|
+
if (existing == null) {
|
|
26
|
+
await trx('monitor_lease').insert({
|
|
27
|
+
task_name: claim.taskName,
|
|
28
|
+
owner_id: claim.ownerId,
|
|
29
|
+
expires_at: expiresAt,
|
|
30
|
+
renew_count: 0,
|
|
31
|
+
note: (_a = claim.note) !== null && _a !== void 0 ? _a : null,
|
|
32
|
+
created_at: now,
|
|
33
|
+
updated_at: now
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
await trx('monitor_lease')
|
|
38
|
+
.where({ task_name: claim.taskName })
|
|
39
|
+
.update({
|
|
40
|
+
owner_id: claim.ownerId,
|
|
41
|
+
expires_at: expiresAt,
|
|
42
|
+
renew_count: existing.owner_id === claim.ownerId ? existing.renew_count + 1 : 0,
|
|
43
|
+
note: (_b = claim.note) !== null && _b !== void 0 ? _b : existing.note,
|
|
44
|
+
updated_at: now
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const row = await trx('monitor_lease').where({ task_name: claim.taskName }).first();
|
|
48
|
+
return { acquired: true, lease: mapRow(row) };
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extend the current owner's lease. Fails (returns `acquired: false`) when the
|
|
53
|
+
* row does not exist, is owned by someone else, or has already expired.
|
|
54
|
+
*/
|
|
55
|
+
async function renewLease(knex, renew, now = new Date()) {
|
|
56
|
+
const expiresAt = new Date(now.getTime() + renew.ttlMs);
|
|
57
|
+
return await knex.transaction(async (trx) => {
|
|
58
|
+
var _a;
|
|
59
|
+
const existing = await trx('monitor_lease').where({ task_name: renew.taskName }).forUpdate().first();
|
|
60
|
+
if (existing == null)
|
|
61
|
+
return { acquired: false };
|
|
62
|
+
if (existing.owner_id !== renew.ownerId)
|
|
63
|
+
return { acquired: false };
|
|
64
|
+
if (new Date(existing.expires_at).getTime() <= now.getTime())
|
|
65
|
+
return { acquired: false };
|
|
66
|
+
await trx('monitor_lease')
|
|
67
|
+
.where({ task_name: renew.taskName })
|
|
68
|
+
.update({
|
|
69
|
+
expires_at: expiresAt,
|
|
70
|
+
renew_count: existing.renew_count + 1,
|
|
71
|
+
note: (_a = renew.note) !== null && _a !== void 0 ? _a : existing.note,
|
|
72
|
+
updated_at: now
|
|
73
|
+
});
|
|
74
|
+
const row = await trx('monitor_lease').where({ task_name: renew.taskName }).first();
|
|
75
|
+
return { acquired: true, lease: mapRow(row) };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Release the lease (no-op when not owned by the caller).
|
|
80
|
+
* The row is deleted so subsequent claimants do not see an inherited
|
|
81
|
+
* `renew_count`.
|
|
82
|
+
*/
|
|
83
|
+
async function releaseLease(knex, release) {
|
|
84
|
+
const deleted = await knex('monitor_lease')
|
|
85
|
+
.where({ task_name: release.taskName, owner_id: release.ownerId })
|
|
86
|
+
.delete();
|
|
87
|
+
return deleted > 0;
|
|
88
|
+
}
|
|
89
|
+
function mapRow(row) {
|
|
90
|
+
var _a;
|
|
91
|
+
return {
|
|
92
|
+
created_at: new Date(row.created_at),
|
|
93
|
+
updated_at: new Date(row.updated_at),
|
|
94
|
+
taskName: row.task_name,
|
|
95
|
+
ownerId: row.owner_id,
|
|
96
|
+
expiresAt: new Date(row.expires_at),
|
|
97
|
+
renewCount: row.renew_count,
|
|
98
|
+
note: (_a = row.note) !== null && _a !== void 0 ? _a : undefined
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=v7MonitorLease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v7MonitorLease.js","sourceRoot":"","sources":["../../../../../src/storage/schema/v7MonitorLease.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { Beef } from '@bsv/sdk';
|
|
2
|
+
import { Knex } from 'knex';
|
|
3
|
+
import * as sdk from '../../sdk';
|
|
4
|
+
import { TableAction, TableOutput, TableTransactionV7 } from './tables';
|
|
5
|
+
import { MonitorLeaseClaim, MonitorLeaseRelease, MonitorLeaseRenew, MonitorLeaseResult } from './v7MonitorLease';
|
|
6
|
+
/**
|
|
7
|
+
* High-level service over the V7 storage primitives.
|
|
8
|
+
*
|
|
9
|
+
* Storage methods and the Monitor call into this surface rather than the
|
|
10
|
+
* lower-level CRUD/FSM/audit/lease modules so that:
|
|
11
|
+
* - Every processing transition is audited.
|
|
12
|
+
* - Optimistic concurrency is uniformly enforced.
|
|
13
|
+
* - Chain tip + monitor lease access have one canonical entry point.
|
|
14
|
+
*
|
|
15
|
+
* Construction takes a Knex handle; instances are stateless and cheap to
|
|
16
|
+
* create — typically one per request or per Monitor task tick.
|
|
17
|
+
*/
|
|
18
|
+
export declare class V7TransactionService {
|
|
19
|
+
private readonly knex;
|
|
20
|
+
constructor(knex: Knex);
|
|
21
|
+
findByTxid(txid: string): Promise<TableTransactionV7 | undefined>;
|
|
22
|
+
findById(transactionId: number): Promise<TableTransactionV7 | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Insert a new V7 transaction row. The row is created in `queued` state
|
|
25
|
+
* unless the caller overrides `processing`.
|
|
26
|
+
*/
|
|
27
|
+
create(args: {
|
|
28
|
+
txid: string;
|
|
29
|
+
processing?: sdk.ProcessingStatus;
|
|
30
|
+
rawTx?: number[];
|
|
31
|
+
inputBeef?: number[];
|
|
32
|
+
batch?: string;
|
|
33
|
+
idempotencyKey?: string;
|
|
34
|
+
isCoinbase?: boolean;
|
|
35
|
+
now?: Date;
|
|
36
|
+
}): Promise<TableTransactionV7>;
|
|
37
|
+
/**
|
|
38
|
+
* Transition processing state with optimistic concurrency. Returns
|
|
39
|
+
* `undefined` when the FSM rejects the move OR the row's current state no
|
|
40
|
+
* longer matches `expectedFrom`.
|
|
41
|
+
*/
|
|
42
|
+
transition(args: {
|
|
43
|
+
transactionId: number;
|
|
44
|
+
expectedFrom: sdk.ProcessingStatus;
|
|
45
|
+
to: sdk.ProcessingStatus;
|
|
46
|
+
provider?: string;
|
|
47
|
+
providerStatus?: string;
|
|
48
|
+
details?: Record<string, unknown>;
|
|
49
|
+
now?: Date;
|
|
50
|
+
}): Promise<TableTransactionV7 | undefined>;
|
|
51
|
+
/**
|
|
52
|
+
* Record acquisition of a Merkle proof for a transaction. Atomically:
|
|
53
|
+
* - Updates proof columns (height, index, merkle_path, merkle_root, block_hash)
|
|
54
|
+
* - Transitions processing to `proven` from any spendable-class state.
|
|
55
|
+
* - Writes a `proof.acquired` audit row.
|
|
56
|
+
*/
|
|
57
|
+
recordProof(args: {
|
|
58
|
+
transactionId: number;
|
|
59
|
+
height: number;
|
|
60
|
+
merkleIndex: number;
|
|
61
|
+
merklePath: number[];
|
|
62
|
+
merkleRoot: string;
|
|
63
|
+
blockHash: string;
|
|
64
|
+
expectedFrom: sdk.ProcessingStatus;
|
|
65
|
+
now?: Date;
|
|
66
|
+
}): Promise<TableTransactionV7 | undefined>;
|
|
67
|
+
findActionForUser(userId: number, transactionId: number): Promise<TableAction | undefined>;
|
|
68
|
+
createAction(args: {
|
|
69
|
+
userId: number;
|
|
70
|
+
transactionId: number;
|
|
71
|
+
reference: string;
|
|
72
|
+
description: string;
|
|
73
|
+
isOutgoing: boolean;
|
|
74
|
+
satoshisDelta: number;
|
|
75
|
+
userNosend?: boolean;
|
|
76
|
+
notifyJson?: string;
|
|
77
|
+
now?: Date;
|
|
78
|
+
}): Promise<number>;
|
|
79
|
+
getChainTip(): Promise<{
|
|
80
|
+
height: number;
|
|
81
|
+
blockHash: string;
|
|
82
|
+
} | undefined>;
|
|
83
|
+
setChainTip(args: {
|
|
84
|
+
height: number;
|
|
85
|
+
blockHash: string;
|
|
86
|
+
merkleRoot?: string;
|
|
87
|
+
now?: Date;
|
|
88
|
+
}): Promise<void>;
|
|
89
|
+
tryClaimLease(claim: MonitorLeaseClaim, now?: Date): Promise<MonitorLeaseResult>;
|
|
90
|
+
renewLease(renew: MonitorLeaseRenew, now?: Date): Promise<MonitorLeaseResult>;
|
|
91
|
+
releaseLease(release: MonitorLeaseRelease): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* #1 — Look up an action + its backing transaction by (userId, reference).
|
|
94
|
+
*/
|
|
95
|
+
findActionByReference(userId: number, reference: string): Promise<{
|
|
96
|
+
action: TableAction;
|
|
97
|
+
transaction: TableTransactionV7;
|
|
98
|
+
} | undefined>;
|
|
99
|
+
/**
|
|
100
|
+
* #2 — Look up an action + its backing transaction by (userId, txid).
|
|
101
|
+
*/
|
|
102
|
+
findActionByUserTxid(userId: number, txid: string): Promise<{
|
|
103
|
+
action: TableAction;
|
|
104
|
+
transaction: TableTransactionV7;
|
|
105
|
+
} | undefined>;
|
|
106
|
+
/**
|
|
107
|
+
* #3 — Upsert: find existing action for (userId, txid) or create both the V7
|
|
108
|
+
* transaction row and the action row.
|
|
109
|
+
*/
|
|
110
|
+
findOrCreateActionForTxid(args: {
|
|
111
|
+
userId: number;
|
|
112
|
+
txid: string;
|
|
113
|
+
isOutgoing: boolean;
|
|
114
|
+
description: string;
|
|
115
|
+
satoshisDelta: number;
|
|
116
|
+
reference: string;
|
|
117
|
+
rawTx?: number[];
|
|
118
|
+
inputBeef?: number[];
|
|
119
|
+
processing?: sdk.ProcessingStatus;
|
|
120
|
+
now?: Date;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
action: TableAction;
|
|
123
|
+
transaction: TableTransactionV7;
|
|
124
|
+
isNew: boolean;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* #4 — Atomically update the satoshisDelta column on an action row.
|
|
128
|
+
*/
|
|
129
|
+
updateActionSatoshisDelta(actionId: number, delta: number, now?: Date): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* #5 — Create a V7 transaction row already in `proven` state with all proof
|
|
132
|
+
* columns populated. Useful for internalised transactions that arrive with a
|
|
133
|
+
* Merkle proof (bump) already attached.
|
|
134
|
+
*/
|
|
135
|
+
createWithProof(args: {
|
|
136
|
+
txid: string;
|
|
137
|
+
rawTx?: number[];
|
|
138
|
+
inputBeef?: number[];
|
|
139
|
+
height: number;
|
|
140
|
+
merkleIndex: number;
|
|
141
|
+
merklePath: number[];
|
|
142
|
+
merkleRoot: string;
|
|
143
|
+
blockHash: string;
|
|
144
|
+
isCoinbase?: boolean;
|
|
145
|
+
now?: Date;
|
|
146
|
+
}): Promise<TableTransactionV7>;
|
|
147
|
+
/**
|
|
148
|
+
* #6 — Find an existing V7 transaction row for the given txid (suitable for
|
|
149
|
+
* the broadcast queue) or create a new one in `queued` state.
|
|
150
|
+
*/
|
|
151
|
+
findOrCreateForBroadcast(args: {
|
|
152
|
+
txid: string;
|
|
153
|
+
rawTx: number[];
|
|
154
|
+
inputBeef?: number[];
|
|
155
|
+
batch?: string;
|
|
156
|
+
processing?: sdk.ProcessingStatus;
|
|
157
|
+
now?: Date;
|
|
158
|
+
}): Promise<{
|
|
159
|
+
transaction: TableTransactionV7;
|
|
160
|
+
isNew: boolean;
|
|
161
|
+
}>;
|
|
162
|
+
/**
|
|
163
|
+
* #7 — Bulk transition: attempt `transition` for each id; collect results.
|
|
164
|
+
* When `expectedFrom` is omitted the current state of each row is used as
|
|
165
|
+
* the expected source (lenient mode — only the FSM is checked).
|
|
166
|
+
*/
|
|
167
|
+
transitionMany(args: {
|
|
168
|
+
transactionIds: number[];
|
|
169
|
+
expectedFrom?: sdk.ProcessingStatus;
|
|
170
|
+
to: sdk.ProcessingStatus;
|
|
171
|
+
provider?: string;
|
|
172
|
+
providerStatus?: string;
|
|
173
|
+
details?: Record<string, unknown>;
|
|
174
|
+
now?: Date;
|
|
175
|
+
}): Promise<{
|
|
176
|
+
updated: number[];
|
|
177
|
+
skipped: number[];
|
|
178
|
+
}>;
|
|
179
|
+
/**
|
|
180
|
+
* #8 — Bulk-set the `batch` column for a list of transaction ids.
|
|
181
|
+
* Pass `undefined` to clear the batch tag.
|
|
182
|
+
*/
|
|
183
|
+
setBatch(transactionIds: number[], batch: string | undefined, now?: Date): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* #9 — Atomically increment the `attempts` counter for one transaction and
|
|
186
|
+
* write an `attempts.incremented` audit entry.
|
|
187
|
+
*/
|
|
188
|
+
incrementAttempts(transactionId: number, now?: Date): Promise<TableTransactionV7 | undefined>;
|
|
189
|
+
/**
|
|
190
|
+
* #10 — Record the outcome of a broadcast attempt. Transitions processing
|
|
191
|
+
* state, updates `wasBroadcast` and `lastProvider*` columns, and writes an
|
|
192
|
+
* audit row.
|
|
193
|
+
*/
|
|
194
|
+
recordBroadcastResult(args: {
|
|
195
|
+
transactionId: number;
|
|
196
|
+
txid: string;
|
|
197
|
+
status: sdk.ProcessingStatus;
|
|
198
|
+
provider: string;
|
|
199
|
+
providerStatus?: string;
|
|
200
|
+
wasBroadcast?: boolean;
|
|
201
|
+
details?: Record<string, unknown>;
|
|
202
|
+
now?: Date;
|
|
203
|
+
}): Promise<TableTransactionV7 | undefined>;
|
|
204
|
+
/**
|
|
205
|
+
* #11 — Append a free-form history note to the audit log for a transaction.
|
|
206
|
+
*/
|
|
207
|
+
recordHistoryNote(transactionId: number, note: {
|
|
208
|
+
what: string;
|
|
209
|
+
[k: string]: unknown;
|
|
210
|
+
}, now?: Date): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* #12 — For each txid that exists in the V7 transactions table, merge the
|
|
213
|
+
* raw transaction bytes and (where available) the Merkle path into `beef`.
|
|
214
|
+
* Txids not present in V7 are silently skipped.
|
|
215
|
+
*/
|
|
216
|
+
mergeBeefForTxids(beef: Beef, txids: string[]): Promise<void>;
|
|
217
|
+
/**
|
|
218
|
+
* #13 — Collect broadcast-readiness info and a populated Beef for a list of
|
|
219
|
+
* txids. Each entry is classified as:
|
|
220
|
+
* - `readyToSend` — queued/sending → still needs broadcast
|
|
221
|
+
* - `alreadySent` — sent/seen/seen_multi/unconfirmed/proven → already on network
|
|
222
|
+
* - `error` — invalid/doubleSpend → terminal failure
|
|
223
|
+
* - `unknown` — not found in V7
|
|
224
|
+
*/
|
|
225
|
+
collectReqsAndBeef(txids: string[], extraTxids?: string[]): Promise<{
|
|
226
|
+
beef: Beef;
|
|
227
|
+
details: Array<{
|
|
228
|
+
txid: string;
|
|
229
|
+
status: 'readyToSend' | 'alreadySent' | 'error' | 'unknown';
|
|
230
|
+
reason?: string;
|
|
231
|
+
}>;
|
|
232
|
+
}>;
|
|
233
|
+
/**
|
|
234
|
+
* #14 — Paginated list of actions (per-user transaction views) with optional
|
|
235
|
+
* status and label filters.
|
|
236
|
+
*
|
|
237
|
+
* After the V7 cutover `tx_labels_map.transactionId` references `actions.actionId`
|
|
238
|
+
* (not `transactions.transactionId`).
|
|
239
|
+
*/
|
|
240
|
+
listActionsForUser(args: {
|
|
241
|
+
userId: number;
|
|
242
|
+
statusFilter?: sdk.ProcessingStatus[];
|
|
243
|
+
labelIds?: number[];
|
|
244
|
+
labelQueryMode?: 'all' | 'any';
|
|
245
|
+
createdAtFrom?: Date;
|
|
246
|
+
createdAtTo?: Date;
|
|
247
|
+
limit: number;
|
|
248
|
+
offset: number;
|
|
249
|
+
}): Promise<{
|
|
250
|
+
rows: Array<TableAction & {
|
|
251
|
+
txid: string;
|
|
252
|
+
processing: sdk.ProcessingStatus;
|
|
253
|
+
height?: number;
|
|
254
|
+
}>;
|
|
255
|
+
total?: number;
|
|
256
|
+
}>;
|
|
257
|
+
/**
|
|
258
|
+
* #15 — Paginated list of outputs with their backing transaction processing
|
|
259
|
+
* state. Optional filters: basket, tag set, processing state, spent flag.
|
|
260
|
+
*/
|
|
261
|
+
listOutputsForUser(args: {
|
|
262
|
+
userId: number;
|
|
263
|
+
basketId?: number;
|
|
264
|
+
tagIds?: number[];
|
|
265
|
+
tagQueryMode?: 'all' | 'any';
|
|
266
|
+
processingFilter: sdk.ProcessingStatus[];
|
|
267
|
+
includeSpent: boolean;
|
|
268
|
+
limit: number;
|
|
269
|
+
offset: number;
|
|
270
|
+
includeLockingScripts?: boolean;
|
|
271
|
+
}): Promise<{
|
|
272
|
+
rows: Array<TableOutput & {
|
|
273
|
+
processing: sdk.ProcessingStatus;
|
|
274
|
+
}>;
|
|
275
|
+
total?: number;
|
|
276
|
+
}>;
|
|
277
|
+
/**
|
|
278
|
+
* Post-cutover helper: rewrite `tx_labels_map.transactionId` rows that were
|
|
279
|
+
* written with the legacy transactionId (before the real txid + actionId were
|
|
280
|
+
* known) so that they now point at the V7 `actions.actionId`.
|
|
281
|
+
*
|
|
282
|
+
* Call this once per new outgoing transaction immediately after
|
|
283
|
+
* `findOrCreateActionForTxid` resolves the actionId.
|
|
284
|
+
*
|
|
285
|
+
* This is a no-op when:
|
|
286
|
+
* - `legacyTransactionId` has no rows in `tx_labels_map` (no labels on the tx)
|
|
287
|
+
* - `legacyTransactionId === actionId` (should not happen in practice but
|
|
288
|
+
* is safe to call anyway)
|
|
289
|
+
*/
|
|
290
|
+
repointLabelsToActionId(legacyTransactionId: number, actionId: number, now?: Date): Promise<void>;
|
|
291
|
+
/**
|
|
292
|
+
* After `processAction` creates the V7 `transactions` row, remap
|
|
293
|
+
* `outputs.transactionId` and `outputs.spentBy` from the bridge-period
|
|
294
|
+
* `transactions_legacy.transactionId` to the real V7 `transactions.transactionId`.
|
|
295
|
+
*
|
|
296
|
+
* During `createAction`, new outputs are inserted with `transactionId =
|
|
297
|
+
* legacyTransactionId` (bypassing FK constraints). `listActionsKnex` queries
|
|
298
|
+
* outputs by V7 transactionId, so without this remap the outputs would be
|
|
299
|
+
* invisible to `listActions`.
|
|
300
|
+
*
|
|
301
|
+
* This is a no-op when `legacyTransactionId === v7TransactionId`.
|
|
302
|
+
*/
|
|
303
|
+
repointOutputsToV7TransactionId(legacyTransactionId: number, v7TransactionId: number, now?: Date): Promise<void>;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=v7Service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v7Service.d.ts","sourceRoot":"","sources":["../../../../../src/storage/schema/v7Service.ts"],"names":[],"mappings":"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"}
|