{"version":3,"sources":["../src/index.ts","../src/constants/address.ts","../src/constants/gas.ts","../src/constants/chain.ts","../src/types/hex.ts","../src/types/bcs/index.ts","../src/utils/b64.ts","../src/generated/runtime/serde/binarySerializer.ts","../src/generated/runtime/bcs/bcsSerializer.ts","../src/generated/runtime/serde/binaryDeserializer.ts","../src/generated/runtime/bcs/bcsDeserializer.ts","../src/generated/runtime/rooch_types/mod.ts","../src/types/bcs/move_string.ts","../src/types/bcs/move_ascii_string.ts","../src/types/bcs/u256.ts","../src/utils/mixin.ts","../src/utils/hex.ts","../src/utils/encode.ts","../src/utils/tx.ts","../src/utils/bytes.ts","../src/utils/crypto/signature.ts","../src/utils/crypto/mnemonics.ts","../src/utils/crypto/publickey.ts","../src/utils/crypto/keypair.ts","../src/utils/keypairs/ed25519/keypair.ts","../src/utils/keypairs/ed25519/publickey.ts","../src/utils/keypairs/ed25519/ed25519-hd-key.ts","../src/provider/json-rpc-provider.ts","../src/generated/client/client.ts","../src/auth/private-key-auth.ts","../src/account/account.ts"],"sourcesContent":["// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './constants'\nexport * from './types'\nexport * from './utils'\nexport * from './utils/crypto'\nexport * from './utils/keypairs'\nexport * from './provider'\nexport * from './auth'\nexport * from './account'\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nexport const ROOCH_ADDRESS_LENGTH = 64\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nexport const DEFAULT_MAX_GAS_AMOUNT = 1000000\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nconst LocalNetworkURL = 'http://127.0.0.1:50051'\nconst DevNetworkURL = 'https://dev-seed.rooch.network'\nconst TestNetworkURL = 'https://test-seed.rooch.network'\n\nconst LOCAL_CHAIN_ID = 0x134afd8\nconst DEV_CHAIN_ID = 0x134afd7\nconst TEST_CHAIN_ID = 0x134afd6\n// const MAIN_CHIAN_ID = 0x134afd5\n\nexport interface ChainInfo {\n  chainId: string\n  blockExplorerUrls?: string[]\n  chainName?: string\n  iconUrls?: string[]\n  nativeCurrency?: {\n    name: string\n    symbol: string\n    decimals: number\n  }\n  rpcUrls?: string[]\n}\n\ninterface ConnectionOptions {\n  url: string\n  websocket?: string\n}\n\nexport class Chain {\n  id: number\n  name: string\n  options: ConnectionOptions\n\n  constructor(id: number, name: string, options: ConnectionOptions) {\n    this.id = id\n    this.name = name\n    this.options = options\n  }\n\n  get url() {\n    return this.options.url\n  }\n\n  get websocket() {\n    return this.options.websocket || this.options.url\n  }\n\n  get info(): ChainInfo {\n    return {\n      chainId: `0x${this.id.toString(16)}`,\n      chainName: this.name,\n      iconUrls: [\n        'https://github.com/rooch-network/rooch/blob/main/docs/website/public/logo/rooch_black_text.png',\n      ],\n      nativeCurrency: {\n        name: 'ROH',\n        symbol: 'ROH',\n        decimals: 18,\n      },\n      rpcUrls: [this.options.url],\n    }\n  }\n}\n\nexport const LocalChain = new Chain(LOCAL_CHAIN_ID, 'local', {\n  url: LocalNetworkURL,\n})\n\nexport const DevChain = new Chain(DEV_CHAIN_ID, 'dev', {\n  url: DevNetworkURL,\n})\n\nexport const TestChain = new Chain(TEST_CHAIN_ID, 'test', {\n  url: TestNetworkURL,\n})\n\nexport const AllChain = [LocalChain, DevChain, TestChain]\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from '@noble/hashes/utils'\n\n/**\n * TODO:\n *\n * All bytes (Vec<u8>) data is represented as hex-encoded string prefixed with `0x` and fulfilled with\n * two hex digits per byte.\n *\n * Unlike the `Address` type, HexEncodedBytes will not trim any zeros.\n *\n */\nexport type HexEncodedBytes = string\n\nexport type MaybeHexString = HexString | string\n\n/**\n * A util class for working with hex strings.\n * Hex strings are strings that are prefixed with `0x`\n */\nexport class HexString {\n  /// We want to make sure this hexString has the `0x` hex prefix\n  private readonly hexString: string\n\n  /**\n   * Creates new hex string from Buffer\n   * @param buffer A buffer to convert\n   * @returns New HexString\n   */\n  static fromBuffer(buffer: Uint8Array): HexString {\n    return HexString.fromUint8Array(buffer)\n  }\n\n  /**\n   * Creates new hex string from Uint8Array\n   * @param arr Uint8Array to convert\n   * @returns New HexString\n   */\n  static fromUint8Array(arr: Uint8Array): HexString {\n    return new HexString(bytesToHex(arr))\n  }\n\n  /**\n   * Ensures `hexString` is instance of `HexString` class\n   * @param hexString String to check\n   * @returns New HexString if `hexString` is regular string or `hexString` if it is HexString instance\n   * @example\n   * ```\n   *  const regularString = \"string\";\n   *  const hexString = new HexString(\"string\"); // \"0xstring\"\n   *  HexString.ensure(regularString); // \"0xstring\"\n   *  HexString.ensure(hexString); // \"0xstring\"\n   * ```\n   */\n  static ensure(hexString: MaybeHexString): HexString {\n    if (typeof hexString === 'string') {\n      return new HexString(hexString)\n    }\n    return hexString\n  }\n\n  /**\n   * Creates new HexString instance from regular string. If specified string already starts with \"0x\" prefix,\n   * it will not add another one\n   * @param hexString String to convert\n   * @example\n   * ```\n   *  const string = \"string\";\n   *  new HexString(string); // \"0xstring\"\n   * ```\n   */\n  constructor(hexString: string | HexEncodedBytes) {\n    if (hexString.startsWith('0x')) {\n      this.hexString = hexString\n    } else {\n      this.hexString = `0x${hexString}`\n    }\n  }\n\n  /**\n   * Getter for inner hexString\n   * @returns Inner hex string\n   */\n  hex(): string {\n    return this.hexString\n  }\n\n  /**\n   * Getter for inner hexString without prefix\n   * @returns Inner hex string without prefix\n   * @example\n   * ```\n   *  const hexString = new HexString(\"string\"); // \"0xstring\"\n   *  hexString.noPrefix(); // \"string\"\n   * ```\n   */\n  noPrefix(): string {\n    return this.hexString.slice(2)\n  }\n\n  /**\n   * Overrides default `toString` method\n   * @returns Inner hex string\n   */\n  toString(): string {\n    return this.hex()\n  }\n\n  /**\n   * Trimmes extra zeroes in the begining of a string\n   * @returns Inner hexString without leading zeroes\n   * @example\n   * ```\n   *  new HexString(\"0x000000string\").toShortString(); // result = \"0xstring\"\n   * ```\n   */\n  toShortString(): string {\n    const trimmed = this.hexString.replace(/^0x0*/, '')\n    return `0x${trimmed}`\n  }\n\n  /**\n   * Converts hex string to a Uint8Array\n   * @returns Uint8Array from inner hexString without prefix\n   */\n  toUint8Array(): Uint8Array {\n    return Uint8Array.from(hexToBytes(this.noPrefix()))\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from '../../utils/b64'\nexport * from '../../generated/runtime/bcs/mod'\nexport * from '../../generated/runtime/serde/mod'\nexport * from '../../generated/runtime/rooch_types/mod'\nexport * from './move_string'\nexport * from './move_ascii_string'\nexport * from './u256'\n","// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable */\n\n/*\n|*  Base64 / binary data / UTF-8 strings utilities\n|*  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding\n\\*\n\n/* Array of bytes to Base64 string decoding */\n\nfunction b64ToUint6(nChr: number) {\n  return nChr > 64 && nChr < 91\n    ? nChr - 65\n    : nChr > 96 && nChr < 123\n    ? nChr - 71\n    : nChr > 47 && nChr < 58\n    ? nChr + 4\n    : nChr === 43\n    ? 62\n    : nChr === 47\n    ? 63\n    : 0\n}\n\nexport function fromB64(sBase64: string, nBlocksSize?: number): Uint8Array {\n  var sB64Enc = sBase64.replace(/[^A-Za-z0-9+/]/g, ''),\n    nInLen = sB64Enc.length,\n    nOutLen = nBlocksSize\n      ? Math.ceil(((nInLen * 3 + 1) >> 2) / nBlocksSize) * nBlocksSize\n      : (nInLen * 3 + 1) >> 2,\n    taBytes = new Uint8Array(nOutLen)\n\n  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n    nMod4 = nInIdx & 3\n    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4))\n    if (nMod4 === 3 || nInLen - nInIdx === 1) {\n      for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n        taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255\n      }\n      nUint24 = 0\n    }\n  }\n\n  return taBytes\n}\n\n/* Base64 string to array encoding */\n\nfunction uint6ToB64(nUint6: number) {\n  return nUint6 < 26\n    ? nUint6 + 65\n    : nUint6 < 52\n    ? nUint6 + 71\n    : nUint6 < 62\n    ? nUint6 - 4\n    : nUint6 === 62\n    ? 43\n    : nUint6 === 63\n    ? 47\n    : 65\n}\n\nexport function toB64(aBytes: Uint8Array): string {\n  var nMod3 = 2,\n    sB64Enc = ''\n\n  for (var nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n    nMod3 = nIdx % 3\n    nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24)\n    if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n      sB64Enc += String.fromCodePoint(\n        uint6ToB64((nUint24 >>> 18) & 63),\n        uint6ToB64((nUint24 >>> 12) & 63),\n        uint6ToB64((nUint24 >>> 6) & 63),\n        uint6ToB64(nUint24 & 63),\n      )\n      nUint24 = 0\n    }\n  }\n\n  return (\n    sB64Enc.slice(0, sB64Enc.length - 2 + nMod3) + (nMod3 === 2 ? '' : nMod3 === 1 ? '=' : '==')\n  )\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates\n * SPDX-License-Identifier: MIT OR Apache-2.0\n */\n\nimport { Serializer } from \"./serializer.ts\";\nimport * as util from \"@kayahr/text-encoding\";\n\nexport abstract class BinarySerializer implements Serializer {\n  private static readonly BIG_32: bigint = BigInt(32);\n  private static readonly BIG_64: bigint = BigInt(64);\n\n  private static readonly BIG_32Fs: bigint = BigInt(\"4294967295\");\n  private static readonly BIG_64Fs: bigint = BigInt(\"18446744073709551615\");\n\n  private static readonly textEncoder = typeof window === \"undefined\"\n    ? new util.TextEncoder()\n    : new TextEncoder();\n\n  private buffer: ArrayBuffer;\n  private offset: number;\n\n  constructor() {\n    this.buffer = new ArrayBuffer(64);\n    this.offset = 0;\n  }\n\n  private ensureBufferWillHandleSize(bytes: number) {\n    while (this.buffer.byteLength < this.offset + bytes) {\n      const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2);\n      new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n      this.buffer = newBuffer;\n    }\n  }\n\n  protected serialize(values: Uint8Array) {\n    this.ensureBufferWillHandleSize(values.length);\n    new Uint8Array(this.buffer, this.offset).set(values);\n    this.offset += values.length;\n  }\n\n  abstract serializeLen(value: number): void;\n\n  abstract serializeVariantIndex(value: number): void;\n\n  abstract sortMapEntries(offsets: number[]): void;\n\n  public serializeStr(value: string): void {\n    this.serializeBytes(BinarySerializer.textEncoder.encode(value));\n  }\n\n  public serializeBytes(value: Uint8Array): void {\n    this.serializeLen(value.length);\n    this.serialize(value);\n  }\n\n  public serializeBool(value: boolean): void {\n    const byteValue = value ? 1 : 0;\n    this.serialize(new Uint8Array([byteValue]));\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/explicit-module-boundary-types\n  public serializeUnit(_value: null): void {\n    return;\n  }\n\n  private serializeWithFunction(\n    fn: (byteOffset: number, value: number, littleEndian: boolean) => void,\n    bytesLength: number,\n    value: number,\n  ) {\n    this.ensureBufferWillHandleSize(bytesLength);\n    const dv = new DataView(this.buffer, this.offset);\n    fn.apply(dv, [0, value, true]);\n    this.offset += bytesLength;\n  }\n\n  public serializeU8(value: number): void {\n    this.serialize(new Uint8Array([value]));\n  }\n\n  public serializeU16(value: number): void {\n    this.serializeWithFunction(DataView.prototype.setUint16, 2, value);\n  }\n\n  public serializeU32(value: number): void {\n    this.serializeWithFunction(DataView.prototype.setUint32, 4, value);\n  }\n\n  public serializeU64(value: BigInt | number): void {\n    const low = BigInt(value.toString()) & BinarySerializer.BIG_32Fs;\n    const high = BigInt(value.toString()) >> BinarySerializer.BIG_32;\n\n    // write little endian number\n    this.serializeU32(Number(low));\n    this.serializeU32(Number(high));\n  }\n\n  public serializeU128(value: BigInt | number): void {\n    const low = BigInt(value.toString()) & BinarySerializer.BIG_64Fs;\n    const high = BigInt(value.toString()) >> BinarySerializer.BIG_64;\n\n    // write little endian number\n    this.serializeU64(low);\n    this.serializeU64(high);\n  }\n\n  public serializeI8(value: number): void {\n    const bytes = 1;\n    this.ensureBufferWillHandleSize(bytes);\n    new DataView(this.buffer, this.offset).setInt8(0, value);\n    this.offset += bytes;\n  }\n\n  public serializeI16(value: number): void {\n    const bytes = 2;\n    this.ensureBufferWillHandleSize(bytes);\n    new DataView(this.buffer, this.offset).setInt16(0, value, true);\n    this.offset += bytes;\n  }\n\n  public serializeI32(value: number): void {\n    const bytes = 4;\n    this.ensureBufferWillHandleSize(bytes);\n    new DataView(this.buffer, this.offset).setInt32(0, value, true);\n    this.offset += bytes;\n  }\n\n  public serializeI64(value: bigint | number): void {\n    const low = BigInt(value) & BinarySerializer.BIG_32Fs;\n    const high = BigInt(value) >> BinarySerializer.BIG_32;\n\n    // write little endian number\n    this.serializeI32(Number(low));\n    this.serializeI32(Number(high));\n  }\n\n  public serializeI128(value: bigint | number): void {\n    const low = BigInt(value) & BinarySerializer.BIG_64Fs;\n    const high = BigInt(value) >> BinarySerializer.BIG_64;\n\n    // write little endian number\n    this.serializeI64(low);\n    this.serializeI64(high);\n  }\n\n  public serializeOptionTag(value: boolean): void {\n    this.serializeBool(value);\n  }\n\n  public getBufferOffset(): number {\n    return this.offset;\n  }\n\n  public getBytes(): Uint8Array {\n    return new Uint8Array(this.buffer).slice(0, this.offset);\n  }\n\n  public serializeChar(_value: string): void {\n    throw new Error(\"Method serializeChar not implemented.\");\n  }\n\n  public serializeF32(value: number): void {\n    const bytes = 4;\n    this.ensureBufferWillHandleSize(bytes);\n    new DataView(this.buffer, this.offset).setFloat32(0, value, true);\n    this.offset += bytes;\n  }\n\n  public serializeF64(value: number): void {\n    const bytes = 8;\n    this.ensureBufferWillHandleSize(bytes);\n    new DataView(this.buffer, this.offset).setFloat64(0, value, true);\n    this.offset += bytes;\n  }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates\n * SPDX-License-Identifier: MIT OR Apache-2.0\n */\n\nimport { BinarySerializer } from \"../serde/binarySerializer.ts\";\n\nexport class BcsSerializer extends BinarySerializer {\n  public serializeU32AsUleb128(value: number): void {\n    const valueArray = [];\n    while (value >>> 7 != 0) {\n      valueArray.push((value & 0x7f) | 0x80);\n      value = value >>> 7;\n    }\n    valueArray.push(value);\n    this.serialize(new Uint8Array(valueArray));\n  }\n\n  serializeLen(value: number): void {\n    this.serializeU32AsUleb128(value);\n  }\n\n  public serializeVariantIndex(value: number): void {\n    this.serializeU32AsUleb128(value);\n  }\n\n  public sortMapEntries(_offsets: number[]) {\n    // TODO(#119)\n  }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates\n * SPDX-License-Identifier: MIT OR Apache-2.0\n */\n\nimport { Deserializer } from \"./deserializer.ts\";\nimport * as util from \"@kayahr/text-encoding\";\n\nexport abstract class BinaryDeserializer implements Deserializer {\n  private static readonly BIG_32: bigint = BigInt(32);\n  private static readonly BIG_64: bigint = BigInt(64);\n  private static readonly textDecoder = typeof window === \"undefined\"\n    ? new util.TextDecoder()\n    : new TextDecoder();\n  public buffer: ArrayBuffer;\n  public offset: number;\n\n  constructor(data: Uint8Array) {\n    // copies data to prevent outside mutation of buffer.\n    this.buffer = new ArrayBuffer(data.length);\n    new Uint8Array(this.buffer).set(data, 0);\n    this.offset = 0;\n  }\n\n  private read(length: number): ArrayBuffer {\n    const bytes = this.buffer.slice(this.offset, this.offset + length);\n    this.offset += length;\n    return bytes;\n  }\n\n  abstract deserializeLen(): number;\n\n  abstract deserializeVariantIndex(): number;\n\n  abstract checkThatKeySlicesAreIncreasing(\n    key1: [number, number],\n    key2: [number, number],\n  ): void;\n\n  public deserializeStr(): string {\n    const value = this.deserializeBytes();\n    return BinaryDeserializer.textDecoder.decode(value);\n  }\n\n  public deserializeBytes(): Uint8Array {\n    const len = this.deserializeLen();\n    if (len < 0) {\n      throw new Error(\"Length of a bytes array can't be negative\");\n    }\n    return new Uint8Array(this.read(len));\n  }\n\n  public deserializeBool(): boolean {\n    const bool = new Uint8Array(this.read(1))[0];\n    return bool == 1;\n  }\n\n  public deserializeUnit(): null {\n    return null;\n  }\n\n  public deserializeU8(): number {\n    return new DataView(this.read(1)).getUint8(0);\n  }\n\n  public deserializeU16(): number {\n    return new DataView(this.read(2)).getUint16(0, true);\n  }\n\n  public deserializeU32(): number {\n    return new DataView(this.read(4)).getUint32(0, true);\n  }\n\n  public deserializeU64(): bigint {\n    const low = this.deserializeU32();\n    const high = this.deserializeU32();\n\n    // combine the two 32-bit values and return (little endian)\n    return BigInt(\n      (BigInt(high.toString()) << BinaryDeserializer.BIG_32) |\n        BigInt(low.toString()),\n    );\n  }\n\n  public deserializeU128(): bigint {\n    const low = this.deserializeU64();\n    const high = this.deserializeU64();\n\n    // combine the two 64-bit values and return (little endian)\n    return BigInt(\n      (BigInt(high.toString()) << BinaryDeserializer.BIG_64) |\n        BigInt(low.toString()),\n    );\n  }\n\n  public deserializeI8(): number {\n    return new DataView(this.read(1)).getInt8(0);\n  }\n\n  public deserializeI16(): number {\n    return new DataView(this.read(2)).getInt16(0, true);\n  }\n\n  public deserializeI32(): number {\n    return new DataView(this.read(4)).getInt32(0, true);\n  }\n\n  public deserializeI64(): bigint {\n    const low = this.deserializeI32();\n    const high = this.deserializeI32();\n\n    // combine the two 32-bit values and return (little endian)\n    return (BigInt(high.toString()) << BinaryDeserializer.BIG_32) |\n      BigInt(low.toString());\n  }\n\n  public deserializeI128(): bigint {\n    const low = this.deserializeI64();\n    const high = this.deserializeI64();\n\n    // combine the two 64-bit values and return (little endian)\n    return (BigInt(high.toString()) << BinaryDeserializer.BIG_64) |\n      BigInt(low.toString());\n  }\n\n  public deserializeOptionTag(): boolean {\n    return this.deserializeBool();\n  }\n\n  public getBufferOffset(): number {\n    return this.offset;\n  }\n\n  public deserializeChar(): string {\n    throw new Error(\"Method deserializeChar not implemented.\");\n  }\n\n  public deserializeF32(): number {\n    return new DataView(this.read(4)).getFloat32(0, true);\n  }\n\n  public deserializeF64(): number {\n    return new DataView(this.read(8)).getFloat64(0, true);\n  }\n}\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates\n * SPDX-License-Identifier: MIT OR Apache-2.0\n */\n\nimport { BinaryDeserializer } from \"../serde/binaryDeserializer.ts\";\n\nexport class BcsDeserializer extends BinaryDeserializer {\n  private static readonly MAX_UINT_32 = 2 ** 32 - 1;\n\n  public deserializeUleb128AsU32(): number {\n    let value = 0;\n    for (let shift = 0; shift < 32; shift += 7) {\n      const x = this.deserializeU8();\n      const digit = x & 0x7f;\n      value = value | (digit << shift);\n      if (value < 0 || value > BcsDeserializer.MAX_UINT_32) {\n        throw new Error(\"Overflow while parsing uleb128-encoded uint32 value\");\n      }\n      if (digit == x) {\n        if (shift > 0 && digit == 0) {\n          throw new Error(\"Invalid uleb128 number (unexpected zero digit)\");\n        }\n        return value;\n      }\n    }\n    throw new Error(\"Overflow while parsing uleb128-encoded uint32 value\");\n  }\n\n  deserializeLen(): number {\n    return this.deserializeUleb128AsU32();\n  }\n\n  public deserializeVariantIndex(): number {\n    return this.deserializeUleb128AsU32();\n  }\n\n  public checkThatKeySlicesAreIncreasing(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _key1: [number, number],\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _key2: [number, number],\n  ): void {\n    // TODO(#119)\n    return;\n  }\n}\n","\nimport { Serializer, Deserializer } from '../serde/mod.ts';\nimport { BcsSerializer, BcsDeserializer } from '../bcs/mod.ts';\nimport { Optional, Seq, Tuple, ListTuple, unit, bool, int8, int16, int32, int64, int128, uint8, uint16, uint32, uint64, uint128, float32, float64, char, str, bytes } from '../serde/mod.ts';\n\nexport class AccountAddress {\n\nconstructor (public value: ListTuple<[uint8]>) {\n}\n\npublic serialize(serializer: Serializer): void {\n  Helpers.serializeArray32U8Array(this.value, serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): AccountAddress {\n  const value = Helpers.deserializeArray32U8Array(deserializer);\n  return new AccountAddress(value);\n}\n\n}\nexport class Authenticator {\n\nconstructor (public auth_validator_id: uint64, public payload: Seq<uint8>) {\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeU64(this.auth_validator_id);\n  Helpers.serializeVectorU8(this.payload, serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): Authenticator {\n  const auth_validator_id = deserializer.deserializeU64();\n  const payload = Helpers.deserializeVectorU8(deserializer);\n  return new Authenticator(auth_validator_id,payload);\n}\n\n}\nexport class FunctionCall {\n\nconstructor (public function_id: FunctionId, public ty_args: Seq<TypeTag>, public args: Seq<Seq<uint8>>) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.function_id.serialize(serializer);\n  Helpers.serializeVectorTypeTag(this.ty_args, serializer);\n  Helpers.serializeVectorVectorU8(this.args, serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): FunctionCall {\n  const function_id = FunctionId.deserialize(deserializer);\n  const ty_args = Helpers.deserializeVectorTypeTag(deserializer);\n  const args = Helpers.deserializeVectorVectorU8(deserializer);\n  return new FunctionCall(function_id,ty_args,args);\n}\n\n}\nexport class FunctionId {\n\nconstructor (public module_id: ModuleId, public function_name: Identifier) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.module_id.serialize(serializer);\n  this.function_name.serialize(serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): FunctionId {\n  const module_id = ModuleId.deserialize(deserializer);\n  const function_name = Identifier.deserialize(deserializer);\n  return new FunctionId(module_id,function_name);\n}\n\n}\nexport class Identifier {\n\nconstructor (public value: str) {\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeStr(this.value);\n}\n\nstatic deserialize(deserializer: Deserializer): Identifier {\n  const value = deserializer.deserializeStr();\n  return new Identifier(value);\n}\n\n}\nexport class ModuleId {\n\nconstructor (public address: AccountAddress, public name: Identifier) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.address.serialize(serializer);\n  this.name.serialize(serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): ModuleId {\n  const address = AccountAddress.deserialize(deserializer);\n  const name = Identifier.deserialize(deserializer);\n  return new ModuleId(address,name);\n}\n\n}\nexport abstract class MoveAction {\nabstract serialize(serializer: Serializer): void;\n\nstatic deserialize(deserializer: Deserializer): MoveAction {\n  const index = deserializer.deserializeVariantIndex();\n  switch (index) {\n    case 0: return MoveActionVariantScript.load(deserializer);\n    case 1: return MoveActionVariantFunction.load(deserializer);\n    case 2: return MoveActionVariantModuleBundle.load(deserializer);\n    default: throw new Error(\"Unknown variant index for MoveAction: \" + index);\n  }\n}\n}\n\n\nexport class MoveActionVariantScript extends MoveAction {\n\nconstructor (public value: ScriptCall) {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(0);\n  this.value.serialize(serializer);\n}\n\nstatic load(deserializer: Deserializer): MoveActionVariantScript {\n  const value = ScriptCall.deserialize(deserializer);\n  return new MoveActionVariantScript(value);\n}\n\n}\n\nexport class MoveActionVariantFunction extends MoveAction {\n\nconstructor (public value: FunctionCall) {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(1);\n  this.value.serialize(serializer);\n}\n\nstatic load(deserializer: Deserializer): MoveActionVariantFunction {\n  const value = FunctionCall.deserialize(deserializer);\n  return new MoveActionVariantFunction(value);\n}\n\n}\n\nexport class MoveActionVariantModuleBundle extends MoveAction {\n\nconstructor (public value: Seq<Seq<uint8>>) {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(2);\n  Helpers.serializeVectorVectorU8(this.value, serializer);\n}\n\nstatic load(deserializer: Deserializer): MoveActionVariantModuleBundle {\n  const value = Helpers.deserializeVectorVectorU8(deserializer);\n  return new MoveActionVariantModuleBundle(value);\n}\n\n}\nexport class RoochTransaction {\n\nconstructor (public data: RoochTransactionData, public authenticator: Authenticator) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.data.serialize(serializer);\n  this.authenticator.serialize(serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): RoochTransaction {\n  const data = RoochTransactionData.deserialize(deserializer);\n  const authenticator = Authenticator.deserialize(deserializer);\n  return new RoochTransaction(data,authenticator);\n}\n\n}\nexport class RoochTransactionData {\n\nconstructor (public sender: AccountAddress, public sequence_number: uint64, public chain_id: uint64, public max_gas_amount: uint64, public action: MoveAction) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.sender.serialize(serializer);\n  serializer.serializeU64(this.sequence_number);\n  serializer.serializeU64(this.chain_id);\n  serializer.serializeU64(this.max_gas_amount);\n  this.action.serialize(serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): RoochTransactionData {\n  const sender = AccountAddress.deserialize(deserializer);\n  const sequence_number = deserializer.deserializeU64();\n  const chain_id = deserializer.deserializeU64();\n  const max_gas_amount = deserializer.deserializeU64();\n  const action = MoveAction.deserialize(deserializer);\n  return new RoochTransactionData(sender,sequence_number,chain_id,max_gas_amount,action);\n}\n\n}\nexport class ScriptCall {\n\nconstructor (public code: bytes, public ty_args: Seq<TypeTag>, public args: Seq<Seq<uint8>>) {\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeBytes(this.code);\n  Helpers.serializeVectorTypeTag(this.ty_args, serializer);\n  Helpers.serializeVectorVectorU8(this.args, serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): ScriptCall {\n  const code = deserializer.deserializeBytes();\n  const ty_args = Helpers.deserializeVectorTypeTag(deserializer);\n  const args = Helpers.deserializeVectorVectorU8(deserializer);\n  return new ScriptCall(code,ty_args,args);\n}\n\n}\nexport class StructTag {\n\nconstructor (public address: AccountAddress, public module: Identifier, public name: Identifier, public type_args: Seq<TypeTag>) {\n}\n\npublic serialize(serializer: Serializer): void {\n  this.address.serialize(serializer);\n  this.module.serialize(serializer);\n  this.name.serialize(serializer);\n  Helpers.serializeVectorTypeTag(this.type_args, serializer);\n}\n\nstatic deserialize(deserializer: Deserializer): StructTag {\n  const address = AccountAddress.deserialize(deserializer);\n  const module = Identifier.deserialize(deserializer);\n  const name = Identifier.deserialize(deserializer);\n  const type_args = Helpers.deserializeVectorTypeTag(deserializer);\n  return new StructTag(address,module,name,type_args);\n}\n\n}\nexport abstract class TypeTag {\nabstract serialize(serializer: Serializer): void;\n\nstatic deserialize(deserializer: Deserializer): TypeTag {\n  const index = deserializer.deserializeVariantIndex();\n  switch (index) {\n    case 0: return TypeTagVariantbool.load(deserializer);\n    case 1: return TypeTagVariantu8.load(deserializer);\n    case 2: return TypeTagVariantu64.load(deserializer);\n    case 3: return TypeTagVariantu128.load(deserializer);\n    case 4: return TypeTagVariantaddress.load(deserializer);\n    case 5: return TypeTagVariantsigner.load(deserializer);\n    case 6: return TypeTagVariantvector.load(deserializer);\n    case 7: return TypeTagVariantstruct.load(deserializer);\n    case 8: return TypeTagVariantu16.load(deserializer);\n    case 9: return TypeTagVariantu32.load(deserializer);\n    case 10: return TypeTagVariantu256.load(deserializer);\n    default: throw new Error(\"Unknown variant index for TypeTag: \" + index);\n  }\n}\n}\n\n\nexport class TypeTagVariantbool extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(0);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantbool {\n  return new TypeTagVariantbool();\n}\n\n}\n\nexport class TypeTagVariantu8 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(1);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu8 {\n  return new TypeTagVariantu8();\n}\n\n}\n\nexport class TypeTagVariantu64 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(2);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu64 {\n  return new TypeTagVariantu64();\n}\n\n}\n\nexport class TypeTagVariantu128 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(3);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu128 {\n  return new TypeTagVariantu128();\n}\n\n}\n\nexport class TypeTagVariantaddress extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(4);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantaddress {\n  return new TypeTagVariantaddress();\n}\n\n}\n\nexport class TypeTagVariantsigner extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(5);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantsigner {\n  return new TypeTagVariantsigner();\n}\n\n}\n\nexport class TypeTagVariantvector extends TypeTag {\n\nconstructor (public value: TypeTag) {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(6);\n  this.value.serialize(serializer);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantvector {\n  const value = TypeTag.deserialize(deserializer);\n  return new TypeTagVariantvector(value);\n}\n\n}\n\nexport class TypeTagVariantstruct extends TypeTag {\n\nconstructor (public value: StructTag) {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(7);\n  this.value.serialize(serializer);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantstruct {\n  const value = StructTag.deserialize(deserializer);\n  return new TypeTagVariantstruct(value);\n}\n\n}\n\nexport class TypeTagVariantu16 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(8);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu16 {\n  return new TypeTagVariantu16();\n}\n\n}\n\nexport class TypeTagVariantu32 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(9);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu32 {\n  return new TypeTagVariantu32();\n}\n\n}\n\nexport class TypeTagVariantu256 extends TypeTag {\nconstructor () {\n  super();\n}\n\npublic serialize(serializer: Serializer): void {\n  serializer.serializeVariantIndex(10);\n}\n\nstatic load(deserializer: Deserializer): TypeTagVariantu256 {\n  return new TypeTagVariantu256();\n}\n\n}\nexport class Helpers {\n  static serializeArray32U8Array(value: ListTuple<[uint8]>, serializer: Serializer): void {\n    value.forEach((item) =>{\n        serializer.serializeU8(item[0]);\n    });\n  }\n\n  static deserializeArray32U8Array(deserializer: Deserializer): ListTuple<[uint8]> {\n    const list: ListTuple<[uint8]> = [];\n    for (let i = 0; i < 32; i++) {\n        list.push([deserializer.deserializeU8()]);\n    }\n    return list;\n  }\n\n  static serializeVectorTypeTag(value: Seq<TypeTag>, serializer: Serializer): void {\n    serializer.serializeLen(value.length);\n    value.forEach((item: TypeTag) => {\n        item.serialize(serializer);\n    });\n  }\n\n  static deserializeVectorTypeTag(deserializer: Deserializer): Seq<TypeTag> {\n    const length = deserializer.deserializeLen();\n    const list: Seq<TypeTag> = [];\n    for (let i = 0; i < length; i++) {\n        list.push(TypeTag.deserialize(deserializer));\n    }\n    return list;\n  }\n\n  static serializeVectorU8(value: Seq<uint8>, serializer: Serializer): void {\n    serializer.serializeLen(value.length);\n    value.forEach((item: uint8) => {\n        serializer.serializeU8(item);\n    });\n  }\n\n  static deserializeVectorU8(deserializer: Deserializer): Seq<uint8> {\n    const length = deserializer.deserializeLen();\n    const list: Seq<uint8> = [];\n    for (let i = 0; i < length; i++) {\n        list.push(deserializer.deserializeU8());\n    }\n    return list;\n  }\n\n  static serializeVectorVectorU8(value: Seq<Seq<uint8>>, serializer: Serializer): void {\n    serializer.serializeLen(value.length);\n    value.forEach((item: Seq<uint8>) => {\n        Helpers.serializeVectorU8(item, serializer);\n    });\n  }\n\n  static deserializeVectorVectorU8(deserializer: Deserializer): Seq<Seq<uint8>> {\n    const length = deserializer.deserializeLen();\n    const list: Seq<Seq<uint8>> = [];\n    for (let i = 0; i < length; i++) {\n        list.push(Helpers.deserializeVectorU8(deserializer));\n    }\n    return list;\n  }\n\n}\n\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializer, Deserializer } from '../../generated/runtime/serde/mod'\nimport { Seq, uint8 } from '../../generated/runtime/serde/mod'\nimport { Helpers } from '../../generated/runtime/rooch_types/mod'\n\nexport class MoveString {\n  private bytes: Seq<uint8>\n\n  constructor(bytes: Seq<uint8>) {\n    this.bytes = bytes\n  }\n\n  public serialize(serializer: Serializer): void {\n    Helpers.serializeVectorU8(this.bytes, serializer)\n  }\n\n  static deserialize(deserializer: Deserializer): MoveString {\n    const bytes = Helpers.deserializeVectorU8(deserializer)\n    return new MoveString(bytes)\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Serializer, Deserializer } from '../../generated/runtime/serde/mod'\nimport { Seq, uint8 } from '../../generated/runtime/serde/mod'\nimport { Helpers } from '../../generated/runtime/rooch_types/mod'\n\nexport class MoveAsciiString {\n  private bytes: Seq<uint8>\n\n  constructor(bytes: Seq<uint8>) {\n    this.bytes = bytes\n  }\n\n  public serialize(serializer: Serializer): void {\n    Helpers.serializeVectorU8(this.bytes, serializer)\n  }\n\n  static deserialize(deserializer: Deserializer): MoveAsciiString {\n    const bytes = Helpers.deserializeVectorU8(deserializer)\n    return new MoveAsciiString(bytes)\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { BcsSerializer } from '../../generated/runtime/bcs/mod'\n\nconst BIG_128Fs = BigInt('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')\nconst BIG_128 = BigInt(128)\n\nexport function serializeU256(se: BcsSerializer, value: bigint | number) {\n  const low = BigInt(value.toString()) & BIG_128Fs\n  const high = BigInt(value.toString()) >> BIG_128\n\n  // write little endian number\n  se.serializeU128(low)\n  se.serializeU128(high)\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\n/**\nIn TypeScript, we can’t inherit or extend from more than one class,\nMixins helps us to get around that by creating a partial classes \nthat we can combine to form a single class that contains all the methods and properties from the partial classes.\n{@link https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern}\n*/\nexport function applyMixin(targetClass: any, baseClass: any, baseClassProp: string) {\n  // Mixin instance methods\n  Object.getOwnPropertyNames(baseClass.prototype).forEach((propertyName) => {\n    const propertyDescriptor = Object.getOwnPropertyDescriptor(baseClass.prototype, propertyName)\n    if (!propertyDescriptor) return\n    // eslint-disable-next-line func-names\n    propertyDescriptor.value = function (...args: any) {\n      return (this as any)[baseClassProp][propertyName](...args)\n    }\n    Object.defineProperty(targetClass.prototype, propertyName, propertyDescriptor)\n  })\n  // Mixin static methods\n  Object.getOwnPropertyNames(baseClass).forEach((propertyName) => {\n    const propertyDescriptor = Object.getOwnPropertyDescriptor(baseClass, propertyName)\n    if (!propertyDescriptor) return\n    // eslint-disable-next-line func-names\n    propertyDescriptor.value = function (...args: any) {\n      return (this as any)[baseClassProp][propertyName](...args)\n    }\n    if (targetClass.hasOwnProperty.call(targetClass, propertyName)) {\n      // The mixin has already been applied, so skip applying it again\n      return\n    }\n    Object.defineProperty(targetClass, propertyName, propertyDescriptor)\n  })\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\nimport { Buffer } from 'buffer'\n\nexport function toHexString(byteArray: Iterable<number>): string {\n  return `0x${Buffer.from(new Uint8Array(byteArray)).toString('hex')}`\n}\n\nexport function fromHexString(hex: string, padding?: number): Uint8Array {\n  let hexWithoutPrefix = hex.startsWith('0x') ? hex.substring(2) : hex\n\n  if (padding && hexWithoutPrefix.length < padding) {\n    hexWithoutPrefix = padLeft(hexWithoutPrefix, padding)\n  } else if (!padding && hexWithoutPrefix.length % 2 !== 0) {\n    hexWithoutPrefix = `0${hexWithoutPrefix}`\n  }\n\n  const buf = Buffer.from(hexWithoutPrefix, 'hex')\n  return new Uint8Array(buf)\n}\n\n/**\n * @public\n * Should be called to pad string to expected length\n */\nexport function padLeft(str: string, chars: number, sign: string = '0') {\n  return new Array(chars - str.length + 1).join(sign) + str\n}\n\n/**\n * @public\n * Should be called to pad string to expected length\n */\nexport function padRight(str: string, chars: number, sign: string = '0') {\n  return str + new Array(chars - str.length + 1).join(sign)\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\nimport { ROOCH_ADDRESS_LENGTH } from '../constants'\nimport { FunctionId, AccountAddress, Identifier, TypeTag } from '../types'\n\nexport function functionIdToStirng(functionId: FunctionId): string {\n  if (typeof functionId !== 'string') {\n    if (functionId instanceof Object) {\n      return `${functionId.address}::${functionId.module}::${functionId.functionName}`\n    }\n  }\n  return functionId\n}\n\nexport function parseFunctionId(functionId: FunctionId): {\n  address: AccountAddress\n  module: Identifier\n  functionName: Identifier\n} {\n  if (typeof functionId !== 'string') {\n    return functionId\n  }\n  const parts = functionId.split('::', 3)\n\n  if (parts.length !== 3) {\n    throw new Error(`cannot parse ${functionId} into FunctionId`)\n  }\n\n  return {\n    address: normalizeRoochAddress(parts[0]),\n    module: parts[1],\n    functionName: parts[2],\n  }\n}\n\n/**\n * Perform the following operations:\n * 1. Make the address lower case\n * 2. Prepend `0x` if the string does not start with `0x`.\n * 3. Add more zeros if the length of the address(excluding `0x`) is less than `Rooch_ADDRESS_LENGTH`\n *\n * WARNING: if the address value itself starts with `0x`, e.g., `0x0x`, the default behavior\n * is to treat the first `0x` not as part of the address. The default behavior can be overridden by\n * setting `forceAdd0x` to true\n *\n */\nexport function normalizeRoochAddress(value: string, forceAdd0x: boolean = false): string {\n  let address = value.toLowerCase()\n  if (!forceAdd0x && address.startsWith('0x')) {\n    address = address.slice(2)\n  }\n  return `0x${address.padStart(ROOCH_ADDRESS_LENGTH, '0')}`\n}\n\nexport function typeTagToString(type_tag: TypeTag): string {\n  if (typeof type_tag === 'string') {\n    return type_tag\n  }\n\n  if ('Vector' in type_tag) {\n    return `Vector<${typeTagToString(type_tag.Vector)}>`\n  }\n\n  if ('Struct' in type_tag) {\n    const struct = type_tag.Struct\n    let result = `${struct.address}::${struct.module}::${struct.name}`\n    if (struct.type_params) {\n      const params = struct.type_params.map(typeTagToString).join(', ')\n      result += `<${params}>`\n    }\n    return result\n  }\n\n  throw new Error(`Unknown type tag: ${JSON.stringify(type_tag)}`)\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\nimport { fromHexString } from './hex'\nimport { ROOCH_ADDRESS_LENGTH } from '../constants'\nimport { AccountAddress, FunctionId, TypeTag, StructTag, Arg } from '../types'\nimport * as rooch_types from '../types/bcs'\nimport {\n  bytes as Bytes,\n  Seq,\n  Tuple,\n  ListTuple,\n  uint8,\n  BcsSerializer,\n  serializeU256,\n} from '../types/bcs'\nimport { parseFunctionId, normalizeRoochAddress } from './encode'\n\nexport function encodeFunctionCall(\n  functionId: FunctionId,\n  tyArgs: TypeTag[],\n  args: Bytes[],\n): rooch_types.MoveActionVariantFunction {\n  const funcId = parseFunctionId(functionId)\n\n  const functionCall = new rooch_types.FunctionCall(\n    new rooch_types.FunctionId(\n      new rooch_types.ModuleId(\n        addressToSCS(funcId.address),\n        new rooch_types.Identifier(funcId.module),\n      ),\n      new rooch_types.Identifier(funcId.functionName),\n    ),\n    tyArgs.map((t) => typeTagToSCS(t)),\n    bytesArrayToSeqSeq(args),\n  )\n\n  return new rooch_types.MoveActionVariantFunction(functionCall)\n}\n\nexport function typeTagToSCS(ty: TypeTag): rooch_types.TypeTag {\n  if (ty === 'Bool') {\n    return new rooch_types.TypeTagVariantbool()\n  }\n  if (ty === 'U8') {\n    return new rooch_types.TypeTagVariantu8()\n  }\n  if (ty === 'U16') {\n    return new rooch_types.TypeTagVariantu16()\n  }\n  if (ty === 'U32') {\n    return new rooch_types.TypeTagVariantu32()\n  }\n  if (ty === 'U64') {\n    return new rooch_types.TypeTagVariantu64()\n  }\n  if (ty === 'U128') {\n    return new rooch_types.TypeTagVariantu128()\n  }\n  if (ty === 'U256') {\n    return new rooch_types.TypeTagVariantu256()\n  }\n  if (ty === 'Address') {\n    return new rooch_types.TypeTagVariantaddress()\n  }\n  if (ty === 'Signer') {\n    return new rooch_types.TypeTagVariantsigner()\n  }\n  if ((ty as { Vector: TypeTag }).Vector) {\n    return new rooch_types.TypeTagVariantvector(typeTagToSCS((ty as { Vector: TypeTag }).Vector))\n  }\n  if ((ty as { Struct: StructTag }).Struct) {\n    return new rooch_types.TypeTagVariantstruct(\n      structTagToSCS((ty as { Struct: StructTag }).Struct),\n    )\n  }\n  throw new Error(`invalid type tag: ${ty}`)\n}\n\nexport function structTagToSCS(data: StructTag): rooch_types.StructTag {\n  return new rooch_types.StructTag(\n    addressToSCS(data.address),\n    new rooch_types.Identifier(data.module),\n    new rooch_types.Identifier(data.name),\n    data.type_params ? data.type_params.map((t) => typeTagToSCS(t)) : [],\n  )\n}\n\nexport function addressToSCS(addr: AccountAddress): rooch_types.AccountAddress {\n  // AccountAddress should be 16 bytes, in hex, it's 16 * 2.\n  const bytes = fromHexString(addr, 16 * 2)\n  const data: [number][] = []\n  for (let i = 0; i < bytes.length; i++) {\n    data.push([bytes[i]])\n  }\n  return new rooch_types.AccountAddress(data)\n}\n\nexport function encodeStructTypeTags(typeArgsString: string[]): TypeTag[] {\n  return typeArgsString.map((str) => encodeStructTypeTag(str))\n}\n\nfunction encodeStructTypeTag(str: string): TypeTag {\n  const arr = str.split('<')\n  const arr1 = arr[0].split('::')\n  const address = arr1[0]\n  const module = arr1[1]\n  const name = arr1[2]\n\n  const params = arr[1] ? arr[1].replace('>', '').split(',') : []\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  const type_params: TypeTag[] = []\n  if (params.length > 0) {\n    params.forEach((param: string) => {\n      type_params.push(encodeStructTypeTag(param.trim()))\n    })\n  }\n\n  const result: TypeTag = {\n    Struct: {\n      address,\n      module,\n      name,\n      type_params,\n    },\n  }\n  return result\n}\n\nfunction bytesToSeq(byteArray: Bytes): Seq<number> {\n  return Array.from(byteArray)\n}\n\nfunction stringToSeq(str: string): Seq<number> {\n  const seq = new Array<number>()\n  for (let i = 0; i < str.length; i++) {\n    seq.push(str.charCodeAt(i))\n  }\n  return seq\n}\n\nfunction bytesArrayToSeqSeq(input: Bytes[]): Seq<Seq<number>> {\n  return input.map((byteArray) => bytesToSeq(byteArray))\n}\n\nexport function addressToListTuple(ethAddress: string): ListTuple<[uint8]> {\n  // Remove '0x' prefix\n  const cleanedEthAddress = ethAddress.startsWith('0x') ? ethAddress.slice(2) : ethAddress\n\n  // Check if the address is valid\n  if (cleanedEthAddress.length !== ROOCH_ADDRESS_LENGTH) {\n    throw new Error('Invalid Rooch address')\n  }\n\n  // Convert to list of tuples\n  const listTuple: ListTuple<[uint8]> = []\n  for (let i = 0; i < cleanedEthAddress.length; i += 2) {\n    const byte = parseInt(cleanedEthAddress.slice(i, i + 2), 16)\n    listTuple.push([byte] as Tuple<[uint8]>)\n  }\n\n  return listTuple\n}\n\nexport function addressToSeqNumber(ethAddress: string): Seq<number> {\n  // Remove '0x' prefix\n  const cleanedEthAddress = ethAddress.startsWith('0x') ? ethAddress.slice(2) : ethAddress\n\n  // Check if the address is valid\n  if (cleanedEthAddress.length !== ROOCH_ADDRESS_LENGTH) {\n    throw new Error('Invalid Ethereum address')\n  }\n\n  // Convert to list of tuples\n  const seqNumber: Seq<number> = []\n  for (let i = 0; i < cleanedEthAddress.length; i += 2) {\n    const byte = parseInt(cleanedEthAddress.slice(i, i + 2), 16)\n    seqNumber.push(byte)\n  }\n\n  return seqNumber\n}\n\nfunction serializeValue(value: any, type: TypeTag, se: BcsSerializer) {\n  if (type === 'Bool') {\n    se.serializeBool(value)\n  } else if (type === 'U8') {\n    se.serializeU8(value)\n  } else if (type === 'U16') {\n    se.serializeU16(value)\n  } else if (type === 'U32') {\n    se.serializeU32(value)\n  } else if (type === 'U64') {\n    se.serializeU64(value)\n  } else if (type === 'U128') {\n    se.serializeU128(value)\n  } else if (type === 'U256') {\n    serializeU256(se, value)\n  } else if (type === 'Address') {\n    const list = addressToListTuple(normalizeRoochAddress(value as string))\n    const accountAddress = new rooch_types.AccountAddress(list)\n    accountAddress.serialize(se)\n  } else if (type === 'Ascii') {\n    const bytes = stringToSeq(value as string)\n    const moveAsciiString = new rooch_types.MoveAsciiString(bytes)\n    moveAsciiString.serialize(se)\n  } else if (type === 'String') {\n    const bytes = stringToSeq(value as string)\n    const moveString = new rooch_types.MoveString(bytes)\n    moveString.serialize(se)\n  } else if ((type as { Vector: TypeTag }).Vector) {\n    const vectorValues = value as any[]\n    se.serializeLen(vectorValues.length)\n\n    for (let item of vectorValues) {\n      serializeValue(item, (type as { Vector: TypeTag }).Vector, se)\n    }\n  }\n}\n\nexport function encodeArg(arg: Arg): Bytes {\n  const se = new BcsSerializer()\n  serializeValue(arg.value, arg.type, se)\n  return se.getBytes()\n}\n\nexport const encodeMoveCallData = (funcId: FunctionId, tyArgs: TypeTag[], args: Arg[]) => {\n  const bcsArgs = args?.map((arg) => encodeArg(arg))\n  const scriptFunction = encodeFunctionCall(funcId, tyArgs, bcsArgs)\n\n  const payloadInHex = (() => {\n    const se = new BcsSerializer()\n    scriptFunction.serialize(se)\n    return se.getBytes()\n  })()\n\n  return payloadInHex\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\nimport { Seq } from '../generated/runtime/serde/mod'\n\nexport function uint8Array2SeqNumber(bytes: Uint8Array): Seq<number> {\n  return Array.from(bytes, (byte) => byte)\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PublicKey } from './publickey'\n\n// TODO MultiSig\nexport type SignatureScheme = 'ED25519'\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n  signatureScheme: SignatureScheme\n  /** Base64-encoded signature */\n  signature: Uint8Array\n  /** Base64-encoded public key */\n  pubKey: PublicKey\n}\n\n/**\n * (`flag || signature || pubkey` bytes, as base-64 encoded string).\n * Signature is committed to the intent message of the transaction data, as base-64 encoded string.\n */\nexport type SerializedSignature = Uint8Array\n\nexport const SIGNATURE_SCHEME_TO_FLAG = {\n  ED25519: 0x00,\n}\n\nexport const SIGNATURE_FLAG_TO_SCHEME = {\n  0x00: 'ED25519',\n} as const\n\nexport type SignatureFlag = keyof typeof SIGNATURE_FLAG_TO_SCHEME\n\nexport function toSerializedSignature({\n  signature,\n  signatureScheme,\n  pubKey,\n}: SignaturePubkeyPair): SerializedSignature {\n  const pubKeyBytes = pubKey.toBytes()\n  const serializedSignature = new Uint8Array(1 + signature.length + pubKeyBytes.length)\n  serializedSignature.set([SIGNATURE_SCHEME_TO_FLAG[signatureScheme]])\n  serializedSignature.set(signature, 1)\n  serializedSignature.set(pubKeyBytes, 1 + signature.length)\n\n  return serializedSignature\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { mnemonicToSeedSync as bip39MnemonicToSeedSync } from '@scure/bip39'\n\nimport { toHexString } from '..'\n\n/**\n * Parse and validate a path that is compliant to SLIP-0010 in form\n * m/44'/784'/{account_index}'/{change_index}'/{address_index}'.\n *\n * @param path path string (e.g. `m/44'/784'/0'/0'/0'`).\n */\nexport function isValidHardenedPath(path: string): boolean {\n  if (!/^m\\/44'\\/784'\\/[0-9]+'\\/[0-9]+'\\/[0-9]+'+$/.test(path)) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Parse and validate a path that is compliant to BIP-32 in form\n * m/54'/784'/{account_index}'/{change_index}/{address_index}\n * for Secp256k1 and m/74'/784'/{account_index}'/{change_index}/{address_index} for Secp256r1.\n *\n * Note that the purpose for Secp256k1 is registered as 54, to differentiate from Ed25519 with purpose 44.\n *\n * @param path path string (e.g. `m/54'/784'/0'/0/0`).\n */\nexport function isValidBIP32Path(path: string): boolean {\n  if (!/^m\\/(54|74)'\\/784'\\/[0-9]+'\\/[0-9]+\\/[0-9]+$/.test(path)) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Uses KDF to derive 64 bytes of key data from mnemonic with empty password.\n *\n * @param mnemonics 12 words string split by spaces.\n */\nexport function mnemonicToSeed(mnemonics: string): Uint8Array {\n  return bip39MnemonicToSeedSync(mnemonics, '')\n}\n\n/**\n * Derive the seed in hex format from a 12-word mnemonic string.\n *\n * @param mnemonics 12 words string split by spaces.\n */\nexport function mnemonicToSeedHex(mnemonics: string): string {\n  return toHexString(mnemonicToSeed(mnemonics))\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '../../types/bcs'\n\n/**\n * Value to be converted into public key.\n */\nexport type PublicKeyInitData = string | Uint8Array | Iterable<number>\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array) {\n  if (a === b) return true\n\n  if (a.length !== b.length) {\n    return false\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * A public key\n */\nexport abstract class PublicKey {\n  /**\n   * Checks if two public keys are equal\n   */\n  equals(publicKey: PublicKey) {\n    return bytesEqual(this.toBytes(), publicKey.toBytes())\n  }\n\n  /**\n   * Return the base-64 representation of the public key\n   */\n  toBase64() {\n    return toB64(this.toBytes())\n  }\n\n  /**\n   * Return the Rooch representation of the public key encoded in\n   * base-64. A Rooch public key is formed by the concatenation\n   * of the scheme flag with the raw bytes of the public key\n   */\n  toRoochPublicKey(): string {\n    const bytes = this.toBytes()\n    const roochPublicKey = new Uint8Array(bytes.length + 1)\n    roochPublicKey.set([this.flag()])\n    roochPublicKey.set(bytes, 1)\n    return toB64(roochPublicKey)\n  }\n\n  /**\n   * Return the byte array representation of the public key\n   */\n  abstract toBytes(): Uint8Array\n\n  /**\n   * Return the Rooch address associated with this public key\n   */\n  abstract toRoochAddress(): string\n\n  /**\n   * Return signature scheme flag of the public key\n   */\n  abstract flag(): number\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { sha3_256 } from '@noble/hashes/sha3'\nimport type { PublicKey } from './publickey'\nimport { SignatureScheme, toSerializedSignature } from './signature'\n\nexport const PRIVATE_KEY_SIZE = 32\nexport const LEGACY_PRIVATE_KEY_SIZE = 64\n\nexport type ExportedKeypair = {\n  schema: SignatureScheme\n  privateKey: string\n}\n\n// interface SignedMessage {\n// \tbytes: Uint8Array\n// \tsignature: SerializedSignature\n// }\n\nexport abstract class BaseSigner {\n  abstract sign(bytes: Uint8Array): Promise<Uint8Array>\n\n  async signMessage(bytes: Uint8Array) {\n    const digest = sha3_256(bytes)\n    return this.signMessageWithHashed(digest)\n  }\n\n  async signMessageWithHashed(bytes: Uint8Array) {\n    const signature = toSerializedSignature({\n      signature: await this.sign(bytes),\n      signatureScheme: this.getKeyScheme(),\n      pubKey: this.getPublicKey(),\n    })\n\n    return {\n      signature,\n      bytes,\n    }\n  }\n\n  toRoochAddress(): string {\n    return this.getPublicKey().toRoochAddress()\n  }\n\n  /**\n   * Return the signature for the data.\n   * Prefer the async verion {@link sign}, as this method will be deprecated in a future release.\n   */\n  abstract signData(data: Uint8Array): Uint8Array\n\n  /**\n   * Get the key scheme of the keypair: Secp256k1 or ED25519\n   */\n  abstract getKeyScheme(): SignatureScheme\n\n  /**\n   * The public key for this keypair\n   */\n  abstract getPublicKey(): PublicKey\n}\n\n/**\n * TODO: Document\n */\nexport abstract class Keypair extends BaseSigner {\n  abstract export(): ExportedKeypair\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport nacl from 'tweetnacl'\nimport type { ExportedKeypair } from '../../crypto/keypair'\nimport { Ed25519PublicKey } from './publickey'\nimport { isValidHardenedPath, mnemonicToSeedHex } from '../../crypto/mnemonics'\nimport { derivePath } from './ed25519-hd-key'\nimport { toB64 } from '../../../types/bcs'\nimport type { SignatureScheme } from '../../crypto/signature'\nimport { PRIVATE_KEY_SIZE, Keypair } from '../../crypto/keypair'\n\n// eslint-disable-next-line quotes\nexport const DEFAULT_ED25519_DERIVATION_PATH = \"m/44'/784'/0'/0'/0'\"\nexport const DEFAULT_ED25519_SCHEMAS = 'ED25519'\n\n/**\n * Ed25519 Keypair data. The publickey is the 32-byte public key and\n * the secretkey is 64-byte, where the first 32 bytes is the secret\n * key and the last 32 bytes is the public key.\n */\nexport interface Ed25519KeypairData {\n  publicKey: Uint8Array\n  secretKey: Uint8Array\n}\n\n/**\n * An Ed25519 Keypair used for signing transactions.\n */\nexport class Ed25519Keypair extends Keypair {\n  private keypair: Ed25519KeypairData\n\n  private scheme: SignatureScheme\n\n  /**\n   * Create a new Ed25519 keypair instance.\n   * Generate random keypair if no {@link Ed25519Keypair} is provided.\n   *\n   * @param keypair Ed25519 keypair\n   */\n  constructor(keypair?: Ed25519KeypairData) {\n    super()\n    if (keypair) {\n      this.keypair = keypair\n    } else {\n      this.keypair = nacl.sign.keyPair()\n    }\n\n    this.scheme = 'ED25519'\n  }\n\n  /**\n   * Get the key scheme of the keypair ED25519\n   */\n  getKeyScheme(): SignatureScheme {\n    return this.scheme\n  }\n\n  /**\n   * Generate a new random Ed25519 keypair\n   */\n  static generate(): Ed25519Keypair {\n    return new Ed25519Keypair(nacl.sign.keyPair())\n  }\n\n  /**\n   * Create a Ed25519 keypair from a raw secret key byte array, also known as seed.\n   * This is NOT the private scalar which is result of hashing and bit clamping of\n   * the raw secret key.\n   *\n   * The rooch.keystore key is a list of Base64 encoded `flag || privkey`. To import\n   * a key from rooch.keystore to typescript, decode from base64 and remove the first\n   * flag byte after checking it is indeed the Ed25519 scheme flag 0x00 (See more\n   * on flag for signature scheme: https://github.com/rooch-network/rooch/blob/main/crates/rooch-types/src/crypto.rs):\n   * ```\n   * import { Ed25519Keypair, fromB64 } from 'rooch'\n   * const raw = fromB64(t[1])\n   * if (raw[0] !== 0 || raw.length !== PRIVATE_KEY_SIZE + 1) {\n   *   throw new Error('invalid key')\n   * }\n   * const imported = Ed25519Keypair.fromSecretKey(raw.slice(1))\n   * ```\n   * @throws error if the provided secret key is invalid and validation is not skipped.\n   *\n   * @param secretKey secret key byte array\n   * @param options: skip secret key validation\n   */\n  static fromSecretKey(\n    secretKey: Uint8Array,\n    options?: { skipValidation?: boolean },\n  ): Ed25519Keypair {\n    const secretKeyLength = secretKey.length\n    if (secretKeyLength !== PRIVATE_KEY_SIZE) {\n      throw new Error(\n        `Wrong secretKey size. Expected ${PRIVATE_KEY_SIZE} bytes, got ${secretKeyLength}.`,\n      )\n    }\n    const keypair = nacl.sign.keyPair.fromSeed(secretKey)\n    if (!options || !options.skipValidation) {\n      const encoder = new TextEncoder()\n      const signData = encoder.encode('rooch validation')\n      const signature = nacl.sign.detached(signData, keypair.secretKey)\n      if (!nacl.sign.detached.verify(signData, signature, keypair.publicKey)) {\n        throw new Error('provided secretKey is invalid')\n      }\n    }\n    return new Ed25519Keypair(keypair)\n  }\n\n  /**\n   * The public key for this Ed25519 keypair\n   */\n  getPublicKey(): Ed25519PublicKey {\n    return new Ed25519PublicKey(this.keypair.publicKey)\n  }\n\n  async sign(data: Uint8Array) {\n    return this.signData(data)\n  }\n\n  /**\n   * Return the signature for the provided data using Ed25519.\n   */\n  signData(data: Uint8Array): Uint8Array {\n    return nacl.sign.detached(data, this.keypair.secretKey)\n  }\n\n  /**\n   * Derive Ed25519 keypair from mnemonics and path. The mnemonics must be normalized\n   * and validated against the english wordlist.\n   *\n   * If path is none, it will default to m/44'/784'/0'/0'/0', otherwise the path must\n   * be compliant to SLIP-0010 in form m/44'/784'/{account_index}'/{change_index}'/{address_index}'.\n   */\n  static deriveKeypair(mnemonics: string, path?: string): Ed25519Keypair {\n    const newPath = path ?? DEFAULT_ED25519_DERIVATION_PATH\n\n    if (!isValidHardenedPath(newPath)) {\n      throw new Error('Invalid derivation path')\n    }\n    const { key } = derivePath(newPath, mnemonicToSeedHex(mnemonics))\n\n    return Ed25519Keypair.fromSecretKey(key)\n  }\n\n  /**\n   * Derive Ed25519 keypair from mnemonicSeed and path.\n   *\n   * If path is none, it will default to m/44'/784'/0'/0'/0', otherwise the path must\n   * be compliant to SLIP-0010 in form m/44'/784'/{account_index}'/{change_index}'/{address_index}'.\n   */\n  static deriveKeypairFromSeed(seedHex: string, path?: string): Ed25519Keypair {\n    const newPath = path ?? DEFAULT_ED25519_DERIVATION_PATH\n\n    if (!isValidHardenedPath(newPath)) {\n      throw new Error('Invalid derivation path')\n    }\n    const { key } = derivePath(newPath, seedHex)\n\n    return Ed25519Keypair.fromSecretKey(key)\n  }\n\n  /**\n   * This returns an exported keypair object, the private key field is the pure 32-byte seed.\n   */\n  export(): ExportedKeypair {\n    return {\n      schema: 'ED25519',\n      privateKey: toB64(this.keypair.secretKey.slice(0, PRIVATE_KEY_SIZE)),\n    }\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { blake2b } from '@noble/hashes/blake2b'\nimport { bytesToHex } from '@noble/hashes/utils'\n\nimport { fromB64 } from '../../../types/bcs'\nimport type { PublicKeyInitData } from '../../crypto/publickey'\nimport { PublicKey } from '../../crypto/publickey'\nimport { SIGNATURE_SCHEME_TO_FLAG } from '../../crypto/signature'\nimport { ROOCH_ADDRESS_LENGTH } from '../../../constants'\nimport { normalizeRoochAddress } from '../../encode'\n\nconst PUBLIC_KEY_SIZE = 32\n\n/**\n * An Ed25519 public key\n */\nexport class Ed25519PublicKey extends PublicKey {\n  static SIZE = PUBLIC_KEY_SIZE\n\n  private data: Uint8Array\n\n  /**\n   * Create a new Ed25519PublicKey object\n   * @param value ed25519 public key as buffer or base-64 encoded string\n   */\n  constructor(value: PublicKeyInitData) {\n    super()\n\n    if (typeof value === 'string') {\n      this.data = fromB64(value)\n    } else if (value instanceof Uint8Array) {\n      this.data = value\n    } else {\n      this.data = Uint8Array.from(value)\n    }\n\n    if (this.data.length !== PUBLIC_KEY_SIZE) {\n      throw new Error(\n        `Invalid public key input. Expected ${PUBLIC_KEY_SIZE} bytes, got ${this.data.length}`,\n      )\n    }\n  }\n\n  /**\n   * Checks if two Ed25519 public keys are equal\n   */\n  override equals(publicKey: Ed25519PublicKey): boolean {\n    return super.equals(publicKey)\n  }\n\n  /**\n   * Return the byte array representation of the Ed25519 public key\n   */\n  toBytes(): Uint8Array {\n    return this.data\n  }\n\n  /**\n   * Return the Rooch address associated with this Ed25519 public key\n   */\n  toRoochAddress(): string {\n    const tmp = new Uint8Array(PUBLIC_KEY_SIZE + 1)\n    tmp.set([SIGNATURE_SCHEME_TO_FLAG.ED25519])\n    tmp.set(this.toBytes(), 1)\n    // Each hex char represents half a byte, hence hex address doubles the length\n    return normalizeRoochAddress(\n      bytesToHex(blake2b(tmp, { dkLen: 32 })).slice(0, ROOCH_ADDRESS_LENGTH),\n    )\n  }\n\n  /**\n   * Return the Rooch address associated with this Ed25519 public key\n   */\n  // eslint-disable-next-line class-methods-use-this\n  flag(): number {\n    return SIGNATURE_SCHEME_TO_FLAG.ED25519\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\n// This is adapted from https://github.com/alepop/ed25519-hd-key replacing create-hmac\n// with @noble/hashes to be browser compatible.\n\nimport { sha512 } from '@noble/hashes/sha512'\nimport { hmac } from '@noble/hashes/hmac'\nimport nacl from 'tweetnacl'\n// import { fromHEX } from '@mysten/bcs'\nimport { fromHexString } from '../..'\n\ntype Hex = string\ntype Path = string\n\ntype Keys = {\n  key: Uint8Array\n  chainCode: Uint8Array\n}\n\nconst ED25519_CURVE = 'ed25519 seed'\nconst HARDENED_OFFSET = 0x80000000\n\nexport const pathRegex = /^m(\\/[0-9]+')+$/\n\n// eslint-disable-next-line quotes\nexport const replaceDerive = (val: string): string => val.replace(\"'\", '')\n\nexport const getMasterKeyFromSeed = (seed: Hex): Keys => {\n  const h = hmac.create(sha512, ED25519_CURVE)\n  const I = h.update(fromHexString(seed)).digest()\n  const IL = I.slice(0, 32)\n  const IR = I.slice(32)\n  return {\n    key: IL,\n    chainCode: IR,\n  }\n}\n\nconst CKDPriv = ({ key, chainCode }: Keys, index: number): Keys => {\n  const indexBuffer = new ArrayBuffer(4)\n  const cv = new DataView(indexBuffer)\n  cv.setUint32(0, index)\n\n  const data = new Uint8Array(1 + key.length + indexBuffer.byteLength)\n  data.set(new Uint8Array(1).fill(0))\n  data.set(key, 1)\n  data.set(new Uint8Array(indexBuffer, 0, indexBuffer.byteLength), key.length + 1)\n\n  const I = hmac.create(sha512, chainCode).update(data).digest()\n  const IL = I.slice(0, 32)\n  const IR = I.slice(32)\n  return {\n    key: IL,\n    chainCode: IR,\n  }\n}\n\nexport const getPublicKey = (privateKey: Uint8Array, withZeroByte = true): Uint8Array => {\n  const keyPair = nacl.sign.keyPair.fromSeed(privateKey)\n  const signPk = keyPair.secretKey.subarray(32)\n  const newArr = new Uint8Array(signPk.length + 1)\n  newArr.set([0])\n  newArr.set(signPk, 1)\n  return withZeroByte ? newArr : signPk\n}\n\nexport const isValidPath = (path: string): boolean => {\n  if (!pathRegex.test(path)) {\n    return false\n  }\n  return !path\n    .split('/')\n    .slice(1)\n    .map(replaceDerive)\n    .some(Number.isNaN as any /* ts T_T */)\n}\n\nexport const derivePath = (path: Path, seed: Hex, offset = HARDENED_OFFSET): Keys => {\n  if (!isValidPath(path)) {\n    throw new Error('Invalid derivation path')\n  }\n\n  const { key, chainCode } = getMasterKeyFromSeed(seed)\n  const segments = path\n    .split('/')\n    .slice(1)\n    .map(replaceDerive)\n    .map((el) => parseInt(el, 10))\n\n  return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), {\n    key,\n    chainCode,\n  })\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport fetch from 'isomorphic-fetch'\nimport { HTTPTransport, RequestManager } from '@open-rpc/client-js'\nimport { JsonRpcClient } from '../generated/client'\nimport { Chain, ChainInfo, DevChain } from '../constants/chain.ts'\nimport {\n  FunctionId,\n  TypeTag,\n  Arg,\n  Bytes,\n  TransactionView,\n  AnnotatedFunctionResultView,\n  AnnotatedStateView,\n  TransactionResultPageView,\n  AnnotatedEventResultPageView,\n  StateView,\n  StateResultPageView,\n} from '../types'\nimport { functionIdToStirng, typeTagToString, encodeArg, toHexString } from '../utils'\n\n/**\n * Configuration options for the JsonRpcProvider. If the value of a field is not provided,\n * value in `DEFAULT_OPTIONS` for that field will be used\n */\nexport type RpcProviderOptions = {\n  /**\n   * Cache timeout in seconds for the RPC API Version\n   */\n  versionCacheTimeoutInSeconds?: number\n\n  /** Allow defining a custom RPC client to use */\n  fetcher?: typeof fetch\n}\n\nconst DEFAULT_OPTIONS: RpcProviderOptions = {\n  versionCacheTimeoutInSeconds: 600,\n}\n\nexport class JsonRpcProvider {\n  public chain: Chain\n\n  private client: JsonRpcClient\n\n  private rpcApiVersion: string | undefined\n\n  private cacheExpiry: number | undefined\n\n  constructor(chain: Chain = DevChain, public options: RpcProviderOptions = DEFAULT_OPTIONS) {\n    this.chain = chain\n\n    const opts = { ...DEFAULT_OPTIONS, ...options }\n    this.options = opts\n\n    this.client = new JsonRpcClient(\n      new RequestManager([\n        new HTTPTransport(chain.url, {\n          headers: {\n            'Content-Type': 'application/json',\n          },\n          fetcher: opts.fetcher,\n        }),\n      ]),\n    )\n  }\n\n  switchChain(chain: Chain) {\n    // this.client.close()\n    this.chain = chain\n    this.client = new JsonRpcClient(\n      new RequestManager([\n        new HTTPTransport(chain.url, {\n          headers: {\n            'Content-Type': 'application/json',\n          },\n          fetcher: this.options.fetcher,\n        }),\n      ]),\n    )\n  }\n\n  ChainInfo(): ChainInfo {\n    return this.chain.info\n  }\n\n  getChainId(): number {\n    return this.chain.id\n  }\n\n  async getRpcApiVersion(): Promise<string | undefined> {\n    if (this.rpcApiVersion && this.cacheExpiry && this.cacheExpiry <= Date.now()) {\n      return this.rpcApiVersion\n    }\n\n    try {\n      this.rpcApiVersion = await this.client.getRpcApiVersion()\n      this.cacheExpiry =\n        // Date.now() is in milliseconds, but the timeout is in seconds\n        Date.now() + (this.options.versionCacheTimeoutInSeconds ?? 0) * 1000\n      return this.rpcApiVersion\n    } catch (err) {\n      return undefined\n    }\n  }\n\n  // Execute a read-only function call The function do not change the state of Application\n  async executeViewFunction(\n    funcId: FunctionId,\n    tyArgs?: TypeTag[],\n    args?: Arg[],\n  ): Promise<AnnotatedFunctionResultView> {\n    const tyStrArgs = tyArgs?.map((v) => typeTagToString(v))\n    const bcsArgs = args?.map((arg) => toHexString(encodeArg(arg))) as any\n\n    return this.client.rooch_executeViewFunction({\n      function_id: functionIdToStirng(funcId),\n      ty_args: tyStrArgs ?? [],\n      args: bcsArgs ?? [],\n    })\n  }\n\n  // Send the signed transaction in bcs hex format\n  // This method does not block waiting for the transaction to be executed.\n  async sendRawTransaction(playload: Bytes): Promise<string> {\n    return this.client.rooch_sendRawTransaction(playload)\n  }\n\n  async getTransactionsByHash(tx_hashes: string[]): Promise<TransactionView | null[]> {\n    return await this.client.rooch_getTransactionsByHash(tx_hashes)\n  }\n\n  // async getTransactionInfosByHash(\n  //   txHashes: string[],\n  // ): Promise<TransactionExecutionInfoView | null[]> {\n  //   return await this.client.rooch_getTransactionInfosByHash(txHashes)\n  // }\n\n  // Get the annotated states by access_path The annotated states include the decoded move value of the state\n  async getAnnotatedStates(accessPath: string): Promise<AnnotatedStateView | null[]> {\n    return await this.client.rooch_getAnnotatedStates(accessPath)\n  }\n\n  async getTransactionsByOrder(cursor: number, limit: number): Promise<TransactionResultPageView> {\n    return this.client.rooch_getTransactionsByOrder(cursor, limit)\n  }\n\n  // Get the events by event handle id\n  async getEventsByEventHandle(\n    event_handle_type: string,\n    cursor: number,\n    limit: number,\n  ): Promise<AnnotatedEventResultPageView> {\n    return await this.client.rooch_getEventsByEventHandle(event_handle_type, cursor, limit)\n  }\n\n  // Get the states by access_path\n  async getStates(access_path: string): Promise<StateView | null[]> {\n    return await this.client.rooch_getStates(access_path)\n  }\n\n  // List the states by access_path\n  async listStates(\n    access_path: string,\n    cursor: Uint8Array,\n    limit: number,\n  ): Promise<StateResultPageView> {\n    return await this.client.rooch_listStates(access_path, cursor, limit)\n  }\n\n  // TODO:\n  // async getTransactionByHash(hash: string): Promise<TransactionView> {\n  //   return this.client.rooch_getTransactionByHash(hash)\n  // }\n\n  //\n  // // List the annotated states by access_path The annotated states include the decoded move value of the state\n  // async listAnnotatedStates(\n  //   access_path: string,\n  //   cursor: Uint8Array,\n  //   limit: number,\n  // ): Promise<PageView_for_Nullable_AnnotatedStateView_and_alloc_vec_Vec_U8Array> {\n  //   return await this.rpcClient.rooch_listAnnotatedStates(\n  //     access_path,\n  //     cursor,\n  //     limit,\n  //   )\n  // }\n}\n","// This file was generated by `yarn gen:client`. Please, do not modify it.\nimport { RequestManager, Client } from \"@open-rpc/client-js\";\nimport {\n  ExecuteTransactionResponseView,\n  FunctionCallView,\n  AnnotatedFunctionResultView,\n  AccessPath,\n  AnnotatedStateView,\n  RoochAccountAddress,\n  RoochStructTag,\n  PageView_for_Nullable_BalanceInfoView_and_alloc_vec_Vec_U8Array,\n  u64,\n  AnnotatedEventResultPageView,\n  StateView,\n  Hex,\n  TransactionView,\n  TransactionResultPageView,\n  PageView_for_Nullable_AnnotatedStateView_and_alloc_vec_Vec_U8Array,\n  StateResultPageView,\n} from \"./types\";\n\nexport class JsonRpcClient extends Client {\n  constructor(requestManager: RequestManager) {\n    super(requestManager);\n  }\n\n  async getRpcApiVersion(): Promise<string | undefined> {\n    const resp = await this.request({\n      method: \"rpc.discover\",\n      params: [],\n    });\n\n    return resp.info.version as string;\n  }\n\n  // Send the signed transaction in bcs hex format This method blocks waiting for the transaction to be executed.\n  async rooch_executeRawTransaction(\n    tx_bcs_hex: Uint8Array\n  ): Promise<ExecuteTransactionResponseView> {\n    const tx_bcs_hex_hex = `0x${Buffer.from(tx_bcs_hex).toString(\"hex\")}`;\n\n    const resp = await this.request({\n      method: \"rooch_executeRawTransaction\",\n      params: [tx_bcs_hex_hex],\n    });\n\n    return resp as ExecuteTransactionResponseView;\n  }\n\n  // Execute a read-only function call The function do not change the state of Application\n  async rooch_executeViewFunction(\n    function_call: FunctionCallView\n  ): Promise<AnnotatedFunctionResultView> {\n    const resp = await this.request({\n      method: \"rooch_executeViewFunction\",\n      params: [function_call],\n    });\n\n    return resp as AnnotatedFunctionResultView;\n  }\n\n  // Get the annotated states by access_path The annotated states include the decoded move value of the state\n  async rooch_getAnnotatedStates(\n    access_path: AccessPath\n  ): Promise<AnnotatedStateView | null[]> {\n    const resp = await this.request({\n      method: \"rooch_getAnnotatedStates\",\n      params: [access_path],\n    });\n\n    return resp as AnnotatedStateView | null[];\n  }\n\n  // get account balances by AccountAddress\n  async rooch_getBalances(\n    account_addr: RoochAccountAddress,\n    coin_type: RoochStructTag,\n    cursor: Uint8Array,\n    limit: number\n  ): Promise<PageView_for_Nullable_BalanceInfoView_and_alloc_vec_Vec_U8Array> {\n    const cursor_hex = `0x${Buffer.from(cursor).toString(\"hex\")}`;\n\n    const resp = await this.request({\n      method: \"rooch_getBalances\",\n      params: [account_addr, coin_type, cursor_hex, limit],\n    });\n\n    return resp as PageView_for_Nullable_BalanceInfoView_and_alloc_vec_Vec_U8Array;\n  }\n\n  async rooch_getChainID(): Promise<u64> {\n    const resp = await this.request({\n      method: \"rooch_getChainID\",\n      params: [],\n    });\n\n    return resp as u64;\n  }\n\n  // Get the events by event handle id\n  async rooch_getEventsByEventHandle(\n    event_handle_type: RoochStructTag,\n    cursor: number,\n    limit: number\n  ): Promise<AnnotatedEventResultPageView> {\n    const resp = await this.request({\n      method: \"rooch_getEventsByEventHandle\",\n      params: [event_handle_type, cursor, limit],\n    });\n\n    return resp as AnnotatedEventResultPageView;\n  }\n\n  // Get the states by access_path\n  async rooch_getStates(access_path: AccessPath): Promise<StateView | null[]> {\n    const resp = await this.request({\n      method: \"rooch_getStates\",\n      params: [access_path],\n    });\n\n    return resp as StateView | null[];\n  }\n\n  async rooch_getTransactionByHash(hash: Hex): Promise<TransactionView> {\n    const resp = await this.request({\n      method: \"rooch_getTransactionByHash\",\n      params: [hash],\n    });\n\n    return resp as TransactionView;\n  }\n\n  async rooch_getTransactionsByHash(\n    tx_hashes: Hex[]\n  ): Promise<TransactionView | null[]> {\n    const resp = await this.request({\n      method: \"rooch_getTransactionsByHash\",\n      params: [tx_hashes],\n    });\n\n    return resp as TransactionView | null[];\n  }\n\n  async rooch_getTransactionsByOrder(\n    cursor: number,\n    limit: number\n  ): Promise<TransactionResultPageView> {\n    const resp = await this.request({\n      method: \"rooch_getTransactionsByOrder\",\n      params: [cursor, limit],\n    });\n\n    return resp as TransactionResultPageView;\n  }\n\n  // List the annotated states by access_path The annotated states include the decoded move value of the state\n  async rooch_listAnnotatedStates(\n    access_path: AccessPath,\n    cursor: Uint8Array,\n    limit: number\n  ): Promise<PageView_for_Nullable_AnnotatedStateView_and_alloc_vec_Vec_U8Array> {\n    const cursor_hex = `0x${Buffer.from(cursor).toString(\"hex\")}`;\n\n    const resp = await this.request({\n      method: \"rooch_listAnnotatedStates\",\n      params: [access_path, cursor_hex, limit],\n    });\n\n    return resp as PageView_for_Nullable_AnnotatedStateView_and_alloc_vec_Vec_U8Array;\n  }\n\n  // List the states by access_path\n  async rooch_listStates(\n    access_path: AccessPath,\n    cursor: Uint8Array,\n    limit: number\n  ): Promise<StateResultPageView> {\n    const cursor_hex = `0x${Buffer.from(cursor).toString(\"hex\")}`;\n\n    const resp = await this.request({\n      method: \"rooch_listStates\",\n      params: [access_path, cursor_hex, limit],\n    });\n\n    return resp as StateResultPageView;\n  }\n\n  // Send the signed transaction in bcs hex format This method does not block waiting for the transaction to be executed.\n  async rooch_sendRawTransaction(tx_bcs_hex: Uint8Array): Promise<Hex> {\n    const tx_bcs_hex_hex = `0x${Buffer.from(tx_bcs_hex).toString(\"hex\")}`;\n\n    const resp = await this.request({\n      method: \"rooch_sendRawTransaction\",\n      params: [tx_bcs_hex_hex],\n    });\n\n    return resp as Hex;\n  }\n}\n\n// This file was generated by `yarn gen:client`. Please, do not modify it.","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Bytes } from '../types'\nimport { Keypair } from '../utils/crypto'\nimport { IAuthorization, IAuthorizer } from './interface'\n\nconst SCHEME_ED25519: number = 0\n\nexport class PrivateKeyAuth implements IAuthorizer {\n  private pk: Keypair\n\n  constructor(pk: Keypair) {\n    this.pk = pk\n  }\n\n  async auth(data: Bytes): Promise<IAuthorization> {\n    const sign = await this.pk.signMessage(data)\n\n    return {\n      scheme: SCHEME_ED25519,\n      payload: sign.signature,\n    }\n  }\n}\n","// Copyright (c) RoochNetwork\n// SPDX-License-Identifier: Apache-2.0\n\nimport { DEFAULT_MAX_GAS_AMOUNT } from '../constants'\nimport { IAccount, CallOption } from './interface'\nimport { IProvider } from '../provider'\nimport { IAuthorizer, IAuthorization, PrivateKeyAuth } from '../auth'\nimport { AccountAddress, FunctionId, TypeTag, Arg } from '../types'\nimport { BcsSerializer } from '../types/bcs'\nimport {\n  RoochTransaction,\n  RoochTransactionData,\n  AccountAddress as BCSAccountAddress,\n  Authenticator,\n} from '../generated/runtime/rooch_types/mod'\nimport {\n  encodeArg,\n  encodeFunctionCall,\n  addressToListTuple,\n  uint8Array2SeqNumber,\n  addressToSeqNumber,\n} from '../utils'\nimport { Ed25519Keypair } from '../utils/keypairs'\n\nexport class Account implements IAccount {\n  private provider: IProvider\n\n  private address: AccountAddress\n\n  private authorizer: IAuthorizer\n\n  public constructor(provider: IProvider, address: AccountAddress, authorizer: IAuthorizer) {\n    this.provider = provider\n    this.address = address\n    this.authorizer = authorizer\n  }\n\n  public getAddress(): string {\n    return this.address\n  }\n\n  public async runFunction(\n    funcId: FunctionId,\n    tyArgs: TypeTag[],\n    args: Arg[],\n    opts: CallOption,\n  ): Promise<string> {\n    const number = await this.sequenceNumber()\n    const bcsArgs = args.map((arg) => encodeArg(arg))\n    const scriptFunction = encodeFunctionCall(funcId, tyArgs, bcsArgs)\n    const txData = new RoochTransactionData(\n      new BCSAccountAddress(addressToListTuple(this.address)),\n      BigInt(number),\n      BigInt(this.provider.getChainId()),\n      BigInt(opts.maxGasAmount ?? DEFAULT_MAX_GAS_AMOUNT),\n      scriptFunction,\n    )\n\n    const authResult = await this.makeAuth(txData)\n\n    const auth = new Authenticator(\n      BigInt(authResult.scheme),\n      uint8Array2SeqNumber(authResult.payload),\n    )\n    const ts = new RoochTransaction(txData, auth)\n\n    const payload = (() => {\n      const se = new BcsSerializer()\n      ts.serialize(se)\n      return se.getBytes()\n    })()\n\n    return this.provider.sendRawTransaction(payload)\n  }\n\n  private async makeAuth(tsData: RoochTransactionData): Promise<IAuthorization> {\n    const payload = (() => {\n      const se = new BcsSerializer()\n      tsData.serialize(se)\n      return se.getBytes()\n    })()\n\n    return this.authorizer.auth(payload)\n  }\n\n  async sequenceNumber(): Promise<number> {\n    const resp = await this.provider.executeViewFunction(\n      '0x3::account::sequence_number',\n      [],\n      [\n        {\n          type: 'Address',\n          value: this.address,\n        },\n      ],\n    )\n\n    if (resp && resp.return_values) {\n      return resp.return_values[0].move_value as number\n    }\n\n    return 0\n  }\n\n  async createSessionAccount(\n    scope: Array<string>,\n    maxInactiveInterval: number,\n    opts?: CallOption,\n  ): Promise<IAccount> {\n    const kp = Ed25519Keypair.generate()\n    await this.registerSessionKey(\n      kp.getPublicKey().toRoochAddress(),\n      scope,\n      maxInactiveInterval,\n      opts,\n    )\n    const auth = new PrivateKeyAuth(kp)\n    return new Account(this.provider, this.address, auth)\n  }\n\n  async registerSessionKey(\n    authKey: AccountAddress,\n    scopes: Array<string>,\n    maxInactiveInterval: number,\n    opts?: CallOption,\n  ): Promise<void> {\n    const [scopeModuleAddresss, scopeModuleNames, scopeFunctionNames] = scopes\n      .map((scope: string) => {\n        const parts = scope.split('::')\n        if (parts.length !== 3) {\n          throw new Error('invalid scope')\n        }\n\n        const scopeModuleAddress = parts[0]\n        const scopeModuleName = parts[1]\n        const scopeFunctionName = parts[2]\n        return [scopeModuleAddress, scopeModuleName, scopeFunctionName]\n      })\n      .reduce(\n        (acc: Array<Array<string>>, val: Array<string>) => {\n          acc[0].push(val[0])\n          acc[1].push(val[1])\n          acc[2].push(val[2])\n          return acc\n        },\n        [[], [], []],\n      )\n\n    await this.runFunction(\n      '0x3::session_key::create_session_key_with_multi_scope_entry',\n      [],\n      [\n        {\n          type: { Vector: 'U8' },\n          value: addressToSeqNumber(authKey),\n        },\n        {\n          type: { Vector: 'Address' },\n          value: scopeModuleAddresss,\n        },\n        {\n          type: { Vector: 'Ascii' },\n          value: scopeModuleNames,\n        },\n        {\n          type: { Vector: 'Ascii' },\n          value: scopeFunctionNames,\n        },\n        {\n          type: 'U64',\n          value: BigInt(maxInactiveInterval),\n        },\n      ],\n      opts || {\n        maxGasAmount: 100000000,\n      },\n    )\n  }\n}\n"],"mappings":"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","names":["util","module","module","bip39MnemonicToSeedSync","import_tweetnacl","import_utils","nacl","import_client_js"]}