scrypt-ts
Version:
A toolset for building sCrypt smart contract applications on Bitcoin SV network written in typescript.
90 lines • 3.72 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultProvider = void 0;
const scryptlib_1 = require("scryptlib");
const abstract_provider_1 = require("../bsv/abstract-provider");
const gorillapool_provider_1 = require("./gorillapool-provider");
const provider_fallback_1 = require("./provider-fallback");
const sensible_provider_1 = require("./sensible-provider");
const taal_provider_1 = require("./taal-provider");
const whatsonchain_provider_1 = require("./whatsonchain-provider");
function isTestNet(network) {
return network == scryptlib_1.bsv.Networks.testnet;
}
/**
* The default provider is the safest, easiest way to begin developing on Bitcon,
* and it is also robust enough for use in production.
*/
class DefaultProvider extends abstract_provider_1.Provider {
constructor(options) {
super();
this._providers = [];
options = options || {
network: scryptlib_1.bsv.Networks.livenet
};
const network = options.network || scryptlib_1.bsv.Networks.livenet;
this._providers.push(new whatsonchain_provider_1.WhatsonchainProvider(network));
if (options.taal || isTestNet(network)) {
this._providers.push(new taal_provider_1.TaalProvider(options.taal));
}
if (options.gorillapool || isTestNet(network)) {
this._providers.push(new gorillapool_provider_1.GorillapoolProvider(network, options.gorillapool));
}
if (options.sensible) {
this._providers.push(new sensible_provider_1.SensibleProvider(network, options.sensible));
}
if (this._providers.length === 0) {
this._providers.push(new whatsonchain_provider_1.WhatsonchainProvider(network));
}
}
get bestProvider() {
if (this._providers.length === 1) {
if ('provider' in this._providers[0]) {
return this._providers[0]['provider'];
}
return this._providers[0];
}
return new provider_fallback_1.FallbackProvider(this._providers);
}
isConnected() {
return this.bestProvider.isConnected();
}
connect() {
return __awaiter(this, void 0, void 0, function* () {
yield this.bestProvider.connect();
return this;
});
}
updateNetwork(network) {
this.bestProvider.updateNetwork(network);
}
getNetwork() {
return this.bestProvider.getNetwork();
}
getFeePerKb() {
return this.bestProvider.getFeePerKb();
}
sendRawTransaction(rawTxHex) {
return this.bestProvider.sendRawTransaction(rawTxHex);
}
getTransaction(txHash) {
return this.bestProvider.getTransaction(txHash);
}
listUnspent(address, options) {
return this.bestProvider.listUnspent(address, options);
}
getBalance(address) {
return this.bestProvider.getBalance(address);
}
}
exports.DefaultProvider = DefaultProvider;
//# sourceMappingURL=default-provider.js.map