@bitgo/sdk-coin-cspr 1.0.1-rc.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 (51) hide show
  1. package/.eslintignore +4 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +8 -0
  4. package/LICENSE +191 -0
  5. package/README.md +39 -0
  6. package/dist/src/cspr.d.ts +101 -0
  7. package/dist/src/cspr.d.ts.map +1 -0
  8. package/dist/src/cspr.js +293 -0
  9. package/dist/src/index.d.ts +4 -0
  10. package/dist/src/index.d.ts.map +1 -0
  11. package/dist/src/index.js +29 -0
  12. package/dist/src/lib/constants.d.ts +19 -0
  13. package/dist/src/lib/constants.d.ts.map +1 -0
  14. package/dist/src/lib/constants.js +28 -0
  15. package/dist/src/lib/delegateBuilder.d.ts +49 -0
  16. package/dist/src/lib/delegateBuilder.d.ts.map +1 -0
  17. package/dist/src/lib/delegateBuilder.js +111 -0
  18. package/dist/src/lib/ifaces.d.ts +69 -0
  19. package/dist/src/lib/ifaces.d.ts.map +1 -0
  20. package/dist/src/lib/ifaces.js +3 -0
  21. package/dist/src/lib/index.d.ts +6 -0
  22. package/dist/src/lib/index.d.ts.map +1 -0
  23. package/dist/src/lib/index.js +31 -0
  24. package/dist/src/lib/keyPair.d.ts +18 -0
  25. package/dist/src/lib/keyPair.d.ts.map +1 -0
  26. package/dist/src/lib/keyPair.js +75 -0
  27. package/dist/src/lib/transaction.d.ts +55 -0
  28. package/dist/src/lib/transaction.d.ts.map +1 -0
  29. package/dist/src/lib/transaction.js +227 -0
  30. package/dist/src/lib/transactionBuilder.d.ts +124 -0
  31. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/transactionBuilder.js +312 -0
  33. package/dist/src/lib/transactionBuilderFactory.d.ts +46 -0
  34. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  35. package/dist/src/lib/transactionBuilderFactory.js +98 -0
  36. package/dist/src/lib/transferBuilder.d.ts +39 -0
  37. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  38. package/dist/src/lib/transferBuilder.js +106 -0
  39. package/dist/src/lib/undelegateBuilder.d.ts +49 -0
  40. package/dist/src/lib/undelegateBuilder.d.ts.map +1 -0
  41. package/dist/src/lib/undelegateBuilder.js +111 -0
  42. package/dist/src/lib/utils.d.ts +188 -0
  43. package/dist/src/lib/utils.d.ts.map +1 -0
  44. package/dist/src/lib/utils.js +477 -0
  45. package/dist/src/lib/walletInitializationBuilder.d.ts +27 -0
  46. package/dist/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  47. package/dist/src/lib/walletInitializationBuilder.js +95 -0
  48. package/dist/src/tcspr.d.ts +11 -0
  49. package/dist/src/tcspr.d.ts.map +1 -0
  50. package/dist/src/tcspr.js +24 -0
  51. package/package.json +62 -0
