@verana-labs/vs-agent-sdk 1.11.0-dev.12 → 1.11.0-dev.13

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.
@@ -2,7 +2,7 @@ import { AnonCredsDidCommCredentialFormatService, AnonCredsModule, AnonCredsDidC
2
2
  import { AskarModule, AskarModuleConfigStoreOptions } from '@credo-ts/askar';
3
3
  import { Agent, AgentDependencies, DidsModule, InitConfig, W3cCredentialsModule } from '@credo-ts/core';
4
4
  import { DidCommCredentialsModuleConfigOptions, DidCommCredentialV2Protocol, DidCommJsonLdCredentialFormatService, DidCommModule, DidCommModuleConfigOptions, DidCommProofsModuleConfigOptions, DidCommProofV2Protocol } from '@credo-ts/didcomm';
5
- import { VeranaChainService } from '../blockchain';
5
+ import { VeranaChainService } from '../blockchain/VeranaChainService';
6
6
  type VsAgentDidCommModule = DidCommModule<DidCommModuleConfigOptions & {
7
7
  credentials: DidCommCredentialsModuleConfigOptions<[
8
8
  DidCommCredentialV2Protocol<[
@@ -1,6 +1,6 @@
1
1
  import { AskarModuleConfigStoreOptions } from '@credo-ts/askar';
2
2
  import { AgentDependencies, InitConfig, LogLevel } from '@credo-ts/core';
3
- import { VeranaChainService } from '../blockchain';
3
+ import { VeranaChainService } from '../blockchain/VeranaChainService';
4
4
  import { Plugin } from '../types';
5
5
  import { BaseAgentModules, VsAgent } from './VsAgent';
6
6
  type MergePluginModules<T extends Plugin[]> = T extends [infer First, ...infer Rest] ? First extends {
@@ -0,0 +1,30 @@
1
+ import { VsAgent } from '../agent/VsAgent';
2
+ export interface IndexerWebSocketServiceOptions {
3
+ indexerUrl: string;
4
+ agent: VsAgent;
5
+ }
6
+ export declare class IndexerWebSocketService {
7
+ private readonly options;
8
+ private ws;
9
+ private reconnectAttempt;
10
+ private stopped;
11
+ private syncing;
12
+ private pendingEvents;
13
+ private readonly indexer;
14
+ constructor(options: IndexerWebSocketServiceOptions);
15
+ start(): Promise<void>;
16
+ stop(): void;
17
+ private get logger();
18
+ /**
19
+ * Connects to the indexer WebSocket, performs an initial sync via REST (use /events endpoint because it returns historical events in a single request)
20
+ * Finally, processes pending events received during the initial sync.
21
+ */
22
+ private connect;
23
+ private openWebSocket;
24
+ private syncRest;
25
+ private drainPendingEvents;
26
+ private processBlock;
27
+ private applyChanges;
28
+ private scheduleReconnect;
29
+ private fetchInitialEvents;
30
+ }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IndexerWebSocketService = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ const VeranaHelpers_1 = require("./VeranaHelpers");
9
+ const VeranaIndexerService_1 = require("./VeranaIndexerService");
10
+ const MAX_RECONNECT_DELAY_MS = 300000;
11
+ const WS_PATHNAME = 'verana/indexer/v1/events';
12
+ class IndexerWebSocketService {
13
+ constructor(options) {
14
+ this.options = options;
15
+ this.ws = null;
16
+ this.reconnectAttempt = 0;
17
+ this.stopped = false;
18
+ this.syncing = false;
19
+ this.pendingEvents = [];
20
+ this.indexer = new VeranaIndexerService_1.VeranaIndexerService({
21
+ baseUrl: options.indexerUrl,
22
+ logger: options.agent.config.logger,
23
+ });
24
+ }
25
+ async start() {
26
+ this.stopped = false;
27
+ await this.connect();
28
+ }
29
+ stop() {
30
+ var _a;
31
+ this.stopped = true;
32
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
33
+ this.ws = null;
34
+ }
35
+ get logger() {
36
+ return this.options.agent.config.logger;
37
+ }
38
+ /**
39
+ * Connects to the indexer WebSocket, performs an initial sync via REST (use /events endpoint because it returns historical events in a single request)
40
+ * Finally, processes pending events received during the initial sync.
41
+ */
42
+ async connect() {
43
+ this.syncing = true;
44
+ this.pendingEvents = [];
45
+ this.openWebSocket();
46
+ await this.syncRest();
47
+ this.syncing = false;
48
+ await this.drainPendingEvents();
49
+ }
50
+ openWebSocket() {
51
+ const url = new URL(this.options.indexerUrl);
52
+ const wsProto = url.protocol === 'https:' ? 'wss:' : 'ws:';
53
+ if (!this.options.agent.did)
54
+ throw new Error('Agent does not have any defined public DID');
55
+ const wsUrl = `${wsProto}//${url.host}/${WS_PATHNAME}?did=${encodeURIComponent(this.options.agent.did)}`;
56
+ this.logger.info(`[IndexerWS] Connecting to ${wsUrl}`);
57
+ const ws = new ws_1.default(wsUrl);
58
+ this.ws = ws;
59
+ ws.on('open', () => {
60
+ this.logger.info(`[IndexerWS] Connected to indexer`);
61
+ this.reconnectAttempt = 0;
62
+ });
63
+ ws.on('message', (data) => {
64
+ var _a;
65
+ try {
66
+ const event = JSON.parse(data.toString());
67
+ const blockHeight = (_a = event['block_height']) !== null && _a !== void 0 ? _a : 0;
68
+ if (blockHeight <= 0)
69
+ return;
70
+ const payload = event['payload'];
71
+ if (!(payload === null || payload === void 0 ? void 0 : payload.sender))
72
+ return;
73
+ const sender = payload.sender;
74
+ if (this.syncing) {
75
+ this.pendingEvents.push({ blockHeight, sender, did: event.did });
76
+ }
77
+ else {
78
+ this.processBlock(blockHeight, sender, event.did).catch(err => this.logger.error(`[IndexerWS] Handler error: ${err.message}`));
79
+ }
80
+ }
81
+ catch (_b) {
82
+ this.logger.warn(`[IndexerWS] Failed to parse message: ${data}`);
83
+ }
84
+ });
85
+ ws.on('close', () => {
86
+ if (!this.stopped)
87
+ this.scheduleReconnect();
88
+ });
89
+ ws.on('error', (error) => {
90
+ this.logger.error(`[IndexerWS] Error: ${error.message}`);
91
+ });
92
+ }
93
+ async syncRest() {
94
+ this.logger.info(`[IndexerWS] Starting REST initial sync`);
95
+ try {
96
+ const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
97
+ const data = await this.fetchInitialEvents(lastBlockHeight);
98
+ for (const event of data.events) {
99
+ const blockHeight = event.block_height;
100
+ const sender = event.payload.sender;
101
+ await this.processBlock(blockHeight, sender, event.did);
102
+ }
103
+ this.logger.info(`[IndexerWS] Initial sync complete: ${data.events.length} event(s)`);
104
+ }
105
+ catch (error) {
106
+ this.logger.error(`[IndexerWS] REST initial sync failed: ${error.message}`);
107
+ }
108
+ }
109
+ async drainPendingEvents() {
110
+ const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
111
+ const events = this.pendingEvents.splice(0);
112
+ let processed = 0;
113
+ let skipped = 0;
114
+ for (const { blockHeight, sender, did } of events) {
115
+ if (blockHeight <= lastBlockHeight) {
116
+ skipped++;
117
+ continue;
118
+ }
119
+ await this.processBlock(blockHeight, sender, did);
120
+ processed++;
121
+ }
122
+ if (skipped + processed > 0) {
123
+ this.logger.info(`[IndexerWS] Drained: ${processed} processed, ${skipped} skipped`);
124
+ }
125
+ }
126
+ async processBlock(blockHeight, sender, did) {
127
+ try {
128
+ const changes = await this.indexer.getChanges(blockHeight);
129
+ if (changes.activity.length > 0) {
130
+ await this.applyChanges(blockHeight, changes.activity, sender, did);
131
+ }
132
+ }
133
+ catch (error) {
134
+ this.logger.error(`[IndexerWS] Failed to fetch changes for block ${blockHeight}: ${error.message}`);
135
+ }
136
+ }
137
+ async applyChanges(blockHeight, activity, operatorAddress, did) {
138
+ const state = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
139
+ const mine = activity.filter(a => a.account === operatorAddress || did === this.options.agent.did);
140
+ if (mine.length === 0)
141
+ return;
142
+ for (const a of mine)
143
+ (0, VeranaHelpers_1.applyActivity)(state, a);
144
+ await (0, VeranaHelpers_1.saveSyncState)(this.options.agent, state);
145
+ this.logger.debug(`[IndexerWS] Block ${blockHeight}: applied ${mine.length} activity item(s)`);
146
+ }
147
+ scheduleReconnect() {
148
+ const delay = Math.min(1000 * 2 ** this.reconnectAttempt, MAX_RECONNECT_DELAY_MS);
149
+ this.reconnectAttempt++;
150
+ this.logger.info(`[IndexerWS] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt})`);
151
+ setTimeout(() => {
152
+ if (!this.stopped)
153
+ this.connect();
154
+ }, delay);
155
+ }
156
+ async fetchInitialEvents(afterBlockHeight) {
157
+ this.logger.info(`[IndexerWS] Fetching initial events after block ${afterBlockHeight}`);
158
+ if (!this.options.agent.did)
159
+ throw new Error('Agent does not have any defined public DID');
160
+ const response = await this.indexer.getEvents(this.options.agent.did, afterBlockHeight);
161
+ this.logger.info(`[IndexerWS] Fetched: count=${response.count}, after_block_height=${response.after_block_height}`);
162
+ return response;
163
+ }
164
+ }
165
+ exports.IndexerWebSocketService = IndexerWebSocketService;
166
+ //# sourceMappingURL=IndexerWebSocketService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexerWebSocketService.js","sourceRoot":"","sources":["../../src/blockchain/IndexerWebSocketService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { VsAgent } from '../agent/VsAgent';
2
+ import { IndexerActivity, VeranaSyncState } from './types';
3
+ export declare function applyActivity(state: VeranaSyncState, activity: IndexerActivity): void;
4
+ export declare function loadSyncState(agent: VsAgent): Promise<VeranaSyncState>;
5
+ export declare function saveSyncState(agent: VsAgent, state: VeranaSyncState): Promise<void>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyActivity = applyActivity;
4
+ exports.loadSyncState = loadSyncState;
5
+ exports.saveSyncState = saveSyncState;
6
+ const types_1 = require("./types");
7
+ function applyActivity(state, activity) {
8
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
9
+ const block = Number(activity.block_height) || 0;
10
+ const id = String(activity.entity_id);
11
+ const c = activity.changes;
12
+ switch (activity.entity_type) {
13
+ case 'TrustRegistry': {
14
+ state.trustRegistries[id] = {
15
+ id: Number(id),
16
+ did: String(c['did']),
17
+ controller: String(c['controller']),
18
+ archived: Boolean(c['archived']),
19
+ lastModifiedBlock: block,
20
+ };
21
+ break;
22
+ }
23
+ case 'CredentialSchema': {
24
+ const existing = state.credentialSchemas[id];
25
+ state.credentialSchemas[id] = {
26
+ id: Number(id),
27
+ trId: Number(c['tr_id']),
28
+ jsonSchema: String((_b = (_a = c['json_schema']) !== null && _a !== void 0 ? _a : existing === null || existing === void 0 ? void 0 : existing.jsonSchema) !== null && _b !== void 0 ? _b : ''),
29
+ issuerMode: c['issuer_perm_management_mode']
30
+ ? String(c['issuer_perm_management_mode'])
31
+ : existing === null || existing === void 0 ? void 0 : existing.issuerMode,
32
+ verifierMode: c['verifier_perm_management_mode']
33
+ ? String(c['verifier_perm_management_mode'])
34
+ : existing === null || existing === void 0 ? void 0 : existing.verifierMode,
35
+ archived: activity.msg === 'ArchiveCredentialSchema'
36
+ ? !((_c = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _c !== void 0 ? _c : false)
37
+ : ((_d = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _d !== void 0 ? _d : false),
38
+ lastModifiedBlock: block,
39
+ };
40
+ break;
41
+ }
42
+ case 'Permission': {
43
+ const existing = state.permissions[id];
44
+ const isRevoked = activity.msg === 'RevokePermission' ? true : ((_e = existing === null || existing === void 0 ? void 0 : existing.revoked) !== null && _e !== void 0 ? _e : false);
45
+ const isSlashed = activity.msg === 'SlashPermissionTrustDeposit' ? true : ((_f = existing === null || existing === void 0 ? void 0 : existing.slashed) !== null && _f !== void 0 ? _f : false);
46
+ state.permissions[id] = {
47
+ id: Number(id),
48
+ schemaId: Number(c['schema_id']),
49
+ did: String((_g = c['did']) !== null && _g !== void 0 ? _g : ''),
50
+ type: Number(c['type']),
51
+ vpState: (() => {
52
+ var _a, _b;
53
+ switch (activity.msg) {
54
+ case 'SetPermissionVPToValidated':
55
+ return 'VALIDATED';
56
+ case 'StartPermissionVP':
57
+ case 'RenewPermissionVP':
58
+ return 'IN_PROGRESS';
59
+ case 'CancelPermissionVPLastRequest':
60
+ return 'CANCELLED';
61
+ default:
62
+ return String((_b = (_a = c['vp_state']) !== null && _a !== void 0 ? _a : existing === null || existing === void 0 ? void 0 : existing.vpState) !== null && _b !== void 0 ? _b : '');
63
+ }
64
+ })(),
65
+ effectiveUntil: activity.msg === 'AdjustPermission'
66
+ ? String((_h = c['effective_until']) !== null && _h !== void 0 ? _h : '')
67
+ : ((_j = existing === null || existing === void 0 ? void 0 : existing.effectiveUntil) !== null && _j !== void 0 ? _j : ''),
68
+ revoked: isRevoked,
69
+ slashed: isSlashed,
70
+ lastModifiedBlock: block,
71
+ };
72
+ break;
73
+ }
74
+ default:
75
+ break;
76
+ }
77
+ state.lastBlockHeight = Math.max(state.lastBlockHeight, block);
78
+ }
79
+ const emptyState = () => ({
80
+ lastBlockHeight: 0,
81
+ trustRegistries: {},
82
+ credentialSchemas: {},
83
+ permissions: {},
84
+ });
85
+ async function loadSyncState(agent) {
86
+ var _a;
87
+ const record = await agent.genericRecords.findById(types_1.RECORD_ID);
88
+ if (!record)
89
+ return emptyState();
90
+ return (_a = record.content) !== null && _a !== void 0 ? _a : emptyState();
91
+ }
92
+ async function saveSyncState(agent, state) {
93
+ const existing = await agent.genericRecords.findById(types_1.RECORD_ID);
94
+ if (existing) {
95
+ existing.content = state;
96
+ await agent.genericRecords.update(existing);
97
+ }
98
+ else {
99
+ await agent.genericRecords.save({ id: types_1.RECORD_ID, content: state });
100
+ }
101
+ }
102
+ //# sourceMappingURL=VeranaHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VeranaHelpers.js","sourceRoot":"","sources":["../../src/blockchain/VeranaHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IndexerChangesResponse, IndexerEventsResponse, VeranaIdxConfig } from './types';
2
+ export declare class VeranaIndexerService {
3
+ private readonly config;
4
+ private readonly baseUrl;
5
+ constructor(config: VeranaIdxConfig);
6
+ getChanges(blockHeight: number): Promise<IndexerChangesResponse>;
7
+ getEvents(agentDid: string, afterBlockHeight?: number, limit?: number): Promise<IndexerEventsResponse>;
8
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VeranaIndexerService = void 0;
4
+ const util_1 = require("../utils/util");
5
+ class VeranaIndexerService {
6
+ constructor(config) {
7
+ this.config = config;
8
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
9
+ }
10
+ async getChanges(blockHeight) {
11
+ var _a, _b;
12
+ this.config.logger.debug(`[VeranaIndexer] getChanges block=${blockHeight}`);
13
+ const url = `${this.baseUrl}/verana/indexer/v1/changes/${blockHeight}`;
14
+ const data = await (0, util_1.fetchJson)(url);
15
+ return {
16
+ block_height: Number((_a = data['block_height']) !== null && _a !== void 0 ? _a : blockHeight),
17
+ next_change_at: data['next_change_at'] != null ? Number(data['next_change_at']) : null,
18
+ activity: ((_b = data['activity']) !== null && _b !== void 0 ? _b : []),
19
+ };
20
+ }
21
+ async getEvents(agentDid, afterBlockHeight = 0, limit = 500) {
22
+ this.config.logger.debug(`[VeranaIndexer] getEvents after_block=${afterBlockHeight}`);
23
+ const url = `${this.baseUrl}/verana/indexer/v1/events?did=${encodeURIComponent(agentDid)}&after_block_height=${afterBlockHeight}&limit=${limit}`;
24
+ return (0, util_1.fetchJson)(url);
25
+ }
26
+ }
27
+ exports.VeranaIndexerService = VeranaIndexerService;
28
+ //# sourceMappingURL=VeranaIndexerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VeranaIndexerService.js","sourceRoot":"","sources":["../../src/blockchain/VeranaIndexerService.ts"],"names":[],"mappings":";;;AAAA,wCAAyC;AAIzC,MAAa,oBAAoB;IAG/B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB;;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,8BAA8B,WAAW,EAAE,CAAA;QACtE,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAS,EAA0B,GAAG,CAAC,CAAA;QAC1D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,mCAAI,WAAW,CAAC;YACzD,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACtF,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,mCAAI,EAAE,CAAsB;SACxD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,gBAAgB,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG;QACjE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,gBAAgB,EAAE,CAAC,CAAA;QACrF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,iCAAiC,kBAAkB,CAAC,QAAQ,CAAC,uBAAuB,gBAAgB,UAAU,KAAK,EAAE,CAAA;QAChJ,OAAO,IAAA,gBAAS,EAAwB,GAAG,CAAC,CAAA;IAC9C,CAAC;CACF;AAvBD,oDAuBC"}
@@ -1,2 +1,5 @@
1
+ export * from './IndexerWebSocketService';
2
+ export * from './VeranaHelpers';
1
3
  export * from './VeranaChainService';
4
+ export * from './VeranaIndexerService';
2
5
  export * from './types';
@@ -14,6 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./IndexerWebSocketService"), exports);
18
+ __exportStar(require("./VeranaHelpers"), exports);
17
19
  __exportStar(require("./VeranaChainService"), exports);
20
+ __exportStar(require("./VeranaIndexerService"), exports);
18
21
  __exportStar(require("./types"), exports);
19
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blockchain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blockchain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAyC;AACzC,kDAA+B;AAC/B,uDAAoC;AACpC,yDAAsC;AACtC,0CAAuB"}
@@ -1,5 +1,64 @@
1
- import { BaseLogger } from '@credo-ts/core';
1
+ import { BaseLogger, JsonObject } from '@credo-ts/core';
2
2
  export declare const VERANA_BECH32_PREFIX = "verana";
3
+ export declare const RECORD_ID = "verana-blockchain-sync-state";
4
+ export interface IndexerEventsResponse {
5
+ events: JsonObject[];
6
+ count: number;
7
+ after_block_height: number;
8
+ }
9
+ export type IndexerEntityType = 'TrustRegistry' | 'CredentialSchema' | 'Permission' | 'PermissionSession' | 'TrustDeposit';
10
+ export interface IndexerActivity {
11
+ timestamp: string;
12
+ block_height: string | number;
13
+ entity_type: IndexerEntityType | string;
14
+ entity_id: string;
15
+ msg: string;
16
+ changes: Record<string, unknown>;
17
+ account?: string;
18
+ }
19
+ export interface IndexerChangesResponse {
20
+ block_height: number;
21
+ next_change_at: number | null;
22
+ activity: IndexerActivity[];
23
+ }
24
+ export interface VeranaIdxConfig {
25
+ baseUrl: string;
26
+ logger: BaseLogger;
27
+ }
28
+ export interface SyncedTrustRegistry {
29
+ id: number;
30
+ did: string;
31
+ controller: string;
32
+ archived: boolean;
33
+ activeGfVersion?: number;
34
+ lastModifiedBlock: number;
35
+ }
36
+ export interface SyncedCredentialSchema {
37
+ id: number;
38
+ trId: number;
39
+ jsonSchema: string;
40
+ issuerMode?: string;
41
+ verifierMode?: string;
42
+ archived: boolean;
43
+ lastModifiedBlock: number;
44
+ }
45
+ export interface SyncedPermission {
46
+ id: number;
47
+ schemaId: number;
48
+ did: string;
49
+ type: number;
50
+ vpState?: string;
51
+ effectiveUntil?: string;
52
+ revoked: boolean;
53
+ slashed: boolean;
54
+ lastModifiedBlock: number;
55
+ }
56
+ export interface VeranaSyncState {
57
+ lastBlockHeight: number;
58
+ trustRegistries: Record<string, SyncedTrustRegistry>;
59
+ credentialSchemas: Record<string, SyncedCredentialSchema>;
60
+ permissions: Record<string, SyncedPermission>;
61
+ }
3
62
  export interface PermQueryClient {
4
63
  GetPermission(req: {
5
64
  id: Long;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VERANA_BECH32_PREFIX = void 0;
3
+ exports.RECORD_ID = exports.VERANA_BECH32_PREFIX = void 0;
4
4
  exports.VERANA_BECH32_PREFIX = 'verana';
5
+ exports.RECORD_ID = 'verana-blockchain-sync-state';
5
6
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/blockchain/types.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/blockchain/types.ts"],"names":[],"mappings":";;;AAEa,QAAA,oBAAoB,GAAG,QAAQ,CAAA;AAC/B,QAAA,SAAS,GAAG,8BAA8B,CAAA"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "default": "./build/index.js"
10
10
  }
11
11
  },
12
- "version": "1.11.0-dev.12",
12
+ "version": "1.11.0-dev.13",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "https://github.com/verana-labs/vs-agent"
@@ -38,7 +38,7 @@
38
38
  "didwebvh-ts": "^2.5.6",
39
39
  "express": "^4.18.1",
40
40
  "tsyringe": "4.8.0",
41
- "@verana-labs/vs-agent-model": "1.11.0-dev.12"
41
+ "@verana-labs/vs-agent-model": "1.11.0-dev.13"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@credo-ts/core": "0.7.0-alpha-20260410113934",