envio 2.31.0-alpha.0 → 2.31.0-alpha.2

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,6 @@
2
2
  'use strict';
3
3
 
4
4
  var Table = require("./Table.res.js");
5
- var Js_exn = require("rescript/lib/js/js_exn.js");
6
5
  var Belt_Array = require("rescript/lib/js/belt_Array.js");
7
6
  var S$RescriptSchema = require("rescript-schema/src/S.res.js");
8
7
 
@@ -11,7 +10,7 @@ var variants = [
11
10
  "DELETE"
12
11
  ];
13
12
 
14
- var name = "ENTITY_HISTORY_ROW_ACTION";
13
+ var name = "ENVIO_HISTORY_CHANGE";
15
14
 
16
15
  var schema = S$RescriptSchema.$$enum(variants);
17
16
 
@@ -21,159 +20,29 @@ var RowAction = {
21
20
  schema: schema
22
21
  };
23
22
 
24
- var entityIdOnlySchema = S$RescriptSchema.schema(function (s) {
25
- return {
26
- id: s.m(S$RescriptSchema.string)
27
- };
28
- });
23
+ var changeFieldName = "envio_change";
29
24
 
30
- var previousHistoryFieldsSchema = S$RescriptSchema.object(function (s) {
31
- return {
32
- chain_id: s.f("previous_entity_history_chain_id", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
33
- block_timestamp: s.f("previous_entity_history_block_timestamp", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
34
- block_number: s.f("previous_entity_history_block_number", S$RescriptSchema.$$null(S$RescriptSchema.$$int)),
35
- log_index: s.f("previous_entity_history_log_index", S$RescriptSchema.$$null(S$RescriptSchema.$$int))
36
- };
37
- });
25
+ var checkpointIdFieldName = "checkpoint_id";
38
26
 
39
- var currentHistoryFieldsSchema = S$RescriptSchema.object(function (s) {
40
- return {
41
- chain_id: s.f("entity_history_chain_id", S$RescriptSchema.$$int),
42
- block_timestamp: s.f("entity_history_block_timestamp", S$RescriptSchema.$$int),
43
- block_number: s.f("entity_history_block_number", S$RescriptSchema.$$int),
44
- log_index: s.f("entity_history_log_index", S$RescriptSchema.$$int)
45
- };
46
- });
27
+ function makeSetUpdateSchema(entitySchema) {
28
+ return S$RescriptSchema.object(function (s) {
29
+ s.tag(changeFieldName, "SET");
30
+ return {
31
+ entityId: s.f("id", S$RescriptSchema.string),
32
+ entityUpdateAction: {
33
+ TAG: "Set",
34
+ _0: s.flatten(entitySchema)
35
+ },
36
+ checkpointId: s.f(checkpointIdFieldName, S$RescriptSchema.$$int)
37
+ };
38
+ });
39
+ }
47
40
 
48
- function makeHistoryRowSchema(entitySchema) {
49
- var nullableEntitySchema = S$RescriptSchema.schema(function (s) {
50
- var match = entitySchema.t;
51
- if (typeof match !== "object") {
52
- return Js_exn.raiseError("Failed creating nullableEntitySchema. Expected an object schema for entity");
53
- }
54
- if (match.TAG !== "object") {
55
- return Js_exn.raiseError("Failed creating nullableEntitySchema. Expected an object schema for entity");
56
- }
57
- var nulldict = {};
58
- Belt_Array.forEach(match.items, (function (param) {
59
- var $$location = param.location;
60
- var schema = param.schema;
61
- var match = schema.t;
62
- var nullableFieldSchema = $$location === "id" || !(typeof match !== "object" || match.TAG !== "null") ? schema : S$RescriptSchema.$$null(schema);
63
- nulldict[$$location] = s.m(nullableFieldSchema);
64
- }));
65
- return nulldict;
66
- });
67
- return S$RescriptSchema.transform(S$RescriptSchema.object(function (s) {
68
- return {
69
- current: s.flatten(currentHistoryFieldsSchema),
70
- previous: s.flatten(previousHistoryFieldsSchema),
71
- entityData: s.flatten(nullableEntitySchema),
72
- action: s.f("action", schema)
73
- };
74
- }), (function (s) {
75
- return {
76
- p: (function (v) {
77
- var match = v.previous;
78
- var chain_id = match.chain_id;
79
- var tmp;
80
- var exit = 0;
81
- if (chain_id !== undefined) {
82
- var block_timestamp = match.block_timestamp;
83
- if (block_timestamp !== undefined) {
84
- var block_number = match.block_number;
85
- if (block_number !== undefined) {
86
- var log_index = match.log_index;
87
- if (log_index !== undefined) {
88
- tmp = {
89
- chain_id: chain_id,
90
- block_timestamp: block_timestamp,
91
- block_number: block_number,
92
- log_index: log_index
93
- };
94
- } else {
95
- exit = 1;
96
- }
97
- } else {
98
- exit = 1;
99
- }
100
- } else {
101
- exit = 1;
102
- }
103
- } else if (match.block_timestamp !== undefined || match.block_number !== undefined || match.log_index !== undefined) {
104
- exit = 1;
105
- } else {
106
- tmp = undefined;
107
- }
108
- if (exit === 1) {
109
- tmp = s.fail("Unexpected mix of null and non-null values in previous history fields", undefined);
110
- }
111
- var match$1 = v.action;
112
- var tmp$1;
113
- if (match$1 === "SET") {
114
- tmp$1 = {
115
- TAG: "Set",
116
- _0: v.entityData
117
- };
118
- } else {
119
- var match$2 = v.entityData;
120
- tmp$1 = {
121
- TAG: "Delete",
122
- _0: {
123
- id: match$2.id
124
- }
125
- };
126
- }
127
- return {
128
- current: v.current,
129
- previous: tmp,
130
- entityData: tmp$1
131
- };
132
- }),
133
- s: (function (v) {
134
- var entityData = v.entityData;
135
- var match;
136
- match = entityData.TAG === "Delete" ? [
137
- entityData._0,
138
- "DELETE"
139
- ] : [
140
- entityData._0,
141
- "SET"
142
- ];
143
- var historyFields = v.previous;
144
- return {
145
- current: v.current,
146
- entityData: match[0],
147
- action: match[1],
148
- previous: historyFields !== undefined ? historyFields : ({
149
- chain_id: undefined,
150
- block_timestamp: undefined,
151
- block_number: undefined,
152
- log_index: undefined
153
- })
154
- };
155
- })
156
- };
157
- }));
41
+ function historyTableName(entityName) {
42
+ return "envio_history_" + entityName;
158
43
  }
159
44
 
160
45
  function fromTable(table, schema) {
161
- var currentChangeFieldNames = [
162
- "entity_history_block_timestamp",
163
- "entity_history_chain_id",
164
- "entity_history_block_number",
165
- "entity_history_log_index"
166
- ];
167
- var currentHistoryFields = Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
168
- return Table.mkField(fieldName, "INTEGER", S$RescriptSchema.never, undefined, undefined, undefined, true, undefined, undefined);
169
- }));
170
- var previousChangeFieldNames = Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
171
- return "previous_" + fieldName;
172
- }));
173
- var previousHistoryFields = Belt_Array.map(previousChangeFieldNames, (function (fieldName) {
174
- return Table.mkField(fieldName, "INTEGER", S$RescriptSchema.never, undefined, undefined, true, undefined, undefined, undefined);
175
- }));
176
- var id = "id";
177
46
  var dataFields = Belt_Array.keepMap(table.fields, (function (field) {
178
47
  if (field.TAG !== "Field") {
179
48
  return ;
@@ -184,7 +53,7 @@ function fromTable(table, schema) {
184
53
  return {
185
54
  TAG: "Field",
186
55
  _0: {
187
- fieldName: id,
56
+ fieldName: "id",
188
57
  fieldType: field$1.fieldType,
189
58
  fieldSchema: field$1.fieldSchema,
190
59
  isArray: field$1.isArray,
@@ -212,91 +81,102 @@ function fromTable(table, schema) {
212
81
  };
213
82
  }
214
83
  }));
215
- var actionFieldName = "action";
216
- var actionField = Table.mkField(actionFieldName, name, S$RescriptSchema.never, undefined, undefined, undefined, undefined, undefined, undefined);
217
- var serialField = Table.mkField("serial", "SERIAL", S$RescriptSchema.never, undefined, undefined, true, undefined, true, undefined);
218
- var dataFieldNames = Belt_Array.map(dataFields, (function (field) {
84
+ var actionField = Table.mkField(changeFieldName, name, S$RescriptSchema.never, undefined, undefined, undefined, undefined, undefined, undefined);
85
+ var checkpointIdField = Table.mkField(checkpointIdFieldName, "INTEGER", S$RescriptSchema.$$int, undefined, undefined, undefined, true, undefined, undefined);
86
+ var entityTableName = table.tableName;
87
+ var historyTableName = "envio_history_" + entityTableName;
88
+ var table$1 = Table.mkTable(historyTableName, undefined, Belt_Array.concat(dataFields, [
89
+ checkpointIdField,
90
+ actionField
91
+ ]));
92
+ var setUpdateSchema = makeSetUpdateSchema(schema);
93
+ var allFieldNames = Belt_Array.map(table$1.fields, (function (field) {
219
94
  return Table.getFieldName(field);
220
95
  }));
221
- var originTableName = table.tableName;
222
- var historyTableName = originTableName + "_history";
223
- var table$1 = Table.mkTable(historyTableName, undefined, Belt_Array.concatMany([
224
- currentHistoryFields,
225
- previousHistoryFields,
226
- dataFields,
227
- [
228
- actionField,
229
- serialField
230
- ]
231
- ]));
232
- var insertFnName = "\"insert_" + table$1.tableName + "\"";
233
- var allFieldNamesDoubleQuoted = Belt_Array.map(Belt_Array.concatMany([
234
- currentChangeFieldNames,
235
- previousChangeFieldNames,
236
- dataFieldNames,
237
- [actionFieldName]
238
- ]), (function (fieldName) {
239
- return "\"" + fieldName + "\"";
96
+ var allFieldNamesStr = Belt_Array.map(allFieldNames, (function (name) {
97
+ return "\"" + name + "\"";
98
+ })).join(", ");
99
+ var selectParts = Belt_Array.map(allFieldNames, (function (fieldName) {
100
+ if (fieldName === "id") {
101
+ return "u.id";
102
+ } else if (fieldName === checkpointIdFieldName) {
103
+ return "u.checkpoint_id";
104
+ } else if (fieldName === changeFieldName) {
105
+ return "'DELETE'";
106
+ } else {
107
+ return "NULL";
108
+ }
240
109
  }));
241
- var makeInsertFnQuery = function (pgSchema) {
242
- var historyRowArg = "history_row";
243
- var historyTablePath = "\"" + pgSchema + "\".\"" + historyTableName + "\"";
244
- var originTablePath = "\"" + pgSchema + "\".\"" + originTableName + "\"";
245
- var previousHistoryFieldsAreNullStr = Belt_Array.map(previousChangeFieldNames, (function (fieldName) {
246
- return historyRowArg + "." + fieldName + " IS NULL";
247
- })).join(" OR ");
248
- var currentChangeFieldNamesCommaSeparated = currentChangeFieldNames.join(", ");
249
- var dataFieldNamesDoubleQuoted = Belt_Array.map(dataFieldNames, (function (fieldName) {
250
- return "\"" + fieldName + "\"";
251
- }));
252
- var dataFieldNamesCommaSeparated = dataFieldNamesDoubleQuoted.join(", ");
253
- return "CREATE OR REPLACE FUNCTION " + insertFnName + "(" + historyRowArg + " " + historyTablePath + ", should_copy_current_entity BOOLEAN)\nRETURNS void AS $$\nDECLARE\n v_previous_record RECORD;\n v_origin_record RECORD;\nBEGIN\n -- Check if previous values are not provided\n IF " + previousHistoryFieldsAreNullStr + " THEN\n -- Find the most recent record for the same id\n SELECT " + currentChangeFieldNamesCommaSeparated + " INTO v_previous_record\n FROM " + historyTablePath + "\n WHERE " + id + " = " + historyRowArg + "." + id + "\n ORDER BY " + Belt_Array.map(currentChangeFieldNames, (function (fieldName) {
254
- return fieldName + " DESC";
255
- })).join(", ") + "\n LIMIT 1;\n\n -- If a previous record exists, use its values\n IF FOUND THEN\n " + Belt_Array.map(Belt_Array.zip(currentChangeFieldNames, previousChangeFieldNames), (function (param) {
256
- return historyRowArg + "." + param[1] + " := v_previous_record." + param[0] + ";";
257
- })).join(" ") + "\n ElSIF should_copy_current_entity THEN\n -- Check if a value for the id exists in the origin table and if so, insert a history row for it.\n SELECT " + dataFieldNamesCommaSeparated + " FROM " + originTablePath + " WHERE id = " + historyRowArg + "." + id + " INTO v_origin_record;\n IF FOUND THEN\n INSERT INTO " + historyTablePath + " (" + currentChangeFieldNamesCommaSeparated + ", " + dataFieldNamesCommaSeparated + ", \"" + actionFieldName + "\")\n -- SET the current change data fields to 0 since we don't know what they were\n -- and it doesn't matter provided they are less than any new values\n VALUES (" + Belt_Array.map(currentChangeFieldNames, (function (param) {
258
- return "0";
259
- })).join(", ") + ", " + Belt_Array.map(dataFieldNames, (function (fieldName) {
260
- return "v_origin_record.\"" + fieldName + "\"";
261
- })).join(", ") + ", 'SET');\n\n " + Belt_Array.map(previousChangeFieldNames, (function (previousFieldName) {
262
- return historyRowArg + "." + previousFieldName + " := 0;";
263
- })).join(" ") + "\n END IF;\n END IF;\n END IF;\n\n INSERT INTO " + historyTablePath + " (" + allFieldNamesDoubleQuoted.join(", ") + ")\n VALUES (" + Belt_Array.map(allFieldNamesDoubleQuoted, (function (fieldName) {
264
- return historyRowArg + "." + fieldName;
265
- })).join(", ") + ");\nEND;\n$$ LANGUAGE plpgsql;";
110
+ var selectPartsStr = selectParts.join(", ");
111
+ var makeInsertDeleteUpdatesQuery = function (pgSchema) {
112
+ return "INSERT INTO \"" + pgSchema + "\".\"" + historyTableName + "\" (" + allFieldNamesStr + ")\nSELECT " + selectPartsStr + "\nFROM UNNEST($1::text[], $2::int[]) AS u(id, checkpoint_id)";
113
+ };
114
+ var dataFieldNames = Belt_Array.keep(Belt_Array.map(table$1.fields, (function (field) {
115
+ return Table.getFieldName(field);
116
+ })), (function (fieldName) {
117
+ if (fieldName !== changeFieldName) {
118
+ return fieldName !== checkpointIdFieldName;
119
+ } else {
120
+ return false;
121
+ }
122
+ }));
123
+ var dataFieldsCommaSeparated = Belt_Array.map(dataFieldNames, (function (name) {
124
+ return "\"" + name + "\"";
125
+ })).join(", ");
126
+ var makeGetRollbackRemovedIdsQuery = function (pgSchema) {
127
+ return "SELECT DISTINCT id\nFROM \"" + pgSchema + "\".\"" + historyTableName + "\"\nWHERE \"" + checkpointIdFieldName + "\" > $1\n AND NOT EXISTS (\n SELECT 1\n FROM \"" + pgSchema + "\".\"" + historyTableName + "\" h\n WHERE h.id = \"" + historyTableName + "\".id\n AND h.\"" + checkpointIdFieldName + "\" <= $1\n )";
128
+ };
129
+ var makeGetRollbackRestoredEntitiesQuery = function (pgSchema) {
130
+ return "SELECT DISTINCT ON (id) " + dataFieldsCommaSeparated + "\nFROM \"" + pgSchema + "\".\"" + historyTableName + "\"\nWHERE \"" + checkpointIdFieldName + "\" <= $1\n AND EXISTS (\n SELECT 1\n FROM \"" + pgSchema + "\".\"" + historyTableName + "\" h\n WHERE h.id = \"" + historyTableName + "\".id\n AND h.\"" + checkpointIdFieldName + "\" > $1\n )\nORDER BY id, \"" + checkpointIdFieldName + "\" DESC";
266
131
  };
267
- var insertFnString = "(sql, rowArgs, shouldCopyCurrentEntity) =>\n sql\`select " + insertFnName + "(ROW(" + Belt_Array.map(allFieldNamesDoubleQuoted, (function (fieldNameDoubleQuoted) {
268
- return "\${rowArgs[" + fieldNameDoubleQuoted + "]\}";
269
- })).join(", ") + ", NULL), --NULL argument for SERIAL field\n \${shouldCopyCurrentEntity});\`";
270
- var insertFn = eval(insertFnString);
271
- var schema$1 = makeHistoryRowSchema(schema);
272
132
  return {
273
133
  table: table$1,
274
- makeInsertFnQuery: makeInsertFnQuery,
275
- schema: schema$1,
276
- schemaRows: S$RescriptSchema.array(schema$1),
277
- insertFn: insertFn
134
+ setUpdateSchema: setUpdateSchema,
135
+ setUpdateSchemaRows: S$RescriptSchema.array(setUpdateSchema),
136
+ makeInsertDeleteUpdatesQuery: makeInsertDeleteUpdatesQuery,
137
+ makeGetRollbackRemovedIdsQuery: makeGetRollbackRemovedIdsQuery,
138
+ makeGetRollbackRestoredEntitiesQuery: makeGetRollbackRestoredEntitiesQuery
278
139
  };
279
140
  }
280
141
 
281
142
  function makePruneStaleEntityHistoryQuery(entityName, pgSchema) {
282
- var historyTableName = entityName + "_history";
283
- var historyTableRef = "\"" + pgSchema + "\".\"" + historyTableName + "\"";
284
- return "WITH safe AS (\n SELECT s.chain_id, s.block_number\n FROM unnest($1::int[], $2::bigint[]) AS s(chain_id, block_number)\n),\nmax_before_safe AS (\n SELECT t.id, MAX(t.serial) AS keep_serial\n FROM " + historyTableRef + " t\n JOIN safe s\n ON s.chain_id = t.entity_history_chain_id\n AND t.entity_history_block_number <= s.block_number\n GROUP BY t.id\n),\npost_safe AS (\n SELECT DISTINCT t.id\n FROM " + historyTableRef + " t\n JOIN safe s\n ON s.chain_id = t.entity_history_chain_id\n AND t.entity_history_block_number > s.block_number\n)\nDELETE FROM " + historyTableRef + " d\nUSING max_before_safe m\nLEFT JOIN post_safe p ON p.id = m.id\nWHERE d.id = m.id\n AND (\n d.serial < m.keep_serial\n OR (p.id IS NULL AND d.serial = m.keep_serial)\n );";
143
+ var historyTableRef = "\"" + pgSchema + "\".\"envio_history_" + entityName + "\"";
144
+ return "WITH anchors AS (\n SELECT t.id, MAX(t." + checkpointIdFieldName + ") AS keep_checkpoint_id\n FROM " + historyTableRef + " t WHERE t." + checkpointIdFieldName + " <= $1\n GROUP BY t.id\n)\nDELETE FROM " + historyTableRef + " d\nUSING anchors a\nWHERE d.id = a.id\n AND (\n d." + checkpointIdFieldName + " < a.keep_checkpoint_id\n OR (\n d." + checkpointIdFieldName + " = a.keep_checkpoint_id AND\n NOT EXISTS (\n SELECT 1 FROM " + historyTableRef + " ps \n WHERE ps.id = d.id AND ps." + checkpointIdFieldName + " > $1\n ) \n )\n );";
145
+ }
146
+
147
+ function pruneStaleEntityHistory(sql, entityName, pgSchema, safeCheckpointId) {
148
+ return sql.unsafe(makePruneStaleEntityHistoryQuery(entityName, pgSchema), [safeCheckpointId], {prepare: true});
149
+ }
150
+
151
+ function makeBackfillHistoryQuery(pgSchema, entityName) {
152
+ return "WITH target_ids AS (\n SELECT UNNEST($1::TEXT[]) AS id\n),\nmissing_history AS (\n SELECT e.*\n FROM \"" + pgSchema + "\".\"" + entityName + "\" e\n JOIN target_ids t ON e.id = t.id\n LEFT JOIN \"" + pgSchema + "\".\"envio_history_" + entityName + "\" h ON h.id = e.id\n WHERE h.id IS NULL\n)\nINSERT INTO \"" + pgSchema + "\".\"envio_history_" + entityName + "\"\nSELECT *, 0 AS " + checkpointIdFieldName + ", '" + "SET" + "' as " + changeFieldName + "\nFROM missing_history;";
153
+ }
154
+
155
+ function backfillHistory(sql, pgSchema, entityName, ids) {
156
+ return sql.unsafe(makeBackfillHistoryQuery(pgSchema, entityName), [ids], {prepare: true});
285
157
  }
286
158
 
287
- function pruneStaleEntityHistory(sql, entityName, pgSchema, safeReorgBlocks) {
288
- return sql.unsafe(makePruneStaleEntityHistoryQuery(entityName, pgSchema), [
289
- safeReorgBlocks.chainIds,
290
- safeReorgBlocks.blockNumbers
159
+ function insertDeleteUpdates(sql, pgSchema, entityHistory, batchDeleteEntityIds, batchDeleteCheckpointIds) {
160
+ return sql.unsafe(entityHistory.makeInsertDeleteUpdatesQuery(pgSchema), [
161
+ batchDeleteEntityIds,
162
+ batchDeleteCheckpointIds
291
163
  ], {prepare: true});
292
164
  }
293
165
 
166
+ function rollback(sql, pgSchema, entityName, rollbackTargetCheckpointId) {
167
+ return sql.unsafe("DELETE FROM \"" + pgSchema + "\".\"envio_history_" + entityName + "\" WHERE \"" + checkpointIdFieldName + "\" > $1;", [rollbackTargetCheckpointId], {prepare: true});
168
+ }
169
+
294
170
  exports.RowAction = RowAction;
295
- exports.entityIdOnlySchema = entityIdOnlySchema;
296
- exports.previousHistoryFieldsSchema = previousHistoryFieldsSchema;
297
- exports.currentHistoryFieldsSchema = currentHistoryFieldsSchema;
298
- exports.makeHistoryRowSchema = makeHistoryRowSchema;
171
+ exports.changeFieldName = changeFieldName;
172
+ exports.checkpointIdFieldName = checkpointIdFieldName;
173
+ exports.makeSetUpdateSchema = makeSetUpdateSchema;
174
+ exports.historyTableName = historyTableName;
299
175
  exports.fromTable = fromTable;
300
176
  exports.makePruneStaleEntityHistoryQuery = makePruneStaleEntityHistoryQuery;
301
177
  exports.pruneStaleEntityHistory = pruneStaleEntityHistory;
178
+ exports.makeBackfillHistoryQuery = makeBackfillHistoryQuery;
179
+ exports.backfillHistory = backfillHistory;
180
+ exports.insertDeleteUpdates = insertDeleteUpdates;
181
+ exports.rollback = rollback;
302
182
  /* schema Not a pure module */
@@ -7,6 +7,19 @@ import type {Json_t as Js_Json_t} from '../../src/Js.shim';
7
7
 
8
8
  import type {t as Address_t} from '../../src/Address.gen';
9
9
 
10
+ export type DynamicContractRegistry_t = {
11
+ readonly id: string;
12
+ readonly chain_id: number;
13
+ readonly registering_event_block_number: number;
14
+ readonly registering_event_log_index: number;
15
+ readonly registering_event_block_timestamp: number;
16
+ readonly registering_event_contract_name: string;
17
+ readonly registering_event_name: string;
18
+ readonly registering_event_src_address: Address_t;
19
+ readonly contract_address: Address_t;
20
+ readonly contract_name: string
21
+ };
22
+
10
23
  export type RawEvents_t = {
11
24
  readonly chain_id: number;
12
25
  readonly event_id: bigint;
@@ -21,16 +34,3 @@ export type RawEvents_t = {
21
34
  readonly transaction_fields: Js_Json_t;
22
35
  readonly params: Js_Json_t
23
36
  };
24
-
25
- export type DynamicContractRegistry_t = {
26
- readonly id: string;
27
- readonly chain_id: number;
28
- readonly registering_event_block_number: number;
29
- readonly registering_event_log_index: number;
30
- readonly registering_event_block_timestamp: number;
31
- readonly registering_event_contract_name: string;
32
- readonly registering_event_name: string;
33
- readonly registering_event_src_address: Address_t;
34
- readonly contract_address: Address_t;
35
- readonly contract_name: string
36
- };