@swaptoshi/dex-module
Version:
Klayr decentralized exchange (dex) on-chain module
81 lines • 3.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.dexGenesisStoreSchema = 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.dexGenesisStoreSchema = {
$id: '/dex/module/genesis',
type: 'object',
required: ['observationSubstore', 'poolSubstore', 'positionInfoSubstore', 'positionManagerSubstore', 'supportedTokenSubstore', 'tickBitmapSubstore', 'tickInfoSubstore', 'tokenSymbolSubstore'],
properties: {
observationSubstore: {
fieldNumber: 1,
type: 'array',
items: genesisSchemaBuilder(stores_1.observationStoreSchema, [
{ key: 'poolAddress', dataType: 'bytes', format: 'klayr32' },
{ key: 'index', dataType: 'string' },
]),
},
poolSubstore: {
fieldNumber: 2,
type: 'array',
items: genesisSchemaBuilder(stores_1.poolStoreSchema, []),
},
positionInfoSubstore: {
fieldNumber: 3,
type: 'array',
items: genesisSchemaBuilder(stores_1.positionInfoStoreSchema, [
{ key: 'poolAddress', dataType: 'bytes', format: 'klayr32' },
{ key: 'key', dataType: 'bytes' },
]),
},
positionManagerSubstore: {
fieldNumber: 4,
type: 'array',
items: genesisSchemaBuilder(stores_1.positionManagerStoreSchema, []),
},
supportedTokenSubstore: {
fieldNumber: 5,
type: 'array',
items: genesisSchemaBuilder(stores_1.supportedTokenStoreSchema, []),
},
tickBitmapSubstore: {
fieldNumber: 6,
type: 'array',
items: genesisSchemaBuilder(stores_1.tickBitmapStoreSchema, [
{ key: 'poolAddress', dataType: 'bytes', format: 'klayr32' },
{ key: 'index', dataType: 'string' },
]),
},
tickInfoSubstore: {
fieldNumber: 7,
type: 'array',
items: genesisSchemaBuilder(stores_1.tickInfoStoreSchema, [
{ key: 'poolAddress', dataType: 'bytes', format: 'klayr32' },
{ key: 'tick', dataType: 'string' },
]),
},
tokenSymbolSubstore: {
fieldNumber: 8,
type: 'array',
items: genesisSchemaBuilder(stores_1.tokenSymbolStoreSchema, [{ key: 'tokenId', dataType: 'bytes' }]),
},
},
};
//# sourceMappingURL=genesis.js.map