@bitgo-beta/statics 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.mocharc.js +10 -0
  2. package/.prettierignore +2 -0
  3. package/CHANGELOG.md +251 -0
  4. package/LICENSE +191 -0
  5. package/README.md +124 -0
  6. package/dist/resources/aca/index.d.ts +3 -0
  7. package/dist/resources/aca/index.d.ts.map +1 -0
  8. package/dist/resources/aca/index.js +15 -0
  9. package/dist/resources/aca/mainnet.d.ts +2 -0
  10. package/dist/resources/aca/mainnet.d.ts.map +1 -0
  11. package/dist/resources/aca/mainnet.js +5 -0
  12. package/dist/resources/aca/mandala.d.ts +2 -0
  13. package/dist/resources/aca/mandala.d.ts.map +1 -0
  14. package/dist/resources/aca/mandala.js +5 -0
  15. package/dist/resources/dot/index.d.ts +3 -0
  16. package/dist/resources/dot/index.d.ts.map +1 -0
  17. package/dist/resources/dot/index.js +15 -0
  18. package/dist/resources/dot/mainnet.d.ts +2 -0
  19. package/dist/resources/dot/mainnet.d.ts.map +1 -0
  20. package/dist/resources/dot/mainnet.js +5 -0
  21. package/dist/resources/dot/westend.d.ts +2 -0
  22. package/dist/resources/dot/westend.d.ts.map +1 -0
  23. package/dist/resources/dot/westend.js +5 -0
  24. package/dist/src/account.d.ts +676 -0
  25. package/dist/src/account.d.ts.map +1 -0
  26. package/dist/src/account.js +1055 -0
  27. package/dist/src/ada.d.ts +33 -0
  28. package/dist/src/ada.d.ts.map +1 -0
  29. package/dist/src/ada.js +55 -0
  30. package/dist/src/avaxp.d.ts +38 -0
  31. package/dist/src/avaxp.d.ts.map +1 -0
  32. package/dist/src/avaxp.js +51 -0
  33. package/dist/src/base.d.ts +851 -0
  34. package/dist/src/base.d.ts.map +1 -0
  35. package/dist/src/base.js +928 -0
  36. package/dist/src/coins.d.ts +3 -0
  37. package/dist/src/coins.d.ts.map +1 -0
  38. package/dist/src/coins.js +978 -0
  39. package/dist/src/errors.d.ts +31 -0
  40. package/dist/src/errors.d.ts.map +1 -0
  41. package/dist/src/errors.js +60 -0
  42. package/dist/src/index.d.ts +10 -0
  43. package/dist/src/index.d.ts.map +1 -0
  44. package/dist/src/index.js +36 -0
  45. package/dist/src/map.d.ts +21 -0
  46. package/dist/src/map.d.ts.map +1 -0
  47. package/dist/src/map.js +75 -0
  48. package/dist/src/networks.d.ts +668 -0
  49. package/dist/src/networks.d.ts.map +1 -0
  50. package/dist/src/networks.js +838 -0
  51. package/dist/src/ofc.d.ts +93 -0
  52. package/dist/src/ofc.d.ts.map +1 -0
  53. package/dist/src/ofc.js +161 -0
  54. package/dist/src/tokenConfig.d.ts +129 -0
  55. package/dist/src/tokenConfig.d.ts.map +1 -0
  56. package/dist/src/tokenConfig.js +295 -0
  57. package/dist/src/utxo.d.ts +38 -0
  58. package/dist/src/utxo.d.ts.map +1 -0
  59. package/dist/src/utxo.js +55 -0
  60. package/dist/tsconfig.tsbuildinfo +2021 -0
  61. package/package.json +41 -0
  62. package/resources/dot/index.ts +2 -0
  63. package/resources/dot/mainnet.ts +2 -0
  64. package/resources/dot/westend.ts +2 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Each subclass needs the explicit Object.setPrototypeOf() so that instanceof will work correctly.
