bitcore-wallet-service
Version:
A service for Mutisig HD Bitcoin Wallets
83 lines (75 loc) • 2.36 kB
text/typescript
import { V8 } from './blockchainexplorers/v8';
import { ChainService } from './chain/index';
const $ = require('preconditions').singleton();
const PROVIDERS = {
v8: {
btc: {
livenet: 'https://api.bitcore.io',
testnet3: 'https://api.bitcore.io'
},
bch: {
livenet: 'https://api.bitcore.io',
testnet3: 'https://api.bitcore.io'
},
doge: {
livenet: 'https://api.bitcore.io',
testnet3: 'https://api.bitcore.io'
},
ltc: {
livenet: 'https://api.bitcore.io',
testnet4: 'https://api.bitcore.io'
},
xrp: {
livenet: 'https://api-xrp.bitcore.io',
testnet: 'https://api-xrp.bitcore.io'
},
eth: {
livenet: 'https://api-eth.bitcore.io',
sepolia: 'https://api-eth.bitcore.io'
},
matic: {
livenet: 'https://api-matic.bitcore.io',
amoy: 'https://api-matic.bitcore.io'
},
arb: {
livenet: 'https://api-eth.bitcore.io',
sepolia: 'https://api-eth.bitcore.io'
},
base: {
livenet: 'https://api-eth.bitcore.io',
sepolia: 'https://api-eth.bitcore.io'
},
op: {
livenet: 'https://api-eth.bitcore.io',
sepolia: 'https://api-eth.bitcore.io'
},
sol: {
livenet: 'https://api-sol.bitcore.io',
testnet: 'https://api-sol.bitcore.io',
devnet: 'https://api-sol.bitcore.io'
},
}
};
export function BlockChainExplorer(opts): V8 {
$.checkArgument(opts, 'Failed state: opts undefined at <BlockChainExplorer()>');
const provider = opts.provider || 'v8';
const chain = opts.chain?.toLowerCase() || ChainService.getChain(opts.coin); // getChain -> backwards compatibility
const network = opts.network || 'livenet';
const url = opts.url || PROVIDERS[provider]?.[chain]?.[network];
$.checkState(url, `No url found for provider: ${provider}:${chain}:${network}`);
if (chain != 'bch' && opts.addressFormat) { throw new Error('addressFormat only supported for bch'); }
if (chain == 'bch' && !opts.addressFormat) { opts.addressFormat = 'cashaddr'; }
switch (provider) {
case 'v8':
return new V8({
chain,
network,
url,
apiPrefix: opts.apiPrefix,
userAgent: opts.userAgent,
addressFormat: opts.addressFormat
});
default:
throw new Error(`Provider not supported: ${provider}`);
}
}