bitgo
Version:
BitGo JavaScript SDK
94 lines • 11 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.BitGo = void 0;
//
// BitGo JavaScript SDK
//
// Copyright 2014, BitGo, Inc. All Rights Reserved.
//
const pjson = require("../package.json");
const _ = require("lodash");
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_api_1 = require("@bitgo/sdk-api");
const statics_1 = require("@bitgo/statics");
const coinFactory_1 = require("./v2/coinFactory");
class BitGo extends sdk_api_1.BitGoAPI {
/**
* Constructor for BitGo Object
*/
constructor(params = {}) {
super(params);
if (!sdk_core_1.common.validateParams(params, [], [
'clientId',
'clientSecret',
'refreshToken',
'accessToken',
'userAgent',
'customRootURI',
'customBitcoinNetwork',
'serverXpub',
'stellarFederationServerUrl',
]) ||
(params.useProduction && !_.isBoolean(params.useProduction)) ||
(params.useAms && !_.isBoolean(params.useAms))) {
throw new Error('invalid argument');
}
if (!params.clientId !== !params.clientSecret) {
throw new Error('invalid argument - must provide both client id and secret');
}
this._useAms = !!params.useAms;
this._version = pjson.version;
this._userAgent = params.userAgent || 'BitGoJS/' + this.version();
this._coinFactory = new sdk_core_1.CoinFactory();
}
/**
* Initialize the coin factory with token configurations
* @param tokenConfigMap - A map of token metadata from AMS
*/
initCoinFactory(tokenConfigMap) {
// TODO(WIN-5839): use AMS endpoint to fetch config details
const coinMap = (0, statics_1.createTokenMapUsingTrimmedConfigDetails)(tokenConfigMap);
this._coinFactory = new sdk_core_1.CoinFactory();
(0, coinFactory_1.registerCoinConstructors)(this._coinFactory, coinMap);
}
/**
* Create a basecoin object
* @param coinName
*/
coin(coinName) {
if (this._useAms) {
return this._coinFactory.getInstance(this, coinName);
}
return coinFactory_1.GlobalCoinFactory.getInstance(this, coinName);
}
/**
* Register a token in the coin factory
* @param tokenConfig - The token metadata from AMS
*/
registerToken(tokenConfig) {
if (!this._useAms) {
throw new Error('registerToken is only supported when useAms is set to true');
}
// TODO(WIN-5839): use AMS endpoint to fetch token metadata
const staticsBaseCoin = (0, statics_1.createToken)(tokenConfig);
if (staticsBaseCoin) {
const formattedTokenConfig = (0, statics_1.getFormattedTokenConfigForCoin)(staticsBaseCoin);
if (formattedTokenConfig) {
const tokenConstructor = (0, coinFactory_1.getTokenConstructor)(formattedTokenConfig);
if (tokenConstructor) {
this._coinFactory.registerToken(staticsBaseCoin, tokenConstructor);
}
}
}
}
/**
* Create a basecoin object for a virtual token
* @param tokenName
*/
async token(tokenName) {
await this.fetchConstants();
return this.coin(tokenName);
}
}
exports.BitGo = BitGo;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Z28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYml0Z28udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsRUFBRTtBQUNGLHVCQUF1QjtBQUN2QixFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELEVBQUU7QUFDRix5Q0FBMEM7QUFDMUMsNEJBQTRCO0FBRTVCLDhDQUFnRTtBQUNoRSw0Q0FBMkQ7QUFDM0QsNENBS3dCO0FBQ3hCLGtEQUFvRztBQU9wRyxNQUFhLEtBQU0sU0FBUSxrQkFBUTtJQUdqQzs7T0FFRztJQUNILFlBQVksU0FBdUIsRUFBRTtRQUNuQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUNFLENBQUMsaUJBQU0sQ0FBQyxjQUFjLENBQ3BCLE1BQU0sRUFDTixFQUFFLEVBQ0Y7WUFDRSxVQUFVO1lBQ1YsY0FBYztZQUNkLGNBQWM7WUFDZCxhQUFhO1lBQ2IsV0FBVztZQUNYLGVBQWU7WUFDZixzQkFBc0I7WUFDdEIsWUFBWTtZQUNaLDRCQUE0QjtTQUM3QixDQUNGO1lBQ0QsQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDOUMsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksc0JBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsY0FBdUQ7UUFDckUsMkRBQTJEO1FBQzNELE1BQU0sT0FBTyxHQUFHLElBQUEsaURBQXVDLEVBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHNCQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFBLHNDQUF3QixFQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxRQUFnQjtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTywrQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsV0FBa0M7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELDJEQUEyRDtRQUMzRCxNQUFNLGVBQWUsR0FBRyxJQUFBLHFCQUFXLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixNQUFNLG9CQUFvQixHQUFHLElBQUEsd0NBQThCLEVBQUMsZUFBZSxDQUFDLENBQUM7WUFDN0UsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUEsaUNBQW1CLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDckUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBaUI7UUFDM0IsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQTNGRCxzQkEyRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gQml0R28gSmF2YVNjcmlwdCBTREtcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNCwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuaW1wb3J0IHBqc29uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJyk7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEJhc2VDb2luLCBDb2luRmFjdG9yeSwgY29tbW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJpdEdvQVBJLCBCaXRHb0FQSU9wdGlvbnMgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQge1xuICBjcmVhdGVUb2tlbk1hcFVzaW5nVHJpbW1lZENvbmZpZ0RldGFpbHMsXG4gIFRyaW1tZWRBbXNUb2tlbkNvbmZpZyxcbiAgY3JlYXRlVG9rZW4sXG4gIGdldEZvcm1hdHRlZFRva2VuQ29uZmlnRm9yQ29pbixcbn0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgR2xvYmFsQ29pbkZhY3RvcnksIHJlZ2lzdGVyQ29pbkNvbnN0cnVjdG9ycywgZ2V0VG9rZW5Db25zdHJ1Y3RvciB9IGZyb20gJy4vdjIvY29pbkZhY3RvcnknO1xuXG4vLyBjb25zdHJ1Y3RvciBwYXJhbXMgdXNlZCBleGNsdXNpdmVseSBmb3IgQml0R28gY2xhc3NcbmV4cG9ydCB0eXBlIEJpdEdvT3B0aW9ucyA9IEJpdEdvQVBJT3B0aW9ucyAmIHtcbiAgdXNlQW1zPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBCaXRHbyBleHRlbmRzIEJpdEdvQVBJIHtcbiAgcHJpdmF0ZSBfY29pbkZhY3Rvcnk6IENvaW5GYWN0b3J5O1xuICBwcml2YXRlIF91c2VBbXM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvciBmb3IgQml0R28gT2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihwYXJhbXM6IEJpdEdvT3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocGFyYW1zKTtcbiAgICBpZiAoXG4gICAgICAhY29tbW9uLnZhbGlkYXRlUGFyYW1zKFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIFtdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2NsaWVudElkJyxcbiAgICAgICAgICAnY2xpZW50U2VjcmV0JyxcbiAgICAgICAgICAncmVmcmVzaFRva2VuJyxcbiAgICAgICAgICAnYWNjZXNzVG9rZW4nLFxuICAgICAgICAgICd1c2VyQWdlbnQnLFxuICAgICAgICAgICdjdXN0b21Sb290VVJJJyxcbiAgICAgICAgICAnY3VzdG9tQml0Y29pbk5ldHdvcmsnLFxuICAgICAgICAgICdzZXJ2ZXJYcHViJyxcbiAgICAgICAgICAnc3RlbGxhckZlZGVyYXRpb25TZXJ2ZXJVcmwnLFxuICAgICAgICBdXG4gICAgICApIHx8XG4gICAgICAocGFyYW1zLnVzZVByb2R1Y3Rpb24gJiYgIV8uaXNCb29sZWFuKHBhcmFtcy51c2VQcm9kdWN0aW9uKSkgfHxcbiAgICAgIChwYXJhbXMudXNlQW1zICYmICFfLmlzQm9vbGVhbihwYXJhbXMudXNlQW1zKSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zLmNsaWVudElkICE9PSAhcGFyYW1zLmNsaWVudFNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGFyZ3VtZW50IC0gbXVzdCBwcm92aWRlIGJvdGggY2xpZW50IGlkIGFuZCBzZWNyZXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl91c2VBbXMgPSAhIXBhcmFtcy51c2VBbXM7XG4gICAgdGhpcy5fdmVyc2lvbiA9IHBqc29uLnZlcnNpb247XG4gICAgdGhpcy5fdXNlckFnZW50ID0gcGFyYW1zLnVzZXJBZ2VudCB8fCAnQml0R29KUy8nICsgdGhpcy52ZXJzaW9uKCk7XG4gICAgdGhpcy5fY29pbkZhY3RvcnkgPSBuZXcgQ29pbkZhY3RvcnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjb2luIGZhY3Rvcnkgd2l0aCB0b2tlbiBjb25maWd1cmF0aW9uc1xuICAgKiBAcGFyYW0gdG9rZW5Db25maWdNYXAgLSBBIG1hcCBvZiB0b2tlbiBtZXRhZGF0YSBmcm9tIEFNU1xuICAgKi9cbiAgaW5pdENvaW5GYWN0b3J5KHRva2VuQ29uZmlnTWFwOiBSZWNvcmQ8c3RyaW5nLCBUcmltbWVkQW1zVG9rZW5Db25maWdbXT4pOiB2b2lkIHtcbiAgICAvLyBUT0RPKFdJTi01ODM5KTogdXNlIEFNUyBlbmRwb2ludCB0byBmZXRjaCBjb25maWcgZGV0YWlsc1xuICAgIGNvbnN0IGNvaW5NYXAgPSBjcmVhdGVUb2tlbk1hcFVzaW5nVHJpbW1lZENvbmZpZ0RldGFpbHModG9rZW5Db25maWdNYXApO1xuICAgIHRoaXMuX2NvaW5GYWN0b3J5ID0gbmV3IENvaW5GYWN0b3J5KCk7XG4gICAgcmVnaXN0ZXJDb2luQ29uc3RydWN0b3JzKHRoaXMuX2NvaW5GYWN0b3J5LCBjb2luTWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiYXNlY29pbiBvYmplY3RcbiAgICogQHBhcmFtIGNvaW5OYW1lXG4gICAqL1xuICBjb2luKGNvaW5OYW1lOiBzdHJpbmcpOiBCYXNlQ29pbiB7XG4gICAgaWYgKHRoaXMuX3VzZUFtcykge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvaW5GYWN0b3J5LmdldEluc3RhbmNlKHRoaXMsIGNvaW5OYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIEdsb2JhbENvaW5GYWN0b3J5LmdldEluc3RhbmNlKHRoaXMsIGNvaW5OYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHRva2VuIGluIHRoZSBjb2luIGZhY3RvcnlcbiAgICogQHBhcmFtIHRva2VuQ29uZmlnIC0gVGhlIHRva2VuIG1ldGFkYXRhIGZyb20gQU1TXG4gICAqL1xuICByZWdpc3RlclRva2VuKHRva2VuQ29uZmlnOiBUcmltbWVkQW1zVG9rZW5Db25maWcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3VzZUFtcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWdpc3RlclRva2VuIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdXNlQW1zIGlzIHNldCB0byB0cnVlJyk7XG4gICAgfVxuICAgIC8vIFRPRE8oV0lOLTU4MzkpOiB1c2UgQU1TIGVuZHBvaW50IHRvIGZldGNoIHRva2VuIG1ldGFkYXRhXG4gICAgY29uc3Qgc3RhdGljc0Jhc2VDb2luID0gY3JlYXRlVG9rZW4odG9rZW5Db25maWcpO1xuICAgIGlmIChzdGF0aWNzQmFzZUNvaW4pIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFRva2VuQ29uZmlnID0gZ2V0Rm9ybWF0dGVkVG9rZW5Db25maWdGb3JDb2luKHN0YXRpY3NCYXNlQ29pbik7XG4gICAgICBpZiAoZm9ybWF0dGVkVG9rZW5Db25maWcpIHtcbiAgICAgICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IGdldFRva2VuQ29uc3RydWN0b3IoZm9ybWF0dGVkVG9rZW5Db25maWcpO1xuICAgICAgICBpZiAodG9rZW5Db25zdHJ1Y3Rvcikge1xuICAgICAgICAgIHRoaXMuX2NvaW5GYWN0b3J5LnJlZ2lzdGVyVG9rZW4oc3RhdGljc0Jhc2VDb2luLCB0b2tlbkNvbnN0cnVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBiYXNlY29pbiBvYmplY3QgZm9yIGEgdmlydHVhbCB0b2tlblxuICAgKiBAcGFyYW0gdG9rZW5OYW1lXG4gICAqL1xuICBhc3luYyB0b2tlbih0b2tlbk5hbWU6IHN0cmluZyk6IFByb21pc2U8QmFzZUNvaW4+IHtcbiAgICBhd2FpdCB0aGlzLmZldGNoQ29uc3RhbnRzKCk7XG4gICAgcmV0dXJuIHRoaXMuY29pbih0b2tlbk5hbWUpO1xuICB9XG59XG4iXX0=
;