@bitgo-beta/sdk-coin-flrp 1.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 (46) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/.mocharc.yml +8 -0
  4. package/CHANGELOG.md +0 -0
  5. package/LICENSE +191 -0
  6. package/dist/src/flrp.d.ts +70 -0
  7. package/dist/src/flrp.d.ts.map +1 -0
  8. package/dist/src/flrp.js +175 -0
  9. package/dist/src/iface.d.ts +25 -0
  10. package/dist/src/iface.d.ts.map +1 -0
  11. package/dist/src/iface.js +3 -0
  12. package/dist/src/index.d.ts +6 -0
  13. package/dist/src/index.d.ts.map +1 -0
  14. package/dist/src/index.js +45 -0
  15. package/dist/src/lib/constants.d.ts +11 -0
  16. package/dist/src/lib/constants.d.ts.map +1 -0
  17. package/dist/src/lib/constants.js +17 -0
  18. package/dist/src/lib/errors.d.ts +8 -0
  19. package/dist/src/lib/errors.d.ts.map +1 -0
  20. package/dist/src/lib/errors.js +19 -0
  21. package/dist/src/lib/iface.d.ts +68 -0
  22. package/dist/src/lib/iface.d.ts.map +1 -0
  23. package/dist/src/lib/iface.js +22 -0
  24. package/dist/src/lib/index.d.ts +5 -0
  25. package/dist/src/lib/index.d.ts.map +1 -0
  26. package/dist/src/lib/index.js +26 -0
  27. package/dist/src/lib/keyPair.d.ts +58 -0
  28. package/dist/src/lib/keyPair.d.ts.map +1 -0
  29. package/dist/src/lib/keyPair.js +144 -0
  30. package/dist/src/lib/utils.d.ts +158 -0
  31. package/dist/src/lib/utils.d.ts.map +1 -0
  32. package/dist/src/lib/utils.js +390 -0
  33. package/dist/src/register.d.ts +3 -0
  34. package/dist/src/register.d.ts.map +1 -0
  35. package/dist/src/register.js +11 -0
  36. package/dist/src/tflrp.d.ts +8 -0
  37. package/dist/src/tflrp.d.ts.map +1 -0
  38. package/dist/src/tflrp.js +14 -0
  39. package/dist/test/unit/flrp.d.ts +2 -0
  40. package/dist/test/unit/flrp.d.ts.map +1 -0
  41. package/dist/test/unit/flrp.js +29 -0
  42. package/dist/test/unit/smoke.d.ts +2 -0
  43. package/dist/test/unit/smoke.d.ts.map +1 -0
  44. package/dist/test/unit/smoke.js +9 -0
  45. package/dist/tsconfig.tsbuildinfo +1 -0
  46. package/package.json +60 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidFeeError = exports.AddressValidationError = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ class AddressValidationError extends sdk_core_1.BuildTransactionError {
6
+ constructor(malformedAddress) {
7
+ super(`The address '${malformedAddress}' is not a well-formed flrp address`);
8
+ this.name = AddressValidationError.name;
9
+ }
10
+ }
11
+ exports.AddressValidationError = AddressValidationError;
12
+ class InvalidFeeError extends sdk_core_1.BuildTransactionError {
13
+ constructor(type, expectedType) {
14
+ super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
15
+ this.name = InvalidFeeError.name;
16
+ }
17
+ }
18
+ exports.InvalidFeeError = InvalidFeeError;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZEO0FBRTdELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLHFDQUFxQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobWFsZm9ybWVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBhZGRyZXNzICcke21hbGZvcm1lZEFkZHJlc3N9JyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBmbHJwIGFkZHJlc3NgKTtcbiAgICB0aGlzLm5hbWUgPSBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLm5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRGZWVFcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGV4cGVjdGVkVHlwZT86IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgc3BlY2lmaWVkIHR5cGU6IFwiJHt0eXBlfVwiIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgdGhlIHR5cGU6IFwiJHtleHBlY3RlZFR5cGV9XCJgKTtcbiAgICB0aGlzLm5hbWUgPSBJbnZhbGlkRmVlRXJyb3IubmFtZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { TransactionExplanation as BaseTransactionExplanation, Entry, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { UnsignedTx, TransferableOutput, avaxSerial } from '@flarenetwork/flarejs';
3
+ export interface FlrpEntry extends Entry {
4
+ id: string;
5
+ }
6
+ export interface TransactionExplanation extends BaseTransactionExplanation {
7
+ type: TransactionType;
8
+ rewardAddresses: string[];
9
+ inputs: Entry[];
10
+ }
11
+ /**
12
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
13
+ */
14
+ export declare enum MethodNames {
15
+ addDelegator = 0,
16
+ addValidator = 1
17
+ }
18
+ /**
19
+ * The transaction data returned from the toJson() function of a transaction
20
+ */
21
+ export interface TxData {
22
+ id: string;
23
+ inputs: Entry[];
24
+ type: TransactionType;
25
+ fromAddresses: string[];
26
+ threshold: number;
27
+ locktime: string;
28
+ signatures: string[];
29
+ outputs: Entry[];
30
+ changeOutputs: Entry[];
31
+ sourceChain?: string;
32
+ destinationChain?: string;
33
+ }
34
+ /**
35
+ * Decoded UTXO object. This is for a single utxo
36
+ *
37
+ * @param {number} outputID
38
+ * @param {string} amount Amount as a Big Number string
39
+ * @param {string} txid Transaction ID encoded as cb58
40
+ * @param {string} outputidx Output index as a string
41
+ */
42
+ export type DecodedUtxoObj = {
43
+ outputID: number;
44
+ amount: string;
45
+ txid: string;
46
+ outputidx: string;
47
+ threshold: number;
48
+ addresses: string[];
49
+ addressesIndex?: number[];
50
+ };
51
+ /**
52
+ * FlareJS uses string-based TypeSymbols instead of numeric type IDs
53
+ * For SECP256K1 Transfer Output, use TypeSymbols.TransferOutput from @flarenetwork/flarejs
54
+ *
55
+ * @see https://docs.flare.network/ for Flare network documentation
56
+ * @deprecated Use TypeSymbols.TransferOutput from @flarenetwork/flarejs instead
57
+ */
58
+ export declare const SECP256K1_Transfer_Output = 7;
59
+ export declare const ADDRESS_SEPARATOR = "~";
60
+ export declare const INPUT_SEPARATOR = ":";
61
+ export type DeprecatedTx = unknown;
62
+ export type DeprecatedBaseTx = unknown;
63
+ export type Tx = UnsignedTx;
64
+ export type BaseTx = avaxSerial.BaseTx;
65
+ export type AvaxTx = avaxSerial.AvaxTx;
66
+ export type DeprecatedOutput = unknown;
67
+ export type Output = TransferableOutput;
68
+ //# sourceMappingURL=iface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnF,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;AACnC,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC;AAC5B,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACvC,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,MAAM,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INPUT_SEPARATOR = exports.ADDRESS_SEPARATOR = exports.SECP256K1_Transfer_Output = exports.MethodNames = void 0;
4
+ /**
5
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
6
+ */
7
+ var MethodNames;
8
+ (function (MethodNames) {
9
+ MethodNames[MethodNames["addDelegator"] = 0] = "addDelegator";
10
+ MethodNames[MethodNames["addValidator"] = 1] = "addValidator";
11
+ })(MethodNames || (exports.MethodNames = MethodNames = {}));
12
+ /**
13
+ * FlareJS uses string-based TypeSymbols instead of numeric type IDs
14
+ * For SECP256K1 Transfer Output, use TypeSymbols.TransferOutput from @flarenetwork/flarejs
15
+ *
16
+ * @see https://docs.flare.network/ for Flare network documentation
17
+ * @deprecated Use TypeSymbols.TransferOutput from @flarenetwork/flarejs instead
18
+ */
19
+ exports.SECP256K1_Transfer_Output = 7; // Legacy - FlareJS uses TypeSymbols.TransferOutput
20
+ exports.ADDRESS_SEPARATOR = '~';
21
+ exports.INPUT_SEPARATOR = ':';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBOztHQUVHO0FBQ0gsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDZEQUFZLENBQUE7SUFDWiw2REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUhXLFdBQVcsMkJBQVgsV0FBVyxRQUd0QjtBQXFDRDs7Ozs7O0dBTUc7QUFDVSxRQUFBLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtBQUVsRixRQUFBLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUN4QixRQUFBLGVBQWUsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBFbnRyeSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVW5zaWduZWRUeCwgVHJhbnNmZXJhYmxlT3V0cHV0LCBhdmF4U2VyaWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmV4cG9ydCBpbnRlcmZhY2UgRmxycEVudHJ5IGV4dGVuZHMgRW50cnkge1xuICBpZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHJld2FyZEFkZHJlc3Nlczogc3RyaW5nW107XG4gIGlucHV0czogRW50cnlbXTtcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ2JvbmQnIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZW51bSBNZXRob2ROYW1lcyB7XG4gIGFkZERlbGVnYXRvcixcbiAgYWRkVmFsaWRhdG9yLFxufVxuXG4vKipcbiAqIFRoZSB0cmFuc2FjdGlvbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIHRvSnNvbigpIGZ1bmN0aW9uIG9mIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZDogc3RyaW5nO1xuICBpbnB1dHM6IEVudHJ5W107XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgZnJvbUFkZHJlc3Nlczogc3RyaW5nW107XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBsb2NrdGltZTogc3RyaW5nO1xuICBzaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgb3V0cHV0czogRW50cnlbXTtcbiAgY2hhbmdlT3V0cHV0czogRW50cnlbXTtcbiAgc291cmNlQ2hhaW4/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uQ2hhaW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjb2RlZCBVVFhPIG9iamVjdC4gVGhpcyBpcyBmb3IgYSBzaW5nbGUgdXR4b1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBvdXRwdXRJRFxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCBBbW91bnQgYXMgYSBCaWcgTnVtYmVyIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHR4aWQgVHJhbnNhY3Rpb24gSUQgZW5jb2RlZCBhcyBjYjU4XG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0aWR4IE91dHB1dCBpbmRleCBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgdHlwZSBEZWNvZGVkVXR4b09iaiA9IHtcbiAgb3V0cHV0SUQ6IG51bWJlcjtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBGbGFyZUpTIHVzZXMgc3RyaW5nLWJhc2VkIFR5cGVTeW1ib2xzIGluc3RlYWQgb2YgbnVtZXJpYyB0eXBlIElEc1xuICogRm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXQsIHVzZSBUeXBlU3ltYm9scy5UcmFuc2Zlck91dHB1dCBmcm9tIEBmbGFyZW5ldHdvcmsvZmxhcmVqc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmZsYXJlLm5ldHdvcmsvIGZvciBGbGFyZSBuZXR3b3JrIGRvY3VtZW50YXRpb25cbiAqIEBkZXByZWNhdGVkIFVzZSBUeXBlU3ltYm9scy5UcmFuc2Zlck91dHB1dCBmcm9tIEBmbGFyZW5ldHdvcmsvZmxhcmVqcyBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0ID0gNzsgLy8gTGVnYWN5IC0gRmxhcmVKUyB1c2VzIFR5cGVTeW1ib2xzLlRyYW5zZmVyT3V0cHV0XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX1NFUEFSQVRPUiA9ICd+JztcbmV4cG9ydCBjb25zdCBJTlBVVF9TRVBBUkFUT1IgPSAnOic7XG5cbi8vIEZsYXJlSlMgMS4zLjIgdHlwZSBkZWZpbml0aW9ucyAtIHVzaW5nIGF2bSBhbmQgcGxhdGZvcm12bSBtb2R1bGVzXG5leHBvcnQgdHlwZSBEZXByZWNhdGVkVHggPSB1bmtub3duOyAvLyBQbGFjZWhvbGRlciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgRGVwcmVjYXRlZEJhc2VUeCA9IHVua25vd247IC8vIFBsYWNlaG9sZGVyIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgdHlwZSBUeCA9IFVuc2lnbmVkVHg7IC8vIEZsYXJlSlMgVW5zaWduZWRUeCAodW5pZmllZCB0eXBlIGluIDQuMC41KVxuZXhwb3J0IHR5cGUgQmFzZVR4ID0gYXZheFNlcmlhbC5CYXNlVHg7IC8vIEZsYXJlSlMgQmFzZVR4XG5leHBvcnQgdHlwZSBBdmF4VHggPSBhdmF4U2VyaWFsLkF2YXhUeDsgLy8gRmxhcmVKUyBBdmF4VHhcbmV4cG9ydCB0eXBlIERlcHJlY2F0ZWRPdXRwdXQgPSB1bmtub3duOyAvLyBQbGFjZWhvbGRlciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0OyAvLyBGbGFyZUpTIFRyYW5zZmVyYWJsZU91dHB1dCAodW5pZmllZCB0eXBlIGluIDQuMC41KVxuIl19
@@ -0,0 +1,5 @@
1
+ import Utils from './utils';
2
+ export * from './iface';
3
+ export { KeyPair } from './keyPair';
4
+ export { Utils };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Utils = exports.KeyPair = void 0;
21
+ const utils_1 = __importDefault(require("./utils"));
22
+ exports.Utils = utils_1.default;
23
+ __exportStar(require("./iface"), exports);
24
+ var keyPair_1 = require("./keyPair");
25
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBR25CLGdCQUhGLGVBQUssQ0FHRTtBQUZkLDBDQUF3QjtBQUN4QixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFV0aWxzIH07XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo-beta/sdk-core';
2
+ export declare enum addressFormat {
3
+ testnet = "fuji",
4
+ mainnet = "flr"
5
+ }
6
+ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
7
+ /**
8
+ * Public constructor. By default, creates a key pair with a random master seed.
9
+ *
10
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
11
+ */
12
+ constructor(source?: KeyPairOptions);
13
+ /**
14
+ * Build a keypair from a protocol private key or extended private key.
15
+ *
16
+ * @param {string} prv A raw private key
17
+ */
18
+ recordKeysFromPrivateKey(prv: string): void;
19
+ /**
20
+ * Build an ECPair from a protocol public key or extended public key.
21
+ *
22
+ * @param {string} pub A raw public key
23
+ */
24
+ recordKeysFromPublicKey(pub: string): void;
25
+ /**
26
+ * Default keys format is a pair of Uint8Array keys
27
+ *
28
+ * @returns { DefaultKeys } The keys in the defined format
29
+ */
30
+ getKeys(): DefaultKeys;
31
+ /**
32
+ * Get a Flare P-Chain public mainnet address
33
+ *
34
+ * @param {string} format - flare hrp selector: Mainnet(flr) or Testnet(fuji)
35
+ * @returns {string} The mainnet address derived from the public key
36
+ */
37
+ getAddress(format?: string): string;
38
+ /**
39
+ * Get a public address of public key.
40
+ *
41
+ * @param {string} hrp - select Mainnet(flr) or Testnet(fuji) for the address
42
+ * @returns {string} The address derived from the public key and hrp
43
+ */
44
+ getFlrPAddress(hrp: string): string;
45
+ /**
46
+ * Get a Flare P-Chain public mainnet address buffer
47
+ *
48
+ * @returns {Buffer} The address buffer derived from the public key
49
+ */
50
+ private getAddressBuffer;
51
+ /**
52
+ * Use the safe Buffer instead of the regular buffer to derive the address buffer. Used in the OVC.
53
+ *
54
+ * @returns {Buffer}
55
+ */
56
+ private getAddressSafeBuffer;
57
+ }
58
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAMX,cAAc,EACd,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAQ9B,oBAAY,aAAa;IACvB,OAAO,SAAS;IAChB,OAAO,QAAQ;CAChB;AAED,qBAAa,OAAQ,SAAQ,wBAAwB;IACnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAoBnC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkB1C;;;;OAIG;IACH,OAAO,IAAI,WAAW;IAOtB;;;;;OAKG;IACH,UAAU,CAAC,MAAM,SAAY,GAAG,MAAM;IAGtC;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKnC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KeyPair = exports.addressFormat = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const create_hash_1 = __importDefault(require("create-hash"));
9
+ const safe_buffer_1 = require("safe-buffer");
10
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
11
+ const crypto_1 = require("crypto");
12
+ const utils_1 = __importDefault(require("./utils"));
13
+ const DEFAULT_SEED_SIZE_BYTES = 16;
14
+ var addressFormat;
15
+ (function (addressFormat) {
16
+ addressFormat["testnet"] = "fuji";
17
+ addressFormat["mainnet"] = "flr";
18
+ })(addressFormat || (exports.addressFormat = addressFormat = {}));
19
+ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
20
+ /**
21
+ * Public constructor. By default, creates a key pair with a random master seed.
22
+ *
23
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
24
+ */
25
+ constructor(source) {
26
+ super(source);
27
+ if (!source) {
28
+ const seed = (0, crypto_1.randomBytes)(DEFAULT_SEED_SIZE_BYTES);
29
+ this.hdNode = secp256k1_1.bip32.fromSeed(seed);
30
+ }
31
+ else if ((0, sdk_core_1.isSeed)(source)) {
32
+ this.hdNode = secp256k1_1.bip32.fromSeed(source.seed);
33
+ }
34
+ else if ((0, sdk_core_1.isPrivateKey)(source)) {
35
+ this.recordKeysFromPrivateKey(source.prv);
36
+ }
37
+ else if ((0, sdk_core_1.isPublicKey)(source)) {
38
+ this.recordKeysFromPublicKey(source.pub);
39
+ }
40
+ else {
41
+ throw new Error('Invalid key pair options');
42
+ }
43
+ if (this.hdNode) {
44
+ this.keyPair = sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode);
45
+ }
46
+ }
47
+ /**
48
+ * Build a keypair from a protocol private key or extended private key.
49
+ *
50
+ * @param {string} prv A raw private key
51
+ */
52
+ recordKeysFromPrivateKey(prv) {
53
+ if (!utils_1.default.isValidPrivateKey(prv)) {
54
+ throw new Error('Unsupported private key');
55
+ }
56
+ if ((0, sdk_core_1.isValidXprv)(prv)) {
57
+ this.hdNode = secp256k1_1.bip32.fromBase58(prv);
58
+ }
59
+ else {
60
+ this.keyPair = secp256k1_1.ECPair.fromPrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
61
+ }
62
+ }
63
+ /**
64
+ * Build an ECPair from a protocol public key or extended public key.
65
+ *
66
+ * @param {string} pub A raw public key
67
+ */
68
+ recordKeysFromPublicKey(pub) {
69
+ try {
70
+ if ((0, sdk_core_1.isValidXpub)(pub)) {
71
+ this.hdNode = secp256k1_1.bip32.fromBase58(pub);
72
+ }
73
+ else {
74
+ this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
75
+ }
76
+ return;
77
+ }
78
+ catch (e) {
79
+ try {
80
+ this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(utils_1.default.cb58Decode(pub)));
81
+ return;
82
+ }
83
+ catch (e) {
84
+ throw new Error('Unsupported public key');
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Default keys format is a pair of Uint8Array keys
90
+ *
91
+ * @returns { DefaultKeys } The keys in the defined format
92
+ */
93
+ getKeys() {
94
+ return {
95
+ pub: this.getPublicKey({ compressed: true }).toString('hex'),
96
+ prv: this.getPrivateKey()?.toString('hex'),
97
+ };
98
+ }
99
+ /**
100
+ * Get a Flare P-Chain public mainnet address
101
+ *
102
+ * @param {string} format - flare hrp selector: Mainnet(flr) or Testnet(fuji)
103
+ * @returns {string} The mainnet address derived from the public key
104
+ */
105
+ getAddress(format = 'mainnet') {
106
+ return this.getFlrPAddress(addressFormat[format]);
107
+ }
108
+ /**
109
+ * Get a public address of public key.
110
+ *
111
+ * @param {string} hrp - select Mainnet(flr) or Testnet(fuji) for the address
112
+ * @returns {string} The address derived from the public key and hrp
113
+ */
114
+ getFlrPAddress(hrp) {
115
+ const addressBuffer = Buffer.from(this.getAddressBuffer());
116
+ return utils_1.default.addressToString(hrp, 'P', addressBuffer);
117
+ }
118
+ /**
119
+ * Get a Flare P-Chain public mainnet address buffer
120
+ *
121
+ * @returns {Buffer} The address buffer derived from the public key
122
+ */
123
+ getAddressBuffer() {
124
+ try {
125
+ // Use the safe buffer method for address derivation
126
+ return this.getAddressSafeBuffer();
127
+ }
128
+ catch (error) {
129
+ return this.getAddressSafeBuffer();
130
+ }
131
+ }
132
+ /**
133
+ * Use the safe Buffer instead of the regular buffer to derive the address buffer. Used in the OVC.
134
+ *
135
+ * @returns {Buffer}
136
+ */
137
+ getAddressSafeBuffer() {
138
+ const publicKeySafe = safe_buffer_1.Buffer.from(this.keyPair.publicKey.toString('hex'), 'hex');
139
+ const sha256 = safe_buffer_1.Buffer.from((0, create_hash_1.default)('sha256').update(publicKeySafe).digest());
140
+ return Buffer.from((0, create_hash_1.default)('ripemd160').update(sha256).digest());
141
+ }
142
+ }
143
+ exports.KeyPair = KeyPair;
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFTOEI7QUFDOUIsOERBQXFDO0FBQ3JDLDZDQUFtRDtBQUNuRCxxREFBc0Q7QUFDdEQsbUNBQXFDO0FBQ3JDLG9EQUE0QjtBQUU1QixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUNuQyxJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDdkIsaUNBQWdCLENBQUE7SUFDaEIsZ0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsYUFBYSw2QkFBYixhQUFhLFFBR3hCO0FBRUQsTUFBYSxPQUFRLFNBQVEsbUNBQXdCO0lBQ25EOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFBLHNCQUFXLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFD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QUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0JBQW9CO1FBQzFCLE1BQU0sYUFBYSxHQUFHLG9CQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRixNQUFNLE1BQU0sR0FBRyxvQkFBVSxDQUFDLElBQUksQ0FBQyxJQUFBLHFCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUEscUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0Y7QUF6SEQsMEJBeUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVmYXVsdEtleXMsXG4gIGlzUHJpdmF0ZUtleSxcbiAgaXNQdWJsaWNLZXksXG4gIGlzU2VlZCxcbiAgaXNWYWxpZFhwcnYsXG4gIGlzVmFsaWRYcHViLFxuICBLZXlQYWlyT3B0aW9ucyxcbiAgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgY3JlYXRlSGFzaCBmcm9tICdjcmVhdGUtaGFzaCc7XG5pbXBvcnQgeyBCdWZmZXIgYXMgU2FmZUJ1ZmZlciB9IGZyb20gJ3NhZmUtYnVmZmVyJztcbmltcG9ydCB7IGJpcDMyLCBFQ1BhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDE2O1xuZXhwb3J0IGVudW0gYWRkcmVzc0Zvcm1hdCB7XG4gIHRlc3RuZXQgPSAnZnVqaScsXG4gIG1haW5uZXQgPSAnZmxyJyxcbn1cblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIge1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICBjb25zdCBzZWVkID0gcmFuZG9tQnl0ZXMoREVGQVVMVF9TRUVEX1NJWkVfQllURVMpO1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzU2VlZChzb3VyY2UpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21TZWVkKHNvdXJjZS5zZWVkKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpdmF0ZUtleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkoc291cmNlLnB1Yik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGROb2RlKSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIudG9LZXlQYWlyKHRoaXMuaGROb2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBrZXlwYWlyIGZyb20gYSBwcm90b2NvbCBwcml2YXRlIGtleSBvciBleHRlbmRlZCBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGlmIChpc1ZhbGlkWHBydihwcnYpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHJ2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydi5zbGljZSgwLCA2NCksICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEVDUGFpciBmcm9tIGEgcHJvdG9jb2wgcHVibGljIGtleSBvciBleHRlbmRlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgcmF3IHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChpc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMua2V5UGFpciA9IEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHV0aWxzLmNiNThEZWNvZGUocHViKSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcHVibGljIGtleScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGtleXMgZm9ybWF0IGlzIGEgcGFpciBvZiBVaW50OEFycmF5IGtleXNcbiAgICpcbiAgICogQHJldHVybnMgeyBEZWZhdWx0S2V5cyB9IFRoZSBrZXlzIGluIHRoZSBkZWZpbmVkIGZvcm1hdFxuICAgKi9cbiAgZ2V0S2V5cygpOiBEZWZhdWx0S2V5cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YjogdGhpcy5nZXRQdWJsaWNLZXkoeyBjb21wcmVzc2VkOiB0cnVlIH0pLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHBydjogdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIEZsYXJlIFAtQ2hhaW4gcHVibGljIG1haW5uZXQgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gZmxhcmUgaHJwIHNlbGVjdG9yOiBNYWlubmV0KGZscikgb3IgVGVzdG5ldChmdWppKVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbWFpbm5ldCBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleVxuICAgKi9cbiAgZ2V0QWRkcmVzcyhmb3JtYXQgPSAnbWFpbm5ldCcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEZsclBBZGRyZXNzKGFkZHJlc3NGb3JtYXRbZm9ybWF0XSk7XG4gIH1cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBocnAgLSBzZWxlY3QgTWFpbm5ldChmbHIpIG9yIFRlc3RuZXQoZnVqaSkgZm9yIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhZGRyZXNzIGRlcml2ZWQgZnJvbSB0aGUgcHVibGljIGtleSBhbmQgaHJwXG4gICAqL1xuICBnZXRGbHJQQWRkcmVzcyhocnA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWRkcmVzc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMuZ2V0QWRkcmVzc0J1ZmZlcigpKTtcbiAgICByZXR1cm4gdXRpbHMuYWRkcmVzc1RvU3RyaW5nKGhycCwgJ1AnLCBhZGRyZXNzQnVmZmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBGbGFyZSBQLUNoYWluIHB1YmxpYyBtYWlubmV0IGFkZHJlc3MgYnVmZmVyXG4gICAqXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IFRoZSBhZGRyZXNzIGJ1ZmZlciBkZXJpdmVkIGZyb20gdGhlIHB1YmxpYyBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc0J1ZmZlcigpOiBCdWZmZXIge1xuICAgIHRyeSB7XG4gICAgICAvLyBVc2UgdGhlIHNhZmUgYnVmZmVyIG1ldGhvZCBmb3IgYWRkcmVzcyBkZXJpdmF0aW9uXG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzU2FmZUJ1ZmZlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIHNhZmUgQnVmZmVyIGluc3RlYWQgb2YgdGhlIHJlZ3VsYXIgYnVmZmVyIHRvIGRlcml2ZSB0aGUgYWRkcmVzcyBidWZmZXIuIFVzZWQgaW4gdGhlIE9WQy5cbiAgICpcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIHByaXZhdGUgZ2V0QWRkcmVzc1NhZmVCdWZmZXIoKTogQnVmZmVyIHtcbiAgICBjb25zdCBwdWJsaWNLZXlTYWZlID0gU2FmZUJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wdWJsaWNLZXkudG9TdHJpbmcoJ2hleCcpLCAnaGV4Jyk7XG4gICAgY29uc3Qgc2hhMjU2ID0gU2FmZUJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShwdWJsaWNLZXlTYWZlKS5kaWdlc3QoKSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goJ3JpcGVtZDE2MCcpLnVwZGF0ZShzaGEyNTYpLmRpZ2VzdCgpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,158 @@
1
+ import { TransferableOutput } from '@flarenetwork/flarejs';
2
+ import { BaseUtils, Entry } from '@bitgo-beta/sdk-core';
3
+ import { FlareNetwork } from '@bitgo-beta/statics';
4
+ import { DeprecatedOutput, DeprecatedTx, Output } from './iface';
5
+ export declare class Utils implements BaseUtils {
6
+ includeIn(walletAddresses: string[], otxoOutputAddresses: string[]): boolean;
7
+ /**
8
+ * Checks if it is a valid address no illegal characters
9
+ *
10
+ * @param {string} address - address to be validated
11
+ * @returns {boolean} - the validation result
12
+ */
13
+ /** @inheritdoc */
14
+ isValidAddress(address: string | string[]): boolean;
15
+ private isValidAddressRegex;
16
+ /**
17
+ * Checks if it is a valid blockId with length 66 including 0x
18
+ *
19
+ * @param {string} hash - blockId to be validated
20
+ * @returns {boolean} - the validation result
21
+ */
22
+ /** @inheritdoc */
23
+ isValidBlockId(hash: string): boolean;
24
+ /**
25
+ * Checks if the string is a valid protocol public key or
26
+ * extended public key.
27
+ *
28
+ * @param {string} pub - the public key to be validated
29
+ * @returns {boolean} - the validation result
30
+ */
31
+ isValidPublicKey(pub: string): boolean;
32
+ parseAddress: (pub: string) => Buffer;
33
+ /**
34
+ * Returns whether or not the string is a valid protocol private key, or extended
35
+ * private key.
36
+ *
37
+ * The protocol key format is described in the @stacks/transactions npm package, in the
38
+ * createStacksPrivateKey function:
39
+ * https://github.com/blockstack/stacks.js/blob/master/packages/transactions/src/keys.ts#L125
40
+ *
41
+ * @param {string} prv - the private key (or extended private key) to be validated
42
+ * @returns {boolean} - the validation result
43
+ */
44
+ isValidPrivateKey(prv: string): boolean;
45
+ /**
46
+ * Returns whether or not the string is a composed of hex chars only
47
+ *
48
+ * @param {string} maybe - the string to be validated
49
+ * @returns {boolean} - the validation result
50
+ */
51
+ allHexChars(maybe: string): boolean;
52
+ /** @inheritdoc */
53
+ isValidSignature(signature: string): boolean;
54
+ /** @inheritdoc */
55
+ isValidTransactionId(txId: string): boolean;
56
+ /**
57
+ * FlareJS wrapper to create signature and return it for credentials
58
+ * @param network
59
+ * @param message
60
+ * @param prv
61
+ * @return signature
62
+ */
63
+ createSignature(network: FlareNetwork, message: Buffer, prv: Buffer): Buffer;
64
+ /**
65
+ * FlareJS wrapper to verify signature
66
+ * @param network
67
+ * @param message
68
+ * @param signature
69
+ * @param publicKey - public key instead of private key for verification
70
+ * @return true if it's verify successful
71
+ */
72
+ verifySignature(network: FlareNetwork, message: Buffer, signature: Buffer, publicKey: Buffer): boolean;
73
+ /**
74
+ * FlareJS wrapper to recover signature
75
+ * @param network
76
+ * @param message
77
+ * @param signature
78
+ * @return recovered public key
79
+ */
80
+ recoverySignature(network: FlareNetwork, message: Buffer, signature: Buffer): Buffer;
81
+ sha256(buf: Uint8Array): Buffer;
82
+ /**
83
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
84
+ * It's to reuse in TransactionBuilder and TransactionBuilderFactory
85
+ *
86
+ * @param rawTransaction Transaction as hex string
87
+ */
88
+ validateRawTransaction(rawTransaction: string): void;
89
+ /**
90
+ * Check if tx is for the blockchainId
91
+ *
92
+ * @param {DeprecatedTx} tx
93
+ * @param {string} blockchainId
94
+ * @returns true if tx is for blockchainId
95
+ */
96
+ isTransactionOf(tx: DeprecatedTx, blockchainId: string): boolean;
97
+ /**
98
+ * Check if Output is from PVM.
99
+ * Output could be EVM or PVM output.
100
+ * @param {DeprecatedOutput} output
101
+ * @returns {boolean} output has transferable output structure
102
+ */
103
+ deprecatedIsTransferableOutput(output: DeprecatedOutput): boolean;
104
+ /**
105
+ * Check if Output is from PVM.
106
+ * Output could be EVM or PVM output.
107
+ * @param {Output} output
108
+ * @returns {boolean} output is TransferableOutput
109
+ */
110
+ isTransferableOutput(output: Output): output is TransferableOutput;
111
+ /**
112
+ * Return a mapper function to that network address representation.
113
+ * @param network required to stringify addresses
114
+ * @return mapper function
115
+ */
116
+ deprecatedMapOutputToEntry(network: FlareNetwork): (output: DeprecatedOutput) => Entry;
117
+ /**
118
+ * Return a mapper function to that network address representation.
119
+ * @param network required to stringify addresses
120
+ * @return mapper function
121
+ */
122
+ mapOutputToEntry(network: FlareNetwork): (Output: any) => Entry;
123
+ /**
124
+ * remove hex prefix (0x)
125
+ * @param hex string
126
+ * @returns hex without 0x
127
+ */
128
+ removeHexPrefix(hex: string): string;
129
+ /**
130
+ * Outputidx convert from number (as string) to buffer.
131
+ * @param {string} outputidx number
132
+ * @return {Buffer} buffer of size 4 with that number value
133
+ */
134
+ outputidxNumberToBuffer(outputidx: string): Buffer;
135
+ /**
136
+ * Outputidx buffer to number (as string)
137
+ * @param {Buffer} outputidx
138
+ * @return {string} outputidx number
139
+ */
140
+ outputidxBufferToNumber(outputidx: Buffer): string;
141
+ /**
142
+ * CB58 decode function - simple Base58 decode implementation
143
+ * @param {string} data - CB58 encoded string
144
+ * @returns {Buffer} decoded buffer
145
+ */
146
+ cb58Decode(data: string): Buffer;
147
+ /**
148
+ * Convert address buffer to bech32 string
149
+ * @param {string} hrp - Human readable part
150
+ * @param {string} chainid - Chain identifier
151
+ * @param {Buffer} addressBuffer - Address buffer
152
+ * @returns {string} Address string
153
+ */
154
+ addressToString(hrp: string, chainid: string, addressBuffer: Buffer): string;
155
+ }
156
+ declare const utils: Utils;
157
+ export default utils;
158
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,SAAS,EACT,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAcjE,qBAAa,KAAM,YAAW,SAAS;IAC9B,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,OAAO;IAInF;;;;;OAKG;IACH,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO;IAYnD,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUrC;;;;;;OAMG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAwC/B,YAAY,QAAS,MAAM,KAAG,MAAM,CAGzC;IAEF;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAiBvC;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAInC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAU5E;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAQtG;;;;;;OAMG;IACH,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAUpF,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAI/B;;;;;OAKG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAahE;;;;;OAKG;IACH,8BAA8B,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAIjE;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,kBAAkB;IAIlE;;;;OAIG;IACH,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,KAAK;IA4BtF;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,CAAC,MAAM,KAAA,KAAK,KAAK;IAmB1D;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAOpC;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIlD;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIlD;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAWhC;;;;;;OAMG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;CAI7E;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}