@@ -0,0 +1,27 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ import { Transaction } from './transaction';
4
+ export declare class WalletInitializationBuilder extends TransactionBuilder {
5
+ private _owners;
6
+ private _contract;
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ /** @inheritdoc */
9
+ protected buildImplementation(): Promise<Transaction>;
10
+ /**
11
+ * Build args needed to create a session, then we can send this session with the contract
12
+ *
13
+ * @returns {WalletInitContractArgs} contracts args to create a session
14
+ */
15
+ private buildWalletParameters;
16
+ /** @inheritdoc */
17
+ initBuilder(tx: Transaction): void;
18
+ /**
19
+ * Set one of the owners of the multisig wallet.
20
+ *
21
+ * @param {string} address The public key of the owner's account
22
+ * @returns {WalletInitializationBuilder} This wallet initialization builder
23
+ */
24
+ owner(address: string): this;
25
+ validateMandatoryFields(): void;
26
+ }
27
+ //# sourceMappingURL=walletInitializationBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAwB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAa;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgB3D;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAkB7B,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAYlC;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiB5B,uBAAuB,IAAI,IAAI;CAahC"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletInitializationBuilder = void 0;
4
+ const casper_js_sdk_1 = require("casper-js-sdk");
5
+ const sdk_core_1 = require("@bitgo/sdk-core");
6
+ const transactionBuilder_1 = require("./transactionBuilder");
7
+ const utils_1 = require("./utils");
8
+ const constants_1 = require("./constants");
9
+ const keyPair_1 = require("./keyPair");
10
+ const DEFAULT_OWNER_WEIGHT = 1;
11
+ class WalletInitializationBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ this._owners = [];
15
+ this._contract = Uint8Array.from(Buffer.from(utils_1.casperContractHexCode, 'hex'));
16
+ }
17
+ // region Base Builder
18
+ /** @inheritdoc */
19
+ async buildImplementation() {
20
+ const args = this.buildWalletParameters();
21
+ const extraArguments = new Map();
22
+ extraArguments.set(constants_1.TRANSACTION_TYPE, casper_js_sdk_1.CLValueBuilder.string(sdk_core_1.TransactionType[sdk_core_1.TransactionType.WalletInitialization]));
23
+ for (let index = 0; index < this._owners.length; index++) {
24
+ const ownerPublicKey = Buffer.from(this._owners[index].address.value()).toString('hex');
25
+ const ownerAddress = new keyPair_1.KeyPair({ pub: ownerPublicKey }).getAddress();
26
+ extraArguments.set(constants_1.OWNER_PREFIX + index, casper_js_sdk_1.CLValueBuilder.string(ownerAddress));
27
+ }
28
+ this._session = { moduleBytes: this._contract, args: casper_js_sdk_1.RuntimeArgs.fromMap(args), extraArguments: extraArguments };
29
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
30
+ return await super.buildImplementation();
31
+ }
32
+ /**
33
+ * Build args needed to create a session, then we can send this session with the contract
34
+ *
35
+ * @returns {WalletInitContractArgs} contracts args to create a session
36
+ */
37
+ buildWalletParameters() {
38
+ const accounts = this._owners.map((owner) => casper_js_sdk_1.CLValueBuilder.byteArray(owner.address.toAccountHash()));
39
+ const weights = this._owners.map((owner) => casper_js_sdk_1.CLValueBuilder.u8(owner.weight));
40
+ // set source address weight to zero to disable the master private key from signing.
41
+ accounts.push(casper_js_sdk_1.CLValueBuilder.byteArray(casper_js_sdk_1.CLPublicKey.fromHex(this._source.address).toAccountHash()));
42
+ weights.push(casper_js_sdk_1.CLValueBuilder.u8(0));
43
+ return {
44
+ action: casper_js_sdk_1.CLValueBuilder.string(constants_1.WALLET_INITIALIZATION_CONTRACT_ACTION),
45
+ // This typo is on purpose since the contract we use for multisig wallet initialization expect this argument to be written like this.
46
+ deployment_thereshold: casper_js_sdk_1.CLValueBuilder.u8(transactionBuilder_1.DEFAULT_N),
47
+ key_management_threshold: casper_js_sdk_1.CLValueBuilder.u8(transactionBuilder_1.DEFAULT_M),
48
+ accounts: casper_js_sdk_1.CLValueBuilder.list(accounts),
49
+ weights: casper_js_sdk_1.CLValueBuilder.list(weights),
50
+ };
51
+ }
52
+ /** @inheritdoc */
53
+ initBuilder(tx) {
54
+ super.initBuilder(tx);
55
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.WalletInitialization);
56
+ for (let ownerIndex = 0; ownerIndex < transactionBuilder_1.DEFAULT_M; ownerIndex++) {
57
+ const ownerCLValue = tx.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + ownerIndex);
58
+ this.owner(ownerCLValue.value());
59
+ }
60
+ }
61
+ // endregion
62
+ // region Common builder methods
63
+ /**
64
+ * Set one of the owners of the multisig wallet.
65
+ *
66
+ * @param {string} address The public key of the owner's account
67
+ * @returns {WalletInitializationBuilder} This wallet initialization builder
68
+ */
69
+ owner(address) {
70
+ if (this._owners.length >= transactionBuilder_1.DEFAULT_M) {
71
+ throw new sdk_core_1.BuildTransactionError('A maximum of ' + transactionBuilder_1.DEFAULT_M + ' owners can be set for a multisig wallet');
72
+ }
73
+ this.validateAddress({ address: address });
74
+ for (const _owner of this._owners) {
75
+ if (address.substr(0, 2) + Buffer.from(_owner.address.value()).toString('hex') === address) {
76
+ throw new sdk_core_1.BuildTransactionError('Duplicated owner: ' + address);
77
+ }
78
+ }
79
+ this._owners.push({ address: casper_js_sdk_1.CLPublicKey.fromHex(address), weight: DEFAULT_OWNER_WEIGHT });
80
+ return this;
81
+ }
82
+ // endregion
83
+ // region Validators
84
+ validateMandatoryFields() {
85
+ if (this._owners.length === 0) {
86
+ throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing wallet owners');
87
+ }
88
+ if (this._owners.length !== transactionBuilder_1.DEFAULT_M) {
89
+ throw new sdk_core_1.BuildTransactionError(`Invalid transaction: wrong number of owners -- required: ${transactionBuilder_1.DEFAULT_M}, found: ${this._owners.length}`);
90
+ }
91
+ super.validateMandatoryFields();
92
+ }
93
+ }
94
+ exports.WalletInitializationBuilder = WalletInitializationBuilder;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQXlHO0FBQ3pHLDhDQUF5RTtBQUN6RSw2REFBZ0Y7QUFHaEYsbUNBQWdEO0FBQ2hELDJDQUFvRztBQUNwRyx1Q0FBb0M7QUFFcEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBYSwyQkFBNEIsU0FBUSx1Q0FBa0I7SUFJakUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKYixZQUFPLEdBQVksRUFBRSxDQUFDO1FBSzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBRWxELGNBQWMsQ0FBQyxHQUFHLENBQUMsNEJBQWdCLEVBQUUsOEJBQWMsQ0FBQyxNQUFNLENBQUMsMEJBQWUsQ0FBQywwQkFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ILEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFD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L3N0YXRpY3MnO1xuaW1wb3J0IHsgQ0xWYWx1ZSwgQ0xQdWJsaWNLZXkgYXMgUHVibGljS2V5LCBSdW50aW1lQXJncywgQ0xWYWx1ZUJ1aWxkZXIsIENMU3RyaW5nIH0gZnJvbSAnY2FzcGVyLWpzLXNkayc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIsIERFRkFVTFRfTSwgREVGQVVMVF9OIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IE93bmVyLCBXYWxsZXRJbml0Q29udHJhY3RBcmdzIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHsgY2FzcGVyQ29udHJhY3RIZXhDb2RlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPV05FUl9QUkVGSVgsIFRSQU5TQUNUSU9OX1RZUEUsIFdBTExFVF9JTklUSUFMSVpBVElPTl9DT05UUkFDVF9BQ1RJT04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcblxuY29uc3QgREVGQVVMVF9PV05FUl9XRUlHSFQgPSAxO1xuZXhwb3J0IGNsYXNzIFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX293bmVyczogT3duZXJbXSA9IFtdO1xuICBwcml2YXRlIF9jb250cmFjdDogVWludDhBcnJheTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fY29udHJhY3QgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oY2FzcGVyQ29udHJhY3RIZXhDb2RlLCAnaGV4JykpO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmJ1aWxkV2FsbGV0UGFyYW1ldGVycygpO1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG5cbiAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFRyYW5zYWN0aW9uVHlwZVtUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb25dKSk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX293bmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG93bmVyUHVibGljS2V5ID0gQnVmZmVyLmZyb20odGhpcy5fb3duZXJzW2luZGV4XS5hZGRyZXNzLnZhbHVlKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IG93bmVyQWRkcmVzcyA9IG5ldyBLZXlQYWlyKHsgcHViOiBvd25lclB1YmxpY0tleSB9KS5nZXRBZGRyZXNzKCk7XG4gICAgICBleHRyYUFyZ3VtZW50cy5zZXQoT1dORVJfUFJFRklYICsgaW5kZXgsIENMVmFsdWVCdWlsZGVyLnN0cmluZyhvd25lckFkZHJlc3MpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXNzaW9uID0geyBtb2R1bGVCeXRlczogdGhpcy5fY29udHJhY3QsIGFyZ3M6IFJ1bnRpbWVBcmdzLmZyb21NYXAoYXJncyksIGV4dHJhQXJndW1lbnRzOiBleHRyYUFyZ3VtZW50cyB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhcmdzIG5lZWRlZCB0byBjcmVhdGUgYSBzZXNzaW9uLCB0aGVuIHdlIGNhbiBzZW5kIHRoaXMgc2Vzc2lvbiB3aXRoIHRoZSBjb250cmFjdFxuICAgKlxuICAgKiBAcmV0dXJucyB7V2FsbGV0SW5pdENvbnRyYWN0QXJnc30gY29udHJhY3RzIGFyZ3MgdG8gY3JlYXRlIGEgc2Vzc2lvblxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFdhbGxldFBhcmFtZXRlcnMoKTogV2FsbGV0SW5pdENvbnRyYWN0QXJncyB7XG4gICAgY29uc3QgYWNjb3VudHMgPSB0aGlzLl9vd25lcnMubWFwKChvd25lcikgPT4gQ0xWYWx1ZUJ1aWxkZXIuYnl0ZUFycmF5KG93bmVyLmFkZHJlc3MudG9BY2NvdW50SGFzaCgpKSk7XG4gICAgY29uc3Qgd2VpZ2h0cyA9IHRoaXMuX293bmVycy5tYXAoKG93bmVyKSA9PiBDTFZhbHVlQnVpbGRlci51OChvd25lci53ZWlnaHQpKTtcblxuICAgIC8vIHNldCBzb3VyY2UgYWRkcmVzcyB3ZWlnaHQgdG8gemVybyB0byBkaXNhYmxlIHRoZSBtYXN0ZXIgcHJpdmF0ZSBrZXkgZnJvbSBzaWduaW5nLlxuICAgIGFjY291bnRzLnB1c2goQ0xWYWx1ZUJ1aWxkZXIuYnl0ZUFycmF5KFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3NvdXJjZS5hZGRyZXNzKS50b0FjY291bnRIYXNoKCkpKTtcbiAgICB3ZWlnaHRzLnB1c2goQ0xWYWx1ZUJ1aWxkZXIudTgoMCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGlvbjogQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKFdBTExFVF9JTklUSUFMSVpBVElPTl9DT05UUkFDVF9BQ1RJT04pLFxuICAgICAgLy8gVGhpcyB0eXBvIGlzIG9uIHB1cnBvc2Ugc2luY2UgdGhlIGNvbnRyYWN0IHdlIHVzZSBmb3IgbXVsdGlzaWcgd2FsbGV0IGluaXRpYWxpemF0aW9uIGV4cGVjdCB0aGlzIGFyZ3VtZW50IHRvIGJlIHdyaXR0ZW4gbGlrZSB0aGlzLlxuICAgICAgZGVwbG95bWVudF90aGVyZXNob2xkOiBDTFZhbHVlQnVpbGRlci51OChERUZBVUxUX04pLFxuICAgICAga2V5X21hbmFnZW1lbnRfdGhyZXNob2xkOiBDTFZhbHVlQnVpbGRlci51OChERUZBVUxUX00pLFxuICAgICAgYWNjb3VudHM6IENMVmFsdWVCdWlsZGVyLmxpc3QoYWNjb3VudHMpLFxuICAgICAgd2VpZ2h0czogQ0xWYWx1ZUJ1aWxkZXIubGlzdCh3ZWlnaHRzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIGZvciAobGV0IG93bmVySW5kZXggPSAwOyBvd25lckluZGV4IDwgREVGQVVMVF9NOyBvd25lckluZGV4KyspIHtcbiAgICAgIGNvbnN0IG93bmVyQ0xWYWx1ZSA9IHR4LmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVySW5kZXgpIGFzIENMU3RyaW5nO1xuICAgICAgdGhpcy5vd25lcihvd25lckNMVmFsdWUudmFsdWUoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIENvbW1vbiBidWlsZGVyIG1ldGhvZHNcbiAgLyoqXG4gICAqIFNldCBvbmUgb2YgdGhlIG93bmVycyBvZiB0aGUgbXVsdGlzaWcgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyBUaGUgcHVibGljIGtleSBvZiB0aGUgb3duZXIncyBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IFRoaXMgd2FsbGV0IGluaXRpYWxpemF0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG93bmVyKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLl9vd25lcnMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIG93bmVycyBjYW4gYmUgc2V0IGZvciBhIG11bHRpc2lnIHdhbGxldCcpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IGFkZHJlc3MgfSk7XG4gICAgZm9yIChjb25zdCBfb3duZXIgb2YgdGhpcy5fb3duZXJzKSB7XG4gICAgICBpZiAoYWRkcmVzcy5zdWJzdHIoMCwgMikgKyBCdWZmZXIuZnJvbShfb3duZXIuYWRkcmVzcy52YWx1ZSgpKS50b1N0cmluZygnaGV4JykgPT09IGFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRHVwbGljYXRlZCBvd25lcjogJyArIGFkZHJlc3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX293bmVycy5wdXNoKHsgYWRkcmVzczogUHVibGljS2V5LmZyb21IZXgoYWRkcmVzcyksIHdlaWdodDogREVGQVVMVF9PV05FUl9XRUlHSFQgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX293bmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgd2FsbGV0IG93bmVycycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9vd25lcnMubGVuZ3RoICE9PSBERUZBVUxUX00pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIHRyYW5zYWN0aW9uOiB3cm9uZyBudW1iZXIgb2Ygb3duZXJzIC0tIHJlcXVpcmVkOiAke0RFRkFVTFRfTX0sIGZvdW5kOiAke3RoaXMuX293bmVycy5sZW5ndGh9YFxuICAgICAgKTtcbiAgICB9XG4gICAgc3VwZXIudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { BaseCoin, BitGoBase } from '@bitgo/sdk-core';
2
+ import { Cspr } from './cspr';
3
+ import { BaseCoin as StaticsBaseCoin } from '@bitgo/statics';
4
+ export declare class Tcspr extends Cspr {
5
+ protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
6
+ constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
7
+ static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
8
+ getChain(): string;
9
+ getFullName(): string;
10
+ }
11
+ //# sourceMappingURL=tcspr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcspr.d.ts","sourceRoot":"","sources":["../../src/tcspr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE7D,qBAAa,KAAM,SAAQ,IAAI;IAC7B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAE/C,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAUrE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ;IAIR,WAAW;CAGZ"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tcspr = void 0;
4
+ const cspr_1 = require("./cspr");
5
+ class Tcspr extends cspr_1.Cspr {
6
+ constructor(bitgo, staticsCoin) {
7
+ super(bitgo, staticsCoin);
8
+ if (!staticsCoin) {
9
+ throw new Error('missing required constructor parameter staticsCoin');
10
+ }
11
+ this._staticsCoin = staticsCoin;
12
+ }
13
+ static createInstance(bitgo, staticsCoin) {
14
+ return new Tcspr(bitgo, staticsCoin);
15
+ }
16
+ getChain() {
17
+ return this._staticsCoin.name;
18
+ }
19
+ getFullName() {
20
+ return this._staticsCoin.fullName;
21
+ }
22
+ }
23
+ exports.Tcspr = Tcspr;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNzcHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGNzcHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUNBQThCO0FBRzlCLE1BQWEsS0FBTSxTQUFRLFdBQUk7SUFHN0IsWUFBWSxLQUFnQixFQUFFLFdBQXVDO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBeEJELHNCQXdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luLCBCaXRHb0Jhc2UgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQ3NwciB9IGZyb20gJy4vY3Nwcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmV4cG9ydCBjbGFzcyBUY3NwciBleHRlbmRzIENzcHIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBUY3NwcihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRpY3NDb2luLm5hbWU7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGljc0NvaW4uZnVsbE5hbWU7XG4gIH1cbn1cbiJdfQ==
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@bitgo/sdk-coin-cspr",
3
+ "version": "1.0.1-rc.0",
4
+ "description": "BitGo SDK coin library for Casper",
5
+ "main": "./dist/src/index.js",
6
+ "types": "./dist/src/index.d.ts",
7
+ "scripts": {
8
+ "build": "yarn tsc --build --incremental --verbose .",
9
+ "fmt": "prettier --write .",
10
+ "check-fmt": "prettier --check .",
11
+ "clean": "rm -r ./dist",
12
+ "lint": "eslint --quiet .",
13
+ "precommit": "yarn lint-staged",
14
+ "prepare": "npm run build",
15
+ "test": "npm run coverage",
16
+ "coverage": "nyc -- npm run unit-test",
17
+ "unit-test": "mocha"
18
+ },
19
+ "author": "BitGo SDK Team <sdkteam@bitgo.com>",
20
+ "license": "MIT",
21
+ "engines": {
22
+ "node": ">=14 <17"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/BitGo/BitGoJS.git",
27
+ "directory": "modules/sdk-coin-cspr"
28
+ },
29
+ "lint-staged": {
30
+ "*.{js,ts}": [
31
+ "yarn prettier --write",
32
+ "yarn eslint --fix"
33
+ ]
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "nyc": {
39
+ "extension": [
40
+ ".ts"
41
+ ]
42
+ },
43
+ "dependencies": {
44
+ "@bitgo/sdk-core": "^1.1.0-rc.13",
45
+ "@bitgo/statics": "^6.18.0-rc.15",
46
+ "@bitgo/utxo-lib": "^2.3.0-rc.8",
47
+ "@ethersproject/bignumber": "^5.6.0",
48
+ "@stablelib/hex": "^1.0.0",
49
+ "bignumber.js": "^9.0.0",
50
+ "bip32": "^2.0.6",
51
+ "casper-js-sdk": "2.7.6",
52
+ "lodash": "^4.17.15",
53
+ "secp256k1": "4.0.2"
54
+ },
55
+ "devDependencies": {
56
+ "@bitgo/sdk-api": "^1.1.0-rc.16",
57
+ "@bitgo/sdk-test": "^1.0.1-rc.2",
58
+ "should": "^13.1.3",
59
+ "tweetnacl": "^1.0.3"
60
+ },
61
+ "gitHead": "470decafdce823e475e9d8744063556916b06839"
62
+ }