3
+ * See https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
4
+ */
5
+ import { CoinFeature } from './base';
6
+ declare class BitGoStaticsError extends Error {
7
+ constructor(message: string);
8
+ }
9
+ export declare class CoinNotDefinedError extends BitGoStaticsError {
10
+ constructor(coinName: string);
11
+ }
12
+ export declare class DuplicateCoinDefinitionError extends BitGoStaticsError {
13
+ constructor(coinName: string);
14
+ }
15
+ export declare class DisallowedCoinFeatureError extends BitGoStaticsError {
16
+ constructor(coinName: string, feature: CoinFeature);
17
+ }
18
+ export declare class MissingRequiredCoinFeatureError extends BitGoStaticsError {
19
+ constructor(coinName: string, missingFeatures: CoinFeature[]);
20
+ }
21
+ export declare class InvalidContractAddressError extends BitGoStaticsError {
22
+ constructor(coinName: string, contractAddress: string);
23
+ }
24
+ export declare class InvalidDomainError extends BitGoStaticsError {
25
+ constructor(coinName: string, domain: string);
26
+ }
27
+ export declare class ConflictingCoinFeaturesError extends BitGoStaticsError {
28
+ constructor(coinName: string, conflictingFeatures: CoinFeature[]);
29
+ }
30
+ export {};
31
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAM,iBAAkB,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAKnC;AAED,qBAAa,mBAAoB,SAAQ,iBAAiB;gBACrC,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM;CAIpC;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB;gBAC5C,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;CAI1D;AAED,qBAAa,+BAAgC,SAAQ,iBAAiB;gBACjD,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE;CAIpE;AAED,qBAAa,2BAA4B,SAAQ,iBAAiB;gBAC7C,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;CAI7D;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;gBACpC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIpD;AAED,qBAAa,4BAA6B,SAAQ,iBAAiB;gBAC9C,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE;CAMxE"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConflictingCoinFeaturesError = exports.InvalidDomainError = exports.InvalidContractAddressError = exports.MissingRequiredCoinFeatureError = exports.DisallowedCoinFeatureError = exports.DuplicateCoinDefinitionError = exports.CoinNotDefinedError = void 0;
4
+ class BitGoStaticsError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.stack = new Error(message).stack;
8
+ Object.setPrototypeOf(this, BitGoStaticsError.prototype);
9
+ }
10
+ }
11
+ class CoinNotDefinedError extends BitGoStaticsError {
12
+ constructor(coinName) {
13
+ super(`coin '${coinName}' is not defined`);
14
+ Object.setPrototypeOf(this, CoinNotDefinedError.prototype);
15
+ }
16
+ }
17
+ exports.CoinNotDefinedError = CoinNotDefinedError;
18
+ class DuplicateCoinDefinitionError extends BitGoStaticsError {
19
+ constructor(coinName) {
20
+ super(`coin '${coinName}' is already defined`);
21
+ Object.setPrototypeOf(this, DuplicateCoinDefinitionError.prototype);
22
+ }
23
+ }
24
+ exports.DuplicateCoinDefinitionError = DuplicateCoinDefinitionError;
25
+ class DisallowedCoinFeatureError extends BitGoStaticsError {
26
+ constructor(coinName, feature) {
27
+ super(`coin feature '${feature}' is disallowed for coin ${coinName}.`);
28
+ Object.setPrototypeOf(this, DisallowedCoinFeatureError.prototype);
29
+ }
30
+ }
31
+ exports.DisallowedCoinFeatureError = DisallowedCoinFeatureError;
32
+ class MissingRequiredCoinFeatureError extends BitGoStaticsError {
33
+ constructor(coinName, missingFeatures) {
34
+ super(`Required coin feature(s) '${missingFeatures.join(', ')}' were not found for coin ${coinName}.`);
35
+ Object.setPrototypeOf(this, MissingRequiredCoinFeatureError.prototype);
36
+ }
37
+ }
38
+ exports.MissingRequiredCoinFeatureError = MissingRequiredCoinFeatureError;
39
+ class InvalidContractAddressError extends BitGoStaticsError {
40
+ constructor(coinName, contractAddress) {
41
+ super(`invalid contract address '${contractAddress}' for coin '${coinName}'`);
42
+ Object.setPrototypeOf(this, InvalidContractAddressError.prototype);
43
+ }
44
+ }
45
+ exports.InvalidContractAddressError = InvalidContractAddressError;
46
+ class InvalidDomainError extends BitGoStaticsError {
47
+ constructor(coinName, domain) {
48
+ super(`invalid domain '${domain}' for coin '${coinName}'`);
49
+ Object.setPrototypeOf(this, InvalidDomainError.prototype);
50
+ }
51
+ }
52
+ exports.InvalidDomainError = InvalidDomainError;
53
+ class ConflictingCoinFeaturesError extends BitGoStaticsError {
54
+ constructor(coinName, conflictingFeatures) {
55
+ super(`coin feature(s) for coin '${coinName}' cannot be both required and disallowed: ${conflictingFeatures.join(', ')}`);
56
+ Object.setPrototypeOf(this, ConflictingCoinFeaturesError.prototype);
57
+ }
58
+ }
59
+ exports.ConflictingCoinFeaturesError = ConflictingCoinFeaturesError;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFNLGlCQUFrQixTQUFRLEtBQUs7SUFDbkMsWUFBbUIsT0FBZTtRQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFFRCxNQUFhLG1CQUFvQixTQUFRLGlCQUFpQjtJQUN4RCxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLGtCQUFrQixDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBTEQsa0RBS0M7QUFFRCxNQUFhLDRCQUE2QixTQUFRLGlCQUFpQjtJQUNqRSxZQUFtQixRQUFnQjtRQUNqQyxLQUFLLENBQUMsU0FBUyxRQUFRLHNCQUFzQixDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNGO0FBTEQsb0VBS0M7QUFFRCxNQUFhLDBCQUEyQixTQUFRLGlCQUFpQjtJQUMvRCxZQUFtQixRQUFnQixFQUFFLE9BQW9CO1FBQ3ZELEtBQUssQ0FBQyxpQkFBaUIsT0FBTyw0QkFBNEIsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0Y7QUFMRCxnRUFLQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsaUJBQWlCO0lBQ3BFLFlBQW1CLFFBQWdCLEVBQUUsZUFBOEI7UUFDakUsS0FBSyxDQUFDLDZCQUE2QixlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2RyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwrQkFBK0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0Y7QUFMRCwwRUFLQztBQUVELE1BQWEsMkJBQTRCLFNBQVEsaUJBQWlCO0lBQ2hFLFlBQW1CLFFBQWdCLEVBQUUsZUFBdUI7UUFDMUQsS0FBSyxDQUFDLDZCQUE2QixlQUFlLGVBQWUsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSwyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFMRCxrRUFLQztBQUVELE1BQWEsa0JBQW1CLFNBQVEsaUJBQWlCO0lBQ3ZELFlBQW1CLFFBQWdCLEVBQUUsTUFBYztRQUNqRCxLQUFLLENBQUMsbUJBQW1CLE1BQU0sZUFBZSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Q0FDRjtBQUxELGdEQUtDO0FBRUQsTUFBYSw0QkFBNkIsU0FBUSxpQkFBaUI7SUFDakUsWUFBbUIsUUFBZ0IsRUFBRSxtQkFBa0M7UUFDckUsS0FBSyxDQUNILDZCQUE2QixRQUFRLDZDQUE2QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkgsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Q0FDRjtBQVBELG9FQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFYWNoIHN1YmNsYXNzIG5lZWRzIHRoZSBleHBsaWNpdCBPYmplY3Quc2V0UHJvdG90eXBlT2YoKSBzbyB0aGF0IGluc3RhbmNlb2Ygd2lsbCB3b3JrIGNvcnJlY3RseS5cbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQtd2lraS9ibG9iL21hc3Rlci9CcmVha2luZy1DaGFuZ2VzLm1kI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICovXG5pbXBvcnQgeyBDb2luRmVhdHVyZSB9IGZyb20gJy4vYmFzZSc7XG5cbmNsYXNzIEJpdEdvU3RhdGljc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcihtZXNzYWdlKS5zdGFjaztcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQml0R29TdGF0aWNzRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29pbk5vdERlZmluZWRFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgY29pbiAnJHtjb2luTmFtZX0nIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvaW5Ob3REZWZpbmVkRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgY29pbiAnJHtjb2luTmFtZX0nIGlzIGFscmVhZHkgZGVmaW5lZGApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpc2FsbG93ZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgZmVhdHVyZTogQ29pbkZlYXR1cmUpIHtcbiAgICBzdXBlcihgY29pbiBmZWF0dXJlICcke2ZlYXR1cmV9JyBpcyBkaXNhbGxvd2VkIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEaXNhbGxvd2VkQ29pbkZlYXR1cmVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgbWlzc2luZ0ZlYXR1cmVzOiBDb2luRmVhdHVyZVtdKSB7XG4gICAgc3VwZXIoYFJlcXVpcmVkIGNvaW4gZmVhdHVyZShzKSAnJHttaXNzaW5nRmVhdHVyZXMuam9pbignLCAnKX0nIHdlcmUgbm90IGZvdW5kIGZvciBjb2luICR7Y29pbk5hbWV9LmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNaXNzaW5nUmVxdWlyZWRDb2luRmVhdHVyZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvU3RhdGljc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcsIGNvbnRyYWN0QWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYGludmFsaWQgY29udHJhY3QgYWRkcmVzcyAnJHtjb250cmFjdEFkZHJlc3N9JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWRDb250cmFjdEFkZHJlc3NFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRG9tYWluRXJyb3IgZXh0ZW5kcyBCaXRHb1N0YXRpY3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2luTmFtZTogc3RyaW5nLCBkb21haW46IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIGRvbWFpbiAnJHtkb21haW59JyBmb3IgY29pbiAnJHtjb2luTmFtZX0nYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWREb21haW5FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25mbGljdGluZ0NvaW5GZWF0dXJlc0Vycm9yIGV4dGVuZHMgQml0R29TdGF0aWNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IoY29pbk5hbWU6IHN0cmluZywgY29uZmxpY3RpbmdGZWF0dXJlczogQ29pbkZlYXR1cmVbXSkge1xuICAgIHN1cGVyKFxuICAgICAgYGNvaW4gZmVhdHVyZShzKSBmb3IgY29pbiAnJHtjb2luTmFtZX0nIGNhbm5vdCBiZSBib3RoIHJlcXVpcmVkIGFuZCBkaXNhbGxvd2VkOiAke2NvbmZsaWN0aW5nRmVhdHVyZXMuam9pbignLCAnKX1gXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgQ29uZmxpY3RpbmdDb2luRmVhdHVyZXNFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export * from './base';
2
+ export * from './coins';
3
+ export * from './networks';
4
+ export * from './errors';
5
+ export * from './tokenConfig';
6
+ export { OfcCoin } from './ofc';
7
+ export { UtxoCoin } from './utxo';
8
+ export { AccountCoin, CeloCoin, ContractAddressDefinedToken, Erc20Coin, StellarCoin, EosCoin, AlgoCoin, AvaxERC20Token, SolCoin, HederaToken, } from './account';
9
+ export { CoinMap } from './map';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,2BAA2B,EAC3B,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,cAAc,EACd,OAAO,EACP,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CoinMap = exports.HederaToken = exports.SolCoin = exports.AvaxERC20Token = exports.AlgoCoin = exports.EosCoin = exports.StellarCoin = exports.Erc20Coin = exports.ContractAddressDefinedToken = exports.CeloCoin = exports.AccountCoin = exports.UtxoCoin = exports.OfcCoin = void 0;
14
+ __exportStar(require("./base"), exports);
15
+ __exportStar(require("./coins"), exports);
16
+ __exportStar(require("./networks"), exports);
17
+ __exportStar(require("./errors"), exports);
18
+ __exportStar(require("./tokenConfig"), exports);
19
+ var ofc_1 = require("./ofc");
20
+ Object.defineProperty(exports, "OfcCoin", { enumerable: true, get: function () { return ofc_1.OfcCoin; } });
21
+ var utxo_1 = require("./utxo");
22
+ Object.defineProperty(exports, "UtxoCoin", { enumerable: true, get: function () { return utxo_1.UtxoCoin; } });
23
+ var account_1 = require("./account");
24
+ Object.defineProperty(exports, "AccountCoin", { enumerable: true, get: function () { return account_1.AccountCoin; } });
25
+ Object.defineProperty(exports, "CeloCoin", { enumerable: true, get: function () { return account_1.CeloCoin; } });
26
+ Object.defineProperty(exports, "ContractAddressDefinedToken", { enumerable: true, get: function () { return account_1.ContractAddressDefinedToken; } });
27
+ Object.defineProperty(exports, "Erc20Coin", { enumerable: true, get: function () { return account_1.Erc20Coin; } });
28
+ Object.defineProperty(exports, "StellarCoin", { enumerable: true, get: function () { return account_1.StellarCoin; } });
29
+ Object.defineProperty(exports, "EosCoin", { enumerable: true, get: function () { return account_1.EosCoin; } });
30
+ Object.defineProperty(exports, "AlgoCoin", { enumerable: true, get: function () { return account_1.AlgoCoin; } });
31
+ Object.defineProperty(exports, "AvaxERC20Token", { enumerable: true, get: function () { return account_1.AvaxERC20Token; } });
32
+ Object.defineProperty(exports, "SolCoin", { enumerable: true, get: function () { return account_1.SolCoin; } });
33
+ Object.defineProperty(exports, "HederaToken", { enumerable: true, get: function () { return account_1.HederaToken; } });
34
+ var map_1 = require("./map");
35
+ Object.defineProperty(exports, "CoinMap", { enumerable: true, get: function () { return map_1.CoinMap; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIsNkJBQWdDO0FBQXZCLDhGQUFBLE9BQU8sT0FBQTtBQUNoQiwrQkFBa0M7QUFBekIsZ0dBQUEsUUFBUSxPQUFBO0FBQ2pCLHFDQVdtQjtBQVZqQixzR0FBQSxXQUFXLE9BQUE7QUFDWCxtR0FBQSxRQUFRLE9BQUE7QUFDUixzSEFBQSwyQkFBMkIsT0FBQTtBQUMzQixvR0FBQSxTQUFTLE9BQUE7QUFDVCxzR0FBQSxXQUFXLE9BQUE7QUFDWCxrR0FBQSxPQUFPLE9BQUE7QUFDUCxtR0FBQSxRQUFRLE9BQUE7QUFDUix5R0FBQSxjQUFjLE9BQUE7QUFDZCxrR0FBQSxPQUFPLE9BQUE7QUFDUCxzR0FBQSxXQUFXLE9BQUE7QUFFYiw2QkFBZ0M7QUFBdkIsOEZBQUEsT0FBTyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29pbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3Jrcyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2VuQ29uZmlnJztcbmV4cG9ydCB7IE9mY0NvaW4gfSBmcm9tICcuL29mYyc7XG5leHBvcnQgeyBVdHhvQ29pbiB9IGZyb20gJy4vdXR4byc7XG5leHBvcnQge1xuICBBY2NvdW50Q29pbixcbiAgQ2Vsb0NvaW4sXG4gIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbixcbiAgRXJjMjBDb2luLFxuICBTdGVsbGFyQ29pbixcbiAgRW9zQ29pbixcbiAgQWxnb0NvaW4sXG4gIEF2YXhFUkMyMFRva2VuLFxuICBTb2xDb2luLFxuICBIZWRlcmFUb2tlbixcbn0gZnJvbSAnLi9hY2NvdW50JztcbmV4cG9ydCB7IENvaW5NYXAgfSBmcm9tICcuL21hcCc7XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { BaseCoin } from './base';
2
+ export declare class CoinMap {
3
+ private readonly _map;
4
+ private readonly _coinByAliases;
5
+ private constructor();
6
+ static fromCoins(coins: Readonly<BaseCoin>[]): CoinMap;
7
+ /**
8
+ * Override `get` to throw if a coin is missing, instead of returning undefined.
9
+ * It will honor key equivalences in case given key is missing.
10
+ * @param {string} key
11
+ * @return {BaseCoin}
12
+ */
13
+ get(key: string): Readonly<BaseCoin>;
14
+ has(key: string): boolean;
15
+ map<T>(mapper: (coin: Readonly<BaseCoin>, coinName: string) => T): T[];
16
+ reduce<T>(reducer: (acc: T, coin: Readonly<BaseCoin>, coinName: string) => T, initialValue: T): T;
17
+ filter(predicate: (coin: Readonly<BaseCoin>, coinName: string) => boolean): CoinMap;
18
+ forEach(callback: (coin: Readonly<BaseCoin>, coinName: string) => void): void;
19
+ [Symbol.iterator](): IterableIterator<[string, Readonly<BaseCoin>]>;
20
+ }
21
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAE9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE,OAAO;IAIP,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO;IAiBtD;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAUpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE;IAQtE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;IAQjG,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO;IAUnF,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI7E,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;CAG3E"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CoinMap = void 0;
4
+ const errors_1 = require("./errors");
5
+ class CoinMap {
6
+ constructor() {
7
+ this._map = new Map();
8
+ // Holds key equivalences used during an asset name migration
9
+ this._coinByAliases = new Map();
10
+ // Do not instantiate
11
+ }
12
+ static fromCoins(coins) {
13
+ return coins.reduce((coinMap, coin) => {
14
+ if (coinMap.has(coin.name)) {
15
+ throw new errors_1.DuplicateCoinDefinitionError(coin.name);
16
+ }
17
+ coinMap._map.set(coin.name, coin);
18
+ const alias = coin.alias;
19
+ if (alias) {
20
+ if (coinMap.has(alias)) {
21
+ throw new errors_1.DuplicateCoinDefinitionError(alias);
22
+ }
23
+ coinMap._coinByAliases.set(alias, coin);
24
+ }
25
+ return coinMap;
26
+ }, new CoinMap());
27
+ }
28
+ /**
29
+ * Override `get` to throw if a coin is missing, instead of returning undefined.
30
+ * It will honor key equivalences in case given key is missing.
31
+ * @param {string} key
32
+ * @return {BaseCoin}
33
+ */
34
+ get(key) {
35
+ const coin = this._map.get(key) || this._coinByAliases.get(key);
36
+ if (coin) {
37
+ return coin;
38
+ }
39
+ throw new errors_1.CoinNotDefinedError(key);
40
+ }
41
+ has(key) {
42
+ return this._map.has(key) || this._coinByAliases.has(key);
43
+ }
44
+ map(mapper) {
45
+ const mapResult = [];
46
+ this._map.forEach((value, key) => {
47
+ mapResult.push(mapper(value, key));
48
+ });
49
+ return mapResult;
50
+ }
51
+ reduce(reducer, initialValue) {
52
+ let acc = initialValue;
53
+ this._map.forEach((value, key) => {
54
+ acc = reducer(acc, value, key);
55
+ });
56
+ return acc;
57
+ }
58
+ filter(predicate) {
59
+ const filterResult = [];
60
+ this._map.forEach((value, key) => {
61
+ if (predicate(value, key)) {
62
+ filterResult.push(value);
63
+ }
64
+ });
65
+ return CoinMap.fromCoins(filterResult);
66
+ }
67
+ forEach(callback) {
68
+ this._map.forEach(callback);
69
+ }
70
+ [Symbol.iterator]() {
71
+ return this._map[Symbol.iterator]();
72
+ }
73
+ }
74
+ exports.CoinMap = CoinMap;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBNkU7QUFFN0UsTUFBYSxPQUFPO0lBS2xCO1FBSmlCLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUM5RCw2REFBNkQ7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztRQUd0RSxxQkFBcUI7SUFDdkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBMkI7UUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxxQ0FBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkQ7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN0QixNQUFNLElBQUkscUNBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9DO2dCQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEUsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxJQUFJLDRCQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxHQUFHLENBQUksTUFBeUQ7UUFDckUsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBSSxPQUFrRSxFQUFFLFlBQWU7UUFDbEcsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFrRTtRQUM5RSxNQUFNLFlBQVksR0FBeUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQy9CLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxPQUFPLENBQUMsUUFBOEQ7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBL0VELDBCQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IsIENvaW5Ob3REZWZpbmVkRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjbGFzcyBDb2luTWFwIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gSG9sZHMga2V5IGVxdWl2YWxlbmNlcyB1c2VkIGR1cmluZyBhbiBhc3NldCBuYW1lIG1pZ3JhdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlBbGlhc2VzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIERvIG5vdCBpbnN0YW50aWF0ZVxuICB9XG5cbiAgc3RhdGljIGZyb21Db2lucyhjb2luczogUmVhZG9ubHk8QmFzZUNvaW4+W10pOiBDb2luTWFwIHtcbiAgICByZXR1cm4gY29pbnMucmVkdWNlKChjb2luTWFwLCBjb2luKSA9PiB7XG4gICAgICBpZiAoY29pbk1hcC5oYXMoY29pbi5uYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihjb2luLm5hbWUpO1xuICAgICAgfVxuICAgICAgY29pbk1hcC5fbWFwLnNldChjb2luLm5hbWUsIGNvaW4pO1xuICAgICAgY29uc3QgYWxpYXMgPSBjb2luLmFsaWFzO1xuICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgIGlmIChjb2luTWFwLmhhcyhhbGlhcykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcihhbGlhcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29pbk1hcC5fY29pbkJ5QWxpYXNlcy5zZXQoYWxpYXMsIGNvaW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvaW5NYXA7XG4gICAgfSwgbmV3IENvaW5NYXAoKSk7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgYGdldGAgdG8gdGhyb3cgaWYgYSBjb2luIGlzIG1pc3NpbmcsIGluc3RlYWQgb2YgcmV0dXJuaW5nIHVuZGVmaW5lZC5cbiAgICogSXQgd2lsbCBob25vciBrZXkgZXF1aXZhbGVuY2VzIGluIGNhc2UgZ2l2ZW4ga2V5IGlzIG1pc3NpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICogQHJldHVybiB7QmFzZUNvaW59XG4gICAqL1xuICBwdWJsaWMgZ2V0KGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHtcbiAgICBjb25zdCBjb2luID0gdGhpcy5fbWFwLmdldChrZXkpIHx8IHRoaXMuX2NvaW5CeUFsaWFzZXMuZ2V0KGtleSk7XG5cbiAgICBpZiAoY29pbikge1xuICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IENvaW5Ob3REZWZpbmVkRXJyb3Ioa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFwLmhhcyhrZXkpIHx8IHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGtleSk7XG4gIH1cblxuICBwdWJsaWMgbWFwPFQ+KG1hcHBlcjogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCk6IFRbXSB7XG4gICAgY29uc3QgbWFwUmVzdWx0OiBUW10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgbWFwUmVzdWx0LnB1c2gobWFwcGVyKHZhbHVlLCBrZXkpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwUmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHJlZHVjZTxUPihyZWR1Y2VyOiAoYWNjOiBULCBjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IFQsIGluaXRpYWxWYWx1ZTogVCk6IFQge1xuICAgIGxldCBhY2MgPSBpbml0aWFsVmFsdWU7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGFjYyA9IHJlZHVjZXIoYWNjLCB2YWx1ZSwga2V5KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihwcmVkaWNhdGU6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBDb2luTWFwIHtcbiAgICBjb25zdCBmaWx0ZXJSZXN1bHQ6IFJlYWRvbmx5PEJhc2VDb2luPltdID0gW107XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSkpIHtcbiAgICAgICAgZmlsdGVyUmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDb2luTWFwLmZyb21Db2lucyhmaWx0ZXJSZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIGZvckVhY2goY2FsbGJhY2s6IChjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sIGNvaW5OYW1lOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaChjYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj5dPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cbn1cbiJdfQ==