Home Reference Source Test

src/main/generic/consensus/GenesisConfigOffline.js

class GenesisConfig {
    static main() {
        GenesisConfig.init(GenesisConfig.CONFIGS['main']);
    }

    static test() {
        GenesisConfig.init(GenesisConfig.CONFIGS['test']);
    }

    static dev() {
        GenesisConfig.init(GenesisConfig.CONFIGS['dev']);
    }

    static bounty() {
        GenesisConfig.init(GenesisConfig.CONFIGS['bounty']);
    }

    /**
     * @param {{NETWORK_ID:number,NETWORK_NAME:string}} config
     */
    static init(config) {
        if (GenesisConfig._config) throw new Error('GenesisConfig already initialized');
        if (!config.NETWORK_ID) throw new Error('Config is missing network id');
        if (!config.NETWORK_NAME) throw new Error('Config is missing network name');

        GenesisConfig._config = config;
    }

    /**
     * @type {number}
     */
    static get NETWORK_ID() {
        if (!GenesisConfig._config) throw new Error('GenesisConfig not initialized');
        return GenesisConfig._config.NETWORK_ID;
    }

    /**
     * @type {string}
     */
    static get NETWORK_NAME() {
        if (!GenesisConfig._config) throw new Error('GenesisConfig not initialized');
        return GenesisConfig._config.NETWORK_NAME;
    }
}
Class.register(GenesisConfig);

GenesisConfig.CONFIGS = {
    'main': {
        NETWORK_ID: 42,
        NETWORK_NAME: 'main'
    },

    'test': {
        NETWORK_ID: 1,
        NETWORK_NAME: 'test'
    },

    'dev': {
        NETWORK_ID: 2,
        NETWORK_NAME: 'dev'
    },

    'bounty': {
        NETWORK_ID: 3,
        NETWORK_NAME: 'bounty'
    }
};