@swaptoshi/governance-module
Version:
Klayr governance on-chain module
101 lines • 3.67 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.governanceGenesisStoreSchema = void 0;
const utils = require("@klayr/utils");
const stores_1 = require("./stores");
const genesisSchemaBuilder = (schema, keys) => {
const { $id, ...rest } = utils.objects.cloneDeep(schema);
const initialLength = Object.keys(schema.properties).length;
for (let i = 0; i < keys.length; i += 1) {
rest.required.push(keys[i].key);
const properties = {
fieldNumber: initialLength + 1 + i,
dataType: keys[i].dataType,
};
if (keys[i].format) {
properties.format = keys[i].format;
}
rest.properties[keys[i].key] = properties;
}
return rest;
};
exports.governanceGenesisStoreSchema = {
$id: '/governance/module/genesis',
type: 'object',
required: [
'boostedAccountSubstore',
'castedVoteSubstore',
'delegatedVoteSubstore',
'nextAvailableProposalIdSubstore',
'proposalVoterSubstore',
'proposalSubstore',
'queueSubstore',
'voteScoreSubstore',
'configRegistrySubstore',
'configSubstore',
],
properties: {
boostedAccountSubstore: {
fieldNumber: 1,
type: 'array',
items: genesisSchemaBuilder(stores_1.boostedAccountStoreSchema, [{ key: 'address', dataType: 'bytes', format: 'klayr32' }]),
},
castedVoteSubstore: {
fieldNumber: 2,
type: 'array',
items: genesisSchemaBuilder(stores_1.castedVoteStoreSchema, [{ key: 'address', dataType: 'bytes', format: 'klayr32' }]),
},
delegatedVoteSubstore: {
fieldNumber: 3,
type: 'array',
items: genesisSchemaBuilder(stores_1.delegatedVoteStoreSchema, [{ key: 'address', dataType: 'bytes', format: 'klayr32' }]),
},
nextAvailableProposalIdSubstore: {
fieldNumber: 4,
...genesisSchemaBuilder(stores_1.nextAvailableProposalIdStoreSchema, []),
},
proposalVoterSubstore: {
fieldNumber: 5,
type: 'array',
items: genesisSchemaBuilder(stores_1.proposalVoterStoreSchema, [{ key: 'proposalId', dataType: 'uint32' }]),
},
proposalSubstore: {
fieldNumber: 6,
type: 'array',
items: genesisSchemaBuilder(stores_1.proposalStoreSchema, [{ key: 'proposalId', dataType: 'uint32' }]),
},
queueSubstore: {
fieldNumber: 7,
type: 'array',
items: genesisSchemaBuilder(stores_1.proposalQueueStoreSchema, [{ key: 'height', dataType: 'uint32' }]),
},
voteScoreSubstore: {
fieldNumber: 8,
type: 'array',
items: genesisSchemaBuilder(stores_1.voteScoreStoreSchema, [{ key: 'address', dataType: 'bytes', format: 'klayr32' }]),
},
configRegistrySubstore: {
fieldNumber: 9,
...genesisSchemaBuilder(stores_1.configRegistryStoreSchema, []),
},
configSubstore: {
fieldNumber: 10,
type: 'array',
items: {
type: 'object',
required: ['module', 'data'],
properties: {
module: {
fieldNumber: 1,
dataType: 'string',
},
data: {
fieldNumber: 2,
dataType: 'bytes',
},
},
},
},
},
};
//# sourceMappingURL=genesis.js.map