@bitgo-beta/sdk-coin-xdc 1.0.1-beta.1206 → 1.0.1-beta.1207

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.
@@ -5,4 +5,6 @@ export { UploadKycBuilder, UploadKycCall } from './uploadKycBuilder';
5
5
  export { Transaction, KeyPair } from '@bitgo-beta/abstract-eth';
6
6
  export { Utils };
7
7
  export * from './validatorContract';
8
+ export { buildXdcKycMessage, signXdcKycMessage } from './xdcKycMessage';
9
+ export type { XdcKycMessageParams, XdcKycSignedMessage } from './xdcKycMessage';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -36,7 +36,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.Utils = exports.KeyPair = exports.Transaction = exports.UploadKycCall = exports.UploadKycBuilder = exports.TransferBuilder = exports.TransactionBuilder = void 0;
39
+ exports.signXdcKycMessage = exports.buildXdcKycMessage = exports.Utils = exports.KeyPair = exports.Transaction = exports.UploadKycCall = exports.UploadKycBuilder = exports.TransferBuilder = exports.TransactionBuilder = void 0;
40
40
  const Utils = __importStar(require("./utils"));
41
41
  exports.Utils = Utils;
42
42
  var transactionBuilder_1 = require("./transactionBuilder");
@@ -50,4 +50,7 @@ var abstract_eth_1 = require("@bitgo-beta/abstract-eth");
50
50
  Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return abstract_eth_1.Transaction; } });
51
51
  Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return abstract_eth_1.KeyPair; } });
