UNPKG

dotbit-sdk-allin

Version:

A complete .bit SDK and utilities in TypeScript

82 lines 3.61 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { SignTypedDataVersion, TypedDataUtils } from '@metamask/eth-sig-util'; import { AlgorithmId, EvmChainId2CoinType } from '../const'; import { BitErrorCode, DotbitError } from '../errors/DotbitError'; import { remove0x } from '../tools/common'; function isMMJson(txs) { return 'mm_json' in txs; } export function mmJsonHashAndChainIdHex(typedData, chainId) { const mmHash = TypedDataUtils.eip712Hash(typedData, SignTypedDataVersion.V4).toString('hex'); const chainIdHex = chainId.toString(16).padStart(16, '0'); return mmHash + chainIdHex; } export class BitSigner { signPersonal(data) { return this.signer.signMessage(data); } getAddress() { return this.signer.getAddress(); } getChainId() { return this.signer.getChainId(); } getCoinType() { return __awaiter(this, void 0, void 0, function* () { const chainId = yield this.getChainId(); const coinType = EvmChainId2CoinType[chainId]; if (!coinType) { throw new DotbitError(`Unsupported EVM chainId: ${chainId}`, BitErrorCode.UnsupportedEVMChainId); } return coinType; }); } signData(data, isEIP712) { return __awaiter(this, void 0, void 0, function* () { if (isEIP712) { return yield this.signTypedData(data); } else { return yield this.signPersonal(data); } }); } signTxList(txs) { return __awaiter(this, void 0, void 0, function* () { if (isMMJson(txs)) { for (const signItem of txs.sign_list) { if (signItem.sign_msg) { if (signItem.sign_type === AlgorithmId.eip712) { const mmJson = JSON.parse(JSON.stringify(txs.mm_json)); mmJson.message.digest = signItem.sign_msg; const signDataRes = yield this.signTypedData(mmJson); signItem.sign_msg = signDataRes + mmJsonHashAndChainIdHex(mmJson, mmJson.domain.chainId); } else { signItem.sign_msg = yield this.signData(Buffer.from(remove0x(signItem.sign_msg), 'hex')); } } } } else { for (const list of txs.list) { for (const signItem of list.sign_list) { if (signItem.sign_msg) { signItem.sign_msg = yield this.signData(Buffer.from(remove0x(signItem.sign_msg), 'hex')); } } } } return txs; }); } } //# sourceMappingURL=BitSigner.js.map