0xweb
Version: 
Contract package manager and other web3 tools
48 lines (42 loc) • 1.62 kB
text/typescript
import { config } from '@dequanto/config/Config';
import { $require } from '@dequanto/utils/$require';
import { EthWeb3Client } from './EthWeb3Client'
import { IWeb3EndpointOptions } from './interfaces/IWeb3EndpointOptions'
import { ConfigDefaults } from '@dequanto/config/ConfigDefaults';
import { $config } from '@dequanto/utils/$config';
export class EvmWeb3Client extends EthWeb3Client {
    constructor(options: IWeb3EndpointOptions) {
        super(resolveOptions(options))
    }
}
export class EvmWeb3ClientDeferred extends EvmWeb3Client {
    constructor(options: IWeb3EndpointOptions) {
        super({
            ...options,
            web3: {
                request (...args) {
                    throw new Error('Web3 request not supported in deferred mode');
                },
                subscribe(...args) {
                    throw new Error('Web3 request not supported in deferred mode');
                },
                unsubscribe(...args) {
                    throw new Error('Web3 request not supported in deferred mode');
                }
            }
        })
    }
}
function resolveOptions (options: IWeb3EndpointOptions) {
    $require.notNull(options?.platform, 'Platform is required when generic evm client is used');
    let cfg = $config.get(`web3.${options.platform}`);
    if (cfg) {
        for (let key in cfg) {
            if (options[key] == null) {
                options[key] = cfg[key];
            }
        }
    }
    $require.Numeric(options.chainId, `ChainID should be numeric. Got ${options.chainId} for ${options.platform}`);
    return options;
}