52
52
  __exportStar(require("./validatorContract"), exports);
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQU14QixzQkFBSztBQUpkLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHVEQUFxRTtBQUE1RCxvSEFBQSxnQkFBZ0IsT0FBQTtBQUFFLGlIQUFBLGFBQWEsT0FBQTtBQUN4Qyx5REFBZ0U7QUFBdkQsMkdBQUEsV0FBVyxPQUFBO0FBQUUsdUdBQUEsT0FBTyxPQUFBO0FBRTdCLHNEQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBVcGxvYWRLeWNCdWlsZGVyLCBVcGxvYWRLeWNDYWxsIH0gZnJvbSAnLi91cGxvYWRLeWNCdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uLCBLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmV4cG9ydCB7IFV0aWxzIH07XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvckNvbnRyYWN0JztcbiJdfQ==
53
+ var xdcKycMessage_1 = require("./xdcKycMessage");
54
+ Object.defineProperty(exports, "buildXdcKycMessage", { enumerable: true, get: function () { return xdcKycMessage_1.buildXdcKycMessage; } });
55
+ Object.defineProperty(exports, "signXdcKycMessage", { enumerable: true, get: function () { return xdcKycMessage_1.signXdcKycMessage; } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQU14QixzQkFBSztBQUpkLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHVEQUFxRTtBQUE1RCxvSEFBQSxnQkFBZ0IsT0FBQTtBQUFFLGlIQUFBLGFBQWEsT0FBQTtBQUN4Qyx5REFBZ0U7QUFBdkQsMkdBQUEsV0FBVyxPQUFBO0FBQUUsdUdBQUEsT0FBTyxPQUFBO0FBRTdCLHNEQUFvQztBQUNwQyxpREFBd0U7QUFBL0QsbUhBQUEsa0JBQWtCLE9BQUE7QUFBRSxrSEFBQSxpQkFBaUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5leHBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBVcGxvYWRLeWNCdWlsZGVyLCBVcGxvYWRLeWNDYWxsIH0gZnJvbSAnLi91cGxvYWRLeWNCdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uLCBLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcbmV4cG9ydCB7IFV0aWxzIH07XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvckNvbnRyYWN0JztcbmV4cG9ydCB7IGJ1aWxkWGRjS3ljTWVzc2FnZSwgc2lnblhkY0t5Y01lc3NhZ2UgfSBmcm9tICcuL3hkY0t5Y01lc3NhZ2UnO1xuZXhwb3J0IHR5cGUgeyBYZGNLeWNNZXNzYWdlUGFyYW1zLCBYZGNLeWNTaWduZWRNZXNzYWdlIH0gZnJvbSAnLi94ZGNLeWNNZXNzYWdlJztcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { IWallet } from '@bitgo-beta/sdk-core';
2
+ export interface XdcKycMessageParams {
3
+ account: string;
4
+ timestamp: string;
5
+ }
6
+ export interface XdcKycSignedMessage {
7
+ kycAccount: string;
8
+ kycMessage: string;
9
+ kycSignature: string;
10
+ }
11
+ /**
12
+ * Build the message string expected by the XinFin masternode IPFS API.
13
+ * Format: "[XDCmaster KYC <timestamp>] Upload KYC for <account>"
14
+ */
15
+ export declare function buildXdcKycMessage(params: XdcKycMessageParams): string;
16
+ /**
17
+ * Sign the XDC KYC message using the wallet's TSS key.
18
+ * Calls wallet.signMessage() which routes through WP /msgrequests TSS ceremony.
19
+ *
20
+ * @param wallet - TSS wallet (must be XDC/TXDC)
21
+ * @param account - wallet Ethereum address
22
+ * @param walletPassphrase - user's wallet passphrase for TSS signing
23
+ * @returns signed message object ready to send as staking-service request fields
24
+ */
25
+ export declare function signXdcKycMessage(wallet: IWallet, account: string, walletPassphrase: string): Promise<XdcKycSignedMessage>;
26
+ //# sourceMappingURL=xdcKycMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdcKycMessage.d.ts","sourceRoot":"","sources":["../../../src/lib/xdcKycMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,sBAAsB,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAEtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAiB9B"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildXdcKycMessage = buildXdcKycMessage;
4
+ exports.signXdcKycMessage = signXdcKycMessage;
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ /**
7
+ * Build the message string expected by the XinFin masternode IPFS API.
8
+ * Format: "[XDCmaster KYC <timestamp>] Upload KYC for <account>"
9
+ */
10
+ function buildXdcKycMessage(params) {
11
+ return `[XDCmaster KYC ${params.timestamp}] Upload KYC for ${params.account}`;
12
+ }
13
+ /**
14
+ * Sign the XDC KYC message using the wallet's TSS key.
15
+ * Calls wallet.signMessage() which routes through WP /msgrequests TSS ceremony.
16
+ *
17
+ * @param wallet - TSS wallet (must be XDC/TXDC)
18
+ * @param account - wallet Ethereum address
19
+ * @param walletPassphrase - user's wallet passphrase for TSS signing
20
+ * @returns signed message object ready to send as staking-service request fields
21
+ */
22
+ async function signXdcKycMessage(wallet, account, walletPassphrase) {
23
+ const timestamp = new Date().toISOString();
24
+ const kycMessage = buildXdcKycMessage({ account, timestamp });
25
+ const signed = await wallet.signMessage({
26
+ message: {
27
+ messageRaw: kycMessage,
28
+ messageStandardType: sdk_core_1.MessageStandardType.EIP191,
29
+ },
30
+ walletPassphrase,
31
+ });
32
+ return {
33
+ kycAccount: account,
34
+ kycMessage,
35
+ kycSignature: signed.signature,
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjS3ljTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIveGRjS3ljTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxnREFFQztBQVdELDhDQXFCQztBQW5ERCxtREFBb0U7QUFhcEU7OztHQUdHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsTUFBMkI7SUFDNUQsT0FBTyxrQkFBa0IsTUFBTSxDQUFDLFNBQVMsb0JBQW9CLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE1BQWUsRUFDZixPQUFlLEVBQ2YsZ0JBQXdCO0lBRXhCLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUU5RCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLFVBQVU7WUFDdEIsbUJBQW1CLEVBQUUsOEJBQW1CLENBQUMsTUFBTTtTQUNoRDtRQUNELGdCQUFnQjtLQUNqQixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsVUFBVSxFQUFFLE9BQU87UUFDbkIsVUFBVTtRQUNWLFlBQVksRUFBRSxNQUFNLENBQUMsU0FBUztLQUMvQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElXYWxsZXQsIE1lc3NhZ2VTdGFuZGFyZFR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWGRjS3ljTWVzc2FnZVBhcmFtcyB7XG4gIGFjY291bnQ6IHN0cmluZzsgLy8gd2FsbGV0IEV0aGVyZXVtIGFkZHJlc3MgKGNoZWNrc3VtbWVkKVxuICB0aW1lc3RhbXA6IHN0cmluZzsgLy8gSVNPIDg2MDEsIGdlbmVyYXRlZCBieSBjYWxsZXIgYXQgc2lnbmluZyB0aW1lXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWGRjS3ljU2lnbmVkTWVzc2FnZSB7XG4gIGt5Y0FjY291bnQ6IHN0cmluZztcbiAga3ljTWVzc2FnZTogc3RyaW5nO1xuICBreWNTaWduYXR1cmU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgbWVzc2FnZSBzdHJpbmcgZXhwZWN0ZWQgYnkgdGhlIFhpbkZpbiBtYXN0ZXJub2RlIElQRlMgQVBJLlxuICogRm9ybWF0OiBcIltYRENtYXN0ZXIgS1lDIDx0aW1lc3RhbXA+XSBVcGxvYWQgS1lDIGZvciA8YWNjb3VudD5cIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRYZGNLeWNNZXNzYWdlKHBhcmFtczogWGRjS3ljTWVzc2FnZVBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBgW1hEQ21hc3RlciBLWUMgJHtwYXJhbXMudGltZXN0YW1wfV0gVXBsb2FkIEtZQyBmb3IgJHtwYXJhbXMuYWNjb3VudH1gO1xufVxuXG4vKipcbiAqIFNpZ24gdGhlIFhEQyBLWUMgbWVzc2FnZSB1c2luZyB0aGUgd2FsbGV0J3MgVFNTIGtleS5cbiAqIENhbGxzIHdhbGxldC5zaWduTWVzc2FnZSgpIHdoaWNoIHJvdXRlcyB0aHJvdWdoIFdQIC9tc2dyZXF1ZXN0cyBUU1MgY2VyZW1vbnkuXG4gKlxuICogQHBhcmFtIHdhbGxldCAtIFRTUyB3YWxsZXQgKG11c3QgYmUgWERDL1RYREMpXG4gKiBAcGFyYW0gYWNjb3VudCAtIHdhbGxldCBFdGhlcmV1bSBhZGRyZXNzXG4gKiBAcGFyYW0gd2FsbGV0UGFzc3BocmFzZSAtIHVzZXIncyB3YWxsZXQgcGFzc3BocmFzZSBmb3IgVFNTIHNpZ25pbmdcbiAqIEByZXR1cm5zIHNpZ25lZCBtZXNzYWdlIG9iamVjdCByZWFkeSB0byBzZW5kIGFzIHN0YWtpbmctc2VydmljZSByZXF1ZXN0IGZpZWxkc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblhkY0t5Y01lc3NhZ2UoXG4gIHdhbGxldDogSVdhbGxldCxcbiAgYWNjb3VudDogc3RyaW5nLFxuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmdcbik6IFByb21pc2U8WGRjS3ljU2lnbmVkTWVzc2FnZT4ge1xuICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IGt5Y01lc3NhZ2UgPSBidWlsZFhkY0t5Y01lc3NhZ2UoeyBhY2NvdW50LCB0aW1lc3RhbXAgfSk7XG5cbiAgY29uc3Qgc2lnbmVkID0gYXdhaXQgd2FsbGV0LnNpZ25NZXNzYWdlKHtcbiAgICBtZXNzYWdlOiB7XG4gICAgICBtZXNzYWdlUmF3OiBreWNNZXNzYWdlLFxuICAgICAgbWVzc2FnZVN0YW5kYXJkVHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZS5FSVAxOTEsXG4gICAgfSxcbiAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGt5Y0FjY291bnQ6IGFjY291bnQsXG4gICAga3ljTWVzc2FnZSxcbiAgICBreWNTaWduYXR1cmU6IHNpZ25lZC5zaWduYXR1cmUsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=xdcKycMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdcKycMessage.d.ts","sourceRoot":"","sources":["../../../test/unit/xdcKycMessage.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,104 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const sinon = __importStar(require("sinon"));
40
+ require("should");
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const xdcKycMessage_1 = require("../../src/lib/xdcKycMessage");
44
+ const ACCOUNT = '0xAbCdEf1234567890AbCdEf1234567890AbCdEf12';
45
+ const TIMESTAMP = '2024-01-15T12:00:00.000Z';
46
+ const SIGNATURE = '0xdeadbeef';
47
+ describe('buildXdcKycMessage', function () {
48
+ it('should build the correct format string', function () {
49
+ const result = (0, xdcKycMessage_1.buildXdcKycMessage)({ account: ACCOUNT, timestamp: TIMESTAMP });
50
+ result.should.equal(`[XDCmaster KYC ${TIMESTAMP}] Upload KYC for ${ACCOUNT}`);
51
+ });
52
+ it('should produce different strings for different timestamps', function () {
53
+ const result1 = (0, xdcKycMessage_1.buildXdcKycMessage)({ account: ACCOUNT, timestamp: '2024-01-15T12:00:00.000Z' });
54
+ const result2 = (0, xdcKycMessage_1.buildXdcKycMessage)({ account: ACCOUNT, timestamp: '2024-01-16T12:00:00.000Z' });
55
+ result1.should.not.equal(result2);
56
+ });
57
+ });
58
+ describe('signXdcKycMessage', function () {
59
+ let wallet;
60
+ beforeEach(function () {
61
+ wallet = {
62
+ signMessage: sinon.stub(),
63
+ };
64
+ });
65
+ afterEach(function () {
66
+ sinon.restore();
67
+ });
68
+ it('should call wallet.signMessage with correct messageRaw and messageStandardType', async function () {
69
+ wallet.signMessage.resolves({
70
+ txHash: '',
71
+ signature: SIGNATURE,
72
+ messageRaw: '',
73
+ });
74
+ await (0, xdcKycMessage_1.signXdcKycMessage)(wallet, ACCOUNT, 'passphrase');
75
+ sinon.assert.calledOnce(wallet.signMessage);
76
+ const call = wallet.signMessage.getCall(0);
77
+ const params = call.args[0];
78
+ params.walletPassphrase.should.equal('passphrase');
79
+ params.message.messageStandardType.should.equal(sdk_core_1.MessageStandardType.EIP191);
80
+ params.message.messageRaw.should.startWith(`[XDCmaster KYC `);
81
+ params.message.messageRaw.should.containEql(`Upload KYC for ${ACCOUNT}`);
82
+ });
83
+ it('should return kycAccount, kycMessage, and kycSignature mapped correctly', async function () {
84
+ wallet.signMessage.resolves({
85
+ txHash: '',
86
+ signature: SIGNATURE,
87
+ messageRaw: '',
88
+ });
89
+ const result = await (0, xdcKycMessage_1.signXdcKycMessage)(wallet, ACCOUNT, 'passphrase');
90
+ result.kycAccount.should.equal(ACCOUNT);
91
+ result.kycSignature.should.equal(SIGNATURE);
92
+ result.kycMessage.should.startWith('[XDCmaster KYC ');
93
+ result.kycMessage.should.containEql(`Upload KYC for ${ACCOUNT}`);
94
+ // kycMessage must match the messageRaw passed to signMessage
95
+ const passedMessageRaw = wallet.signMessage.getCall(0).args[0].message.messageRaw;
96
+ result.kycMessage.should.equal(passedMessageRaw);
97
+ });
98
+ it('should propagate error if wallet.signMessage throws', async function () {
99
+ const signingError = new Error('TSS signing failed');
100
+ wallet.signMessage.rejects(signingError);
101
+ await assert_1.default.rejects(() => (0, xdcKycMessage_1.signXdcKycMessage)(wallet, ACCOUNT, 'passphrase'), /TSS signing failed/);
102
+ });
103
+ });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGRjS3ljTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC94ZGNLeWNNZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixvREFBNEI7QUFDNUIsbURBQW9FO0FBQ3BFLCtEQUFvRjtBQUVwRixNQUFNLE9BQU8sR0FBRyw0Q0FBNEMsQ0FBQztBQUM3RCxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztBQUM3QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7QUFFL0IsUUFBUSxDQUFDLG9CQUFvQixFQUFFO0lBQzdCLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFrQixFQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsU0FBUyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRTtRQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFrQixFQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sT0FBTyxHQUFHLElBQUEsa0NBQWtCLEVBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDaEcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFR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LElBQUEsaUNBQWlCLEVBQUMsTUFBNEIsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQzVFLG9CQUFvQixDQUNyQixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IElXYWxsZXQsIE1lc3NhZ2VTdGFuZGFyZFR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBidWlsZFhkY0t5Y01lc3NhZ2UsIHNpZ25YZGNLeWNNZXNzYWdlIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi94ZGNLeWNNZXNzYWdlJztcblxuY29uc3QgQUNDT1VOVCA9ICcweEFiQ2RFZjEyMzQ1Njc4OTBBYkNkRWYxMjM0NTY3ODkwQWJDZEVmMTInO1xuY29uc3QgVElNRVNUQU1QID0gJzIwMjQtMDEtMTVUMTI6MDA6MDAuMDAwWic7XG5jb25zdCBTSUdOQVRVUkUgPSAnMHhkZWFkYmVlZic7XG5cbmRlc2NyaWJlKCdidWlsZFhkY0t5Y01lc3NhZ2UnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgYnVpbGQgdGhlIGNvcnJlY3QgZm9ybWF0IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBidWlsZFhkY0t5Y01lc3NhZ2UoeyBhY2NvdW50OiBBQ0NPVU5ULCB0aW1lc3RhbXA6IFRJTUVTVEFNUCB9KTtcbiAgICByZXN1bHQuc2hvdWxkLmVxdWFsKGBbWERDbWFzdGVyIEtZQyAke1RJTUVTVEFNUH1dIFVwbG9hZCBLWUMgZm9yICR7QUNDT1VOVH1gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm9kdWNlIGRpZmZlcmVudCBzdHJpbmdzIGZvciBkaWZmZXJlbnQgdGltZXN0YW1wcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZXN1bHQxID0gYnVpbGRYZGNLeWNNZXNzYWdlKHsgYWNjb3VudDogQUNDT1VOVCwgdGltZXN0YW1wOiAnMjAyNC0wMS0xNVQxMjowMDowMC4wMDBaJyB9KTtcbiAgICBjb25zdCByZXN1bHQyID0gYnVpbGRYZGNLeWNNZXNzYWdlKHsgYWNjb3VudDogQUNDT1VOVCwgdGltZXN0YW1wOiAnMjAyNC0wMS0xNlQxMjowMDowMC4wMDBaJyB9KTtcbiAgICByZXN1bHQxLnNob3VsZC5ub3QuZXF1YWwocmVzdWx0Mik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzaWduWGRjS3ljTWVzc2FnZScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldDogc2lub24uU2lub25TdHViYmVkSW5zdGFuY2U8SVdhbGxldD47XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgd2FsbGV0ID0ge1xuICAgICAgc2lnbk1lc3NhZ2U6IHNpbm9uLnN0dWIoKSxcbiAgICB9IGFzIHVua25vd24gYXMgc2lub24uU2lub25TdHViYmVkSW5zdGFuY2U8SVdhbGxldD47XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNhbGwgd2FsbGV0LnNpZ25NZXNzYWdlIHdpdGggY29ycmVjdCBtZXNzYWdlUmF3IGFuZCBtZXNzYWdlU3RhbmRhcmRUeXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICh3YWxsZXQuc2lnbk1lc3NhZ2UgYXMgc2lub24uU2lub25TdHViKS5yZXNvbHZlcyh7XG4gICAgICB0eEhhc2g6ICcnLFxuICAgICAgc2lnbmF0dXJlOiBTSUdOQVRVUkUsXG4gICAgICBtZXNzYWdlUmF3OiAnJyxcbiAgICB9KTtcblxuICAgIGF3YWl0IHNpZ25YZGNLeWNNZXNzYWdlKHdhbGxldCBhcyB1bmtub3duIGFzIElXYWxsZXQsIEFDQ09VTlQsICdwYXNzcGhyYXNlJyk7XG5cbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZSh3YWxsZXQuc2lnbk1lc3NhZ2UgYXMgc2lub24uU2lub25TdHViKTtcbiAgICBjb25zdCBjYWxsID0gKHdhbGxldC5zaWduTWVzc2FnZSBhcyBzaW5vbi5TaW5vblN0dWIpLmdldENhbGwoMCk7XG4gICAgY29uc3QgcGFyYW1zID0gY2FsbC5hcmdzWzBdO1xuICAgIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLnNob3VsZC5lcXVhbCgncGFzc3BocmFzZScpO1xuICAgIHBhcmFtcy5tZXNzYWdlLm1lc3NhZ2VTdGFuZGFyZFR5cGUuc2hvdWxkLmVxdWFsKE1lc3NhZ2VTdGFuZGFyZFR5cGUuRUlQMTkxKTtcbiAgICBwYXJhbXMubWVzc2FnZS5tZXNzYWdlUmF3LnNob3VsZC5zdGFydFdpdGgoYFtYRENtYXN0ZXIgS1lDIGApO1xuICAgIHBhcmFtcy5tZXNzYWdlLm1lc3NhZ2VSYXcuc2hvdWxkLmNvbnRhaW5FcWwoYFVwbG9hZCBLWUMgZm9yICR7QUNDT1VOVH1gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4ga3ljQWNjb3VudCwga3ljTWVzc2FnZSwgYW5kIGt5Y1NpZ25hdHVyZSBtYXBwZWQgY29ycmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICh3YWxsZXQuc2lnbk1lc3NhZ2UgYXMgc2lub24uU2lub25TdHViKS5yZXNvbHZlcyh7XG4gICAgICB0eEhhc2g6ICcnLFxuICAgICAgc2lnbmF0dXJlOiBTSUdOQVRVUkUsXG4gICAgICBtZXNzYWdlUmF3OiAnJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNpZ25YZGNLeWNNZXNzYWdlKHdhbGxldCBhcyB1bmtub3duIGFzIElXYWxsZXQsIEFDQ09VTlQsICdwYXNzcGhyYXNlJyk7XG5cbiAgICByZXN1bHQua3ljQWNjb3VudC5zaG91bGQuZXF1YWwoQUNDT1VOVCk7XG4gICAgcmVzdWx0Lmt5Y1NpZ25hdHVyZS5zaG91bGQuZXF1YWwoU0lHTkFUVVJFKTtcbiAgICByZXN1bHQua3ljTWVzc2FnZS5zaG91bGQuc3RhcnRXaXRoKCdbWERDbWFzdGVyIEtZQyAnKTtcbiAgICByZXN1bHQua3ljTWVzc2FnZS5zaG91bGQuY29udGFpbkVxbChgVXBsb2FkIEtZQyBmb3IgJHtBQ0NPVU5UfWApO1xuICAgIC8vIGt5Y01lc3NhZ2UgbXVzdCBtYXRjaCB0aGUgbWVzc2FnZVJhdyBwYXNzZWQgdG8gc2lnbk1lc3NhZ2VcbiAgICBjb25zdCBwYXNzZWRNZXNzYWdlUmF3ID0gKHdhbGxldC5zaWduTWVzc2FnZSBhcyBzaW5vbi5TaW5vblN0dWIpLmdldENhbGwoMCkuYXJnc1swXS5tZXNzYWdlLm1lc3NhZ2VSYXc7XG4gICAgcmVzdWx0Lmt5Y01lc3NhZ2Uuc2hvdWxkLmVxdWFsKHBhc3NlZE1lc3NhZ2VSYXcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBlcnJvciBpZiB3YWxsZXQuc2lnbk1lc3NhZ2UgdGhyb3dzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHNpZ25pbmdFcnJvciA9IG5ldyBFcnJvcignVFNTIHNpZ25pbmcgZmFpbGVkJyk7XG4gICAgKHdhbGxldC5zaWduTWVzc2FnZSBhcyBzaW5vbi5TaW5vblN0dWIpLnJlamVjdHMoc2lnbmluZ0Vycm9yKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gc2lnblhkY0t5Y01lc3NhZ2Uod2FsbGV0IGFzIHVua25vd24gYXMgSVdhbGxldCwgQUNDT1VOVCwgJ3Bhc3NwaHJhc2UnKSxcbiAgICAgIC9UU1Mgc2lnbmluZyBmYWlsZWQvXG4gICAgKTtcbiAgfSk7XG59KTtcbiJdfQ==