{"version":3,"sources":["../src/account/aptos_account.ts","../src/utils/hd-key.ts","../src/version.ts","../src/utils/misc.ts","../src/utils/memoize-decorator.ts","../src/client/core.ts","../src/client/types.ts","../src/client/cookieJar.ts","../src/client/get.ts","../src/client/post.ts","../src/utils/pagination_helpers.ts","../src/utils/api-endpoints.ts","../src/utils/hex_string.ts","../src/aptos_types/index.ts","../src/bcs/index.ts","../src/bcs/consts.ts","../src/bcs/serializer.ts","../src/bcs/deserializer.ts","../src/bcs/helper.ts","../src/aptos_types/transaction.ts","../src/aptos_types/account_address.ts","../src/aptos_types/ed25519.ts","../src/aptos_types/multi_ed25519.ts","../src/aptos_types/authenticator.ts","../src/aptos_types/identifier.ts","../src/aptos_types/type_tag.ts","../src/aptos_types/abi.ts","../src/aptos_types/authentication_key.ts","../src/aptos_types/rotation_proof_challenge.ts","../src/indexer/generated/queries.ts","../src/transaction_builder/builder.ts","../src/transaction_builder/builder_utils.ts","../src/providers/aptos_client.ts","../src/providers/indexer.ts","../src/providers/provider.ts","../src/utils/property_map_serde.ts","../src/aptos_types/token_types.ts","../src/plugins/token_client.ts","../src/plugins/fungible_asset_client.ts","../src/plugins/aptos_token.ts","../src/plugins/coin_client.ts","../src/plugins/faucet_client.ts","../src/plugins/ans_client.ts","../src/generated/index.ts","../src/generated/core/BaseHttpRequest.ts","../src/generated/core/request.ts","../src/generated/core/ApiError.ts","../src/generated/core/CancelablePromise.ts","../src/generated/core/AxiosHttpRequest.ts","../src/generated/services/AccountsService.ts","../src/generated/services/BlocksService.ts","../src/generated/services/EventsService.ts","../src/generated/services/GeneralService.ts","../src/generated/services/TablesService.ts","../src/generated/services/TransactionsService.ts","../src/generated/services/ViewService.ts","../src/generated/AptosGeneratedClient.ts","../src/generated/core/OpenAPI.ts","../src/generated/models/AptosErrorCode.ts","../src/generated/models/MoveFunctionVisibility.ts","../src/generated/models/RoleType.ts","../src/generated/schemas/$AccountData.ts","../src/generated/schemas/$AccountSignature.ts","../src/generated/schemas/$AccountSignature_Ed25519Signature.ts","../src/generated/schemas/$AccountSignature_MultiEd25519Signature.ts","../src/generated/schemas/$Address.ts","../src/generated/schemas/$AptosError.ts","../src/generated/schemas/$AptosErrorCode.ts","../src/generated/schemas/$Block.ts","../src/generated/schemas/$BlockMetadataTransaction.ts","../src/generated/schemas/$DecodedTableData.ts","../src/generated/schemas/$DeletedTableData.ts","../src/generated/schemas/$DeleteModule.ts","../src/generated/schemas/$DeleteResource.ts","../src/generated/schemas/$DeleteTableItem.ts","../src/generated/schemas/$DirectWriteSet.ts","../src/generated/schemas/$Ed25519Signature.ts","../src/generated/schemas/$EncodeSubmissionRequest.ts","../src/generated/schemas/$EntryFunctionId.ts","../src/generated/schemas/$EntryFunctionPayload.ts","../src/generated/schemas/$Event.ts","../src/generated/schemas/$EventGuid.ts","../src/generated/schemas/$FeePayerSignature.ts","../src/generated/schemas/$GasEstimation.ts","../src/generated/schemas/$GenesisPayload.ts","../src/generated/schemas/$GenesisPayload_WriteSetPayload.ts","../src/generated/schemas/$GenesisTransaction.ts","../src/generated/schemas/$HashValue.ts","../src/generated/schemas/$HealthCheckSuccess.ts","../src/generated/schemas/$HexEncodedBytes.ts","../src/generated/schemas/$IdentifierWrapper.ts","../src/generated/schemas/$IndexResponse.ts","../src/generated/schemas/$ModuleBundlePayload.ts","../src/generated/schemas/$MoveAbility.ts","../src/generated/schemas/$MoveFunction.ts","../src/generated/schemas/$MoveFunctionGenericTypeParam.ts","../src/generated/schemas/$MoveFunctionVisibility.ts","../src/generated/schemas/$MoveModule.ts","../src/generated/schemas/$MoveModuleBytecode.ts","../src/generated/schemas/$MoveModuleId.ts","../src/generated/schemas/$MoveResource.ts","../src/generated/schemas/$MoveScriptBytecode.ts","../src/generated/schemas/$MoveStruct.ts","../src/generated/schemas/$MoveStructField.ts","../src/generated/schemas/$MoveStructGenericTypeParam.ts","../src/generated/schemas/$MoveStructTag.ts","../src/generated/schemas/$MoveStructValue.ts","../src/generated/schemas/$MoveType.ts","../src/generated/schemas/$MoveValue.ts","../src/generated/schemas/$MultiAgentSignature.ts","../src/generated/schemas/$MultiEd25519Signature.ts","../src/generated/schemas/$MultisigPayload.ts","../src/generated/schemas/$MultisigTransactionPayload.ts","../src/generated/schemas/$PendingTransaction.ts","../src/generated/schemas/$RawTableItemRequest.ts","../src/generated/schemas/$RoleType.ts","../src/generated/schemas/$ScriptPayload.ts","../src/generated/schemas/$ScriptWriteSet.ts","../src/generated/schemas/$StateCheckpointTransaction.ts","../src/generated/schemas/$StateKeyWrapper.ts","../src/generated/schemas/$SubmitTransactionRequest.ts","../src/generated/schemas/$TableItemRequest.ts","../src/generated/schemas/$Transaction.ts","../src/generated/schemas/$Transaction_BlockMetadataTransaction.ts","../src/generated/schemas/$Transaction_GenesisTransaction.ts","../src/generated/schemas/$Transaction_PendingTransaction.ts","../src/generated/schemas/$Transaction_StateCheckpointTransaction.ts","../src/generated/schemas/$Transaction_UserTransaction.ts","../src/generated/schemas/$TransactionPayload.ts","../src/generated/schemas/$TransactionPayload_EntryFunctionPayload.ts","../src/generated/schemas/$TransactionPayload_ModuleBundlePayload.ts","../src/generated/schemas/$TransactionPayload_MultisigPayload.ts","../src/generated/schemas/$TransactionPayload_ScriptPayload.ts","../src/generated/schemas/$TransactionsBatchSingleSubmissionFailure.ts","../src/generated/schemas/$TransactionsBatchSubmissionResult.ts","../src/generated/schemas/$TransactionSignature.ts","../src/generated/schemas/$TransactionSignature_Ed25519Signature.ts","../src/generated/schemas/$TransactionSignature_FeePayerSignature.ts","../src/generated/schemas/$TransactionSignature_MultiAgentSignature.ts","../src/generated/schemas/$TransactionSignature_MultiEd25519Signature.ts","../src/generated/schemas/$U128.ts","../src/generated/schemas/$U256.ts","../src/generated/schemas/$U64.ts","../src/generated/schemas/$UserTransaction.ts","../src/generated/schemas/$VersionedEvent.ts","../src/generated/schemas/$ViewRequest.ts","../src/generated/schemas/$WriteModule.ts","../src/generated/schemas/$WriteResource.ts","../src/generated/schemas/$WriteSet.ts","../src/generated/schemas/$WriteSet_DirectWriteSet.ts","../src/generated/schemas/$WriteSet_ScriptWriteSet.ts","../src/generated/schemas/$WriteSetChange.ts","../src/generated/schemas/$WriteSetChange_DeleteModule.ts","../src/generated/schemas/$WriteSetChange_DeleteResource.ts","../src/generated/schemas/$WriteSetChange_DeleteTableItem.ts","../src/generated/schemas/$WriteSetChange_WriteModule.ts","../src/generated/schemas/$WriteSetChange_WriteResource.ts","../src/generated/schemas/$WriteSetChange_WriteTableItem.ts","../src/generated/schemas/$WriteSetPayload.ts","../src/generated/schemas/$WriteTableItem.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport nacl from \"tweetnacl\";\nimport * as bip39 from \"@scure/bip39\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { derivePath } from \"../utils/hd-key\";\nimport { HexString, MaybeHexString, Memoize } from \"../utils\";\nimport * as Gen from \"../generated/index\";\nimport { AccountAddress, AuthenticationKey, Ed25519PublicKey } from \"../aptos_types\";\nimport { bcsToBytes } from \"../bcs\";\n\nexport interface AptosAccountObject {\n  address?: Gen.HexEncodedBytes;\n  publicKeyHex?: Gen.HexEncodedBytes;\n  privateKeyHex: Gen.HexEncodedBytes;\n}\n\n/**\n * Class for creating and managing Aptos account\n */\nexport class AptosAccount {\n  /**\n   * A private key and public key, associated with the given account\n   */\n  readonly signingKey: nacl.SignKeyPair;\n\n  /**\n   * Address associated with the given account\n   */\n  private readonly accountAddress: HexString;\n\n  static fromAptosAccountObject(obj: AptosAccountObject): AptosAccount {\n    return new AptosAccount(HexString.ensure(obj.privateKeyHex).toUint8Array(), obj.address);\n  }\n\n  /**\n   * Test derive path\n   */\n  static isValidPath(path: string): boolean {\n    return /^m\\/44'\\/637'\\/[0-9]+'\\/[0-9]+'\\/[0-9]+'+$/.test(path);\n  }\n\n  /**\n   * Creates new account with bip44 path and mnemonics,\n   * @param path. (e.g. m/44'/637'/0'/0'/0')\n   * Detailed description: {@link https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki}\n   * @param mnemonics.\n   * @returns AptosAccount\n   */\n  static fromDerivePath(path: string, mnemonics: string): AptosAccount {\n    if (!AptosAccount.isValidPath(path)) {\n      throw new Error(\"Invalid derivation path\");\n    }\n\n    const normalizeMnemonics = mnemonics\n      .trim()\n      .split(/\\s+/)\n      .map((part) => part.toLowerCase())\n      .join(\" \");\n\n    const { key } = derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics)));\n\n    return new AptosAccount(key);\n  }\n\n  /**\n   * Creates new account instance. Constructor allows passing in an address,\n   * to handle account key rotation, where auth_key != public_key\n   * @param privateKeyBytes  Private key from which account key pair will be generated.\n   * If not specified, new key pair is going to be created.\n   * @param address Account address (e.g. 0xe8012714cd17606cee7188a2a365eef3fe760be598750678c8c5954eb548a591).\n   * If not specified, a new one will be generated from public key\n   */\n  constructor(privateKeyBytes?: Uint8Array | undefined, address?: MaybeHexString) {\n    if (privateKeyBytes) {\n      this.signingKey = nacl.sign.keyPair.fromSeed(privateKeyBytes.slice(0, 32));\n    } else {\n      this.signingKey = nacl.sign.keyPair();\n    }\n    this.accountAddress = HexString.ensure(address || this.authKey().hex());\n  }\n\n  /**\n   * This is the key by which Aptos account is referenced.\n   * It is the 32-byte of the SHA-3 256 cryptographic hash\n   * of the public key(s) concatenated with a signature scheme identifier byte\n   * @returns Address associated with the given account\n   */\n  address(): HexString {\n    return this.accountAddress;\n  }\n\n  /**\n   * This key enables account owners to rotate their private key(s)\n   * associated with the account without changing the address that hosts their account.\n   * See here for more info: {@link https://aptos.dev/concepts/accounts#single-signer-authentication}\n   * @returns Authentication key for the associated account\n   */\n  @Memoize()\n  authKey(): HexString {\n    const pubKey = new Ed25519PublicKey(this.signingKey.publicKey);\n    const authKey = AuthenticationKey.fromEd25519PublicKey(pubKey);\n    return authKey.derivedAddress();\n  }\n\n  /**\n   * Takes source address and seeds and returns the resource account address\n   * @param sourceAddress Address used to derive the resource account\n   * @param seed The seed bytes\n   * @returns The resource account address\n   */\n  static getResourceAccountAddress(sourceAddress: MaybeHexString, seed: Uint8Array): HexString {\n    const source = bcsToBytes(AccountAddress.fromHex(sourceAddress));\n\n    const bytes = new Uint8Array([...source, ...seed, AuthenticationKey.DERIVE_RESOURCE_ACCOUNT_SCHEME]);\n\n    const hash = sha3Hash.create();\n    hash.update(bytes);\n\n    return HexString.fromUint8Array(hash.digest());\n  }\n\n  /**\n   * Takes creator address and collection name and returns the collection id hash.\n   * Collection id hash are generated as sha256 hash of (`creator_address::collection_name`)\n   *\n   * @param creatorAddress Collection creator address\n   * @param collectionName The collection name\n   * @returns The collection id hash\n   */\n  static getCollectionID(creatorAddress: MaybeHexString, collectionName: string): HexString {\n    const seed = new TextEncoder().encode(`${creatorAddress}::${collectionName}`);\n    const hash = sha256.create();\n    hash.update(seed);\n    return HexString.fromUint8Array(hash.digest());\n  }\n\n  /**\n   * This key is generated with Ed25519 scheme.\n   * Public key is used to check a signature of transaction, signed by given account\n   * @returns The public key for the associated account\n   */\n  pubKey(): HexString {\n    return HexString.fromUint8Array(this.signingKey.publicKey);\n  }\n\n  /**\n   * Signs specified `buffer` with account's private key\n   * @param buffer A buffer to sign\n   * @returns A signature HexString\n   */\n  signBuffer(buffer: Uint8Array): HexString {\n    const signature = nacl.sign.detached(buffer, this.signingKey.secretKey);\n    return HexString.fromUint8Array(signature);\n  }\n\n  /**\n   * Signs specified `hexString` with account's private key\n   * @param hexString A regular string or HexString to sign\n   * @returns A signature HexString\n   */\n  signHexString(hexString: MaybeHexString): HexString {\n    const toSign = HexString.ensure(hexString).toUint8Array();\n    return this.signBuffer(toSign);\n  }\n\n  /**\n   * Verifies the signature of the message with the public key of the account\n   * @param message a signed message\n   * @param signature the signature of the message\n   */\n  verifySignature(message: MaybeHexString, signature: MaybeHexString): boolean {\n    const rawMessage = HexString.ensure(message).toUint8Array();\n    const rawSignature = HexString.ensure(signature).toUint8Array();\n    return nacl.sign.detached.verify(rawMessage, rawSignature, this.signingKey.publicKey);\n  }\n\n  /**\n   * Derives account address, public key and private key\n   * @returns AptosAccountObject instance.\n   * @example An example of the returned AptosAccountObject object\n   * ```\n   * {\n   *    address: \"0xe8012714cd17606cee7188a2a365eef3fe760be598750678c8c5954eb548a591\",\n   *    publicKeyHex: \"0xf56d8524faf79fbc0f48c13aeed3b0ce5dd376b4db93b8130a107c0a5e04ba04\",\n   *    privateKeyHex: `0x009c9f7c992a06cfafe916f125d8adb7a395fca243e264a8e56a4b3e6accf940\n   *      d2b11e9ece3049ce60e3c7b4a1c58aebfa9298e29a30a58a67f1998646135204`\n   * }\n   * ```\n   */\n  toPrivateKeyObject(): AptosAccountObject {\n    return {\n      address: this.address().hex(),\n      publicKeyHex: this.pubKey().hex(),\n      privateKeyHex: HexString.fromUint8Array(this.signingKey.secretKey.slice(0, 32)).hex(),\n    };\n  }\n}\n\n// Returns an account address as a HexString given either an AptosAccount or a MaybeHexString.\nexport function getAddressFromAccountOrAddress(accountOrAddress: AptosAccount | MaybeHexString): HexString {\n  return accountOrAddress instanceof AptosAccount ? accountOrAddress.address() : HexString.ensure(accountOrAddress);\n}\n","import nacl from \"tweetnacl\";\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { hexToBytes } from \"@noble/hashes/utils\";\n\ntype Hex = string;\ntype Path = string;\n\ntype Keys = {\n  key: Uint8Array;\n  chainCode: Uint8Array;\n};\n\nconst pathRegex = /^m(\\/[0-9]+')+$/;\n\nconst replaceDerive = (val: string): string => val.replace(\"'\", \"\");\n\nconst HMAC_KEY = \"ed25519 seed\";\nconst HARDENED_OFFSET = 0x80000000;\n\nexport const getMasterKeyFromSeed = (seed: Hex): Keys => {\n  const h = hmac.create(sha512, HMAC_KEY);\n  const I = h.update(hexToBytes(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\nexport const CKDPriv = ({ key, chainCode }: Keys, index: number): Keys => {\n  const buffer = new ArrayBuffer(4);\n  new DataView(buffer).setUint32(0, index);\n  const indexBytes = new Uint8Array(buffer);\n  const zero = new Uint8Array([0]);\n  const data = new Uint8Array([...zero, ...key, ...indexBytes]);\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 zero = new Uint8Array([0]);\n  return withZeroByte ? new Uint8Array([...zero, ...signPk]) : 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);\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), { key, chainCode });\n};\n","// hardcoded for now, we would want to have it injected dynamically\nexport const VERSION = \"1.14.0\";\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { VERSION } from \"../version\";\n\nexport type Nullable<T> = { [P in keyof T]: T[P] | null };\n\nexport type AnyObject = { [key: string]: any };\n\nexport async function sleep(timeMs: number): Promise<null> {\n  return new Promise((resolve) => {\n    setTimeout(resolve, timeMs);\n  });\n}\n\nexport const DEFAULT_VERSION_PATH_BASE = \"/v1\";\n\nexport function fixNodeUrl(nodeUrl: string): string {\n  let out = `${nodeUrl}`;\n  if (out.endsWith(\"/\")) {\n    out = out.substring(0, out.length - 1);\n  }\n  if (!out.endsWith(DEFAULT_VERSION_PATH_BASE)) {\n    out = `${out}${DEFAULT_VERSION_PATH_BASE}`;\n  }\n  return out;\n}\n\nexport const DEFAULT_MAX_GAS_AMOUNT = 200000;\n// Transaction expire timestamp\nexport const DEFAULT_TXN_EXP_SEC_FROM_NOW = 20;\n// How long does SDK wait for txhn to finish\nexport const DEFAULT_TXN_TIMEOUT_SEC = 20;\nexport const APTOS_COIN = \"0x1::aptos_coin::AptosCoin\";\n\nexport const CUSTOM_REQUEST_HEADER = { \"x-aptos-client\": `aptos-ts-sdk/${VERSION}` };\n","/**\n * Credits to https://github.com/darrylhodgins/typescript-memoize\n */\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n\ninterface MemoizeArgs {\n  // ttl in milliseconds for cached items. After `ttlMs`, cached items are evicted automatically. If no `ttlMs`\n  // is provided, cached items won't get auto-evicted.\n  ttlMs?: number;\n  // produces the cache key based on `args`.\n  hashFunction?: boolean | ((...args: any[]) => any);\n  // cached items can be taged with `tags`. `tags` can be used to evict cached items\n  tags?: string[];\n}\n\nexport function Memoize(args?: MemoizeArgs | MemoizeArgs[\"hashFunction\"]) {\n  let hashFunction: MemoizeArgs[\"hashFunction\"];\n  let ttlMs: MemoizeArgs[\"ttlMs\"];\n  let tags: MemoizeArgs[\"tags\"];\n\n  if (typeof args === \"object\") {\n    hashFunction = args.hashFunction;\n    ttlMs = args.ttlMs;\n    tags = args.tags;\n  } else {\n    hashFunction = args;\n  }\n\n  return (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor<any>) => {\n    if (descriptor.value != null) {\n      descriptor.value = getNewFunction(descriptor.value, hashFunction, ttlMs, tags);\n    } else if (descriptor.get != null) {\n      descriptor.get = getNewFunction(descriptor.get, hashFunction, ttlMs, tags);\n    } else {\n      throw new Error(\"Only put a Memoize() decorator on a method or get accessor.\");\n    }\n  };\n}\n\nexport function MemoizeExpiring(ttlMs: number, hashFunction?: MemoizeArgs[\"hashFunction\"]) {\n  return Memoize({\n    ttlMs,\n    hashFunction,\n  });\n}\n\nconst clearCacheTagsMap: Map<string, Map<any, any>[]> = new Map();\n\nexport function clear(tags: string[]): number {\n  const cleared: Set<Map<any, any>> = new Set();\n  for (const tag of tags) {\n    const maps = clearCacheTagsMap.get(tag);\n    if (maps) {\n      for (const mp of maps) {\n        if (!cleared.has(mp)) {\n          mp.clear();\n          cleared.add(mp);\n        }\n      }\n    }\n  }\n  return cleared.size;\n}\n\nfunction getNewFunction(\n  originalMethod: () => void,\n  hashFunction?: MemoizeArgs[\"hashFunction\"],\n  ttlMs: number = 0,\n  tags?: MemoizeArgs[\"tags\"],\n) {\n  const propMapName = Symbol(\"__memoized_map__\");\n\n  // The function returned here gets called instead of originalMethod.\n  // eslint-disable-next-line func-names\n  return function (...args: any[]) {\n    let returnedValue: any;\n\n    // @ts-ignore\n    const that: any = this;\n\n    // Get or create map\n    // eslint-disable-next-line no-prototype-builtins\n    if (!that.hasOwnProperty(propMapName)) {\n      Object.defineProperty(that, propMapName, {\n        configurable: false,\n        enumerable: false,\n        writable: false,\n        value: new Map<any, any>(),\n      });\n    }\n    const myMap: Map<any, any> = that[propMapName];\n\n    if (Array.isArray(tags)) {\n      for (const tag of tags) {\n        if (clearCacheTagsMap.has(tag)) {\n          clearCacheTagsMap.get(tag)!.push(myMap);\n        } else {\n          clearCacheTagsMap.set(tag, [myMap]);\n        }\n      }\n    }\n\n    if (hashFunction || args.length > 0 || ttlMs > 0) {\n      let hashKey: any;\n\n      // If true is passed as first parameter, will automatically use every argument, passed to string\n      if (hashFunction === true) {\n        hashKey = args.map((a) => a.toString()).join(\"!\");\n      } else if (hashFunction) {\n        hashKey = hashFunction.apply(that, args);\n      } else {\n        // eslint-disable-next-line prefer-destructuring\n        hashKey = args[0];\n      }\n\n      const timestampKey = `${hashKey}__timestamp`;\n      let isExpired: boolean = false;\n      if (ttlMs > 0) {\n        if (!myMap.has(timestampKey)) {\n          // \"Expired\" since it was never called before\n          isExpired = true;\n        } else {\n          const timestamp = myMap.get(timestampKey);\n          isExpired = Date.now() - timestamp > ttlMs;\n        }\n      }\n\n      if (myMap.has(hashKey) && !isExpired) {\n        returnedValue = myMap.get(hashKey);\n      } else {\n        returnedValue = originalMethod.apply(that, args as any);\n        myMap.set(hashKey, returnedValue);\n        if (ttlMs > 0) {\n          myMap.set(timestampKey, Date.now());\n        }\n      }\n    } else {\n      const hashKey = that;\n      if (myMap.has(hashKey)) {\n        returnedValue = myMap.get(hashKey);\n      } else {\n        returnedValue = originalMethod.apply(that, args as any);\n        myMap.set(hashKey, returnedValue);\n      }\n    }\n\n    return returnedValue;\n  };\n}\n","import axios, { AxiosResponse, AxiosRequestConfig, AxiosError } from \"axios\";\nimport { AnyNumber } from \"../bcs/types\";\nimport { VERSION } from \"../version\";\nimport { AptosApiError, AptosRequest, AptosResponse, ClientConfig } from \"./types\";\nimport \"./cookieJar\";\nimport fetchAdapter from \"@vespaiach/axios-fetch-adapter\";\n\n/**\n * Meaningful errors map\n */\nconst errors: Record<number, string> = {\n  400: \"Bad Request\",\n  401: \"Unauthorized\",\n  403: \"Forbidden\",\n  404: \"Not Found\",\n  429: \"Too Many Requests\",\n  500: \"Internal Server Error\",\n  502: \"Bad Gateway\",\n  503: \"Service Unavailable\",\n};\n\n/**\n * Given a url and method, sends the request with axios and\n * returns the response.\n */\nasync function axiosRequest<Request, Response>(\n  url: string,\n  method: \"GET\" | \"POST\",\n  body?: Request,\n  contentType?: string,\n  params?: Record<string, string | AnyNumber | boolean | undefined>,\n  overrides?: ClientConfig,\n): Promise<AxiosResponse<Response>> {\n  const headers: Record<string, string | number | boolean> = {\n    ...overrides?.HEADERS,\n    \"x-aptos-client\": `aptos-ts-sdk/${VERSION}`,\n    \"content-type\": contentType ?? \"application/json\",\n  };\n\n  if (overrides?.TOKEN) {\n    headers.Authorization = `Bearer ${overrides?.TOKEN}`;\n  }\n\n  const requestConfig: AxiosRequestConfig = {\n    headers,\n    method,\n    url,\n    params,\n    data: body,\n    adapter: fetchAdapter,\n    withCredentials: overrides?.WITH_CREDENTIALS ?? true,\n  };\n\n  try {\n    return await axios(requestConfig);\n  } catch (error) {\n    const axiosError = error as AxiosError<Response>;\n    if (axiosError.response) {\n      return axiosError.response;\n    }\n    throw error;\n  }\n}\n\n/**\n * The main function to use when doing an API request.\n * Wraps axios error response with AptosApiError\n *\n * @param options AptosRequest\n * @returns the response or AptosApiError\n */\nexport async function aptosRequest<Req, Res>(options: AptosRequest): Promise<AptosResponse<Req, Res>> {\n  const { url, endpoint, method, body, contentType, params, overrides } = options;\n  const fullEndpoint = `${url}/${endpoint ?? \"\"}`;\n  const response = await axiosRequest<Req, Res>(fullEndpoint, method, body, contentType, params, overrides);\n\n  const result: AptosResponse<Req, Res> = {\n    status: response.status,\n    statusText: response.statusText,\n    data: response.data,\n    headers: response.headers,\n    config: response.config,\n    url: fullEndpoint,\n  };\n\n  if (response.status >= 200 && response.status < 300) {\n    return result;\n  }\n  const errorMessage = errors[response.status];\n  throw new AptosApiError(options, result, errorMessage ?? \"Generic Error\");\n}\n","import { AnyNumber } from \"../bcs\";\n\n/**\n * A configuration object we can pass with the request to the server.\n *\n * @param TOKEN - an auth token to send with the request\n * @param HEADERS - extra headers we want to send with the request\n * @param WITH_CREDENTIALS - whether to carry cookies. By default, it is set to true and cookies will be sent\n */\nexport type ClientConfig = {\n  TOKEN?: string;\n  HEADERS?: Record<string, string | number | boolean>;\n  WITH_CREDENTIALS?: boolean;\n};\n\n/**\n * The API request type\n *\n * @param url - the url to make the request to, i.e https://fullnode.aptoslabs.devnet.com/v1\n * @param method - the request method \"GET\" | \"POST\"\n * @param endpoint (optional) - the endpoint to make the request to, i.e transactions\n * @param body (optional) - the body of the request\n * @param contentType (optional) - the content type to set the `content-type` header to,\n * by default is set to `application/json`\n * @param params (optional) - query params to add to the request\n * @param originMethod (optional) - the local method the request came from\n * @param overrides (optional) - a `ClientConfig` object type to override request data\n */\nexport type AptosRequest = {\n  url: string;\n  method: \"GET\" | \"POST\";\n  endpoint?: string;\n  body?: any;\n  contentType?: string;\n  params?: Record<string, string | AnyNumber | boolean | undefined>;\n  originMethod?: string;\n  overrides?: ClientConfig;\n};\n\n/**\n * The API response type\n *\n * @param status - the response status. i.e 200\n * @param statusText - the response message\n * @param data the response data\n * @param url the url the request was made to\n * @param headers the response headers\n * @param config (optional) - the request object\n * @param request (optional) - the request object\n */\nexport interface AptosResponse<Req, Res> {\n  status: number;\n  statusText: string;\n  data: Res;\n  url: string;\n  headers: any;\n  config?: any;\n  request?: Req;\n}\n\n/**\n * The type returned from an API error\n *\n * @param name - the error name \"AptosApiError\"\n * @param url the url the request was made to\n * @param status - the response status. i.e 400\n * @param statusText - the response message\n * @param data the response data\n * @param request - the AptosRequest\n */\nexport class AptosApiError extends Error {\n  readonly url: string;\n\n  readonly status: number;\n\n  readonly statusText: string;\n\n  readonly data: any;\n\n  readonly request: AptosRequest;\n\n  constructor(request: AptosRequest, response: AptosResponse<any, any>, message: string) {\n    super(message);\n\n    this.name = \"AptosApiError\";\n    this.url = response.url;\n    this.status = response.status;\n    this.statusText = response.statusText;\n    this.data = response.data;\n    this.request = request;\n  }\n}\n","import axios from \"axios\";\n\ninterface Cookie {\n  name: string;\n  value: string;\n  expires?: Date;\n  path?: string;\n  sameSite?: \"Lax\" | \"None\" | \"Strict\";\n  secure?: boolean;\n}\n\nclass CookieJar {\n  constructor(private jar = new Map<string, Cookie[]>()) {}\n\n  setCookie(url: URL, cookieStr: string) {\n    const key = url.origin.toLowerCase();\n    if (!this.jar.has(key)) {\n      this.jar.set(key, []);\n    }\n\n    const cookie = CookieJar.parse(cookieStr);\n    this.jar.set(key, [...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []), cookie]);\n  }\n\n  getCookies(url: URL): Cookie[] {\n    const key = url.origin.toLowerCase();\n    if (!this.jar.get(key)) {\n      return [];\n    }\n\n    // Filter out expired cookies\n    return this.jar.get(key)?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) || [];\n  }\n\n  static parse(str: string): Cookie {\n    if (typeof str !== \"string\") {\n      throw new Error(\"argument str must be a string\");\n    }\n\n    const parts = str.split(\";\").map((part) => part.trim());\n\n    let cookie: Cookie;\n\n    if (parts.length > 0) {\n      const [name, value] = parts[0].split(\"=\");\n      if (!name || !value) {\n        throw new Error(\"Invalid cookie\");\n      }\n\n      cookie = {\n        name,\n        value,\n      };\n    } else {\n      throw new Error(\"Invalid cookie\");\n    }\n\n    parts.slice(1).forEach((part) => {\n      const [name, value] = part.split(\"=\");\n      if (!name.trim()) {\n        throw new Error(\"Invalid cookie\");\n      }\n\n      const nameLow = name.toLowerCase();\n      // eslint-disable-next-line quotes\n      const val = value?.charAt(0) === \"'\" || value?.charAt(0) === '\"' ? value?.slice(1, -1) : value;\n      if (nameLow === \"expires\") {\n        cookie.expires = new Date(val);\n      }\n      if (nameLow === \"path\") {\n        cookie.path = val;\n      }\n      if (nameLow === \"samesite\") {\n        if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n          throw new Error(\"Invalid cookie SameSite value\");\n        }\n        cookie.sameSite = val;\n      }\n      if (nameLow === \"secure\") {\n        cookie.secure = true;\n      }\n    });\n\n    return cookie;\n  }\n}\nconst jar = new CookieJar();\n\naxios.interceptors.response.use((response) => {\n  if (Array.isArray(response.headers[\"set-cookie\"])) {\n    response.headers[\"set-cookie\"].forEach((c) => {\n      jar.setCookie(new URL(response.config.url!), c);\n    });\n  }\n  return response;\n});\n/* eslint-disable prefer-arrow-callback,func-names */\naxios.interceptors.request.use(function (config) {\n  const cookies = jar.getCookies(new URL(config.url!));\n\n  if (cookies?.length > 0 && config.headers) {\n    /* eslint-disable no-param-reassign */\n    config.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join(\"; \");\n  }\n  return config;\n});\n","import { aptosRequest } from \"./core\";\nimport { AptosRequest, AptosResponse } from \"./types\";\n\nexport type GetRequestOptions = Omit<AptosRequest, \"body\" | \"method\">;\n\n/**\n * Main function to do a Get request\n *\n * @param options GetRequestOptions\n * @returns\n */\nexport async function get<Req, Res>(options: GetRequestOptions): Promise<AptosResponse<Req, Res>> {\n  const response: AptosResponse<Req, Res> = await aptosRequest<Req, Res>({ ...options, method: \"GET\" });\n  return response;\n}\n","import { aptosRequest } from \"./core\";\nimport { AptosRequest, AptosResponse } from \"./types\";\n\nexport type PostRequestOptions = Omit<AptosRequest, \"method\">;\n\n/**\n * Main function to do a Post request\n *\n * @param options PostRequestOptions\n * @returns\n */\nexport async function post<Req, Res>(options: PostRequestOptions): Promise<AptosResponse<Req, Res>> {\n  const response: AptosResponse<Req, Res> = await aptosRequest<Req, Res>({ ...options, method: \"POST\" });\n  return response;\n}\n","import { ClientConfig, get } from \"../client\";\n\n/// This function is a helper for paginating using a function wrapping an API\nexport async function paginateWithCursor<Req extends Record<string, any>, Res extends any[]>(options: {\n  url: string;\n  endpoint?: string;\n  body?: any;\n  params?: Req;\n  originMethod?: string;\n  overrides?: ClientConfig;\n}): Promise<Res> {\n  const out = [];\n  let cursor: string | undefined;\n  const requestParams = options.params as Req & { start?: string };\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    requestParams.start = cursor;\n    // eslint-disable-next-line no-await-in-loop\n    const response = await get<Req, Res>({\n      url: options.url,\n      endpoint: options.endpoint,\n      params: requestParams,\n      originMethod: options.originMethod,\n      overrides: options.overrides,\n    });\n    // eslint-disable-next-line no-underscore-dangle\n    /**\n     * the cursor is a \"state key\" from the API prespective. Client\n     * should not need to \"care\" what it represents but just use it\n     * to query the next chunck of data.\n     */\n    cursor = response.headers[\"x-aptos-cursor\"];\n    // Now that we have the cursor (if any), we remove the headers before\n    // adding these to the output of this function.\n    // eslint-disable-next-line no-underscore-dangle\n    delete (response as any).headers;\n    out.push(...response.data);\n    if (cursor === null || cursor === undefined) {\n      break;\n    }\n  }\n  return out as any;\n}\n","export const NetworkToIndexerAPI: Record<string, string> = {\n  mainnet: \"https://indexer.mainnet.aptoslabs.com/v1/graphql\",\n  testnet: \"https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql\",\n  devnet: \"https://indexer-devnet.staging.gcp.aptosdev.com/v1/graphql\",\n};\n\nexport const NetworkToNodeAPI: Record<string, string> = {\n  mainnet: \"https://fullnode.mainnet.aptoslabs.com/v1\",\n  testnet: \"https://fullnode.testnet.aptoslabs.com/v1\",\n  devnet: \"https://fullnode.devnet.aptoslabs.com/v1\",\n};\n\nexport const NodeAPIToNetwork: Record<string, string> = {\n  \"https://fullnode.mainnet.aptoslabs.com/v1\": \"mainnet\",\n  \"https://fullnode.testnet.aptoslabs.com/v1\": \"testnet\",\n  \"https://fullnode.devnet.aptoslabs.com/v1\": \"devnet\",\n};\n\nexport enum Network {\n  MAINNET = \"mainnet\",\n  TESTNET = \"testnet\",\n  DEVNET = \"devnet\",\n}\n\nexport interface CustomEndpoints {\n  fullnodeUrl: string;\n  indexerUrl?: string;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils\";\nimport { HexEncodedBytes } from \"../generated\";\n\n// eslint-disable-next-line no-use-before-define\nexport type MaybeHexString = HexString | string | HexEncodedBytes;\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 © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from \"./abi\";\nexport * from \"./account_address\";\nexport * from \"./authenticator\";\nexport * from \"./transaction\";\nexport * from \"./type_tag\";\nexport * from \"./identifier\";\nexport * from \"./ed25519\";\nexport * from \"./multi_ed25519\";\nexport * from \"./authentication_key\";\nexport * from \"./rotation_proof_challenge\";\n\nexport type SigningMessage = Uint8Array;\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from \"./types\";\nexport * from \"./serializer\";\nexport * from \"./deserializer\";\nexport * from \"./helper\";\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint128, Uint16, Uint32, Uint64, Uint8, Uint256 } from \"./types\";\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 2 ** 8 - 1;\nexport const MAX_U16_NUMBER: Uint16 = 2 ** 16 - 1;\nexport const MAX_U32_NUMBER: Uint32 = 2 ** 32 - 1;\nexport const MAX_U64_BIG_INT: Uint64 = BigInt(2 ** 64) - BigInt(1);\nexport const MAX_U128_BIG_INT: Uint128 = BigInt(2 ** 128) - BigInt(1);\nexport const MAX_U256_BIG_INT: Uint256 = BigInt(2 ** 256) - BigInt(1);\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n  MAX_U128_BIG_INT,\n  MAX_U16_NUMBER,\n  MAX_U32_NUMBER,\n  MAX_U64_BIG_INT,\n  MAX_U8_NUMBER,\n  MAX_U256_BIG_INT,\n} from \"./consts\";\nimport { AnyNumber, Bytes, Uint16, Uint32, Uint8 } from \"./types\";\n\nexport class Serializer {\n  private buffer: ArrayBuffer;\n\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: Bytes) {\n    this.ensureBufferWillHandleSize(values.length);\n    new Uint8Array(this.buffer, this.offset).set(values);\n    this.offset += values.length;\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  /**\n   * Serializes a string. UTF8 string is supported. Serializes the string's bytes length \"l\" first,\n   * and then serializes \"l\" bytes of the string content.\n   *\n   * BCS layout for \"string\": string_length | string_content. string_length is the bytes length of\n   * the string that is uleb128 encoded. string_length is a u32 integer.\n   *\n   * @example\n   * ```ts\n   * const serializer = new Serializer();\n   * serializer.serializeStr(\"çå∞≠¢õß∂ƒ∫\");\n   * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n   * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n   * ```\n   */\n  serializeStr(value: string): void {\n    const textEncoder = new TextEncoder();\n    this.serializeBytes(textEncoder.encode(value));\n  }\n\n  /**\n   * Serializes an array of bytes.\n   *\n   * BCS layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n   * uleb128 encoded. bytes_length is a u32 integer.\n   */\n  serializeBytes(value: Bytes): void {\n    this.serializeU32AsUleb128(value.length);\n    this.serialize(value);\n  }\n\n  /**\n   * Serializes an array of bytes with known length. Therefore length doesn't need to be\n   * serialized to help deserialization.  When deserializing, the number of\n   * bytes to deserialize needs to be passed in.\n   */\n  serializeFixedBytes(value: Bytes): void {\n    this.serialize(value);\n  }\n\n  /**\n   * Serializes a boolean value.\n   *\n   * BCS layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n   */\n  serializeBool(value: boolean): void {\n    if (typeof value !== \"boolean\") {\n      throw new Error(\"Value needs to be a boolean\");\n    }\n    const byteValue = value ? 1 : 0;\n    this.serialize(new Uint8Array([byteValue]));\n  }\n\n  /**\n   * Serializes a uint8 number.\n   *\n   * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n   */\n  @checkNumberRange(0, MAX_U8_NUMBER)\n  serializeU8(value: Uint8): void {\n    this.serialize(new Uint8Array([value]));\n  }\n\n  /**\n   * Serializes a uint16 number.\n   *\n   * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const serializer = new Serializer();\n   * serializer.serializeU16(4660);\n   * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12]));\n   * ```\n   */\n  @checkNumberRange(0, MAX_U16_NUMBER)\n  serializeU16(value: Uint16): void {\n    this.serializeWithFunction(DataView.prototype.setUint16, 2, value);\n  }\n\n  /**\n   * Serializes a uint32 number.\n   *\n   * BCS layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const serializer = new Serializer();\n   * serializer.serializeU32(305419896);\n   * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n   * ```\n   */\n  @checkNumberRange(0, MAX_U32_NUMBER)\n  serializeU32(value: Uint32): void {\n    this.serializeWithFunction(DataView.prototype.setUint32, 4, value);\n  }\n\n  /**\n   * Serializes a uint64 number.\n   *\n   * BCS layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const serializer = new Serializer();\n   * serializer.serializeU64(1311768467750121216);\n   * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n   * ```\n   */\n  @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n  serializeU64(value: AnyNumber): void {\n    const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER);\n    const high = BigInt(value.toString()) >> BigInt(32);\n\n    // write little endian number\n    this.serializeU32(Number(low));\n    this.serializeU32(Number(high));\n  }\n\n  /**\n   * Serializes a uint128 number.\n   *\n   * BCS layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n   */\n  @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n  serializeU128(value: AnyNumber): void {\n    const low = BigInt(value.toString()) & MAX_U64_BIG_INT;\n    const high = BigInt(value.toString()) >> BigInt(64);\n\n    // write little endian number\n    this.serializeU64(low);\n    this.serializeU64(high);\n  }\n\n  /**\n   * Serializes a uint256 number.\n   *\n   * BCS layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n   */\n  @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n  serializeU256(value: AnyNumber): void {\n    const low = BigInt(value.toString()) & MAX_U128_BIG_INT;\n    const high = BigInt(value.toString()) >> BigInt(128);\n\n    // write little endian number\n    this.serializeU128(low);\n    this.serializeU128(high);\n  }\n\n  /**\n   * Serializes a uint32 number with uleb128.\n   *\n   * BCS use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n   */\n  @checkNumberRange(0, MAX_U32_NUMBER)\n  serializeU32AsUleb128(val: Uint32): void {\n    let value = val;\n    const valueArray = [];\n    while (value >>> 7 !== 0) {\n      valueArray.push((value & 0x7f) | 0x80);\n      value >>>= 7;\n    }\n    valueArray.push(value);\n    this.serialize(new Uint8Array(valueArray));\n  }\n\n  /**\n   * Returns the buffered bytes\n   */\n  getBytes(): Bytes {\n    return new Uint8Array(this.buffer).slice(0, this.offset);\n  }\n}\n\n/**\n * Creates a decorator to make sure the arg value of the decorated function is within a range.\n * @param minValue The arg value of decorated function must >= minValue\n * @param maxValue The arg value of decorated function must <= maxValue\n * @param message Error message\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T, message?: string) {\n  return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => {\n    const childFunction = descriptor.value;\n    // eslint-disable-next-line no-param-reassign\n    descriptor.value = function deco(value: AnyNumber) {\n      const valueBigInt = BigInt(value.toString());\n      if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) {\n        throw new Error(message || \"Value is out of range\");\n      }\n      childFunction.apply(this, [value]);\n    };\n    return descriptor;\n  };\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from \"./consts\";\nimport { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from \"./types\";\n\nexport class Deserializer {\n  private buffer: ArrayBuffer;\n\n  private offset: number;\n\n  constructor(data: Bytes) {\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    if (this.offset + length > this.buffer.byteLength) {\n      throw new Error(\"Reached to the end of buffer\");\n    }\n\n    const bytes = this.buffer.slice(this.offset, this.offset + length);\n    this.offset += length;\n    return bytes;\n  }\n\n  /**\n   * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n   * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n   *\n   * BCS layout for \"string\": string_length | string_content. string_length is the bytes length of\n   * the string that is uleb128 encoded. string_length is a u32 integer.\n   *\n   * @example\n   * ```ts\n   * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n   * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n   * assert(deserializer.deserializeStr() === \"çå∞≠¢õß∂ƒ∫\");\n   * ```\n   */\n  deserializeStr(): string {\n    const value = this.deserializeBytes();\n    const textDecoder = new TextDecoder();\n    return textDecoder.decode(value);\n  }\n\n  /**\n   * Deserializes an array of bytes.\n   *\n   * BCS layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n   * uleb128 encoded. bytes_length is a u32 integer.\n   */\n  deserializeBytes(): Bytes {\n    const len = this.deserializeUleb128AsU32();\n    return new Uint8Array(this.read(len));\n  }\n\n  /**\n   * Deserializes an array of bytes. The number of bytes to read is already known.\n   *\n   */\n  deserializeFixedBytes(len: number): Bytes {\n    return new Uint8Array(this.read(len));\n  }\n\n  /**\n   * Deserializes a boolean value.\n   *\n   * BCS layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n   */\n  deserializeBool(): boolean {\n    const bool = new Uint8Array(this.read(1))[0];\n    if (bool !== 1 && bool !== 0) {\n      throw new Error(\"Invalid boolean value\");\n    }\n    return bool === 1;\n  }\n\n  /**\n   * Deserializes a uint8 number.\n   *\n   * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n   */\n  deserializeU8(): Uint8 {\n    return new DataView(this.read(1)).getUint8(0);\n  }\n\n  /**\n   * Deserializes a uint16 number.\n   *\n   * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]));\n   * assert(deserializer.deserializeU16() === 4660);\n   * ```\n   */\n  deserializeU16(): Uint16 {\n    return new DataView(this.read(2)).getUint16(0, true);\n  }\n\n  /**\n   * Deserializes a uint32 number.\n   *\n   * BCS layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n   * assert(deserializer.deserializeU32() === 305419896);\n   * ```\n   */\n  deserializeU32(): Uint32 {\n    return new DataView(this.read(4)).getUint32(0, true);\n  }\n\n  /**\n   * Deserializes a uint64 number.\n   *\n   * BCS layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n   * @example\n   * ```ts\n   * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n   * assert(deserializer.deserializeU64() === 1311768467750121216);\n   * ```\n   */\n  deserializeU64(): Uint64 {\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((BigInt(high) << BigInt(32)) | BigInt(low));\n  }\n\n  /**\n   * Deserializes a uint128 number.\n   *\n   * BCS layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n   */\n  deserializeU128(): Uint128 {\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((high << BigInt(64)) | low);\n  }\n\n  /**\n   * Deserializes a uint256 number.\n   *\n   * BCS layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n   */\n  deserializeU256(): Uint256 {\n    const low = this.deserializeU128();\n    const high = this.deserializeU128();\n\n    // combine the two 128-bit values and return (little endian)\n    return BigInt((high << BigInt(128)) | low);\n  }\n\n  /**\n   * Deserializes a uleb128 encoded uint32 number.\n   *\n   * BCS use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n   */\n  deserializeUleb128AsU32(): Uint32 {\n    let value: bigint = BigInt(0);\n    let shift = 0;\n\n    while (value < MAX_U32_NUMBER) {\n      const byte = this.deserializeU8();\n      value |= BigInt(byte & 0x7f) << BigInt(shift);\n\n      if ((byte & 0x80) === 0) {\n        break;\n      }\n      shift += 7;\n    }\n\n    if (value > MAX_U32_NUMBER) {\n      throw new Error(\"Overflow while parsing uleb128-encoded uint32 value\");\n    }\n\n    return Number(value);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from \"./deserializer\";\nimport { Serializer } from \"./serializer\";\nimport { AnyNumber, Bytes, Seq, Uint16, Uint32, Uint8 } from \"./types\";\n\ninterface Serializable {\n  serialize(serializer: Serializer): void;\n}\n\n/**\n * Serializes a vector values that are \"Serializable\".\n */\nexport function serializeVector<T extends Serializable>(value: Seq<T>, serializer: Serializer): void {\n  serializer.serializeU32AsUleb128(value.length);\n  value.forEach((item: T) => {\n    item.serialize(serializer);\n  });\n}\n\n/**\n * Serializes a vector with specified item serialization function.\n * Very dynamic function and bypasses static typechecking.\n */\nexport function serializeVectorWithFunc(value: any[], func: string): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU32AsUleb128(value.length);\n  const f = (serializer as any)[func];\n  value.forEach((item) => {\n    f.call(serializer, item);\n  });\n  return serializer.getBytes();\n}\n\n/**\n * Deserializes a vector of values.\n */\nexport function deserializeVector(deserializer: Deserializer, cls: any): any[] {\n  const length = deserializer.deserializeUleb128AsU32();\n  const list: Seq<typeof cls> = [];\n  for (let i = 0; i < length; i += 1) {\n    list.push(cls.deserialize(deserializer));\n  }\n  return list;\n}\n\nexport function bcsToBytes<T extends Serializable>(value: T): Bytes {\n  const serializer = new Serializer();\n  value.serialize(serializer);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeUint64(value: AnyNumber): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU64(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeU8(value: Uint8): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU8(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeU16(value: Uint16): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU16(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeU32(value: Uint32): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU32(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeU128(value: AnyNumber): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU128(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeU256(value: AnyNumber): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeU256(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeBool(value: boolean): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeBool(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeStr(value: string): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeStr(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeBytes(value: Bytes): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeBytes(value);\n  return serializer.getBytes();\n}\n\nexport function bcsSerializeFixedBytes(value: Bytes): Bytes {\n  const serializer = new Serializer();\n  serializer.serializeFixedBytes(value);\n  return serializer.getBytes();\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-classes-per-file */\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { HexString } from \"../utils\";\nimport {\n  Deserializer,\n  Serializer,\n  Uint64,\n  Bytes,\n  Seq,\n  Uint8,\n  Uint128,\n  deserializeVector,\n  serializeVector,\n  bcsToBytes,\n  Uint16,\n  Uint256,\n} from \"../bcs\";\nimport { AccountAuthenticator, TransactionAuthenticator, TransactionAuthenticatorMultiAgent } from \"./authenticator\";\nimport { Identifier } from \"./identifier\";\nimport { TypeTag } from \"./type_tag\";\nimport { AccountAddress } from \"./account_address\";\n\nexport class RawTransaction {\n  /**\n   * RawTransactions contain the metadata and payloads that can be submitted to Aptos chain for execution.\n   * RawTransactions must be signed before Aptos chain can execute them.\n   *\n   * @param sender Account address of the sender.\n   * @param sequence_number Sequence number of this transaction. This must match the sequence number stored in\n   *   the sender's account at the time the transaction executes.\n   * @param payload Instructions for the Aptos Blockchain, including publishing a module,\n   *   execute a entry function or execute a script payload.\n   * @param max_gas_amount Maximum total gas to spend for this transaction. The account must have more\n   *   than this gas or the transaction will be discarded during validation.\n   * @param gas_unit_price Price to be paid per gas unit.\n   * @param expiration_timestamp_secs The blockchain timestamp at which the blockchain would discard this transaction.\n   * @param chain_id The chain ID of the blockchain that this transaction is intended to be run on.\n   */\n  constructor(\n    public readonly sender: AccountAddress,\n    public readonly sequence_number: Uint64,\n    public readonly payload: TransactionPayload,\n    public readonly max_gas_amount: Uint64,\n    public readonly gas_unit_price: Uint64,\n    public readonly expiration_timestamp_secs: Uint64,\n    public readonly chain_id: ChainId,\n  ) {}\n\n  serialize(serializer: Serializer): void {\n    this.sender.serialize(serializer);\n    serializer.serializeU64(this.sequence_number);\n    this.payload.serialize(serializer);\n    serializer.serializeU64(this.max_gas_amount);\n    serializer.serializeU64(this.gas_unit_price);\n    serializer.serializeU64(this.expiration_timestamp_secs);\n    this.chain_id.serialize(serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): RawTransaction {\n    const sender = AccountAddress.deserialize(deserializer);\n    const sequence_number = deserializer.deserializeU64();\n    const payload = TransactionPayload.deserialize(deserializer);\n    const max_gas_amount = deserializer.deserializeU64();\n    const gas_unit_price = deserializer.deserializeU64();\n    const expiration_timestamp_secs = deserializer.deserializeU64();\n    const chain_id = ChainId.deserialize(deserializer);\n    return new RawTransaction(\n      sender,\n      sequence_number,\n      payload,\n      max_gas_amount,\n      gas_unit_price,\n      expiration_timestamp_secs,\n      chain_id,\n    );\n  }\n}\n\nexport class Script {\n  /**\n   * Scripts contain the Move bytecodes payload that can be submitted to Aptos chain for execution.\n   * @param code Move bytecode\n   * @param ty_args Type arguments that bytecode requires.\n   *\n   * @example\n   * A coin transfer function has one type argument \"CoinType\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   * @param args Arugments to bytecode function.\n   *\n   * @example\n   * A coin transfer function has three arugments \"from\", \"to\" and \"amount\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   */\n  constructor(\n    public readonly code: Bytes,\n    public readonly ty_args: Seq<TypeTag>,\n    public readonly args: Seq<TransactionArgument>,\n  ) {}\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.code);\n    serializeVector<TypeTag>(this.ty_args, serializer);\n    serializeVector<TransactionArgument>(this.args, serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): Script {\n    const code = deserializer.deserializeBytes();\n    const ty_args = deserializeVector(deserializer, TypeTag);\n    const args = deserializeVector(deserializer, TransactionArgument);\n    return new Script(code, ty_args, args);\n  }\n}\n\nexport class EntryFunction {\n  /**\n   * Contains the payload to run a function within a module.\n   * @param module_name Fully qualified module name. ModuleId consists of account address and module name.\n   * @param function_name The function to run.\n   * @param ty_args Type arguments that move function requires.\n   *\n   * @example\n   * A coin transfer function has one type argument \"CoinType\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   * @param args Arugments to the move function.\n   *\n   * @example\n   * A coin transfer function has three arugments \"from\", \"to\" and \"amount\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   */\n  constructor(\n    public readonly module_name: ModuleId,\n    public readonly function_name: Identifier,\n    public readonly ty_args: Seq<TypeTag>,\n    public readonly args: Seq<Bytes>,\n  ) {}\n\n  /**\n   *\n   * @param module Fully qualified module name in format \"AccountAddress::module_name\" e.g. \"0x1::coin\"\n   * @param func Function name\n   * @param ty_args Type arguments that move function requires.\n   *\n   * @example\n   * A coin transfer function has one type argument \"CoinType\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   * @param args Arugments to the move function.\n   *\n   * @example\n   * A coin transfer function has three arugments \"from\", \"to\" and \"amount\".\n   * ```\n   * public(script) fun transfer<CoinType>(from: &signer, to: address, amount: u64,)\n   * ```\n   * @returns\n   */\n  static natural(module: string, func: string, ty_args: Seq<TypeTag>, args: Seq<Bytes>): EntryFunction {\n    return new EntryFunction(ModuleId.fromStr(module), new Identifier(func), ty_args, args);\n  }\n\n  /**\n   * `natual` is deprecated, please use `natural`\n   *\n   * @deprecated.\n   */\n  static natual(module: string, func: string, ty_args: Seq<TypeTag>, args: Seq<Bytes>): EntryFunction {\n    return EntryFunction.natural(module, func, ty_args, args);\n  }\n\n  serialize(serializer: Serializer): void {\n    this.module_name.serialize(serializer);\n    this.function_name.serialize(serializer);\n    serializeVector<TypeTag>(this.ty_args, serializer);\n\n    serializer.serializeU32AsUleb128(this.args.length);\n    this.args.forEach((item: Bytes) => {\n      serializer.serializeBytes(item);\n    });\n  }\n\n  static deserialize(deserializer: Deserializer): EntryFunction {\n    const module_name = ModuleId.deserialize(deserializer);\n    const function_name = Identifier.deserialize(deserializer);\n    const ty_args = deserializeVector(deserializer, TypeTag);\n\n    const length = deserializer.deserializeUleb128AsU32();\n    const list: Seq<Bytes> = [];\n    for (let i = 0; i < length; i += 1) {\n      list.push(deserializer.deserializeBytes());\n    }\n\n    const args = list;\n    return new EntryFunction(module_name, function_name, ty_args, args);\n  }\n}\n\nexport class MultiSigTransactionPayload {\n  /**\n   * Contains the payload to run a multisig account transaction.\n   * @param transaction_payload The payload of the multisig transaction. This can only be EntryFunction for now but\n   * Script might be supported in the future.\n   */\n  constructor(public readonly transaction_payload: EntryFunction) {}\n\n  serialize(serializer: Serializer): void {\n    // We can support multiple types of inner transaction payload in the future.\n    // For now it's only EntryFunction but if we support more types, we need to serialize with the right enum values\n    // here\n    serializer.serializeU32AsUleb128(0);\n    this.transaction_payload.serialize(serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): MultiSigTransactionPayload {\n    // TODO: Support other types of payload beside EntryFunction.\n    // This is the enum value indicating which type of payload the multisig tx contains.\n    deserializer.deserializeUleb128AsU32();\n    return new MultiSigTransactionPayload(EntryFunction.deserialize(deserializer));\n  }\n}\n\nexport class MultiSig {\n  /**\n   * Contains the payload to run a multisig account transaction.\n   * @param multisig_address The multisig account address the transaction will be executed as.\n   * @param transaction_payload The payload of the multisig transaction. This is optional when executing a multisig\n   *  transaction whose payload is already stored on chain.\n   */\n  constructor(\n    public readonly multisig_address: AccountAddress,\n    public readonly transaction_payload?: MultiSigTransactionPayload,\n  ) {}\n\n  serialize(serializer: Serializer): void {\n    this.multisig_address.serialize(serializer);\n    // Options are encoded with an extra u8 field before the value - 0x0 is none and 0x1 is present.\n    // We use serializeBool below to create this prefix value.\n    if (this.transaction_payload === undefined) {\n      serializer.serializeBool(false);\n    } else {\n      serializer.serializeBool(true);\n      this.transaction_payload.serialize(serializer);\n    }\n  }\n\n  static deserialize(deserializer: Deserializer): MultiSig {\n    const multisig_address = AccountAddress.deserialize(deserializer);\n    const payloadPresent = deserializer.deserializeBool();\n    let transaction_payload;\n    if (payloadPresent) {\n      transaction_payload = MultiSigTransactionPayload.deserialize(deserializer);\n    }\n    return new MultiSig(multisig_address, transaction_payload);\n  }\n}\n\nexport class Module {\n  /**\n   * Contains the bytecode of a Move module that can be published to the Aptos chain.\n   * @param code Move bytecode of a module.\n   */\n  constructor(public readonly code: Bytes) {}\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.code);\n  }\n\n  static deserialize(deserializer: Deserializer): Module {\n    const code = deserializer.deserializeBytes();\n    return new Module(code);\n  }\n}\n\nexport class ModuleId {\n  /**\n   * Full name of a module.\n   * @param address The account address.\n   * @param name The name of the module under the account at \"address\".\n   */\n  constructor(public readonly address: AccountAddress, public readonly name: Identifier) {}\n\n  /**\n   * Converts a string literal to a ModuleId\n   * @param moduleId String literal in format \"AccountAddress::module_name\", e.g. \"0x1::coin\"\n   * @returns\n   */\n  static fromStr(moduleId: string): ModuleId {\n    const parts = moduleId.split(\"::\");\n    if (parts.length !== 2) {\n      throw new Error(\"Invalid module id.\");\n    }\n    return new ModuleId(AccountAddress.fromHex(new HexString(parts[0])), new Identifier(parts[1]));\n  }\n\n  serialize(serializer: Serializer): void {\n    this.address.serialize(serializer);\n    this.name.serialize(serializer);\n  }\n\n  static 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 class ChangeSet {\n  serialize(serializer: Serializer): void {\n    throw new Error(\"Not implemented.\");\n  }\n\n  static deserialize(deserializer: Deserializer): ChangeSet {\n    throw new Error(\"Not implemented.\");\n  }\n}\n\nexport class WriteSet {\n  serialize(serializer: Serializer): void {\n    throw new Error(\"Not implmented.\");\n  }\n\n  static deserialize(deserializer: Deserializer): WriteSet {\n    throw new Error(\"Not implmented.\");\n  }\n}\n\nexport class SignedTransaction {\n  /**\n   * A SignedTransaction consists of a raw transaction and an authenticator. The authenticator\n   * contains a client's public key and the signature of the raw transaction.\n   *\n   * @see {@link https://aptos.dev/guides/creating-a-signed-transaction/ | Creating a Signed Transaction}\n   *\n   * @param raw_txn\n   * @param authenticator Contains a client's public key and the signature of the raw transaction.\n   *   Authenticator has 3 flavors: single signature, multi-signature and multi-agent.\n   *   @see authenticator.ts for details.\n   */\n  constructor(public readonly raw_txn: RawTransaction, public readonly authenticator: TransactionAuthenticator) {}\n\n  serialize(serializer: Serializer): void {\n    this.raw_txn.serialize(serializer);\n    this.authenticator.serialize(serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): SignedTransaction {\n    const raw_txn = RawTransaction.deserialize(deserializer);\n    const authenticator = TransactionAuthenticator.deserialize(deserializer);\n    return new SignedTransaction(raw_txn, authenticator);\n  }\n}\n\nexport abstract class RawTransactionWithData {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): RawTransactionWithData {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return MultiAgentRawTransaction.load(deserializer);\n      case 1:\n        return FeePayerRawTransaction.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for RawTransactionWithData: ${index}`);\n    }\n  }\n}\n\nexport class MultiAgentRawTransaction extends RawTransactionWithData {\n  constructor(\n    public readonly raw_txn: RawTransaction,\n    public readonly secondary_signer_addresses: Seq<AccountAddress>,\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    // enum variant index\n    serializer.serializeU32AsUleb128(0);\n    this.raw_txn.serialize(serializer);\n    serializeVector<TransactionArgument>(this.secondary_signer_addresses, serializer);\n  }\n\n  static load(deserializer: Deserializer): MultiAgentRawTransaction {\n    const rawTxn = RawTransaction.deserialize(deserializer);\n    const secondarySignerAddresses = deserializeVector(deserializer, AccountAddress);\n\n    return new MultiAgentRawTransaction(rawTxn, secondarySignerAddresses);\n  }\n}\n\nexport class FeePayerRawTransaction extends RawTransactionWithData {\n  constructor(\n    public readonly raw_txn: RawTransaction,\n    public readonly secondary_signer_addresses: Seq<AccountAddress>,\n    public readonly fee_payer_address: AccountAddress,\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    // enum variant index\n    serializer.serializeU32AsUleb128(1);\n    this.raw_txn.serialize(serializer);\n    serializeVector<TransactionArgument>(this.secondary_signer_addresses, serializer);\n    this.fee_payer_address.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): FeePayerRawTransaction {\n    const rawTxn = RawTransaction.deserialize(deserializer);\n    const secondarySignerAddresses = deserializeVector(deserializer, AccountAddress);\n    const feePayerAddress = AccountAddress.deserialize(deserializer);\n\n    return new FeePayerRawTransaction(rawTxn, secondarySignerAddresses, feePayerAddress);\n  }\n}\n\nexport abstract class TransactionPayload {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): TransactionPayload {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return TransactionPayloadScript.load(deserializer);\n      // TODO: change to 1 once ModuleBundle has been removed from rust\n      case 2:\n        return TransactionPayloadEntryFunction.load(deserializer);\n      case 3:\n        return TransactionPayloadMultisig.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for TransactionPayload: ${index}`);\n    }\n  }\n}\n\nexport class TransactionPayloadScript extends TransactionPayload {\n  constructor(public readonly value: Script) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionPayloadScript {\n    const value = Script.deserialize(deserializer);\n    return new TransactionPayloadScript(value);\n  }\n}\n\nexport class TransactionPayloadEntryFunction extends TransactionPayload {\n  constructor(public readonly value: EntryFunction) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(2);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionPayloadEntryFunction {\n    const value = EntryFunction.deserialize(deserializer);\n    return new TransactionPayloadEntryFunction(value);\n  }\n}\n\nexport class TransactionPayloadMultisig extends TransactionPayload {\n  constructor(public readonly value: MultiSig) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(3);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionPayloadMultisig {\n    const value = MultiSig.deserialize(deserializer);\n    return new TransactionPayloadMultisig(value);\n  }\n}\n\nexport class ChainId {\n  constructor(public readonly value: Uint8) {}\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU8(this.value);\n  }\n\n  static deserialize(deserializer: Deserializer): ChainId {\n    const value = deserializer.deserializeU8();\n    return new ChainId(value);\n  }\n}\n\nexport abstract class TransactionArgument {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): TransactionArgument {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return TransactionArgumentU8.load(deserializer);\n      case 1:\n        return TransactionArgumentU64.load(deserializer);\n      case 2:\n        return TransactionArgumentU128.load(deserializer);\n      case 3:\n        return TransactionArgumentAddress.load(deserializer);\n      case 4:\n        return TransactionArgumentU8Vector.load(deserializer);\n      case 5:\n        return TransactionArgumentBool.load(deserializer);\n      case 6:\n        return TransactionArgumentU16.load(deserializer);\n      case 7:\n        return TransactionArgumentU32.load(deserializer);\n      case 8:\n        return TransactionArgumentU256.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for TransactionArgument: ${index}`);\n    }\n  }\n}\n\nexport class TransactionArgumentU8 extends TransactionArgument {\n  constructor(public readonly value: Uint8) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    serializer.serializeU8(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU8 {\n    const value = deserializer.deserializeU8();\n    return new TransactionArgumentU8(value);\n  }\n}\n\nexport class TransactionArgumentU16 extends TransactionArgument {\n  constructor(public readonly value: Uint16) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(6);\n    serializer.serializeU16(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU16 {\n    const value = deserializer.deserializeU16();\n    return new TransactionArgumentU16(value);\n  }\n}\n\nexport class TransactionArgumentU32 extends TransactionArgument {\n  constructor(public readonly value: Uint16) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(7);\n    serializer.serializeU32(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU32 {\n    const value = deserializer.deserializeU32();\n    return new TransactionArgumentU32(value);\n  }\n}\n\nexport class TransactionArgumentU64 extends TransactionArgument {\n  constructor(public readonly value: Uint64) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(1);\n    serializer.serializeU64(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU64 {\n    const value = deserializer.deserializeU64();\n    return new TransactionArgumentU64(value);\n  }\n}\n\nexport class TransactionArgumentU128 extends TransactionArgument {\n  constructor(public readonly value: Uint128) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(2);\n    serializer.serializeU128(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU128 {\n    const value = deserializer.deserializeU128();\n    return new TransactionArgumentU128(value);\n  }\n}\n\nexport class TransactionArgumentU256 extends TransactionArgument {\n  constructor(public readonly value: Uint256) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(8);\n    serializer.serializeU256(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU256 {\n    const value = deserializer.deserializeU256();\n    return new TransactionArgumentU256(value);\n  }\n}\n\nexport class TransactionArgumentAddress extends TransactionArgument {\n  constructor(public readonly value: AccountAddress) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(3);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentAddress {\n    const value = AccountAddress.deserialize(deserializer);\n    return new TransactionArgumentAddress(value);\n  }\n}\n\nexport class TransactionArgumentU8Vector extends TransactionArgument {\n  constructor(public readonly value: Bytes) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(4);\n    serializer.serializeBytes(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentU8Vector {\n    const value = deserializer.deserializeBytes();\n    return new TransactionArgumentU8Vector(value);\n  }\n}\n\nexport class TransactionArgumentBool extends TransactionArgument {\n  constructor(public readonly value: boolean) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(5);\n    serializer.serializeBool(this.value);\n  }\n\n  static load(deserializer: Deserializer): TransactionArgumentBool {\n    const value = deserializer.deserializeBool();\n    return new TransactionArgumentBool(value);\n  }\n}\n\nexport abstract class Transaction {\n  abstract serialize(serializer: Serializer): void;\n\n  abstract hash(): Bytes;\n\n  getHashSalt(): Bytes {\n    const hash = sha3Hash.create();\n    hash.update(\"APTOS::Transaction\");\n    return hash.digest();\n  }\n\n  static deserialize(deserializer: Deserializer): Transaction {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return UserTransaction.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for Transaction: ${index}`);\n    }\n  }\n}\n\nexport class UserTransaction extends Transaction {\n  constructor(public readonly value: SignedTransaction) {\n    super();\n  }\n\n  hash(): Bytes {\n    const hash = sha3Hash.create();\n    hash.update(this.getHashSalt());\n    hash.update(bcsToBytes(this));\n    return hash.digest();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): UserTransaction {\n    return new UserTransaction(SignedTransaction.deserialize(deserializer));\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { HexString, MaybeHexString } from \"../utils\";\nimport { Serializer, Deserializer, Bytes } from \"../bcs\";\n\nexport class AccountAddress {\n  static readonly LENGTH: number = 32;\n\n  readonly address: Bytes;\n\n  static CORE_CODE_ADDRESS: AccountAddress = AccountAddress.fromHex(\"0x1\");\n\n  constructor(address: Bytes) {\n    if (address.length !== AccountAddress.LENGTH) {\n      throw new Error(\"Expected address of length 32\");\n    }\n    this.address = address;\n  }\n\n  /**\n   * Creates AccountAddress from a hex string.\n   * @param addr Hex string can be with a prefix or without a prefix,\n   *   e.g. '0x1aa' or '1aa'. Hex string will be left padded with 0s if too short.\n   */\n  static fromHex(addr: MaybeHexString): AccountAddress {\n    let address = HexString.ensure(addr);\n\n    // If an address hex has odd number of digits, padd the hex string with 0\n    // e.g. '1aa' would become '01aa'.\n    if (address.noPrefix().length % 2 !== 0) {\n      address = new HexString(`0${address.noPrefix()}`);\n    }\n\n    const addressBytes = address.toUint8Array();\n\n    if (addressBytes.length > AccountAddress.LENGTH) {\n      // eslint-disable-next-line quotes\n      throw new Error(\"Hex string is too long. Address's length is 32 bytes.\");\n    } else if (addressBytes.length === AccountAddress.LENGTH) {\n      return new AccountAddress(addressBytes);\n    }\n\n    const res: Bytes = new Uint8Array(AccountAddress.LENGTH);\n    res.set(addressBytes, AccountAddress.LENGTH - addressBytes.length);\n\n    return new AccountAddress(res);\n  }\n\n  /**\n   * Checks if the string is a valid AccountAddress\n   * @param addr Hex string can be with a prefix or without a prefix,\n   *   e.g. '0x1aa' or '1aa'. Hex string will be left padded with 0s if too short.\n   */\n  static isValid(addr: MaybeHexString): boolean {\n    // At least one zero is required\n    if (addr === \"\") {\n      return false;\n    }\n\n    let address = HexString.ensure(addr);\n\n    // If an address hex has odd number of digits, padd the hex string with 0\n    // e.g. '1aa' would become '01aa'.\n    if (address.noPrefix().length % 2 !== 0) {\n      address = new HexString(`0${address.noPrefix()}`);\n    }\n\n    const addressBytes = address.toUint8Array();\n\n    return addressBytes.length <= AccountAddress.LENGTH;\n  }\n\n  /**\n   * Return a hex string from account Address.\n   */\n  toHexString(): MaybeHexString {\n    return HexString.fromUint8Array(this.address).hex();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeFixedBytes(this.address);\n  }\n\n  static deserialize(deserializer: Deserializer): AccountAddress {\n    return new AccountAddress(deserializer.deserializeFixedBytes(AccountAddress.LENGTH));\n  }\n\n  /**\n   * Standardizes an address to the format \"0x\" followed by 64 lowercase hexadecimal digits.\n   */\n  static standardizeAddress(address: string): string {\n    // Convert the address to lowercase\n    const lowercaseAddress = address.toLowerCase();\n    // Remove the \"0x\" prefix if present\n    const addressWithoutPrefix = lowercaseAddress.startsWith(\"0x\") ? lowercaseAddress.slice(2) : lowercaseAddress;\n    // Pad the address with leading zeros if necessary\n    // to ensure it has exactly 64 characters (excluding the \"0x\" prefix)\n    const addressWithPadding = addressWithoutPrefix.padStart(64, \"0\");\n    // Return the standardized address with the \"0x\" prefix\n    return `0x${addressWithPadding}`;\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Bytes, Deserializer, Serializer } from \"../bcs\";\n\nexport class Ed25519PublicKey {\n  static readonly LENGTH: number = 32;\n\n  readonly value: Bytes;\n\n  constructor(value: Bytes) {\n    if (value.length !== Ed25519PublicKey.LENGTH) {\n      throw new Error(`Ed25519PublicKey length should be ${Ed25519PublicKey.LENGTH}`);\n    }\n    this.value = value;\n  }\n\n  toBytes(): Bytes {\n    return this.value;\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.value);\n  }\n\n  static deserialize(deserializer: Deserializer): Ed25519PublicKey {\n    const value = deserializer.deserializeBytes();\n    return new Ed25519PublicKey(value);\n  }\n}\n\nexport class Ed25519Signature {\n  static readonly LENGTH = 64;\n\n  constructor(public readonly value: Bytes) {\n    if (value.length !== Ed25519Signature.LENGTH) {\n      throw new Error(`Ed25519Signature length should be ${Ed25519Signature.LENGTH}`);\n    }\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.value);\n  }\n\n  static deserialize(deserializer: Deserializer): Ed25519Signature {\n    const value = deserializer.deserializeBytes();\n    return new Ed25519Signature(value);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { Bytes, Deserializer, Seq, Serializer, Uint8 } from \"../bcs\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"./ed25519\";\n\n/**\n * MultiEd25519 currently supports at most 32 signatures.\n */\nconst MAX_SIGNATURES_SUPPORTED = 32;\n\nexport class MultiEd25519PublicKey {\n  /**\n   * Public key for a K-of-N multisig transaction. A K-of-N multisig transaction means that for such a\n   * transaction to be executed, at least K out of the N authorized signers have signed the transaction\n   * and passed the check conducted by the chain.\n   *\n   * @see {@link\n   * https://aptos.dev/guides/creating-a-signed-transaction#multisignature-transactions | Creating a Signed Transaction}\n   *\n   * @param public_keys A list of public keys\n   * @param threshold At least \"threshold\" signatures must be valid\n   */\n  constructor(public readonly public_keys: Seq<Ed25519PublicKey>, public readonly threshold: Uint8) {\n    if (threshold > MAX_SIGNATURES_SUPPORTED) {\n      throw new Error(`\"threshold\" cannot be larger than ${MAX_SIGNATURES_SUPPORTED}`);\n    }\n  }\n\n  /**\n   * Converts a MultiEd25519PublicKey into bytes with: bytes = p1_bytes | ... | pn_bytes | threshold\n   */\n  toBytes(): Bytes {\n    const bytes = new Uint8Array(this.public_keys.length * Ed25519PublicKey.LENGTH + 1);\n    this.public_keys.forEach((k: Ed25519PublicKey, i: number) => {\n      bytes.set(k.value, i * Ed25519PublicKey.LENGTH);\n    });\n\n    bytes[this.public_keys.length * Ed25519PublicKey.LENGTH] = this.threshold;\n\n    return bytes;\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.toBytes());\n  }\n\n  static deserialize(deserializer: Deserializer): MultiEd25519PublicKey {\n    const bytes = deserializer.deserializeBytes();\n    const threshold = bytes[bytes.length - 1];\n\n    const keys: Seq<Ed25519PublicKey> = [];\n\n    for (let i = 0; i < bytes.length - 1; i += Ed25519PublicKey.LENGTH) {\n      const begin = i;\n      keys.push(new Ed25519PublicKey(bytes.subarray(begin, begin + Ed25519PublicKey.LENGTH)));\n    }\n    return new MultiEd25519PublicKey(keys, threshold);\n  }\n}\n\nexport class MultiEd25519Signature {\n  static BITMAP_LEN: Uint8 = 4;\n\n  /**\n   * Signature for a K-of-N multisig transaction.\n   *\n   * @see {@link\n   * https://aptos.dev/guides/creating-a-signed-transaction#multisignature-transactions | Creating a Signed Transaction}\n   *\n   * @param signatures A list of ed25519 signatures\n   * @param bitmap 4 bytes, at most 32 signatures are supported. If Nth bit value is `1`, the Nth\n   * signature should be provided in `signatures`. Bits are read from left to right\n   */\n  constructor(public readonly signatures: Seq<Ed25519Signature>, public readonly bitmap: Uint8Array) {\n    if (bitmap.length !== MultiEd25519Signature.BITMAP_LEN) {\n      throw new Error(`\"bitmap\" length should be ${MultiEd25519Signature.BITMAP_LEN}`);\n    }\n  }\n\n  /**\n   * Converts a MultiEd25519Signature into bytes with `bytes = s1_bytes | ... | sn_bytes | bitmap`\n   */\n  toBytes(): Bytes {\n    const bytes = new Uint8Array(this.signatures.length * Ed25519Signature.LENGTH + MultiEd25519Signature.BITMAP_LEN);\n    this.signatures.forEach((k: Ed25519Signature, i: number) => {\n      bytes.set(k.value, i * Ed25519Signature.LENGTH);\n    });\n\n    bytes.set(this.bitmap, this.signatures.length * Ed25519Signature.LENGTH);\n\n    return bytes;\n  }\n\n  /**\n   * Helper method to create a bitmap out of the specified bit positions\n   * @param bits The bitmap positions that should be set. A position starts at index 0.\n   * Valid position should range between 0 and 31.\n   * @example\n   * Here's an example of valid `bits`\n   * ```\n   * [0, 2, 31]\n   * ```\n   * `[0, 2, 31]` means the 1st, 3rd and 32nd bits should be set in the bitmap.\n   * The result bitmap should be 0b1010000000000000000000000000001\n   *\n   * @returns bitmap that is 32bit long\n   */\n  static createBitmap(bits: Seq<Uint8>): Uint8Array {\n    // Bits are read from left to right. e.g. 0b10000000 represents the first bit is set in one byte.\n    // The decimal value of 0b10000000 is 128.\n    const firstBitInByte = 128;\n    const bitmap = new Uint8Array([0, 0, 0, 0]);\n\n    // Check if duplicates exist in bits\n    const dupCheckSet = new Set();\n\n    bits.forEach((bit: number) => {\n      if (bit >= MAX_SIGNATURES_SUPPORTED) {\n        throw new Error(`Invalid bit value ${bit}.`);\n      }\n\n      if (dupCheckSet.has(bit)) {\n        throw new Error(\"Duplicated bits detected.\");\n      }\n\n      dupCheckSet.add(bit);\n\n      const byteOffset = Math.floor(bit / 8);\n\n      let byte = bitmap[byteOffset];\n\n      byte |= firstBitInByte >> bit % 8;\n\n      bitmap[byteOffset] = byte;\n    });\n\n    return bitmap;\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeBytes(this.toBytes());\n  }\n\n  static deserialize(deserializer: Deserializer): MultiEd25519Signature {\n    const bytes = deserializer.deserializeBytes();\n    const bitmap = bytes.subarray(bytes.length - 4);\n\n    const sigs: Seq<Ed25519Signature> = [];\n\n    for (let i = 0; i < bytes.length - bitmap.length; i += Ed25519Signature.LENGTH) {\n      const begin = i;\n      sigs.push(new Ed25519Signature(bytes.subarray(begin, begin + Ed25519Signature.LENGTH)));\n    }\n    return new MultiEd25519Signature(sigs, bitmap);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { AccountAddress } from \"./account_address\";\nimport { Serializer, Deserializer, Seq, deserializeVector, serializeVector } from \"../bcs\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"./ed25519\";\nimport { MultiEd25519PublicKey, MultiEd25519Signature } from \"./multi_ed25519\";\n\nexport abstract class TransactionAuthenticator {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): TransactionAuthenticator {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return TransactionAuthenticatorEd25519.load(deserializer);\n      case 1:\n        return TransactionAuthenticatorMultiEd25519.load(deserializer);\n      case 2:\n        return TransactionAuthenticatorMultiAgent.load(deserializer);\n      case 3:\n        return TransactionAuthenticatorFeePayer.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for TransactionAuthenticator: ${index}`);\n    }\n  }\n}\n\nexport class TransactionAuthenticatorEd25519 extends TransactionAuthenticator {\n  /**\n   * An authenticator for single signature.\n   *\n   * @param public_key Client's public key.\n   * @param signature Signature of a raw transaction.\n   * @see {@link https://aptos.dev/guides/creating-a-signed-transaction/ | Creating a Signed Transaction}\n   * for details about generating a signature.\n   */\n  constructor(public readonly public_key: Ed25519PublicKey, public readonly signature: Ed25519Signature) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    this.public_key.serialize(serializer);\n    this.signature.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionAuthenticatorEd25519 {\n    const public_key = Ed25519PublicKey.deserialize(deserializer);\n    const signature = Ed25519Signature.deserialize(deserializer);\n    return new TransactionAuthenticatorEd25519(public_key, signature);\n  }\n}\n\nexport class TransactionAuthenticatorMultiEd25519 extends TransactionAuthenticator {\n  /**\n   * An authenticator for multiple signatures.\n   *\n   * @param public_key\n   * @param signature\n   *\n   */\n  constructor(public readonly public_key: MultiEd25519PublicKey, public readonly signature: MultiEd25519Signature) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(1);\n    this.public_key.serialize(serializer);\n    this.signature.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionAuthenticatorMultiEd25519 {\n    const public_key = MultiEd25519PublicKey.deserialize(deserializer);\n    const signature = MultiEd25519Signature.deserialize(deserializer);\n    return new TransactionAuthenticatorMultiEd25519(public_key, signature);\n  }\n}\n\nexport class TransactionAuthenticatorMultiAgent extends TransactionAuthenticator {\n  constructor(\n    public readonly sender: AccountAuthenticator,\n    public readonly secondary_signer_addresses: Seq<AccountAddress>,\n    public readonly secondary_signers: Seq<AccountAuthenticator>,\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(2);\n    this.sender.serialize(serializer);\n    serializeVector<AccountAddress>(this.secondary_signer_addresses, serializer);\n    serializeVector<AccountAuthenticator>(this.secondary_signers, serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionAuthenticatorMultiAgent {\n    const sender = AccountAuthenticator.deserialize(deserializer);\n    const secondary_signer_addresses = deserializeVector(deserializer, AccountAddress);\n    const secondary_signers = deserializeVector(deserializer, AccountAuthenticator);\n    return new TransactionAuthenticatorMultiAgent(sender, secondary_signer_addresses, secondary_signers);\n  }\n}\n\nexport class TransactionAuthenticatorFeePayer extends TransactionAuthenticator {\n  constructor(\n    public readonly sender: AccountAuthenticator,\n    public readonly secondary_signer_addresses: Seq<AccountAddress>,\n    public readonly secondary_signers: Seq<AccountAuthenticator>,\n    public readonly fee_payer: { address: AccountAddress; authenticator: AccountAuthenticator },\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(3);\n    this.sender.serialize(serializer);\n    serializeVector<AccountAddress>(this.secondary_signer_addresses, serializer);\n    serializeVector<AccountAuthenticator>(this.secondary_signers, serializer);\n    this.fee_payer.address.serialize(serializer);\n    this.fee_payer.authenticator.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionAuthenticatorMultiAgent {\n    const sender = AccountAuthenticator.deserialize(deserializer);\n    const secondary_signer_addresses = deserializeVector(deserializer, AccountAddress);\n    const secondary_signers = deserializeVector(deserializer, AccountAuthenticator);\n    const address = AccountAddress.deserialize(deserializer);\n    const authenticator = AccountAuthenticator.deserialize(deserializer);\n    const fee_payer = { address, authenticator };\n    return new TransactionAuthenticatorFeePayer(sender, secondary_signer_addresses, secondary_signers, fee_payer);\n  }\n}\n\nexport abstract class AccountAuthenticator {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): AccountAuthenticator {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return AccountAuthenticatorEd25519.load(deserializer);\n      case 1:\n        return AccountAuthenticatorMultiEd25519.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for AccountAuthenticator: ${index}`);\n    }\n  }\n}\n\nexport class AccountAuthenticatorEd25519 extends AccountAuthenticator {\n  constructor(public readonly public_key: Ed25519PublicKey, public readonly signature: Ed25519Signature) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    this.public_key.serialize(serializer);\n    this.signature.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): AccountAuthenticatorEd25519 {\n    const public_key = Ed25519PublicKey.deserialize(deserializer);\n    const signature = Ed25519Signature.deserialize(deserializer);\n    return new AccountAuthenticatorEd25519(public_key, signature);\n  }\n}\n\nexport class AccountAuthenticatorMultiEd25519 extends AccountAuthenticator {\n  constructor(public readonly public_key: MultiEd25519PublicKey, public readonly signature: MultiEd25519Signature) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(1);\n    this.public_key.serialize(serializer);\n    this.signature.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): AccountAuthenticatorMultiEd25519 {\n    const public_key = MultiEd25519PublicKey.deserialize(deserializer);\n    const signature = MultiEd25519Signature.deserialize(deserializer);\n    return new AccountAuthenticatorMultiEd25519(public_key, signature);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer, Serializer } from \"../bcs\";\n\nexport class Identifier {\n  constructor(public value: string) {}\n\n  public serialize(serializer: Serializer): void {\n    serializer.serializeStr(this.value);\n  }\n\n  static deserialize(deserializer: Deserializer): Identifier {\n    const value = deserializer.deserializeStr();\n    return new Identifier(value);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\nimport { AccountAddress } from \"./account_address\";\nimport { Deserializer, Seq, Serializer, deserializeVector, serializeVector } from \"../bcs\";\nimport { Identifier } from \"./identifier\";\n\nexport abstract class TypeTag {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): TypeTag {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return TypeTagBool.load(deserializer);\n      case 1:\n        return TypeTagU8.load(deserializer);\n      case 2:\n        return TypeTagU64.load(deserializer);\n      case 3:\n        return TypeTagU128.load(deserializer);\n      case 4:\n        return TypeTagAddress.load(deserializer);\n      case 5:\n        return TypeTagSigner.load(deserializer);\n      case 6:\n        return TypeTagVector.load(deserializer);\n      case 7:\n        return TypeTagStruct.load(deserializer);\n      case 8:\n        return TypeTagU16.load(deserializer);\n      case 9:\n        return TypeTagU32.load(deserializer);\n      case 10:\n        return TypeTagU256.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for TypeTag: ${index}`);\n    }\n  }\n}\n\nexport class TypeTagBool extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagBool {\n    return new TypeTagBool();\n  }\n}\n\nexport class TypeTagU8 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(1);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU8 {\n    return new TypeTagU8();\n  }\n}\n\nexport class TypeTagU16 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(8);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU16 {\n    return new TypeTagU16();\n  }\n}\n\nexport class TypeTagU32 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(9);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU32 {\n    return new TypeTagU32();\n  }\n}\n\nexport class TypeTagU64 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(2);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU64 {\n    return new TypeTagU64();\n  }\n}\n\nexport class TypeTagU128 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(3);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU128 {\n    return new TypeTagU128();\n  }\n}\n\nexport class TypeTagU256 extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(10);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagU256 {\n    return new TypeTagU256();\n  }\n}\n\nexport class TypeTagAddress extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(4);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagAddress {\n    return new TypeTagAddress();\n  }\n}\n\nexport class TypeTagSigner extends TypeTag {\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(5);\n  }\n\n  static load(_deserializer: Deserializer): TypeTagSigner {\n    return new TypeTagSigner();\n  }\n}\n\nexport class TypeTagVector extends TypeTag {\n  constructor(public readonly value: TypeTag) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(6);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TypeTagVector {\n    const value = TypeTag.deserialize(deserializer);\n    return new TypeTagVector(value);\n  }\n}\n\nexport class TypeTagStruct extends TypeTag {\n  constructor(public readonly value: StructTag) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(7);\n    this.value.serialize(serializer);\n  }\n\n  static load(deserializer: Deserializer): TypeTagStruct {\n    const value = StructTag.deserialize(deserializer);\n    return new TypeTagStruct(value);\n  }\n\n  isStringTypeTag(): boolean {\n    if (\n      this.value.module_name.value === \"string\" &&\n      this.value.name.value === \"String\" &&\n      this.value.address.toHexString() === AccountAddress.CORE_CODE_ADDRESS.toHexString()\n    ) {\n      return true;\n    }\n    return false;\n  }\n}\n\nexport class StructTag {\n  constructor(\n    public readonly address: AccountAddress,\n    public readonly module_name: Identifier,\n    public readonly name: Identifier,\n    public readonly type_args: Seq<TypeTag>,\n  ) {}\n\n  /**\n   * Converts a string literal to a StructTag\n   * @param structTag String literal in format \"AcountAddress::module_name::ResourceName\",\n   *   e.g. \"0x1::aptos_coin::AptosCoin\"\n   * @returns\n   */\n  static fromString(structTag: string): StructTag {\n    // Use the TypeTagParser to parse the string literal into a TypeTagStruct\n    const typeTagStruct = new TypeTagParser(structTag).parseTypeTag() as TypeTagStruct;\n\n    // Convert and return as a StructTag\n    return new StructTag(\n      typeTagStruct.value.address,\n      typeTagStruct.value.module_name,\n      typeTagStruct.value.name,\n      typeTagStruct.value.type_args,\n    );\n  }\n\n  serialize(serializer: Serializer): void {\n    this.address.serialize(serializer);\n    this.module_name.serialize(serializer);\n    this.name.serialize(serializer);\n    serializeVector<TypeTag>(this.type_args, serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): StructTag {\n    const address = AccountAddress.deserialize(deserializer);\n    const moduleName = Identifier.deserialize(deserializer);\n    const name = Identifier.deserialize(deserializer);\n    const typeArgs = deserializeVector(deserializer, TypeTag);\n    return new StructTag(address, moduleName, name, typeArgs);\n  }\n}\n\nexport const stringStructTag = new StructTag(\n  AccountAddress.fromHex(\"0x1\"),\n  new Identifier(\"string\"),\n  new Identifier(\"String\"),\n  [],\n);\n\nexport function optionStructTag(typeArg: TypeTag): StructTag {\n  return new StructTag(AccountAddress.fromHex(\"0x1\"), new Identifier(\"option\"), new Identifier(\"Option\"), [typeArg]);\n}\n\nexport function objectStructTag(typeArg: TypeTag): StructTag {\n  return new StructTag(AccountAddress.fromHex(\"0x1\"), new Identifier(\"object\"), new Identifier(\"Object\"), [typeArg]);\n}\n\nfunction bail(message: string) {\n  throw new TypeTagParserError(message);\n}\n\nfunction isWhiteSpace(c: string): boolean {\n  if (c.match(/\\s/)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isValidAlphabetic(c: string): boolean {\n  if (c.match(/[_A-Za-z0-9]/g)) {\n    return true;\n  }\n  return false;\n}\n\n// Generic format is T<digits> - for example T1, T2, T10\nfunction isGeneric(c: string): boolean {\n  if (c.match(/T\\d+/g)) {\n    return true;\n  }\n  return false;\n}\n\ntype TokenType = string;\ntype TokenValue = string;\ntype Token = [TokenType, TokenValue];\n\n// Returns Token and Token byte size\nfunction nextToken(tagStr: string, pos: number): [Token, number] {\n  const c = tagStr[pos];\n  if (c === \":\") {\n    if (tagStr.slice(pos, pos + 2) === \"::\") {\n      return [[\"COLON\", \"::\"], 2];\n    }\n    bail(\"Unrecognized token.\");\n  } else if (c === \"<\") {\n    return [[\"LT\", \"<\"], 1];\n  } else if (c === \">\") {\n    return [[\"GT\", \">\"], 1];\n  } else if (c === \",\") {\n    return [[\"COMMA\", \",\"], 1];\n  } else if (isWhiteSpace(c)) {\n    let res = \"\";\n    for (let i = pos; i < tagStr.length; i += 1) {\n      const char = tagStr[i];\n      if (isWhiteSpace(char)) {\n        res = `${res}${char}`;\n      } else {\n        break;\n      }\n    }\n    return [[\"SPACE\", res], res.length];\n  } else if (isValidAlphabetic(c)) {\n    let res = \"\";\n    for (let i = pos; i < tagStr.length; i += 1) {\n      const char = tagStr[i];\n      if (isValidAlphabetic(char)) {\n        res = `${res}${char}`;\n      } else {\n        break;\n      }\n    }\n    if (isGeneric(res)) {\n      return [[\"GENERIC\", res], res.length];\n    }\n    return [[\"IDENT\", res], res.length];\n  }\n  throw new Error(\"Unrecognized token.\");\n}\n\nfunction tokenize(tagStr: string): Token[] {\n  let pos = 0;\n  const tokens = [];\n  while (pos < tagStr.length) {\n    const [token, size] = nextToken(tagStr, pos);\n    if (token[0] !== \"SPACE\") {\n      tokens.push(token);\n    }\n    pos += size;\n  }\n  return tokens;\n}\n\n/**\n * Parser to parse a type tag string\n */\nexport class TypeTagParser {\n  private readonly tokens: Token[];\n\n  private readonly typeTags: string[] = [];\n\n  constructor(tagStr: string, typeTags?: string[]) {\n    this.tokens = tokenize(tagStr);\n    this.typeTags = typeTags || [];\n  }\n\n  private consume(targetToken: string) {\n    const token = this.tokens.shift();\n    if (!token || token[1] !== targetToken) {\n      bail(\"Invalid type tag.\");\n    }\n  }\n\n  /**\n   * Consumes all of an unused generic field, mostly applicable to object\n   *\n   * Note: This is recursive.  it can be problematic if there's bad input\n   * @private\n   */\n  private consumeWholeGeneric() {\n    this.consume(\"<\");\n    while (this.tokens[0][1] !== \">\") {\n      // If it is nested, we have to consume another nested generic\n      if (this.tokens[0][1] === \"<\") {\n        this.consumeWholeGeneric();\n      }\n      this.tokens.shift();\n    }\n    this.consume(\">\");\n  }\n\n  private parseCommaList(endToken: TokenValue, allowTraillingComma: boolean): TypeTag[] {\n    const res: TypeTag[] = [];\n    if (this.tokens.length <= 0) {\n      bail(\"Invalid type tag.\");\n    }\n\n    while (this.tokens[0][1] !== endToken) {\n      res.push(this.parseTypeTag());\n\n      if (this.tokens.length > 0 && this.tokens[0][1] === endToken) {\n        break;\n      }\n\n      this.consume(\",\");\n      if (this.tokens.length > 0 && this.tokens[0][1] === endToken && allowTraillingComma) {\n        break;\n      }\n\n      if (this.tokens.length <= 0) {\n        bail(\"Invalid type tag.\");\n      }\n    }\n    return res;\n  }\n\n  parseTypeTag(): TypeTag {\n    if (this.tokens.length === 0) {\n      bail(\"Invalid type tag.\");\n    }\n\n    // Pop left most element out\n    const [tokenTy, tokenVal] = this.tokens.shift()!;\n\n    if (tokenVal === \"u8\") {\n      return new TypeTagU8();\n    }\n    if (tokenVal === \"u16\") {\n      return new TypeTagU16();\n    }\n    if (tokenVal === \"u32\") {\n      return new TypeTagU32();\n    }\n    if (tokenVal === \"u64\") {\n      return new TypeTagU64();\n    }\n    if (tokenVal === \"u128\") {\n      return new TypeTagU128();\n    }\n    if (tokenVal === \"u256\") {\n      return new TypeTagU256();\n    }\n    if (tokenVal === \"bool\") {\n      return new TypeTagBool();\n    }\n    if (tokenVal === \"address\") {\n      return new TypeTagAddress();\n    }\n    if (tokenVal === \"vector\") {\n      this.consume(\"<\");\n      const res = this.parseTypeTag();\n      this.consume(\">\");\n      return new TypeTagVector(res);\n    }\n    if (tokenVal === \"string\") {\n      return stringStructTag;\n    }\n    if (tokenTy === \"IDENT\" && (tokenVal.startsWith(\"0x\") || tokenVal.startsWith(\"0X\"))) {\n      const address = AccountAddress.fromHex(tokenVal);\n      this.consume(\"::\");\n      const [moduleTokenTy, module] = this.tokens.shift()!;\n      if (moduleTokenTy !== \"IDENT\") {\n        bail(\"Invalid type tag.\");\n      }\n      this.consume(\"::\");\n      const [nameTokenTy, name] = this.tokens.shift()!;\n      if (nameTokenTy !== \"IDENT\") {\n        bail(\"Invalid type tag.\");\n      }\n\n      // Objects can contain either concrete types e.g. 0x1::object::ObjectCore or generics e.g. T\n      // Neither matter as we can't do type checks, so just the address applies and we consume the entire generic.\n      // TODO: Support parsing structs that don't come from core code address\n      if (\n        AccountAddress.CORE_CODE_ADDRESS.toHexString() === address.toHexString() &&\n        module === \"object\" &&\n        name === \"Object\"\n      ) {\n        this.consumeWholeGeneric();\n        return new TypeTagAddress();\n      }\n\n      let tyTags: TypeTag[] = [];\n      // Check if the struct has ty args\n      if (this.tokens.length > 0 && this.tokens[0][1] === \"<\") {\n        this.consume(\"<\");\n        tyTags = this.parseCommaList(\">\", true);\n        this.consume(\">\");\n      }\n\n      const structTag = new StructTag(address, new Identifier(module), new Identifier(name), tyTags);\n      return new TypeTagStruct(structTag);\n    }\n    if (tokenTy === \"GENERIC\") {\n      if (this.typeTags.length === 0) {\n        bail(\"Can't convert generic type since no typeTags were specified.\");\n      }\n      // a generic tokenVal has the format of `T<digit>`, for example `T1`.\n      // The digit (i.e 1) indicates the the index of this type in the typeTags array.\n      // For a tokenVal == T1, should be parsed as the type in typeTags[1]\n      const idx = parseInt(tokenVal.substring(1), 10);\n      return new TypeTagParser(this.typeTags[idx]).parseTypeTag();\n    }\n\n    throw new Error(\"Invalid type tag.\");\n  }\n}\n\nexport class TypeTagParserError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"TypeTagParserError\";\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer, Serializer, Bytes, Seq, deserializeVector, serializeVector } from \"../bcs\";\n\nimport { ModuleId } from \"./transaction\";\n\nimport { TypeTag } from \"./type_tag\";\n\nexport class TypeArgumentABI {\n  /**\n   * Constructs a TypeArgumentABI instance.\n   * @param name\n   */\n  constructor(public readonly name: string) {}\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeStr(this.name);\n  }\n\n  static deserialize(deserializer: Deserializer): TypeArgumentABI {\n    const name = deserializer.deserializeStr();\n    return new TypeArgumentABI(name);\n  }\n}\n\nexport class ArgumentABI {\n  /**\n   * Constructs an ArgumentABI instance.\n   * @param name\n   * @param type_tag\n   */\n  constructor(public readonly name: string, public readonly type_tag: TypeTag) {}\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeStr(this.name);\n    this.type_tag.serialize(serializer);\n  }\n\n  static deserialize(deserializer: Deserializer): ArgumentABI {\n    const name = deserializer.deserializeStr();\n    const typeTag = TypeTag.deserialize(deserializer);\n    return new ArgumentABI(name, typeTag);\n  }\n}\n\nexport abstract class ScriptABI {\n  abstract serialize(serializer: Serializer): void;\n\n  static deserialize(deserializer: Deserializer): ScriptABI {\n    const index = deserializer.deserializeUleb128AsU32();\n    switch (index) {\n      case 0:\n        return TransactionScriptABI.load(deserializer);\n      case 1:\n        return EntryFunctionABI.load(deserializer);\n      default:\n        throw new Error(`Unknown variant index for TransactionPayload: ${index}`);\n    }\n  }\n}\n\nexport class TransactionScriptABI extends ScriptABI {\n  /**\n   * Constructs a TransactionScriptABI instance.\n   * @param name Entry function name\n   * @param doc\n   * @param code\n   * @param ty_args\n   * @param args\n   */\n  constructor(\n    public readonly name: string,\n    public readonly doc: string,\n    public readonly code: Bytes,\n    public readonly ty_args: Seq<TypeArgumentABI>,\n    public readonly args: Seq<ArgumentABI>,\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(0);\n    serializer.serializeStr(this.name);\n    serializer.serializeStr(this.doc);\n    serializer.serializeBytes(this.code);\n    serializeVector<TypeArgumentABI>(this.ty_args, serializer);\n    serializeVector<ArgumentABI>(this.args, serializer);\n  }\n\n  static load(deserializer: Deserializer): TransactionScriptABI {\n    const name = deserializer.deserializeStr();\n    const doc = deserializer.deserializeStr();\n    const code = deserializer.deserializeBytes();\n    const tyArgs = deserializeVector(deserializer, TypeArgumentABI);\n    const args = deserializeVector(deserializer, ArgumentABI);\n    return new TransactionScriptABI(name, doc, code, tyArgs, args);\n  }\n}\n\nexport class EntryFunctionABI extends ScriptABI {\n  /**\n   * Constructs a EntryFunctionABI instance\n   * @param name\n   * @param module_name Fully qualified module id\n   * @param doc\n   * @param ty_args\n   * @param args\n   */\n  constructor(\n    public readonly name: string,\n    public readonly module_name: ModuleId,\n    public readonly doc: string,\n    public readonly ty_args: Seq<TypeArgumentABI>,\n    public readonly args: Seq<ArgumentABI>,\n  ) {\n    super();\n  }\n\n  serialize(serializer: Serializer): void {\n    serializer.serializeU32AsUleb128(1);\n    serializer.serializeStr(this.name);\n    this.module_name.serialize(serializer);\n    serializer.serializeStr(this.doc);\n    serializeVector<TypeArgumentABI>(this.ty_args, serializer);\n    serializeVector<ArgumentABI>(this.args, serializer);\n  }\n\n  static load(deserializer: Deserializer): EntryFunctionABI {\n    const name = deserializer.deserializeStr();\n    const moduleName = ModuleId.deserialize(deserializer);\n    const doc = deserializer.deserializeStr();\n    const tyArgs = deserializeVector(deserializer, TypeArgumentABI);\n    const args = deserializeVector(deserializer, ArgumentABI);\n    return new EntryFunctionABI(name, moduleName, doc, tyArgs, args);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { HexString } from \"../utils\";\nimport { Bytes } from \"../bcs\";\nimport { MultiEd25519PublicKey } from \"./multi_ed25519\";\nimport { Ed25519PublicKey } from \"./ed25519\";\n\n/**\n * Each account stores an authentication key. Authentication key enables account owners to rotate\n * their private key(s) associated with the account without changing the address that hosts their account.\n * @see {@link * https://aptos.dev/concepts/accounts | Account Basics}\n *\n * Account addresses can be derived from AuthenticationKey\n */\nexport class AuthenticationKey {\n  static readonly LENGTH: number = 32;\n\n  static readonly MULTI_ED25519_SCHEME: number = 1;\n\n  static readonly ED25519_SCHEME: number = 0;\n\n  static readonly DERIVE_RESOURCE_ACCOUNT_SCHEME: number = 255;\n\n  readonly bytes: Bytes;\n\n  constructor(bytes: Bytes) {\n    if (bytes.length !== AuthenticationKey.LENGTH) {\n      throw new Error(\"Expected a byte array of length 32\");\n    }\n    this.bytes = bytes;\n  }\n\n  /**\n   * Converts a K-of-N MultiEd25519PublicKey to AuthenticationKey with:\n   * `auth_key = sha3-256(p_1 | … | p_n | K | 0x01)`. `K` represents the K-of-N required for\n   * authenticating the transaction. `0x01` is the 1-byte scheme for multisig.\n   */\n  static fromMultiEd25519PublicKey(publicKey: MultiEd25519PublicKey): AuthenticationKey {\n    const pubKeyBytes = publicKey.toBytes();\n\n    const bytes = new Uint8Array(pubKeyBytes.length + 1);\n    bytes.set(pubKeyBytes);\n    bytes.set([AuthenticationKey.MULTI_ED25519_SCHEME], pubKeyBytes.length);\n\n    const hash = sha3Hash.create();\n    hash.update(bytes);\n\n    return new AuthenticationKey(hash.digest());\n  }\n\n  static fromEd25519PublicKey(publicKey: Ed25519PublicKey): AuthenticationKey {\n    const pubKeyBytes = publicKey.value;\n\n    const bytes = new Uint8Array(pubKeyBytes.length + 1);\n    bytes.set(pubKeyBytes);\n    bytes.set([AuthenticationKey.ED25519_SCHEME], pubKeyBytes.length);\n\n    const hash = sha3Hash.create();\n    hash.update(bytes);\n\n    return new AuthenticationKey(hash.digest());\n  }\n\n  /**\n   * Derives an account address from AuthenticationKey. Since current AccountAddress is 32 bytes,\n   * AuthenticationKey bytes are directly translated to AccountAddress.\n   */\n  derivedAddress(): HexString {\n    return HexString.fromUint8Array(this.bytes);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AccountAddress } from \"./account_address\";\nimport { Serializer } from \"../bcs\";\n\nexport class RotationProofChallenge {\n  constructor(\n    public readonly accountAddress: AccountAddress,\n    public readonly moduleName: string,\n    public readonly structName: string,\n    public readonly sequenceNumber: number | bigint,\n    public readonly originator: AccountAddress,\n    public readonly currentAuthKey: AccountAddress,\n    public readonly newPublicKey: Uint8Array,\n  ) {}\n\n  serialize(serializer: Serializer): void {\n    this.accountAddress.serialize(serializer);\n    serializer.serializeStr(this.moduleName);\n    serializer.serializeStr(this.structName);\n    serializer.serializeU64(this.sequenceNumber);\n    this.originator.serialize(serializer);\n    this.currentAuthKey.serialize(serializer);\n    serializer.serializeBytes(this.newPublicKey);\n  }\n}\n","import * as Types from \"./operations\";\n\nimport { GraphQLClient } from \"graphql-request\";\nimport * as Dom from \"graphql-request/dist/types.dom\";\nexport const CurrentTokenOwnershipFieldsFragmentDoc = `\n    fragment CurrentTokenOwnershipFields on current_token_ownerships_v2 {\n  token_standard\n  is_fungible_v2\n  is_soulbound_v2\n  property_version_v1\n  table_type_v1\n  token_properties_mutated_v1\n  amount\n  last_transaction_timestamp\n  last_transaction_version\n  storage_id\n  owner_address\n  current_token_data {\n    token_name\n    token_data_id\n    token_uri\n    token_properties\n    supply\n    maximum\n    last_transaction_version\n    last_transaction_timestamp\n    largest_property_version_v1\n    current_collection {\n      collection_name\n      creator_address\n      description\n      uri\n      collection_id\n      last_transaction_version\n      current_supply\n      mutable_description\n      total_minted_v2\n      table_handle_v1\n      mutable_uri\n    }\n  }\n}\n    `;\nexport const TokenDataFieldsFragmentDoc = `\n    fragment TokenDataFields on current_token_datas {\n  creator_address\n  collection_name\n  description\n  metadata_uri\n  name\n  token_data_id_hash\n  collection_data_id_hash\n}\n    `;\nexport const CollectionDataFieldsFragmentDoc = `\n    fragment CollectionDataFields on current_collection_datas {\n  metadata_uri\n  supply\n  description\n  collection_name\n  collection_data_id_hash\n  table_handle\n  creator_address\n}\n    `;\nexport const GetAccountCoinsData = `\n    query getAccountCoinsData($owner_address: String, $offset: Int, $limit: Int) {\n  current_coin_balances(\n    where: {owner_address: {_eq: $owner_address}}\n    offset: $offset\n    limit: $limit\n  ) {\n    amount\n    coin_type\n    coin_info {\n      name\n      decimals\n      symbol\n    }\n  }\n}\n    `;\nexport const GetAccountCurrentTokens = `\n    query getAccountCurrentTokens($address: String!, $offset: Int, $limit: Int) {\n  current_token_ownerships(\n    where: {owner_address: {_eq: $address}, amount: {_gt: 0}}\n    order_by: [{last_transaction_version: desc}, {creator_address: asc}, {collection_name: asc}, {name: asc}]\n    offset: $offset\n    limit: $limit\n  ) {\n    amount\n    current_token_data {\n      ...TokenDataFields\n    }\n    current_collection_data {\n      ...CollectionDataFields\n    }\n    last_transaction_version\n    property_version\n  }\n}\n    ${TokenDataFieldsFragmentDoc}\n${CollectionDataFieldsFragmentDoc}`;\nexport const GetAccountTokensCount = `\n    query getAccountTokensCount($owner_address: String) {\n  current_token_ownerships_aggregate(\n    where: {owner_address: {_eq: $owner_address}, amount: {_gt: \"0\"}}\n  ) {\n    aggregate {\n      count\n    }\n  }\n}\n    `;\nexport const GetAccountTransactionsCount = `\n    query getAccountTransactionsCount($address: String) {\n  move_resources_aggregate(\n    where: {address: {_eq: $address}}\n    distinct_on: transaction_version\n  ) {\n    aggregate {\n      count\n    }\n  }\n}\n    `;\nexport const GetAccountTransactionsData = `\n    query getAccountTransactionsData($address: String, $limit: Int, $offset: Int) {\n  move_resources(\n    where: {address: {_eq: $address}}\n    order_by: {transaction_version: desc}\n    distinct_on: transaction_version\n    limit: $limit\n    offset: $offset\n  ) {\n    transaction_version\n  }\n}\n    `;\nexport const GetCollectionData = `\n    query getCollectionData($where_condition: current_collections_v2_bool_exp!, $offset: Int, $limit: Int) {\n  current_collections_v2(where: $where_condition, offset: $offset, limit: $limit) {\n    collection_id\n    token_standard\n    collection_name\n    creator_address\n    current_supply\n    description\n    uri\n  }\n}\n    `;\nexport const GetCollectionsWithOwnedTokens = `\n    query getCollectionsWithOwnedTokens($where_condition: current_collection_ownership_v2_view_bool_exp!, $offset: Int, $limit: Int) {\n  current_collection_ownership_v2_view(\n    where: $where_condition\n    order_by: {last_transaction_version: desc}\n    offset: $offset\n    limit: $limit\n  ) {\n    current_collection {\n      creator_address\n      collection_name\n      token_standard\n      collection_id\n      description\n      table_handle_v1\n      uri\n      total_minted_v2\n      max_supply\n    }\n    distinct_tokens\n    last_transaction_version\n  }\n}\n    `;\nexport const GetDelegatedStakingActivities = `\n    query getDelegatedStakingActivities($delegatorAddress: String, $poolAddress: String) {\n  delegated_staking_activities(\n    where: {delegator_address: {_eq: $delegatorAddress}, pool_address: {_eq: $poolAddress}}\n  ) {\n    amount\n    delegator_address\n    event_index\n    event_type\n    pool_address\n    transaction_version\n  }\n}\n    `;\nexport const GetIndexerLedgerInfo = `\n    query getIndexerLedgerInfo {\n  ledger_infos {\n    chain_id\n  }\n}\n    `;\nexport const GetNumberOfDelegators = `\n    query getNumberOfDelegators($poolAddress: String) {\n  num_active_delegator_per_pool(\n    where: {pool_address: {_eq: $poolAddress}, num_active_delegator: {_gt: \"0\"}}\n    distinct_on: pool_address\n  ) {\n    num_active_delegator\n  }\n}\n    `;\nexport const GetOwnedTokens = `\n    query getOwnedTokens($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int) {\n  current_token_ownerships_v2(\n    where: $where_condition\n    offset: $offset\n    limit: $limit\n  ) {\n    ...CurrentTokenOwnershipFields\n  }\n}\n    ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetTokenActivities = `\n    query getTokenActivities($idHash: String!, $offset: Int, $limit: Int) {\n  token_activities(\n    where: {token_data_id_hash: {_eq: $idHash}}\n    order_by: {transaction_version: desc}\n    offset: $offset\n    limit: $limit\n  ) {\n    creator_address\n    collection_name\n    name\n    token_data_id_hash\n    collection_data_id_hash\n    from_address\n    to_address\n    transaction_version\n    transaction_timestamp\n    property_version\n    transfer_type\n    event_sequence_number\n    token_amount\n  }\n}\n    `;\nexport const GetTokenActivitiesCount = `\n    query getTokenActivitiesCount($token_id: String) {\n  token_activities_aggregate(where: {token_data_id_hash: {_eq: $token_id}}) {\n    aggregate {\n      count\n    }\n  }\n}\n    `;\nexport const GetTokenCurrentOwnerData = `\n    query getTokenCurrentOwnerData($where_condition: current_token_ownerships_v2_bool_exp!) {\n  current_token_ownerships_v2(where: $where_condition) {\n    owner_address\n  }\n}\n    `;\nexport const GetTokenData = `\n    query getTokenData($where_condition: current_token_datas_v2_bool_exp) {\n  current_token_datas_v2(where: $where_condition) {\n    token_data_id\n    token_name\n    token_uri\n    token_properties\n    token_standard\n    largest_property_version_v1\n    maximum\n    is_fungible_v2\n    supply\n    last_transaction_version\n    last_transaction_timestamp\n    current_collection {\n      collection_id\n      collection_name\n      creator_address\n      uri\n      current_supply\n    }\n  }\n}\n    `;\nexport const GetTokenOwnedFromCollection = `\n    query getTokenOwnedFromCollection($where_condition: current_token_ownerships_v2_bool_exp!, $offset: Int, $limit: Int) {\n  current_token_ownerships_v2(\n    where: $where_condition\n    offset: $offset\n    limit: $limit\n  ) {\n    ...CurrentTokenOwnershipFields\n  }\n}\n    ${CurrentTokenOwnershipFieldsFragmentDoc}`;\nexport const GetTokenOwnersData = `\n    query getTokenOwnersData($where_condition: current_token_ownerships_v2_bool_exp!) {\n  current_token_ownerships_v2(where: $where_condition) {\n    owner_address\n  }\n}\n    `;\nexport const GetTopUserTransactions = `\n    query getTopUserTransactions($limit: Int) {\n  user_transactions(limit: $limit, order_by: {version: desc}) {\n    version\n  }\n}\n    `;\nexport const GetUserTransactions = `\n    query getUserTransactions($limit: Int, $start_version: bigint, $offset: Int) {\n  user_transactions(\n    limit: $limit\n    order_by: {version: desc}\n    where: {version: {_lte: $start_version}}\n    offset: $offset\n  ) {\n    version\n  }\n}\n    `;\n\nexport type SdkFunctionWrapper = <T>(\n  action: (requestHeaders?: Record<string, string>) => Promise<T>,\n  operationName: string,\n  operationType?: string,\n) => Promise<T>;\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType) => action();\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n  return {\n    getAccountCoinsData(\n      variables?: Types.GetAccountCoinsDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetAccountCoinsDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetAccountCoinsDataQuery>(GetAccountCoinsData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getAccountCoinsData\",\n        \"query\",\n      );\n    },\n    getAccountCurrentTokens(\n      variables: Types.GetAccountCurrentTokensQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetAccountCurrentTokensQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetAccountCurrentTokensQuery>(GetAccountCurrentTokens, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getAccountCurrentTokens\",\n        \"query\",\n      );\n    },\n    getAccountTokensCount(\n      variables?: Types.GetAccountTokensCountQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetAccountTokensCountQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetAccountTokensCountQuery>(GetAccountTokensCount, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getAccountTokensCount\",\n        \"query\",\n      );\n    },\n    getAccountTransactionsCount(\n      variables?: Types.GetAccountTransactionsCountQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetAccountTransactionsCountQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetAccountTransactionsCountQuery>(GetAccountTransactionsCount, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getAccountTransactionsCount\",\n        \"query\",\n      );\n    },\n    getAccountTransactionsData(\n      variables?: Types.GetAccountTransactionsDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetAccountTransactionsDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetAccountTransactionsDataQuery>(GetAccountTransactionsData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getAccountTransactionsData\",\n        \"query\",\n      );\n    },\n    getCollectionData(\n      variables: Types.GetCollectionDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetCollectionDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetCollectionDataQuery>(GetCollectionData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getCollectionData\",\n        \"query\",\n      );\n    },\n    getCollectionsWithOwnedTokens(\n      variables: Types.GetCollectionsWithOwnedTokensQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetCollectionsWithOwnedTokensQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetCollectionsWithOwnedTokensQuery>(GetCollectionsWithOwnedTokens, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getCollectionsWithOwnedTokens\",\n        \"query\",\n      );\n    },\n    getDelegatedStakingActivities(\n      variables?: Types.GetDelegatedStakingActivitiesQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetDelegatedStakingActivitiesQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetDelegatedStakingActivitiesQuery>(GetDelegatedStakingActivities, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getDelegatedStakingActivities\",\n        \"query\",\n      );\n    },\n    getIndexerLedgerInfo(\n      variables?: Types.GetIndexerLedgerInfoQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetIndexerLedgerInfoQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetIndexerLedgerInfoQuery>(GetIndexerLedgerInfo, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getIndexerLedgerInfo\",\n        \"query\",\n      );\n    },\n    getNumberOfDelegators(\n      variables?: Types.GetNumberOfDelegatorsQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetNumberOfDelegatorsQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetNumberOfDelegatorsQuery>(GetNumberOfDelegators, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getNumberOfDelegators\",\n        \"query\",\n      );\n    },\n    getOwnedTokens(\n      variables: Types.GetOwnedTokensQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetOwnedTokensQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetOwnedTokensQuery>(GetOwnedTokens, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getOwnedTokens\",\n        \"query\",\n      );\n    },\n    getTokenActivities(\n      variables: Types.GetTokenActivitiesQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenActivitiesQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenActivitiesQuery>(GetTokenActivities, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenActivities\",\n        \"query\",\n      );\n    },\n    getTokenActivitiesCount(\n      variables?: Types.GetTokenActivitiesCountQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenActivitiesCountQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenActivitiesCountQuery>(GetTokenActivitiesCount, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenActivitiesCount\",\n        \"query\",\n      );\n    },\n    getTokenCurrentOwnerData(\n      variables: Types.GetTokenCurrentOwnerDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenCurrentOwnerDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenCurrentOwnerDataQuery>(GetTokenCurrentOwnerData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenCurrentOwnerData\",\n        \"query\",\n      );\n    },\n    getTokenData(\n      variables?: Types.GetTokenDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenDataQuery>(GetTokenData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenData\",\n        \"query\",\n      );\n    },\n    getTokenOwnedFromCollection(\n      variables: Types.GetTokenOwnedFromCollectionQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenOwnedFromCollectionQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenOwnedFromCollectionQuery>(GetTokenOwnedFromCollection, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenOwnedFromCollection\",\n        \"query\",\n      );\n    },\n    getTokenOwnersData(\n      variables: Types.GetTokenOwnersDataQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTokenOwnersDataQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTokenOwnersDataQuery>(GetTokenOwnersData, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTokenOwnersData\",\n        \"query\",\n      );\n    },\n    getTopUserTransactions(\n      variables?: Types.GetTopUserTransactionsQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetTopUserTransactionsQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetTopUserTransactionsQuery>(GetTopUserTransactions, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getTopUserTransactions\",\n        \"query\",\n      );\n    },\n    getUserTransactions(\n      variables?: Types.GetUserTransactionsQueryVariables,\n      requestHeaders?: Dom.RequestInit[\"headers\"],\n    ): Promise<Types.GetUserTransactionsQuery> {\n      return withWrapper(\n        (wrappedRequestHeaders) =>\n          client.request<Types.GetUserTransactionsQuery>(GetUserTransactions, variables, {\n            ...requestHeaders,\n            ...wrappedRequestHeaders,\n          }),\n        \"getUserTransactions\",\n        \"query\",\n      );\n    },\n  };\n}\nexport type Sdk = ReturnType<typeof getSdk>;\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport {\n  Ed25519PublicKey,\n  Ed25519Signature,\n  MultiEd25519PublicKey,\n  MultiEd25519Signature,\n  RawTransaction,\n  SignedTransaction,\n  TransactionAuthenticatorEd25519,\n  TransactionAuthenticatorMultiEd25519,\n  SigningMessage,\n  MultiAgentRawTransaction,\n  FeePayerRawTransaction,\n  AccountAddress,\n  EntryFunction,\n  Identifier,\n  ChainId,\n  Script,\n  TransactionPayload,\n  TransactionArgument,\n  TransactionPayloadEntryFunction,\n  TransactionPayloadScript,\n  ModuleId,\n  TypeTagParser,\n} from \"../aptos_types\";\nimport { bcsToBytes, Bytes, Deserializer, Serializer, Uint64, Uint8 } from \"../bcs\";\nimport { ArgumentABI, EntryFunctionABI, ScriptABI, TransactionScriptABI, TypeArgumentABI } from \"../aptos_types/abi\";\nimport { argToTransactionArgument, serializeArg } from \"./builder_utils\";\nimport * as Gen from \"../generated/index\";\nimport {\n  DEFAULT_TXN_EXP_SEC_FROM_NOW,\n  DEFAULT_MAX_GAS_AMOUNT,\n  HexString,\n  MaybeHexString,\n  MemoizeExpiring,\n} from \"../utils\";\n\nexport { TypeTagParser } from \"../aptos_types\";\n\nconst RAW_TRANSACTION_SALT = \"APTOS::RawTransaction\";\nconst RAW_TRANSACTION_WITH_DATA_SALT = \"APTOS::RawTransactionWithData\";\n\ntype AnyRawTransaction = RawTransaction | MultiAgentRawTransaction | FeePayerRawTransaction;\n\n/**\n * Function that takes in a Signing Message (serialized raw transaction)\n *  and returns a signature\n */\nexport type SigningFn = (txn: SigningMessage) => Ed25519Signature | MultiEd25519Signature;\n\nexport class TransactionBuilder<F extends SigningFn> {\n  protected readonly signingFunction: F;\n\n  constructor(signingFunction: F, public readonly rawTxnBuilder?: TransactionBuilderABI) {\n    this.signingFunction = signingFunction;\n  }\n\n  /**\n   * Builds a RawTransaction. Relays the call to TransactionBuilderABI.build\n   * @param func\n   * @param ty_tags\n   * @param args\n   */\n  build(func: string, ty_tags: string[], args: any[]): RawTransaction {\n    if (!this.rawTxnBuilder) {\n      throw new Error(\"this.rawTxnBuilder doesn't exist.\");\n    }\n\n    return this.rawTxnBuilder.build(func, ty_tags, args);\n  }\n\n  /** Generates a Signing Message out of a raw transaction. */\n  static getSigningMessage(rawTxn: AnyRawTransaction): SigningMessage {\n    const hash = sha3Hash.create();\n    if (rawTxn instanceof RawTransaction) {\n      hash.update(RAW_TRANSACTION_SALT);\n    } else if (rawTxn instanceof MultiAgentRawTransaction) {\n      hash.update(RAW_TRANSACTION_WITH_DATA_SALT);\n    } else if (rawTxn instanceof FeePayerRawTransaction) {\n      hash.update(RAW_TRANSACTION_WITH_DATA_SALT);\n    } else {\n      throw new Error(\"Unknown transaction type.\");\n    }\n\n    const prefix = hash.digest();\n\n    const body = bcsToBytes(rawTxn);\n\n    const mergedArray = new Uint8Array(prefix.length + body.length);\n    mergedArray.set(prefix);\n    mergedArray.set(body, prefix.length);\n\n    return mergedArray;\n  }\n}\n\n/**\n * Provides signing method for signing a raw transaction with single public key.\n */\nexport class TransactionBuilderEd25519 extends TransactionBuilder<SigningFn> {\n  private readonly publicKey: Uint8Array;\n\n  constructor(signingFunction: SigningFn, publicKey: Uint8Array, rawTxnBuilder?: TransactionBuilderABI) {\n    super(signingFunction, rawTxnBuilder);\n    this.publicKey = publicKey;\n  }\n\n  rawToSigned(rawTxn: RawTransaction): SignedTransaction {\n    const signingMessage = TransactionBuilder.getSigningMessage(rawTxn);\n    const signature = this.signingFunction(signingMessage);\n\n    const authenticator = new TransactionAuthenticatorEd25519(\n      new Ed25519PublicKey(this.publicKey),\n      signature as Ed25519Signature,\n    );\n\n    return new SignedTransaction(rawTxn, authenticator);\n  }\n\n  /** Signs a raw transaction and returns a bcs serialized transaction. */\n  sign(rawTxn: RawTransaction): Bytes {\n    return bcsToBytes(this.rawToSigned(rawTxn));\n  }\n}\n\n/**\n * Provides signing method for signing a raw transaction with multisig public key.\n */\nexport class TransactionBuilderMultiEd25519 extends TransactionBuilder<SigningFn> {\n  private readonly publicKey: MultiEd25519PublicKey;\n\n  constructor(signingFunction: SigningFn, publicKey: MultiEd25519PublicKey) {\n    super(signingFunction);\n    this.publicKey = publicKey;\n  }\n\n  rawToSigned(rawTxn: RawTransaction): SignedTransaction {\n    const signingMessage = TransactionBuilder.getSigningMessage(rawTxn);\n    const signature = this.signingFunction(signingMessage);\n\n    const authenticator = new TransactionAuthenticatorMultiEd25519(this.publicKey, signature as MultiEd25519Signature);\n\n    return new SignedTransaction(rawTxn, authenticator);\n  }\n\n  /** Signs a raw transaction and returns a bcs serialized transaction. */\n  sign(rawTxn: RawTransaction): Bytes {\n    return bcsToBytes(this.rawToSigned(rawTxn));\n  }\n}\n\n/**\n * Config for creating raw transactions.\n */\ninterface ABIBuilderConfig {\n  sender: MaybeHexString | AccountAddress;\n  sequenceNumber: Uint64 | string;\n  gasUnitPrice: Uint64 | string;\n  maxGasAmount?: Uint64 | string;\n  expSecFromNow?: number | string;\n  chainId: Uint8 | string;\n}\n\n/**\n * Builds raw transactions based on ABI\n */\nexport class TransactionBuilderABI {\n  private readonly abiMap: Map<string, ScriptABI>;\n\n  private readonly builderConfig: Partial<ABIBuilderConfig>;\n\n  /**\n   * Constructs a TransactionBuilderABI instance\n   * @param abis List of binary ABIs.\n   * @param builderConfig Configs for creating a raw transaction.\n   */\n  constructor(abis: Bytes[], builderConfig?: ABIBuilderConfig) {\n    this.abiMap = new Map<string, ScriptABI>();\n\n    abis.forEach((abi) => {\n      const deserializer = new Deserializer(abi);\n      const scriptABI = ScriptABI.deserialize(deserializer);\n      let k: string;\n      if (scriptABI instanceof EntryFunctionABI) {\n        const funcABI = scriptABI as EntryFunctionABI;\n        const { address: addr, name: moduleName } = funcABI.module_name;\n        k = `${HexString.fromUint8Array(addr.address).toShortString()}::${moduleName.value}::${funcABI.name}`;\n      } else {\n        const funcABI = scriptABI as TransactionScriptABI;\n        k = funcABI.name;\n      }\n\n      if (this.abiMap.has(k)) {\n        throw new Error(\"Found conflicting ABI interfaces\");\n      }\n\n      this.abiMap.set(k, scriptABI);\n    });\n\n    this.builderConfig = {\n      maxGasAmount: BigInt(DEFAULT_MAX_GAS_AMOUNT),\n      expSecFromNow: DEFAULT_TXN_EXP_SEC_FROM_NOW,\n      ...builderConfig,\n    };\n  }\n\n  private static toBCSArgs(abiArgs: any[], args: any[]): Bytes[] {\n    if (abiArgs.length !== args.length) {\n      throw new Error(\"Wrong number of args provided.\");\n    }\n\n    return args.map((arg, i) => {\n      const serializer = new Serializer();\n      serializeArg(arg, abiArgs[i].type_tag, serializer);\n      return serializer.getBytes();\n    });\n  }\n\n  private static toTransactionArguments(abiArgs: any[], args: any[]): TransactionArgument[] {\n    if (abiArgs.length !== args.length) {\n      throw new Error(\"Wrong number of args provided.\");\n    }\n\n    return args.map((arg, i) => argToTransactionArgument(arg, abiArgs[i].type_tag));\n  }\n\n  setSequenceNumber(seqNumber: Uint64 | string) {\n    this.builderConfig.sequenceNumber = BigInt(seqNumber);\n  }\n\n  /**\n   * Builds a TransactionPayload. For dApps, chain ID and account sequence numbers are only known to the wallet.\n   * Instead of building a RawTransaction (requires chainID and sequenceNumber), dApps can build a TransactionPayload\n   * and pass the payload to the wallet for signing and sending.\n   * @param func Fully qualified func names, e.g. 0x1::aptos_account::transfer\n   * @param ty_tags TypeTag strings\n   * @param args Function arguments\n   * @returns TransactionPayload\n   */\n  buildTransactionPayload(func: string, ty_tags: string[], args: any[]): TransactionPayload {\n    const typeTags = ty_tags.map((ty_arg) => new TypeTagParser(ty_arg).parseTypeTag());\n\n    let payload: TransactionPayload;\n\n    if (!this.abiMap.has(func)) {\n      throw new Error(`Cannot find function: ${func}`);\n    }\n\n    const scriptABI = this.abiMap.get(func);\n\n    if (scriptABI instanceof EntryFunctionABI) {\n      const funcABI = scriptABI as EntryFunctionABI;\n      const bcsArgs = TransactionBuilderABI.toBCSArgs(funcABI.args, args);\n      payload = new TransactionPayloadEntryFunction(\n        new EntryFunction(funcABI.module_name, new Identifier(funcABI.name), typeTags, bcsArgs),\n      );\n    } else if (scriptABI instanceof TransactionScriptABI) {\n      const funcABI = scriptABI as TransactionScriptABI;\n      const scriptArgs = TransactionBuilderABI.toTransactionArguments(funcABI.args, args);\n\n      payload = new TransactionPayloadScript(new Script(funcABI.code, typeTags, scriptArgs));\n    } else {\n      /* istanbul ignore next */\n      throw new Error(\"Unknown ABI format.\");\n    }\n\n    return payload;\n  }\n\n  /**\n   * Builds a RawTransaction\n   * @param func Fully qualified func names, e.g. 0x1::aptos_account::transfer\n   * @param ty_tags TypeTag strings.\n   * @example Below are valid value examples\n   * ```\n   * // Structs are in format `AccountAddress::ModuleName::StructName`\n   * 0x1::aptos_coin::AptosCoin\n   * // Vectors are in format `vector<other_tag_string>`\n   * vector<0x1::aptos_coin::AptosCoin>\n   * bool\n   * u8\n   * u16\n   * u32\n   * u64\n   * u128\n   * u256\n   * address\n   * ```\n   * @param args Function arguments\n   * @returns RawTransaction\n   */\n  build(func: string, ty_tags: string[], args: any[]): RawTransaction {\n    const { sender, sequenceNumber, gasUnitPrice, maxGasAmount, expSecFromNow, chainId } = this.builderConfig;\n\n    if (!gasUnitPrice) {\n      throw new Error(\"No gasUnitPrice provided.\");\n    }\n\n    const senderAccount = sender instanceof AccountAddress ? sender : AccountAddress.fromHex(sender!);\n    const expTimestampSec = BigInt(Math.floor(Date.now() / 1000) + Number(expSecFromNow));\n    const payload = this.buildTransactionPayload(func, ty_tags, args);\n\n    if (payload) {\n      return new RawTransaction(\n        senderAccount,\n        BigInt(sequenceNumber!),\n        payload,\n        BigInt(maxGasAmount!),\n        BigInt(gasUnitPrice!),\n        expTimestampSec,\n        new ChainId(Number(chainId)),\n      );\n    }\n\n    throw new Error(\"Invalid ABI.\");\n  }\n}\n\nexport type RemoteABIBuilderConfig = Partial<Omit<ABIBuilderConfig, \"sender\">> & {\n  sender: MaybeHexString | AccountAddress;\n};\n\ninterface AptosClientInterface {\n  getAccountModules: (accountAddress: MaybeHexString) => Promise<Gen.MoveModuleBytecode[]>;\n  getAccount: (accountAddress: MaybeHexString) => Promise<Gen.AccountData>;\n  getChainId: () => Promise<number>;\n  estimateGasPrice: () => Promise<Gen.GasEstimation>;\n}\n\n/**\n * This transaction builder downloads JSON ABIs from the fullnodes.\n * It then translates the JSON ABIs to the format that is accepted by TransactionBuilderABI\n */\nexport class TransactionBuilderRemoteABI {\n  // We don't want the builder to depend on the actual AptosClient. There might be circular dependencies.\n  constructor(\n    private readonly aptosClient: AptosClientInterface,\n    private readonly builderConfig: RemoteABIBuilderConfig,\n  ) {}\n\n  // Cache for 10 minutes\n  @MemoizeExpiring(10 * 60 * 1000)\n  async fetchABI(addr: string) {\n    const modules = await this.aptosClient.getAccountModules(addr);\n    const abis = modules\n      .map((module) => module.abi)\n      .flatMap((abi) =>\n        abi!.exposed_functions\n          .filter((ef) => ef.is_entry)\n          .map(\n            (ef) =>\n              ({\n                fullName: `${abi!.address}::${abi!.name}::${ef.name}`,\n                ...ef,\n              } as Gen.MoveFunction & { fullName: string }),\n          ),\n      );\n\n    const abiMap = new Map<string, Gen.MoveFunction & { fullName: string }>();\n    abis.forEach((abi) => {\n      abiMap.set(abi.fullName, abi);\n    });\n\n    return abiMap;\n  }\n\n  /**\n   * Builds a raw transaction. Only support script function a.k.a entry function payloads\n   *\n   * @param func fully qualified function name in format <address>::<module>::<function>, e.g. 0x1::coin::transfer\n   * @param ty_tags\n   * @param args\n   * @returns RawTransaction\n   */\n  async build(func: Gen.EntryFunctionId, ty_tags: Gen.MoveType[], args: any[]): Promise<RawTransaction> {\n    /* eslint no-param-reassign: [\"off\"] */\n    const normlize = (s: string) => s.replace(/^0[xX]0*/g, \"0x\");\n    func = normlize(func);\n    const funcNameParts = func.split(\"::\");\n    if (funcNameParts.length !== 3) {\n      throw new Error(\n        // eslint-disable-next-line max-len\n        \"'func' needs to be a fully qualified function name in format <address>::<module>::<function>, e.g. 0x1::coin::transfer\",\n      );\n    }\n\n    const [addr, module] = func.split(\"::\");\n\n    // Downloads the JSON abi\n    const abiMap = await this.fetchABI(addr);\n    if (!abiMap.has(func)) {\n      throw new Error(`${func} doesn't exist.`);\n    }\n\n    const funcAbi = abiMap.get(func);\n\n    // Remove all `signer` and `&signer` from argument list because the Move VM injects those arguments. Clients do not\n    // need to care about those args. `signer` and `&signer` are required be in the front of the argument list. But we\n    // just loop through all arguments and filter out `signer` and `&signer`.\n    const abiArgs = funcAbi!.params.filter((param) => param !== \"signer\" && param !== \"&signer\");\n\n    // Convert abi string arguments to TypeArgumentABI\n    const typeArgABIs = abiArgs.map(\n      (abiArg, i) => new ArgumentABI(`var${i}`, new TypeTagParser(abiArg, ty_tags).parseTypeTag()),\n    );\n\n    const entryFunctionABI = new EntryFunctionABI(\n      funcAbi!.name,\n      ModuleId.fromStr(`${addr}::${module}`),\n      \"\", // Doc string\n      funcAbi!.generic_type_params.map((_, i) => new TypeArgumentABI(`${i}`)),\n      typeArgABIs,\n    );\n\n    const { sender, ...rest } = this.builderConfig;\n\n    const senderAddress = sender instanceof AccountAddress ? HexString.fromUint8Array(sender.address) : sender;\n\n    const [{ sequence_number: sequenceNumber }, chainId, { gas_estimate: gasUnitPrice }] = await Promise.all([\n      rest?.sequenceNumber\n        ? Promise.resolve({ sequence_number: rest?.sequenceNumber })\n        : this.aptosClient.getAccount(senderAddress),\n      rest?.chainId ? Promise.resolve(rest?.chainId) : this.aptosClient.getChainId(),\n      rest?.gasUnitPrice ? Promise.resolve({ gas_estimate: rest?.gasUnitPrice }) : this.aptosClient.estimateGasPrice(),\n    ]);\n\n    const builderABI = new TransactionBuilderABI([bcsToBytes(entryFunctionABI)], {\n      sender,\n      sequenceNumber,\n      chainId,\n      gasUnitPrice: BigInt(gasUnitPrice),\n      ...rest,\n    });\n\n    return builderABI.build(func, ty_tags, args);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { HexString } from \"../utils\";\nimport {\n  TypeTag,\n  TypeTagBool,\n  TypeTagU8,\n  TypeTagU16,\n  TypeTagU32,\n  TypeTagU64,\n  TypeTagU128,\n  TypeTagU256,\n  TypeTagAddress,\n  AccountAddress,\n  TypeTagVector,\n  TypeTagStruct,\n  TransactionArgument,\n  TransactionArgumentBool,\n  TransactionArgumentU16,\n  TransactionArgumentU32,\n  TransactionArgumentU64,\n  TransactionArgumentU128,\n  TransactionArgumentU256,\n  TransactionArgumentAddress,\n  TransactionArgumentU8,\n  TransactionArgumentU8Vector,\n} from \"../aptos_types\";\nimport { Serializer } from \"../bcs\";\n\nfunction assertType(val: any, types: string[] | string, message?: string) {\n  if (!types?.includes(typeof val)) {\n    throw new Error(\n      message || `Invalid arg: ${val} type should be ${types instanceof Array ? types.join(\" or \") : types}`,\n    );\n  }\n}\n\nexport function ensureBoolean(val: boolean | string): boolean {\n  assertType(val, [\"boolean\", \"string\"]);\n  if (typeof val === \"boolean\") {\n    return val;\n  }\n\n  if (val === \"true\") {\n    return true;\n  }\n  if (val === \"false\") {\n    return false;\n  }\n\n  throw new Error(\"Invalid boolean string.\");\n}\n\nexport function ensureNumber(val: number | string): number {\n  assertType(val, [\"number\", \"string\"]);\n  if (typeof val === \"number\") {\n    return val;\n  }\n\n  const res = Number.parseInt(val, 10);\n  if (Number.isNaN(res)) {\n    throw new Error(\"Invalid number string.\");\n  }\n\n  return res;\n}\n\nexport function ensureBigInt(val: number | bigint | string): bigint {\n  assertType(val, [\"number\", \"bigint\", \"string\"]);\n  return BigInt(val);\n}\n\nexport function serializeArg(argVal: any, argType: TypeTag, serializer: Serializer) {\n  serializeArgInner(argVal, argType, serializer, 0);\n}\n\nfunction serializeArgInner(argVal: any, argType: TypeTag, serializer: Serializer, depth: number) {\n  if (argType instanceof TypeTagBool) {\n    serializer.serializeBool(ensureBoolean(argVal));\n  } else if (argType instanceof TypeTagU8) {\n    serializer.serializeU8(ensureNumber(argVal));\n  } else if (argType instanceof TypeTagU16) {\n    serializer.serializeU16(ensureNumber(argVal));\n  } else if (argType instanceof TypeTagU32) {\n    serializer.serializeU32(ensureNumber(argVal));\n  } else if (argType instanceof TypeTagU64) {\n    serializer.serializeU64(ensureBigInt(argVal));\n  } else if (argType instanceof TypeTagU128) {\n    serializer.serializeU128(ensureBigInt(argVal));\n  } else if (argType instanceof TypeTagU256) {\n    serializer.serializeU256(ensureBigInt(argVal));\n  } else if (argType instanceof TypeTagAddress) {\n    serializeAddress(argVal, serializer);\n  } else if (argType instanceof TypeTagVector) {\n    serializeVector(argVal, argType, serializer, depth);\n  } else if (argType instanceof TypeTagStruct) {\n    serializeStruct(argVal, argType, serializer, depth);\n  } else {\n    throw new Error(\"Unsupported arg type.\");\n  }\n}\n\nfunction serializeAddress(argVal: any, serializer: Serializer) {\n  let addr: AccountAddress;\n  if (typeof argVal === \"string\" || argVal instanceof HexString) {\n    addr = AccountAddress.fromHex(argVal);\n  } else if (argVal instanceof AccountAddress) {\n    addr = argVal;\n  } else {\n    throw new Error(\"Invalid account address.\");\n  }\n  addr.serialize(serializer);\n}\n\nfunction serializeVector(argVal: any, argType: TypeTagVector, serializer: Serializer, depth: number) {\n  // We are serializing a vector<u8>\n  if (argType.value instanceof TypeTagU8) {\n    if (argVal instanceof Uint8Array) {\n      serializer.serializeBytes(argVal);\n      return;\n    }\n    if (argVal instanceof HexString) {\n      serializer.serializeBytes(argVal.toUint8Array());\n      return;\n    }\n    if (typeof argVal === \"string\") {\n      serializer.serializeStr(argVal);\n      return;\n    }\n    // If it isn't any of those types, then it must just be an actual array of numbers\n  }\n\n  if (!Array.isArray(argVal)) {\n    throw new Error(\"Invalid vector args.\");\n  }\n\n  serializer.serializeU32AsUleb128(argVal.length);\n\n  argVal.forEach((arg) => serializeArgInner(arg, argType.value, serializer, depth + 1));\n}\n\nfunction serializeStruct(argVal: any, argType: TypeTag, serializer: Serializer, depth: number) {\n  const { address, module_name: moduleName, name, type_args: typeArgs } = (argType as TypeTagStruct).value;\n  const structType = `${HexString.fromUint8Array(address.address).toShortString()}::${moduleName.value}::${name.value}`;\n  if (structType === \"0x1::string::String\") {\n    assertType(argVal, [\"string\"]);\n    serializer.serializeStr(argVal);\n  } else if (structType === \"0x1::object::Object\") {\n    serializeAddress(argVal, serializer);\n  } else if (structType === \"0x1::option::Option\") {\n    if (typeArgs.length !== 1) {\n      throw new Error(`Option has the wrong number of type arguments ${typeArgs.length}`);\n    }\n    serializeOption(argVal, typeArgs[0], serializer, depth);\n  } else {\n    throw new Error(\"Unsupported struct type in function argument\");\n  }\n}\n\nfunction serializeOption(argVal: any, argType: TypeTag, serializer: Serializer, depth: number) {\n  // For option, we determine if it's empty or not empty first\n  // empty option is nothing, we specifically check for undefined to prevent fuzzy matching\n  if (argVal === undefined || argVal === null) {\n    serializer.serializeU32AsUleb128(0);\n  } else {\n    // Something means we need an array of 1\n    serializer.serializeU32AsUleb128(1);\n\n    // Serialize the inner type arg, ensuring that depth is tracked\n    serializeArgInner(argVal, argType, serializer, depth + 1);\n  }\n}\n\nexport function argToTransactionArgument(argVal: any, argType: TypeTag): TransactionArgument {\n  if (argType instanceof TypeTagBool) {\n    return new TransactionArgumentBool(ensureBoolean(argVal));\n  }\n  if (argType instanceof TypeTagU8) {\n    return new TransactionArgumentU8(ensureNumber(argVal));\n  }\n  if (argType instanceof TypeTagU16) {\n    return new TransactionArgumentU16(ensureNumber(argVal));\n  }\n  if (argType instanceof TypeTagU32) {\n    return new TransactionArgumentU32(ensureNumber(argVal));\n  }\n  if (argType instanceof TypeTagU64) {\n    return new TransactionArgumentU64(ensureBigInt(argVal));\n  }\n  if (argType instanceof TypeTagU128) {\n    return new TransactionArgumentU128(ensureBigInt(argVal));\n  }\n  if (argType instanceof TypeTagU256) {\n    return new TransactionArgumentU256(ensureBigInt(argVal));\n  }\n  if (argType instanceof TypeTagAddress) {\n    let addr: AccountAddress;\n    if (typeof argVal === \"string\" || argVal instanceof HexString) {\n      addr = AccountAddress.fromHex(argVal);\n    } else if (argVal instanceof AccountAddress) {\n      addr = argVal;\n    } else {\n      throw new Error(\"Invalid account address.\");\n    }\n    return new TransactionArgumentAddress(addr);\n  }\n  if (argType instanceof TypeTagVector && argType.value instanceof TypeTagU8) {\n    if (!(argVal instanceof Uint8Array)) {\n      throw new Error(`${argVal} should be an instance of Uint8Array`);\n    }\n    return new TransactionArgumentU8Vector(argVal);\n  }\n\n  throw new Error(\"Unknown type for TransactionArgument.\");\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n  clear,\n  DEFAULT_TXN_EXP_SEC_FROM_NOW,\n  DEFAULT_MAX_GAS_AMOUNT,\n  DEFAULT_TXN_TIMEOUT_SEC,\n  fixNodeUrl,\n  HexString,\n  paginateWithCursor,\n  MaybeHexString,\n  Memoize,\n  sleep,\n  APTOS_COIN,\n} from \"../utils\";\nimport { AptosAccount } from \"../account/aptos_account\";\nimport * as Gen from \"../generated/index\";\nimport {\n  TxnBuilderTypes,\n  TransactionBuilderEd25519,\n  TransactionBuilderRemoteABI,\n  RemoteABIBuilderConfig,\n  TransactionBuilderMultiEd25519,\n} from \"../transaction_builder\";\nimport {\n  bcsSerializeBytes,\n  bcsSerializeU8,\n  bcsToBytes,\n  Bytes,\n  Seq,\n  Serializer,\n  serializeVector,\n  Uint64,\n  AnyNumber,\n} from \"../bcs\";\nimport { Ed25519PublicKey, MultiEd25519PublicKey, RawTransaction } from \"../aptos_types\";\nimport { get, post, ClientConfig, AptosApiError } from \"../client\";\n\nexport interface OptionalTransactionArgs {\n  maxGasAmount?: Uint64;\n  gasUnitPrice?: Uint64;\n  expireTimestamp?: Uint64;\n}\n\ninterface PaginationArgs {\n  start?: AnyNumber;\n  limit?: number;\n}\n\n/**\n * Provides methods for retrieving data from Aptos node.\n * For more detailed API specification see {@link https://fullnode.devnet.aptoslabs.com/v1/spec}\n */\nexport class AptosClient {\n  readonly nodeUrl: string;\n\n  readonly config: ClientConfig | undefined;\n\n  /**\n   * Build a client configured to connect to an Aptos node at the given URL.\n   *\n   * Note: If you forget to append `/v1` to the URL, the client constructor\n   * will automatically append it. If you don't want this URL processing to\n   * take place, set doNotFixNodeUrl to true.\n   *\n   * @param nodeUrl URL of the Aptos Node API endpoint.\n   * @param config Additional configuration options for the generated Axios client.\n   */\n  constructor(nodeUrl: string, config?: ClientConfig, doNotFixNodeUrl: boolean = false) {\n    if (!nodeUrl) {\n      throw new Error(\"Node URL cannot be empty.\");\n    }\n    if (doNotFixNodeUrl) {\n      this.nodeUrl = nodeUrl;\n    } else {\n      this.nodeUrl = fixNodeUrl(nodeUrl);\n    }\n    this.config = config === undefined || config === null ? {} : { ...config };\n  }\n\n  /**\n   * Queries an Aptos account by address\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @returns Core account resource, used for identifying account and transaction execution\n   * @example An example of the returned account\n   * ```\n   * {\n   *    sequence_number: \"1\",\n   *    authentication_key: \"0x5307b5f4bc67829097a8ba9b43dba3b88261eeccd1f709d9bde240fc100fbb69\"\n   * }\n   * ```\n   */\n  @parseApiError\n  async getAccount(accountAddress: MaybeHexString): Promise<Gen.AccountData> {\n    const { data } = await get<{}, Gen.AccountData>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(accountAddress).hex()}`,\n      originMethod: \"getAccount\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Queries transactions sent by given account\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @param query Optional pagination object\n   * @param query.start The sequence number of the start transaction of the page. Default is 0.\n   * @param query.limit The max number of transactions should be returned for the page. Default is 25.\n   * @returns An array of on-chain transactions, sent by account\n   */\n  @parseApiError\n  async getAccountTransactions(accountAddress: MaybeHexString, query?: PaginationArgs): Promise<Gen.Transaction[]> {\n    const { data } = await get<{}, Gen.Transaction[]>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/transactions`,\n      originMethod: \"getAccountTransactions\",\n      params: { start: query?.start, limit: query?.limit },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Queries modules associated with given account\n   *\n   * Note: In order to get all account modules, this function may call the API\n   * multiple times as it paginates.\n   *\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used\n   * @returns Account modules array for a specific ledger version.\n   * Module is represented by MoveModule interface. It contains module `bytecode` and `abi`,\n   * which is JSON representation of a module\n   */\n  @parseApiError\n  async getAccountModules(\n    accountAddress: MaybeHexString,\n    query?: { ledgerVersion?: AnyNumber },\n  ): Promise<Gen.MoveModuleBytecode[]> {\n    // Note: This function does not expose a `limit` parameter because it might\n    // be ambiguous how this is being used. Is it being passed to getAccountModules\n    // to limit the number of items per response, or does it limit the total output\n    // of this function? We avoid this confusion by not exposing the parameter at all.\n    const out = await paginateWithCursor<{}, Gen.MoveModuleBytecode[]>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${accountAddress}/modules`,\n      params: { ledger_version: query?.ledgerVersion, limit: 1000 },\n      originMethod: \"getAccountModules\",\n      overrides: { ...this.config },\n    });\n    return out;\n  }\n\n  /**\n   * Queries module associated with given account by module name\n   *\n   * Note: In order to get all account resources, this function may call the API\n   * multiple times as it paginates.\n   *\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @param moduleName The name of the module\n   * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used\n   * @returns Specified module.\n   * Module is represented by MoveModule interface. It contains module `bytecode` and `abi`,\n   * which JSON representation of a module\n   */\n  @parseApiError\n  async getAccountModule(\n    accountAddress: MaybeHexString,\n    moduleName: string,\n    query?: { ledgerVersion?: AnyNumber },\n  ): Promise<Gen.MoveModuleBytecode> {\n    const { data } = await get<{}, Gen.MoveModuleBytecode>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/module/${moduleName}`,\n      originMethod: \"getAccountModule\",\n      params: { ledger_version: query?.ledgerVersion },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Queries all resources associated with given account\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used\n   * @returns Account resources for a specific ledger version\n   */\n  @parseApiError\n  async getAccountResources(\n    accountAddress: MaybeHexString,\n    query?: { ledgerVersion?: AnyNumber },\n  ): Promise<Gen.MoveResource[]> {\n    const out = await paginateWithCursor<{}, Gen.MoveResource[]>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${accountAddress}/resources`,\n      params: { ledger_version: query?.ledgerVersion, limit: 9999 },\n      originMethod: \"getAccountResources\",\n      overrides: { ...this.config },\n    });\n    return out;\n  }\n\n  /**\n   * Queries resource associated with given account by resource type\n   * @param accountAddress Hex-encoded 32 byte Aptos account address\n   * @param resourceType String representation of an on-chain Move struct type\n   * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used\n   * @returns Account resource of specified type and ledger version\n   * @example An example of an account resource\n   * ```\n   * {\n   *    type: \"0x1::aptos_coin::AptosCoin\",\n   *    data: { value: 6 }\n   * }\n   * ```\n   */\n  @parseApiError\n  async getAccountResource(\n    accountAddress: MaybeHexString,\n    resourceType: Gen.MoveStructTag,\n    query?: { ledgerVersion?: AnyNumber },\n  ): Promise<Gen.MoveResource> {\n    const { data } = await get<{}, Gen.MoveResource>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/resource/${resourceType}`,\n      originMethod: \"getAccountResource\",\n      params: { ledger_version: query?.ledgerVersion },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /** Generates a signed transaction that can be submitted to the chain for execution. */\n  static generateBCSTransaction(accountFrom: AptosAccount, rawTxn: TxnBuilderTypes.RawTransaction): Uint8Array {\n    const txnBuilder = new TransactionBuilderEd25519((signingMessage: TxnBuilderTypes.SigningMessage) => {\n      // @ts-ignore\n      const sigHexStr = accountFrom.signBuffer(signingMessage);\n      return new TxnBuilderTypes.Ed25519Signature(sigHexStr.toUint8Array());\n    }, accountFrom.pubKey().toUint8Array());\n\n    return txnBuilder.sign(rawTxn);\n  }\n\n  /**\n   * Note: Unless you have a specific reason for using this, it'll probably be simpler\n   * to use `simulateTransaction`.\n   *\n   * Generates a BCS transaction that can be submitted to the chain for simulation.\n   *\n   * @param accountFrom The account that will be used to send the transaction\n   * for simulation.\n   * @param rawTxn The raw transaction to be simulated, likely created by calling\n   * the `generateTransaction` function.\n   * @returns The BCS encoded signed transaction, which you should then pass into\n   * the `submitBCSSimulation` function.\n   */\n  static generateBCSSimulation(accountFrom: AptosAccount, rawTxn: TxnBuilderTypes.RawTransaction): Uint8Array {\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const txnBuilder = new TransactionBuilderEd25519((_signingMessage: TxnBuilderTypes.SigningMessage) => {\n      // @ts-ignore\n      const invalidSigBytes = new Uint8Array(64);\n      return new TxnBuilderTypes.Ed25519Signature(invalidSigBytes);\n    }, accountFrom.pubKey().toUint8Array());\n\n    return txnBuilder.sign(rawTxn);\n  }\n\n  /** Generates an entry function transaction request that can be submitted to produce a raw transaction that\n   * can be signed, which upon being signed can be submitted to the blockchain\n   * This function fetches the remote ABI and uses it to serialized the data, therefore\n   * users don't need to handle serialization by themselves.\n   * @param sender Hex-encoded 32 byte Aptos account address of transaction sender\n   * @param payload Entry function transaction payload type\n   * @param options Options allow to overwrite default transaction options.\n   * @returns A raw transaction object\n   */\n  async generateTransaction(\n    sender: MaybeHexString,\n    payload: Gen.EntryFunctionPayload,\n    options?: Partial<Gen.SubmitTransactionRequest>,\n  ): Promise<TxnBuilderTypes.RawTransaction> {\n    const config: RemoteABIBuilderConfig = { sender };\n    if (options?.sequence_number) {\n      config.sequenceNumber = options.sequence_number;\n    }\n\n    if (options?.gas_unit_price) {\n      config.gasUnitPrice = options.gas_unit_price;\n    }\n\n    if (options?.max_gas_amount) {\n      config.maxGasAmount = options.max_gas_amount;\n    }\n\n    if (options?.expiration_timestamp_secs) {\n      const timestamp = Number.parseInt(options.expiration_timestamp_secs, 10);\n      config.expSecFromNow = timestamp - Math.floor(Date.now() / 1000);\n    }\n\n    const builder = new TransactionBuilderRemoteABI(this, config);\n    return builder.build(payload.function, payload.type_arguments, payload.arguments);\n  }\n\n  /** Converts a transaction request produced by `generateTransaction` into a properly\n   * signed transaction, which can then be submitted to the blockchain\n   * @param accountFrom AptosAccount of transaction sender\n   * @param rawTransaction A raw transaction generated by `generateTransaction` method\n   * @returns A transaction, signed with sender account\n   */\n  // eslint-disable-next-line class-methods-use-this\n  async signTransaction(\n    accountFrom: AptosAccount,\n    rawTransaction: TxnBuilderTypes.RawTransaction,\n  ): Promise<Uint8Array> {\n    return Promise.resolve(AptosClient.generateBCSTransaction(accountFrom, rawTransaction));\n  }\n\n  /**\n   * Event types are globally identifiable by an account `address` and\n   * monotonically increasing `creation_number`, one per event type emitted\n   * to the given account. This API returns events corresponding to that\n   * that event type.\n   * @param address Hex-encoded 32 byte Aptos account, with or without a `0x` prefix,\n   * for which events are queried. This refers to the account that events were emitted\n   * to, not the account hosting the move module that emits that event type.\n   * @param creationNumber Creation number corresponding to the event type.\n   * @returns Array of events assotiated with the given account and creation number.\n   */\n  @parseApiError\n  async getEventsByCreationNumber(\n    address: MaybeHexString,\n    creationNumber: AnyNumber | string,\n    query?: PaginationArgs,\n  ): Promise<Gen.Event[]> {\n    const { data } = await get<{}, Gen.Event[]>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(address).hex()}/events/${creationNumber}`,\n      originMethod: \"getEventsByCreationNumber\",\n      params: { start: query?.start, limit: query?.limit },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * This API uses the given account `address`, `eventHandle`, and `fieldName`\n   * to build a key that can globally identify an event types. It then uses this\n   * key to return events emitted to the given account matching that event type.\n   * @param address Hex-encoded 32 byte Aptos account, with or without a `0x` prefix,\n   * for which events are queried. This refers to the account that events were emitted\n   * to, not the account hosting the move module that emits that event type.\n   * @param eventHandleStruct String representation of an on-chain Move struct type.\n   * (e.g. `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>`)\n   * @param fieldName The field name of the EventHandle in the struct\n   * @param query Optional query object\n   * @param query.start The start sequence number in the EVENT STREAM, defaulting to the latest event.\n   * The events are returned in the reverse order of sequence number\n   * @param query.limit The number of events to be returned. The default is 25.\n   * @returns Array of events\n   */\n  @parseApiError\n  async getEventsByEventHandle(\n    address: MaybeHexString,\n    eventHandleStruct: Gen.MoveStructTag,\n    fieldName: string,\n    query?: PaginationArgs,\n  ): Promise<Gen.Event[]> {\n    const { data } = await get<{}, Gen.Event[]>({\n      url: this.nodeUrl,\n      endpoint: `accounts/${HexString.ensure(address).hex()}/events/${eventHandleStruct}/${fieldName}`,\n      originMethod: \"getEventsByEventHandle\",\n      params: { start: query?.start, limit: query?.limit },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Submits a signed transaction to the transaction endpoint.\n   * @param signedTxn A transaction, signed by `signTransaction` method\n   * @returns Transaction that is accepted and submitted to mempool\n   */\n  async submitTransaction(signedTxn: Uint8Array): Promise<Gen.PendingTransaction> {\n    return this.submitSignedBCSTransaction(signedTxn);\n  }\n\n  /**\n   * Generates and submits a transaction to the transaction simulation\n   * endpoint. For this we generate a transaction with a fake signature.\n   *\n   * @param accountOrPubkey The sender or sender's public key. When private key is available, `AptosAccount` instance\n   * can be used to send the transaction for simulation. If private key is not available, sender's public key can be\n   * used to send the transaction for simulation.\n   * @param rawTransaction The raw transaction to be simulated, likely created\n   * by calling the `generateTransaction` function.\n   * @param query.estimateGasUnitPrice If set to true, the gas unit price in the\n   * transaction will be ignored and the estimated value will be used.\n   * @param query.estimateMaxGasAmount If set to true, the max gas value in the\n   * transaction will be ignored and the maximum possible gas will be used.\n   * @param query.estimatePrioritizedGasUnitPrice If set to true, the transaction will use a higher price than the\n   * original estimate.\n   * @returns The BCS encoded signed transaction, which you should then provide\n   *\n   */\n  async simulateTransaction(\n    accountOrPubkey: AptosAccount | Ed25519PublicKey | MultiEd25519PublicKey,\n    rawTransaction: TxnBuilderTypes.RawTransaction,\n    query?: {\n      estimateGasUnitPrice?: boolean;\n      estimateMaxGasAmount?: boolean;\n      estimatePrioritizedGasUnitPrice: boolean;\n    },\n  ): Promise<Gen.UserTransaction[]> {\n    let signedTxn: Uint8Array;\n\n    if (accountOrPubkey instanceof AptosAccount) {\n      signedTxn = AptosClient.generateBCSSimulation(accountOrPubkey, rawTransaction);\n    } else if (accountOrPubkey instanceof MultiEd25519PublicKey) {\n      const txnBuilder = new TransactionBuilderMultiEd25519(() => {\n        const { threshold } = accountOrPubkey;\n        const bits: Seq<number> = [];\n        const signatures: TxnBuilderTypes.Ed25519Signature[] = [];\n        for (let i = 0; i < threshold; i += 1) {\n          bits.push(i);\n          signatures.push(new TxnBuilderTypes.Ed25519Signature(new Uint8Array(64)));\n        }\n        const bitmap = TxnBuilderTypes.MultiEd25519Signature.createBitmap(bits);\n        return new TxnBuilderTypes.MultiEd25519Signature(signatures, bitmap);\n      }, accountOrPubkey);\n\n      signedTxn = txnBuilder.sign(rawTransaction);\n    } else {\n      const txnBuilder = new TransactionBuilderEd25519(() => {\n        const invalidSigBytes = new Uint8Array(64);\n        return new TxnBuilderTypes.Ed25519Signature(invalidSigBytes);\n      }, accountOrPubkey.toBytes());\n\n      signedTxn = txnBuilder.sign(rawTransaction);\n    }\n    return this.submitBCSSimulation(signedTxn, query);\n  }\n\n  /**\n   * Submits a signed transaction to the endpoint that takes BCS payload\n   *\n   * @param signedTxn A BCS transaction representation\n   * @returns Transaction that is accepted and submitted to mempool\n   */\n  @parseApiError\n  async submitSignedBCSTransaction(signedTxn: Uint8Array): Promise<Gen.PendingTransaction> {\n    // Need to construct a customized post request for transactions in BCS payload\n    const { data } = await post<Uint8Array, Gen.PendingTransaction>({\n      url: this.nodeUrl,\n      body: signedTxn,\n      endpoint: \"transactions\",\n      originMethod: \"submitSignedBCSTransaction\",\n      contentType: \"application/x.aptos.signed_transaction+bcs\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Submits the BCS serialization of a signed transaction to the simulation endpoint.\n   *\n   * @param bcsBody The output of `generateBCSSimulation`.\n   * @param query?.estimateGasUnitPrice If set to true, the gas unit price in the\n   * transaction will be ignored and the estimated value will be used.\n   * @param query?.estimateMaxGasAmount If set to true, the max gas value in the\n   * transaction will be ignored and the maximum possible gas will be used.\n   * @param query?.estimatePrioritizedGasUnitPrice If set to true, the transaction will use a higher price than the\n   * original estimate.\n   * @returns Simulation result in the form of UserTransaction.\n   */\n  @parseApiError\n  async submitBCSSimulation(\n    bcsBody: Uint8Array,\n    query?: {\n      estimateGasUnitPrice?: boolean;\n      estimateMaxGasAmount?: boolean;\n      estimatePrioritizedGasUnitPrice?: boolean;\n    },\n  ): Promise<Gen.UserTransaction[]> {\n    // Need to construct a customized post request for transactions in BCS payload.\n    const queryParams = {\n      estimate_gas_unit_price: query?.estimateGasUnitPrice ?? false,\n      estimate_max_gas_amount: query?.estimateMaxGasAmount ?? false,\n      estimate_prioritized_gas_unit_price: query?.estimatePrioritizedGasUnitPrice ?? false,\n    };\n    const { data } = await post<Uint8Array, Gen.UserTransaction[]>({\n      url: this.nodeUrl,\n      body: bcsBody,\n      endpoint: \"transactions/simulate\",\n      params: queryParams,\n      originMethod: \"submitBCSSimulation\",\n      contentType: \"application/x.aptos.signed_transaction+bcs\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Queries on-chain transactions. This function will not return pending\n   * transactions. For that, use `getTransactionsByHash`.\n   *\n   * @param query Optional pagination object\n   * @param query.start The start transaction version of the page. Default is the latest ledger version\n   * @param query.limit The max number of transactions should be returned for the page. Default is 25\n   * @returns Array of on-chain transactions\n   */\n  @parseApiError\n  async getTransactions(query?: PaginationArgs): Promise<Gen.Transaction[]> {\n    const { data } = await get<{}, Gen.Transaction[]>({\n      url: this.nodeUrl,\n      endpoint: \"transactions\",\n      originMethod: \"getTransactions\",\n      params: { start: query?.start?.toString(), limit: query?.limit },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * @param txnHash - Transaction hash should be hex-encoded bytes string with 0x prefix.\n   * @returns Transaction from mempool (pending) or on-chain (committed) transaction\n   */\n  @parseApiError\n  async getTransactionByHash(txnHash: string): Promise<Gen.Transaction> {\n    const { data } = await get<{}, Gen.Transaction>({\n      url: this.nodeUrl,\n      endpoint: `transactions/by_hash/${txnHash}`,\n      originMethod: \"getTransactionByHash\",\n      overrides: { ...this.config },\n    });\n\n    return data;\n  }\n\n  /**\n   * @param txnVersion - Transaction version is an uint64 number.\n   * @returns On-chain transaction. Only on-chain transactions have versions, so this\n   * function cannot be used to query pending transactions.\n   */\n  @parseApiError\n  async getTransactionByVersion(txnVersion: AnyNumber): Promise<Gen.Transaction> {\n    const { data } = await get<{}, Gen.Transaction>({\n      url: this.nodeUrl,\n      endpoint: `transactions/by_version/${txnVersion}`,\n      originMethod: \"getTransactionByVersion\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Defines if specified transaction is currently in pending state\n   * @param txnHash A hash of transaction\n   *\n   * To create a transaction hash:\n   *\n   * 1. Create hash message bytes: \"Aptos::Transaction\" bytes + BCS bytes of Transaction.\n   * 2. Apply hash algorithm SHA3-256 to the hash message bytes.\n   * 3. Hex-encode the hash bytes with 0x prefix.\n   *\n   * @returns `true` if transaction is in pending state and `false` otherwise\n   */\n  async transactionPending(txnHash: string): Promise<boolean> {\n    try {\n      const response = await this.getTransactionByHash(txnHash);\n      return response.type === \"pending_transaction\";\n    } catch (e: any) {\n      if (e?.status === 404) {\n        return true;\n      }\n      throw e;\n    }\n  }\n\n  /**\n   * Wait for a transaction to move past pending state.\n   *\n   * There are 4 possible outcomes:\n   * 1. Transaction is processed and successfully committed to the blockchain.\n   * 2. Transaction is rejected for some reason, and is therefore not committed\n   *    to the blockchain.\n   * 3. Transaction is committed but execution failed, meaning no changes were\n   *    written to the blockchain state.\n   * 4. Transaction is not processed within the specified timeout.\n   *\n   * In case 1, this function resolves with the transaction response returned\n   * by the API.\n   *\n   * In case 2, the function will throw an ApiError, likely with an HTTP status\n   * code indicating some problem with the request (e.g. 400).\n   *\n   * In case 3, if `checkSuccess` is false (the default), this function returns\n   * the transaction response just like in case 1, in which the `success` field\n   * will be false. If `checkSuccess` is true, it will instead throw a\n   * FailedTransactionError.\n   *\n   * In case 4, this function throws a WaitForTransactionError.\n   *\n   * @param txnHash The hash of a transaction previously submitted to the blockchain.\n   * @param extraArgs.timeoutSecs Timeout in seconds. Defaults to 20 seconds.\n   * @param extraArgs.checkSuccess See above. Defaults to false.\n   * @returns See above.\n   *\n   * @example\n   * ```\n   * const rawTransaction = await this.generateRawTransaction(sender.address(), payload, extraArgs);\n   * const bcsTxn = AptosClient.generateBCSTransaction(sender, rawTransaction);\n   * const pendingTransaction = await this.submitSignedBCSTransaction(bcsTxn);\n   * const transasction = await this.aptosClient.waitForTransactionWithResult(pendingTransaction.hash);\n   * ```\n   */\n  async waitForTransactionWithResult(\n    txnHash: string,\n    extraArgs?: { timeoutSecs?: number; checkSuccess?: boolean },\n  ): Promise<Gen.Transaction> {\n    const timeoutSecs = extraArgs?.timeoutSecs ?? DEFAULT_TXN_TIMEOUT_SEC;\n    const checkSuccess = extraArgs?.checkSuccess ?? false;\n\n    let isPending = true;\n    let count = 0;\n    let lastTxn: Gen.Transaction | undefined;\n\n    while (isPending) {\n      if (count >= timeoutSecs) {\n        break;\n      }\n      try {\n        // eslint-disable-next-line no-await-in-loop\n        lastTxn = await this.getTransactionByHash(txnHash);\n\n        isPending = lastTxn.type === \"pending_transaction\";\n        if (!isPending) {\n          break;\n        }\n      } catch (e) {\n        // In short, this means we will retry if it was an ApiError and the code was 404 or 5xx.\n        const isApiError = e instanceof ApiError;\n        const isRequestError = isApiError && e.status !== 404 && e.status >= 400 && e.status < 500;\n        if (!isApiError || isRequestError) {\n          throw e;\n        }\n      }\n      // eslint-disable-next-line no-await-in-loop\n      await sleep(1000);\n      count += 1;\n    }\n\n    // There is a chance that lastTxn is still undefined. Let's throw some error here\n    if (lastTxn === undefined) {\n      throw new Error(`Waiting for transaction ${txnHash} failed`);\n    }\n\n    if (isPending) {\n      throw new WaitForTransactionError(\n        `Waiting for transaction ${txnHash} timed out after ${timeoutSecs} seconds`,\n        lastTxn,\n      );\n    }\n    if (!checkSuccess) {\n      return lastTxn;\n    }\n    if (!(lastTxn as any)?.success) {\n      throw new FailedTransactionError(\n        `Transaction ${txnHash} committed to the blockchain but execution failed`,\n        lastTxn,\n      );\n    }\n    return lastTxn;\n  }\n\n  /**\n   * This function works the same as `waitForTransactionWithResult` except it\n   * doesn't return the transaction in those cases, it returns nothing. For\n   * more information, see the documentation for `waitForTransactionWithResult`.\n   */\n  async waitForTransaction(\n    txnHash: string,\n    extraArgs?: { timeoutSecs?: number; checkSuccess?: boolean },\n  ): Promise<void> {\n    await this.waitForTransactionWithResult(txnHash, extraArgs);\n  }\n\n  /**\n   * Queries the latest ledger information\n   * @returns Latest ledger information\n   * @example Example of returned data\n   * ```\n   * {\n   *   chain_id: 15,\n   *   epoch: 6,\n   *   ledgerVersion: \"2235883\",\n   *   ledger_timestamp:\"1654580922321826\"\n   * }\n   * ```\n   */\n  @parseApiError\n  async getLedgerInfo(): Promise<Gen.IndexResponse> {\n    const { data } = await get<{}, Gen.IndexResponse>({\n      url: this.nodeUrl,\n      originMethod: \"getLedgerInfo\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * @returns Current chain id\n   */\n  @Memoize()\n  async getChainId(): Promise<number> {\n    const result = await this.getLedgerInfo();\n    return result.chain_id;\n  }\n\n  /**\n   * Gets a table item for a table identified by the handle and the key for the item.\n   * Key and value types need to be passed in to help with key serialization and value deserialization.\n   * @param handle A pointer to where that table is stored\n   * @param data Object, that describes table item\n   * @param data.key_type Move type of table key (e.g. `vector<u8>`)\n   * @param data.value_type Move type of table value (e.g. `u64`)\n   * @param data.key Value of table key\n   * @returns Table item value rendered in JSON\n   */\n  @parseApiError\n  async getTableItem(handle: string, data: Gen.TableItemRequest, query?: { ledgerVersion?: AnyNumber }): Promise<any> {\n    const response = await post<Gen.TableItemRequest, any>({\n      url: this.nodeUrl,\n      body: data,\n      endpoint: `tables/${handle}/item`,\n      originMethod: \"getTableItem\",\n      params: { ledger_version: query?.ledgerVersion?.toString() },\n      overrides: { ...this.config },\n    });\n    return response.data;\n  }\n\n  /**\n   * Generates a raw transaction out of a transaction payload\n   * @param accountFrom\n   * @param payload\n   * @param extraArgs\n   * @returns A raw transaction object\n   */\n  async generateRawTransaction(\n    accountFrom: HexString,\n    payload: TxnBuilderTypes.TransactionPayload,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<TxnBuilderTypes.RawTransaction> {\n    const [{ sequence_number: sequenceNumber }, chainId, { gas_estimate: gasEstimate }] = await Promise.all([\n      this.getAccount(accountFrom),\n      this.getChainId(),\n      extraArgs?.gasUnitPrice ? Promise.resolve({ gas_estimate: extraArgs.gasUnitPrice }) : this.estimateGasPrice(),\n    ]);\n\n    const { maxGasAmount, gasUnitPrice, expireTimestamp } = {\n      maxGasAmount: BigInt(DEFAULT_MAX_GAS_AMOUNT),\n      gasUnitPrice: BigInt(gasEstimate),\n      expireTimestamp: BigInt(Math.floor(Date.now() / 1000) + DEFAULT_TXN_EXP_SEC_FROM_NOW),\n      ...extraArgs,\n    };\n\n    return new TxnBuilderTypes.RawTransaction(\n      TxnBuilderTypes.AccountAddress.fromHex(accountFrom),\n      BigInt(sequenceNumber),\n      payload,\n      maxGasAmount,\n      gasUnitPrice,\n      expireTimestamp,\n      new TxnBuilderTypes.ChainId(chainId),\n    );\n  }\n\n  /**\n   * Helper for generating, signing, and submitting a transaction.\n   *\n   * @param sender AptosAccount of transaction sender.\n   * @param payload Transaction payload.\n   * @param extraArgs Extra args for building the transaction payload.\n   * @returns The transaction response from the API.\n   */\n  async generateSignSubmitTransaction(\n    sender: AptosAccount,\n    payload: TxnBuilderTypes.TransactionPayload,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    // :!:>generateSignSubmitTransactionInner\n    const rawTransaction = await this.generateRawTransaction(sender.address(), payload, extraArgs);\n    const bcsTxn = AptosClient.generateBCSTransaction(sender, rawTransaction);\n    const pendingTransaction = await this.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n    // <:!:generateSignSubmitTransactionInner\n  }\n\n  /**\n   * Helper for signing and submitting a transaction.\n   *\n   * @param sender AptosAccount of transaction sender.\n   * @param transaction A generated Raw transaction payload.\n   * @returns The transaction response from the API.\n   */\n  async signAndSubmitTransaction(sender: AptosAccount, transaction: RawTransaction): Promise<string> {\n    const bcsTxn = AptosClient.generateBCSTransaction(sender, transaction);\n    const pendingTransaction = await this.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Publishes a move package. `packageMetadata` and `modules` can be generated with command\n   * `aptos move compile --save-metadata [ --included-artifacts=<...> ]`.\n   * @param sender\n   * @param packageMetadata package metadata bytes\n   * @param modules bytecodes of modules\n   * @param extraArgs\n   * @returns Transaction hash\n   */\n  async publishPackage(\n    sender: AptosAccount,\n    packageMetadata: Bytes,\n    modules: Seq<TxnBuilderTypes.Module>,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const codeSerializer = new Serializer();\n    serializeVector(modules, codeSerializer);\n\n    const payload = new TxnBuilderTypes.TransactionPayloadEntryFunction(\n      TxnBuilderTypes.EntryFunction.natural(\n        \"0x1::code\",\n        \"publish_package_txn\",\n        [],\n        [bcsSerializeBytes(packageMetadata), codeSerializer.getBytes()],\n      ),\n    );\n\n    return this.generateSignSubmitTransaction(sender, payload, extraArgs);\n  }\n\n  /**\n   * Publishes a move packages by creating a resource account.\n   * The package cannot be upgraded since it is deployed by resource account\n   * `packageMetadata` and `modules` can be generated with command\n   * `aptos move compile --save-metadata [ --included-artifacts=<...> ]`.\n   * @param sender\n   * @param seed seeds for creation of resource address\n   * @param packageMetadata package metadata bytes\n   * @param modules bytecodes of modules\n   * @param extraArgs\n   * @returns Transaction hash\n   */\n  async createResourceAccountAndPublishPackage(\n    sender: AptosAccount,\n    seed: Bytes,\n    packageMetadata: Bytes,\n    modules: Seq<TxnBuilderTypes.Module>,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const codeSerializer = new Serializer();\n    serializeVector(modules, codeSerializer);\n\n    const payload = new TxnBuilderTypes.TransactionPayloadEntryFunction(\n      TxnBuilderTypes.EntryFunction.natural(\n        \"0x1::resource_account\",\n        \"create_resource_account_and_publish_package\",\n        [],\n        [bcsSerializeBytes(seed), bcsSerializeBytes(packageMetadata), codeSerializer.getBytes()],\n      ),\n    );\n\n    return this.generateSignSubmitTransaction(sender, payload, extraArgs);\n  }\n\n  /**\n   * Helper for generating, submitting, and waiting for a transaction, and then\n   * checking whether it was committed successfully. Under the hood this is just\n   * `generateSignSubmitTransaction` and then `waitForTransactionWithResult`, see\n   * those for information about the return / error semantics of this function.\n   */\n  async generateSignSubmitWaitForTransaction(\n    sender: AptosAccount,\n    payload: TxnBuilderTypes.TransactionPayload,\n    extraArgs?: OptionalTransactionArgs & {\n      checkSuccess?: boolean;\n      timeoutSecs?: number;\n    },\n  ): Promise<Gen.Transaction> {\n    const txnHash = await this.generateSignSubmitTransaction(sender, payload, extraArgs);\n    return this.waitForTransactionWithResult(txnHash, extraArgs);\n  }\n\n  @parseApiError\n  @Memoize({\n    ttlMs: 5 * 60 * 1000, // cache result for 5min\n    tags: [\"gas_estimates\"],\n  })\n  async estimateGasPrice(): Promise<Gen.GasEstimation> {\n    const { data } = await get<{}, Gen.GasEstimation>({\n      url: this.nodeUrl,\n      endpoint: \"estimate_gas_price\",\n      originMethod: \"estimateGasPrice\",\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  @parseApiError\n  async estimateMaxGasAmount(forAccount: MaybeHexString): Promise<Uint64> {\n    // Only Aptos utility coin is accepted as gas\n    const typeTag = `0x1::coin::CoinStore<${APTOS_COIN}>`;\n\n    const [{ gas_estimate: gasUnitPrice }, resources] = await Promise.all([\n      this.estimateGasPrice(),\n      this.getAccountResources(forAccount),\n    ]);\n\n    const accountResource = resources.find((r) => r.type === typeTag);\n    const balance = BigInt((accountResource!.data as any).coin.value);\n    return balance / BigInt(gasUnitPrice);\n  }\n\n  /**\n   * Rotate an account's auth key. After rotation, only the new private key can be used to sign txns for\n   * the account.\n   * WARNING: You must create a new instance of AptosAccount after using this function.\n   * @param forAccount Account of which the auth key will be rotated\n   * @param toPrivateKeyBytes New private key\n   * @param extraArgs Extra args for building the transaction payload.\n   * @returns PendingTransaction\n   */\n  async rotateAuthKeyEd25519(\n    forAccount: AptosAccount,\n    toPrivateKeyBytes: Uint8Array,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<Gen.PendingTransaction> {\n    const { sequence_number: sequenceNumber, authentication_key: authKey } = await this.getAccount(\n      forAccount.address(),\n    );\n\n    const helperAccount = new AptosAccount(toPrivateKeyBytes);\n\n    const challenge = new TxnBuilderTypes.RotationProofChallenge(\n      TxnBuilderTypes.AccountAddress.CORE_CODE_ADDRESS,\n      \"account\",\n      \"RotationProofChallenge\",\n      BigInt(sequenceNumber),\n      TxnBuilderTypes.AccountAddress.fromHex(forAccount.address()),\n      new TxnBuilderTypes.AccountAddress(new HexString(authKey).toUint8Array()),\n      helperAccount.pubKey().toUint8Array(),\n    );\n\n    const challengeHex = HexString.fromUint8Array(bcsToBytes(challenge));\n\n    const proofSignedByCurrentPrivateKey = forAccount.signHexString(challengeHex);\n\n    const proofSignedByNewPrivateKey = helperAccount.signHexString(challengeHex);\n\n    const payload = new TxnBuilderTypes.TransactionPayloadEntryFunction(\n      TxnBuilderTypes.EntryFunction.natural(\n        \"0x1::account\",\n        \"rotate_authentication_key\",\n        [],\n        [\n          bcsSerializeU8(0), // ed25519 scheme\n          bcsSerializeBytes(forAccount.pubKey().toUint8Array()),\n          bcsSerializeU8(0), // ed25519 scheme\n          bcsSerializeBytes(helperAccount.pubKey().toUint8Array()),\n          bcsSerializeBytes(proofSignedByCurrentPrivateKey.toUint8Array()),\n          bcsSerializeBytes(proofSignedByNewPrivateKey.toUint8Array()),\n        ],\n      ),\n    );\n\n    const rawTransaction = await this.generateRawTransaction(forAccount.address(), payload, extraArgs);\n    const bcsTxn = AptosClient.generateBCSTransaction(forAccount, rawTransaction);\n    return this.submitSignedBCSTransaction(bcsTxn);\n  }\n\n  /**\n   * Lookup the original address by the current derived address\n   * @param addressOrAuthKey\n   * @returns original address\n   */\n  async lookupOriginalAddress(addressOrAuthKey: MaybeHexString): Promise<HexString> {\n    const resource = await this.getAccountResource(\"0x1\", \"0x1::account::OriginatingAddress\");\n\n    const {\n      address_map: { handle },\n    } = resource.data as any;\n\n    const origAddress = await this.getTableItem(handle, {\n      key_type: \"address\",\n      value_type: \"address\",\n      key: HexString.ensure(addressOrAuthKey).hex(),\n    });\n\n    return new HexString(origAddress);\n  }\n\n  /**\n   * Get block by height\n   *\n   * @param blockHeight Block height to lookup.  Starts at 0\n   * @param withTransactions If set to true, include all transactions in the block\n   *\n   * @returns Block\n   */\n  @parseApiError\n  async getBlockByHeight(blockHeight: number, withTransactions?: boolean): Promise<Gen.Block> {\n    const { data } = await get<{}, Gen.Block>({\n      url: this.nodeUrl,\n      endpoint: `blocks/by_height/${blockHeight}`,\n      originMethod: \"getBlockByHeight\",\n      params: { with_transactions: withTransactions },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Get block by block transaction version\n   *\n   * @param version Ledger version to lookup block information for\n   * @param withTransactions If set to true, include all transactions in the block\n   *\n   * @returns Block\n   */\n  @parseApiError\n  async getBlockByVersion(version: number, withTransactions?: boolean): Promise<Gen.Block> {\n    const { data } = await get<{}, Gen.Block>({\n      url: this.nodeUrl,\n      endpoint: `blocks/by_version/${version}`,\n      originMethod: \"getBlockByVersion\",\n      params: { with_transactions: withTransactions },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  /**\n   * Call for a move view function\n   *\n   * @param payload Transaction payload\n   * @param version (optional) Ledger version to lookup block information for\n   *\n   * @returns MoveValue[]\n   */\n  @parseApiError\n  async view(payload: Gen.ViewRequest, ledger_version?: string): Promise<Gen.MoveValue[]> {\n    const { data } = await post<Gen.ViewRequest, Gen.MoveValue[]>({\n      url: this.nodeUrl,\n      body: payload,\n      endpoint: \"view\",\n      originMethod: \"getTableItem\",\n      params: { ledger_version },\n      overrides: { ...this.config },\n    });\n    return data;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  clearCache(tags: string[]) {\n    clear(tags);\n  }\n}\n/**\n * This error is used by `waitForTransactionWithResult` when waiting for a\n * transaction times out.\n */\nexport class WaitForTransactionError extends Error {\n  public readonly lastSubmittedTransaction: Gen.Transaction | undefined;\n\n  constructor(message: string, lastSubmittedTransaction: Gen.Transaction | undefined) {\n    super(message);\n    this.lastSubmittedTransaction = lastSubmittedTransaction;\n  }\n}\n\n/**\n * This error is used by `waitForTransactionWithResult` if `checkSuccess` is true.\n * See that function for more information.\n */\nexport class FailedTransactionError extends Error {\n  public readonly transaction: Gen.Transaction;\n\n  constructor(message: string, transaction: Gen.Transaction) {\n    super(message);\n    this.transaction = transaction;\n  }\n}\n\nexport class ApiError extends Error {\n  constructor(\n    public readonly status: number,\n    public readonly message: string,\n    public readonly errorCode?: string,\n    public readonly vmErrorCode?: string,\n  ) {\n    super(message);\n  }\n}\n\nfunction parseApiError(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) {\n  const childFunction = descriptor.value;\n  // eslint-disable-next-line no-param-reassign\n  descriptor.value = async function wrapper(...args: any[]) {\n    try {\n      // We need to explicitly await here so that the function is called and\n      // potentially throws an error. If we just return without awaiting, the\n      // promise is returned directly and the catch block cannot trigger.\n      const res = await childFunction.apply(this, [...args]);\n      return res;\n    } catch (e) {\n      if (e instanceof AptosApiError) {\n        throw new ApiError(\n          e.status,\n          JSON.stringify({ message: e.message, ...e.data }),\n          e.data?.error_code,\n          e.data?.vm_error_code,\n        );\n      }\n      throw e;\n    }\n  };\n  return descriptor;\n}\n","import { AnyNumber } from \"../bcs/types\";\nimport { HexString, MaybeHexString } from \"../utils\";\nimport {\n  GetAccountTokensCountQuery,\n  GetAccountCoinsDataQuery,\n  GetAccountCurrentTokensQuery,\n  GetAccountTransactionsCountQuery,\n  GetAccountTransactionsDataQuery,\n  GetNumberOfDelegatorsQuery,\n  GetDelegatedStakingActivitiesQuery,\n  GetIndexerLedgerInfoQuery,\n  GetTokenActivitiesCountQuery,\n  GetTokenActivitiesQuery,\n  GetTokenDataQuery,\n  GetTokenOwnersDataQuery,\n  GetTopUserTransactionsQuery,\n  GetUserTransactionsQuery,\n  GetOwnedTokensQuery,\n  GetTokenOwnedFromCollectionQuery,\n  GetCollectionDataQuery,\n  GetCollectionsWithOwnedTokensQuery,\n  GetTokenCurrentOwnerDataQuery,\n} from \"../indexer/generated/operations\";\nimport {\n  GetAccountTokensCount,\n  GetAccountCoinsData,\n  GetAccountCurrentTokens,\n  GetAccountTransactionsCount,\n  GetAccountTransactionsData,\n  GetNumberOfDelegators,\n  GetDelegatedStakingActivities,\n  GetIndexerLedgerInfo,\n  GetTokenActivities,\n  GetTokenActivitiesCount,\n  GetTokenData,\n  GetTokenOwnersData,\n  GetTopUserTransactions,\n  GetUserTransactions,\n  GetOwnedTokens,\n  GetTokenOwnedFromCollection,\n  GetCollectionData,\n  GetCollectionsWithOwnedTokens,\n  GetTokenCurrentOwnerData,\n} from \"../indexer/generated/queries\";\nimport { ClientConfig, post } from \"../client\";\nimport { ApiError } from \"./aptos_client\";\n\n/**\n * Controls the number of results that are returned and the starting position of those results.\n * limit specifies the maximum number of items or records to return in a query result.\n * offset parameter specifies the starting position of the query result within the set of data.\n * For example, if you want to retrieve records 11-20,\n * you would set the offset parameter to 10 (i.e., the index of the first record to retrieve is 10)\n * and the limit parameter to 10 (i.e., the number of records to retrieve is 10))\n */\ninterface PaginationArgs {\n  offset?: AnyNumber;\n  limit?: number;\n}\n\ntype TokenStandard = \"v1\" | \"v2\";\n\ntype GraphqlQuery = {\n  query: string;\n  variables?: {};\n};\n/**\n * Provides methods for retrieving data from Aptos Indexer.\n * For more detailed Queries specification see\n * {@link https://cloud.hasura.io/public/graphiql?endpoint=https://indexer.mainnet.aptoslabs.com/v1/graphql}\n */\nexport class IndexerClient {\n  readonly endpoint: string;\n\n  readonly config: ClientConfig | undefined;\n\n  /**\n   * @param endpoint URL of the Aptos Indexer API endpoint.\n   */\n  constructor(endpoint: string, config?: ClientConfig) {\n    this.endpoint = endpoint;\n    this.config = config;\n  }\n\n  /**\n   * Indexer only accepts address in the long format, i.e a 66 chars long -> 0x<64 chars>\n   * This method makes sure address is 66 chars long.\n   * @param address\n   */\n  static validateAddress(address: string): void {\n    if (address.length < 66) {\n      throw new Error(`${address} is less than 66 chars long.`);\n    }\n  }\n\n  /**\n   * Makes axios client call to fetch data from Aptos Indexer.\n   *\n   * @param graphqlQuery A GraphQL query to pass in the `data` axios call.\n   */\n  async queryIndexer<T>(graphqlQuery: GraphqlQuery): Promise<T> {\n    const response = await post<GraphqlQuery, any>({\n      url: this.endpoint,\n      body: graphqlQuery,\n      overrides: { WITH_CREDENTIALS: false, ...this.config },\n    });\n    if (response.data.errors) {\n      throw new ApiError(\n        response.data.errors[0].extensions.code,\n        JSON.stringify({\n          message: response.data.errors[0].message,\n          error_code: response.data.errors[0].extensions.code,\n        }),\n      );\n    }\n    return response.data.data;\n  }\n\n  /**\n   * Queries Indexer Ledger Info\n   *\n   * @returns GetLedgerInfoQuery response type\n   */\n  async getIndexerLedgerInfo(): Promise<GetIndexerLedgerInfoQuery> {\n    const graphqlQuery = {\n      query: GetIndexerLedgerInfo,\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries an Aptos account's NFTs by owner address\n   *\n   * @param ownerAddress Hex-encoded 32 byte Aptos account address\n   * @returns GetAccountCurrentTokensQuery response type\n   */\n  async getAccountNFTs(ownerAddress: MaybeHexString, options?: PaginationArgs): Promise<GetAccountCurrentTokensQuery> {\n    const address = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetAccountCurrentTokens,\n      variables: { address, offset: options?.offset, limit: options?.limit },\n    };\n\n    return this.queryIndexer<GetAccountCurrentTokensQuery>(graphqlQuery);\n  }\n\n  /**\n   * Queries a token activities by token id hash\n   *\n   * @param idHash token id hash\n   * @returns GetTokenActivitiesQuery response type\n   */\n  async getTokenActivities(idHash: string, options?: PaginationArgs): Promise<GetTokenActivitiesQuery> {\n    const graphqlQuery = {\n      query: GetTokenActivities,\n      variables: { idHash, offset: options?.offset, limit: options?.limit },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries an account coin data\n   *\n   * @param ownerAddress Owner address\n   * @returns GetAccountCoinsDataQuery response type\n   */\n  async getAccountCoinsData(ownerAddress: MaybeHexString, options?: PaginationArgs): Promise<GetAccountCoinsDataQuery> {\n    const address = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetAccountCoinsData,\n      variables: { owner_address: address, offset: options?.offset, limit: options?.limit },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Gets the count of tokens owned by an account\n   *\n   * @param ownerAddress Owner address\n   * @returns AccountTokensCountQuery response type\n   */\n  async getAccountTokensCount(ownerAddress: MaybeHexString): Promise<GetAccountTokensCountQuery> {\n    const address = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetAccountTokensCount,\n      variables: { owner_address: address },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Gets the count of transactions submitted by an account\n   *\n   * @param address Account address\n   * @returns GetAccountTransactionsCountQuery response type\n   */\n  async getAccountTransactionsCount(accountAddress: MaybeHexString): Promise<GetAccountTransactionsCountQuery> {\n    const address = HexString.ensure(accountAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetAccountTransactionsCount,\n      variables: { address },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries an account transactions data\n   *\n   * @param address Account address\n   * @returns GetAccountTransactionsDataQuery response type\n   */\n  async getAccountTransactionsData(\n    accountAddress: MaybeHexString,\n    options?: PaginationArgs,\n  ): Promise<GetAccountTransactionsDataQuery> {\n    const address = HexString.ensure(accountAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetAccountTransactionsData,\n      variables: { address, offset: options?.offset, limit: options?.limit },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries delegated staking activities\n   *\n   * @param delegatorAddress Delegator address\n   * @param poolAddress Pool address\n   * @returns GetDelegatedStakingActivitiesQuery response type\n   */\n  async getDelegatedStakingActivities(\n    delegatorAddress: MaybeHexString,\n    poolAddress: MaybeHexString,\n  ): Promise<GetDelegatedStakingActivitiesQuery> {\n    const delegator = HexString.ensure(delegatorAddress).hex();\n    const pool = HexString.ensure(poolAddress).hex();\n    IndexerClient.validateAddress(delegator);\n    IndexerClient.validateAddress(pool);\n    const graphqlQuery = {\n      query: GetDelegatedStakingActivities,\n      variables: {\n        delegatorAddress: delegator,\n        poolAddress: pool,\n      },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Gets the count of token's activities\n   *\n   * @param tokenId Token ID\n   * @returns GetTokenActivitiesCountQuery response type\n   */\n  async getTokenActivitiesCount(tokenId: string): Promise<GetTokenActivitiesCountQuery> {\n    const graphqlQuery = {\n      query: GetTokenActivitiesCount,\n      variables: { token_id: tokenId },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries token data\n   *\n   * @param tokenId Token ID address\n   * @returns GetTokenDataQuery response type\n   */\n  async getTokenData(\n    tokenId: string,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n    },\n  ): Promise<GetTokenDataQuery> {\n    const tokenAddress = HexString.ensure(tokenId).hex();\n    IndexerClient.validateAddress(tokenAddress);\n\n    const whereCondition: any = {\n      token_data_id: { _eq: tokenAddress },\n    };\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n    const graphqlQuery = {\n      query: GetTokenData,\n      variables: { where_condition: whereCondition },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries token owners data. This query returns historical owners data\n   * To fetch token v2 standard, pass in the optional `tokenStandard` parameter and\n   * dont pass `propertyVersion` parameter (as propertyVersion only compatible with v1 standard)\n   *\n   * @param tokenId Token ID\n   * @param propertyVersion Property version (optional) - only compatible with token v1 standard\n   * @returns GetTokenOwnersDataQuery response type\n   */\n  async getTokenOwnersData(\n    tokenId: string,\n    propertyVersion?: number,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n    },\n  ): Promise<GetTokenOwnersDataQuery> {\n    const tokenAddress = HexString.ensure(tokenId).hex();\n    IndexerClient.validateAddress(tokenAddress);\n\n    const whereCondition: any = {\n      token_data_id: { _eq: tokenAddress },\n    };\n\n    if (propertyVersion) {\n      whereCondition.property_version_v1 = { _eq: propertyVersion };\n    }\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n\n    const graphqlQuery = {\n      query: GetTokenOwnersData,\n      variables: { where_condition: whereCondition },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries token current owner data. This query returns the current token owner data.\n   * To fetch token v2 standard, pass in the optional `tokenStandard` parameter and\n   * dont pass `propertyVersion` parameter (as propertyVersion only compatible with v1 standard)\n   *\n   * @param tokenId Token ID\n   * @param propertyVersion Property version (optional) - only compatible with token v1 standard\n   * @returns GetTokenCurrentOwnerDataQuery response type\n   */\n  async getTokenCurrentOwnerData(\n    tokenId: string,\n    propertyVersion?: number,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n    },\n  ): Promise<GetTokenCurrentOwnerDataQuery> {\n    const tokenAddress = HexString.ensure(tokenId).hex();\n    IndexerClient.validateAddress(tokenAddress);\n\n    const whereCondition: any = {\n      token_data_id: { _eq: tokenAddress },\n      amount: { _gt: \"0\" },\n    };\n\n    if (propertyVersion) {\n      whereCondition.property_version_v1 = { _eq: propertyVersion };\n    }\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n\n    const graphqlQuery = {\n      query: GetTokenCurrentOwnerData,\n      variables: { where_condition: whereCondition },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries top user transactions\n   *\n   * @param limit\n   * @returns GetTopUserTransactionsQuery response type\n   */\n  async getTopUserTransactions(limit: number): Promise<GetTopUserTransactionsQuery> {\n    const graphqlQuery = {\n      query: GetTopUserTransactions,\n      variables: { limit },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries top user transactions\n   *\n   * @returns GetUserTransactionsQuery response type\n   */\n  async getUserTransactions(startVersion?: number, options?: PaginationArgs): Promise<GetUserTransactionsQuery> {\n    const graphqlQuery = {\n      query: GetUserTransactions,\n      variables: { start_version: startVersion, offset: options?.offset, limit: options?.limit },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries current number of delegators in a pool\n   *\n   * @returns GetNumberOfDelegatorsQuery response type\n   */\n  async getNumberOfDelegators(poolAddress: MaybeHexString): Promise<GetNumberOfDelegatorsQuery> {\n    const address = HexString.ensure(poolAddress).hex();\n    IndexerClient.validateAddress(address);\n    const graphqlQuery = {\n      query: GetNumberOfDelegators,\n      variables: { poolAddress: address },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries account's current owned tokens.\n   * This query returns all tokens (v1 and v2 standards) an account owns, including NFTs, fungible, soulbound, etc.\n   * If you want to get only the token from a specific standrd, you can pass an optional tokenStandard param\n   * @example An example of how to pass a specific token standard\n   * ```\n   * {\n   *    tokenStandard:\"v2\"\n   * }\n   * ```\n   * @param ownerAddress The token owner address we want to get the tokens for\n   * @returns GetOwnedTokensQuery response type\n   */\n  async getOwnedTokens(\n    ownerAddress: MaybeHexString,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n      options?: PaginationArgs;\n    },\n  ): Promise<GetOwnedTokensQuery> {\n    const address = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(address);\n\n    const whereCondition: any = {\n      owner_address: { _eq: address },\n      amount: { _gt: 0 },\n    };\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n\n    const graphqlQuery = {\n      query: GetOwnedTokens,\n      variables: {\n        where_condition: whereCondition,\n        offset: extraArgs?.options?.offset,\n        limit: extraArgs?.options?.limit,\n      },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries all tokens of a specific collection that an account owns by the collection address\n   *\n   * @param ownerAddress owner address that owns the tokens\n   * @param collectionAddress the collection address\n   * @returns GetTokenOwnedFromCollectionQuery response type\n   */\n  async getTokenOwnedFromCollectionAddress(\n    ownerAddress: MaybeHexString,\n    collectionAddress: string,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n      options?: PaginationArgs;\n    },\n  ): Promise<GetTokenOwnedFromCollectionQuery> {\n    const ownerHexAddress = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(ownerHexAddress);\n\n    const collectionHexAddress = HexString.ensure(collectionAddress).hex();\n    IndexerClient.validateAddress(collectionHexAddress);\n\n    const whereCondition: any = {\n      owner_address: { _eq: ownerHexAddress },\n      current_token_data: { collection_id: { _eq: collectionHexAddress } },\n      amount: { _gt: 0 },\n    };\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n\n    const graphqlQuery = {\n      query: GetTokenOwnedFromCollection,\n      variables: {\n        where_condition: whereCondition,\n        offset: extraArgs?.options?.offset,\n        limit: extraArgs?.options?.limit,\n      },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries all tokens of a specific collection that an account owns by the collection name and collection\n   * creator address\n   *\n   * @param ownerAddress owner address that owns the tokens\n   * @param collectionName the collection name\n   * @param creatorAddress the collection creator address\n   * @returns GetTokenOwnedFromCollectionQuery response type\n   */\n  async getTokenOwnedFromCollectionNameAndCreatorAddress(\n    ownerAddress: MaybeHexString,\n    collectionName: string,\n    creatorAddress: MaybeHexString,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n      options?: PaginationArgs;\n    },\n  ): Promise<GetTokenOwnedFromCollectionQuery> {\n    const collectionAddress = await this.getCollectionAddress(creatorAddress, collectionName, extraArgs);\n    const tokens = await this.getTokenOwnedFromCollectionAddress(ownerAddress, collectionAddress, extraArgs);\n    return tokens;\n  }\n\n  /**\n   * Queries data of a specific collection by the collection creator address and the collection name.\n   *\n   * if, for some reason, a creator account has 2 collections with the same name in v1 and v2,\n   * can pass an optional `tokenStandard` parameter to query a specific standard\n   *\n   * @param creatorAddress the collection creator address\n   * @param collectionName the collection name\n   * @returns GetCollectionDataQuery response type\n   */\n  async getCollectionData(\n    creatorAddress: MaybeHexString,\n    collectionName: string,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n      options?: PaginationArgs;\n    },\n  ): Promise<GetCollectionDataQuery> {\n    const address = HexString.ensure(creatorAddress).hex();\n    IndexerClient.validateAddress(address);\n\n    const whereCondition: any = {\n      collection_name: { _eq: collectionName },\n      creator_address: { _eq: address },\n    };\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.token_standard = { _eq: extraArgs?.tokenStandard };\n    }\n\n    const graphqlQuery = {\n      query: GetCollectionData,\n      variables: {\n        where_condition: whereCondition,\n        offset: extraArgs?.options?.offset,\n        limit: extraArgs?.options?.limit,\n      },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n\n  /**\n   * Queries a collection address.\n   *\n   * @param creatorAddress the collection creator address\n   * @param collectionName the collection name\n   * @returns the collection address\n   */\n  async getCollectionAddress(\n    creatorAddress: MaybeHexString,\n    collectionName: string,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n    },\n  ): Promise<string> {\n    return (await this.getCollectionData(creatorAddress, collectionName, extraArgs)).current_collections_v2[0]\n      .collection_id;\n  }\n\n  /**\n   * Queries for all collections that an account has tokens for.\n   *\n   * @param ownerAddress the account address that owns the tokens\n   * @returns GetCollectionsWithOwnedTokensQuery response type\n   */\n  async getCollectionsWithOwnedTokens(\n    ownerAddress: MaybeHexString,\n    extraArgs?: {\n      tokenStandard?: TokenStandard;\n      options?: PaginationArgs;\n    },\n  ): Promise<GetCollectionsWithOwnedTokensQuery> {\n    const ownerHexAddress = HexString.ensure(ownerAddress).hex();\n    IndexerClient.validateAddress(ownerHexAddress);\n\n    const whereCondition: any = {\n      owner_address: { _eq: ownerHexAddress },\n    };\n\n    if (extraArgs?.tokenStandard) {\n      whereCondition.current_collection = { token_standard: { _eq: extraArgs?.tokenStandard } };\n    }\n\n    const graphqlQuery = {\n      query: GetCollectionsWithOwnedTokens,\n      variables: {\n        where_condition: whereCondition,\n        offset: extraArgs?.options?.offset,\n        limit: extraArgs?.options?.limit,\n      },\n    };\n    return this.queryIndexer(graphqlQuery);\n  }\n}\n","import { AptosClient } from \"./aptos_client\";\nimport { IndexerClient } from \"./indexer\";\n\nimport { CustomEndpoints, Network, NetworkToIndexerAPI, NetworkToNodeAPI } from \"../utils\";\nimport { ClientConfig } from \"../client\";\n\ntype NetworkWithCustom = Network | \"CUSTOM\";\n/**\n * Builds a Provider class with an aptos client configured to connect to an Aptos node\n * and indexer client configured to connect to Aptos Indexer.\n *\n * It creates AptosClient and IndexerClient instances based on the network or custom endpoints provided.\n *\n * This class holds both AptosClient and IndexerClient classes's methods and properties so we\n * can instantiate the Provider class and use it to query full node and/or Indexer.\n *\n * @example An example of how to use this class\n * ```\n * const provider = new Provider(Network.DEVNET)\n * const account = await provider.getAccount(\"0x123\");\n * const accountNFTs = await provider.getAccountNFTs(\"0x123\");\n * ```\n *\n * @param network enum of type Network - MAINNET | TESTNET | DEVENET or custom endpoints of type CustomEndpoints\n * @param config AptosClient config arg - additional configuration options for the generated Axios client.\n */\nexport class Provider {\n  aptosClient: AptosClient;\n\n  indexerClient: IndexerClient;\n\n  network: NetworkWithCustom;\n\n  constructor(network: Network | CustomEndpoints, config?: ClientConfig, doNotFixNodeUrl: boolean = false) {\n    let fullNodeUrl = null;\n    let indexerUrl = null;\n\n    if (typeof network === \"object\" && isCustomEndpoints(network)) {\n      fullNodeUrl = network.fullnodeUrl;\n      indexerUrl = network.indexerUrl;\n      this.network = \"CUSTOM\";\n    } else {\n      fullNodeUrl = NetworkToNodeAPI[network];\n      indexerUrl = NetworkToIndexerAPI[network];\n      this.network = network;\n    }\n\n    if (!fullNodeUrl || !indexerUrl) {\n      throw new Error(\"network is not provided\");\n    }\n\n    this.aptosClient = new AptosClient(fullNodeUrl, config, doNotFixNodeUrl);\n    this.indexerClient = new IndexerClient(indexerUrl, config);\n  }\n}\n\nexport interface Provider extends AptosClient, IndexerClient {}\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\nHere, we combine AptosClient and IndexerClient classes into one Provider class that holds all \nmethods and properties from both classes.\n*/\nfunction 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\napplyMixin(Provider, AptosClient, \"aptosClient\");\napplyMixin(Provider, IndexerClient, \"indexerClient\");\n\n// use exhaustive type predicates\nfunction isCustomEndpoints(network: CustomEndpoints): network is CustomEndpoints {\n  return (\n    network.fullnodeUrl !== undefined &&\n    typeof network.fullnodeUrl === \"string\" &&\n    network.indexerUrl !== undefined &&\n    typeof network.indexerUrl === \"string\"\n  );\n}\n","import { Bytes, Deserializer, Serializer } from \"../bcs\";\nimport { serializeArg } from \"../transaction_builder/builder_utils\";\nimport {\n  stringStructTag,\n  TypeTag,\n  TypeTagAddress,\n  TypeTagBool,\n  TypeTagParser,\n  TypeTagStruct,\n  TypeTagU128,\n  TypeTagU64,\n  TypeTagU8,\n} from \"../aptos_types\";\nimport { HexString } from \"./hex_string\";\n\nexport class PropertyValue {\n  type: string;\n\n  value: any;\n\n  constructor(type: string, value: string) {\n    this.type = type;\n    this.value = value;\n  }\n}\n\nexport class PropertyMap {\n  data: { [key: string]: PropertyValue };\n\n  constructor() {\n    this.data = {};\n  }\n\n  setProperty(key: string, value: PropertyValue) {\n    this.data[key] = value;\n  }\n}\n\nexport function getPropertyType(typ: string): TypeTag {\n  let typeTag: TypeTag;\n  if (typ === \"string\" || typ === \"String\") {\n    typeTag = new TypeTagStruct(stringStructTag);\n  } else {\n    typeTag = new TypeTagParser(typ).parseTypeTag();\n  }\n  return typeTag;\n}\n\nexport function getPropertyValueRaw(values: Array<string>, types: Array<string>): Array<Bytes> {\n  if (values.length !== types.length) {\n    throw new Error(\"Length of property values and types not match\");\n  }\n\n  const results = new Array<Bytes>();\n  types.forEach((typ, index) => {\n    try {\n      const typeTag = getPropertyType(typ);\n      const serializer = new Serializer();\n      serializeArg(values[index], typeTag, serializer);\n      results.push(serializer.getBytes());\n    } catch (error) {\n      // if not support type, just use the raw string bytes\n      results.push(new TextEncoder().encode(values[index]));\n    }\n  });\n  return results;\n}\n\nexport function getSinglePropertyValueRaw(value: string, type: string): Uint8Array {\n  if (!value || !type) {\n    throw new Error(\"value or type can not be empty\");\n  }\n\n  try {\n    const typeTag = getPropertyType(type);\n    const serializer = new Serializer();\n    serializeArg(value, typeTag, serializer);\n    return serializer.getBytes();\n  } catch (error) {\n    // if not support type, just use the raw string bytes\n    return new TextEncoder().encode(value);\n  }\n}\n\nexport function deserializePropertyMap(rawPropertyMap: any): PropertyMap {\n  const entries = rawPropertyMap.map.data;\n  const pm = new PropertyMap();\n  entries.forEach((prop: any) => {\n    const { key } = prop;\n    const val: string = prop.value.value;\n    const typ: string = prop.value.type;\n    const typeTag = getPropertyType(typ);\n    const newValue = deserializeValueBasedOnTypeTag(typeTag, val);\n    const pv = new PropertyValue(typ, newValue);\n    pm.setProperty(key, pv);\n  });\n  return pm;\n}\n\nexport function deserializeValueBasedOnTypeTag(tag: TypeTag, val: string): string {\n  const de = new Deserializer(new HexString(val).toUint8Array());\n  let res: string = \"\";\n  if (tag instanceof TypeTagU8) {\n    res = de.deserializeU8().toString();\n  } else if (tag instanceof TypeTagU64) {\n    res = de.deserializeU64().toString();\n  } else if (tag instanceof TypeTagU128) {\n    res = de.deserializeU128().toString();\n  } else if (tag instanceof TypeTagBool) {\n    res = de.deserializeBool() ? \"true\" : \"false\";\n  } else if (tag instanceof TypeTagAddress) {\n    res = HexString.fromUint8Array(de.deserializeFixedBytes(32)).hex();\n  } else if (tag instanceof TypeTagStruct && (tag as TypeTagStruct).isStringTypeTag()) {\n    res = de.deserializeStr();\n  } else {\n    res = val;\n  }\n  return res;\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { deserializePropertyMap, PropertyMap, PropertyValue } from \"../utils/property_map_serde\";\n\nexport { PropertyMap, PropertyValue };\nexport class TokenData {\n  /** Unique name within this creator's account for this Token's collection */\n  collection: string;\n\n  /** Description of Token */\n  description: string;\n\n  /** Name of Token */\n  name: string;\n\n  /** Optional maximum number of this Token */\n  maximum?: number;\n\n  /** Total number of this type of Token */\n  supply: number;\n\n  /** URL for additional information / media */\n  uri: string;\n\n  /** default properties of token data */\n  default_properties: PropertyMap;\n\n  /** mutability config of tokendata fields */\n  mutability_config: boolean[];\n\n  constructor(\n    collection: string,\n    description: string,\n    name: string,\n    maximum: number,\n    supply: number,\n    uri: string,\n    default_properties: any,\n    mutability_config: boolean[],\n  ) {\n    this.collection = collection;\n    this.description = description;\n    this.name = name;\n    this.maximum = maximum;\n    this.supply = supply;\n    this.uri = uri;\n    this.default_properties = deserializePropertyMap(default_properties);\n    this.mutability_config = mutability_config;\n  }\n}\n\nexport interface TokenDataId {\n  /** Token creator address */\n  creator: string;\n\n  /** Unique name within this creator's account for this Token's collection */\n  collection: string;\n\n  /** Name of Token */\n  name: string;\n}\n\nexport interface TokenId {\n  token_data_id: TokenDataId;\n\n  /** version number of the property map */\n  property_version: string;\n}\n\n/** server will return string for u64 */\ntype U64 = string;\n\nexport class Token {\n  id: TokenId;\n\n  /** server will return string for u64 */\n  amount: U64;\n\n  /** the property map of the token */\n  token_properties: PropertyMap;\n\n  constructor(id: TokenId, amount: U64, token_properties: any) {\n    this.id = id;\n    this.amount = amount;\n    this.token_properties = deserializePropertyMap(token_properties);\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable max-len */\n\nimport { AptosAccount } from \"../account/aptos_account\";\nimport { AptosClient, OptionalTransactionArgs } from \"../providers/aptos_client\";\nimport * as TokenTypes from \"../aptos_types/token_types\";\nimport * as Gen from \"../generated/index\";\nimport { HexString, MaybeHexString } from \"../utils\";\nimport { TransactionBuilder, TransactionBuilderRemoteABI, TxnBuilderTypes } from \"../transaction_builder\";\nimport { MAX_U64_BIG_INT } from \"../bcs/consts\";\nimport { AnyNumber, bcsToBytes, Bytes } from \"../bcs\";\nimport { getPropertyValueRaw, PropertyMap } from \"../utils/property_map_serde\";\nimport { Token, TokenData } from \"../aptos_types/token_types\";\n\n/**\n * Class for creating, minting and managing minting NFT collections and tokens\n */\nexport class TokenClient {\n  aptosClient: AptosClient;\n\n  /**\n   * Creates new TokenClient instance\n   *\n   * @param aptosClient AptosClient instance\n   */\n  constructor(aptosClient: AptosClient) {\n    this.aptosClient = aptosClient;\n  }\n\n  /**\n   * Creates a new NFT collection within the specified account\n   *\n   * @param account AptosAccount where collection will be created\n   * @param name Collection name\n   * @param description Collection description\n   * @param uri URL to additional info about collection\n   * @param maxAmount Maximum number of `token_data` allowed within this collection\n   * @returns The hash of the transaction submitted to the API\n   */\n  // :!:>createCollection\n  async createCollection(\n    account: AptosAccount,\n    name: string,\n    description: string,\n    uri: string,\n    maxAmount: AnyNumber = MAX_U64_BIG_INT,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    // <:!:createCollection\n\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::create_collection_script\",\n      [],\n      [name, description, uri, maxAmount, [false, false, false]],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Creates a new NFT within the specified account\n   *\n   * @param account AptosAccount where token will be created\n   * @param collectionName Name of collection, that token belongs to\n   * @param name Token name\n   * @param description Token description\n   * @param supply Token supply\n   * @param uri URL to additional info about token\n   * @param max The maxium of tokens can be minted from this token\n   * @param royalty_payee_address the address to receive the royalty, the address can be a shared account address.\n   * @param royalty_points_denominator the denominator for calculating royalty\n   * @param royalty_points_numerator the numerator for calculating royalty\n   * @param property_keys the property keys for storing on-chain properties\n   * @param property_values the property values to be stored on-chain\n   * @param property_types the type of property values\n   * @returns The hash of the transaction submitted to the API\n   */\n  // :!:>createToken\n  async createToken(\n    account: AptosAccount,\n    collectionName: string,\n    name: string,\n    description: string,\n    supply: number,\n    uri: string,\n    max: AnyNumber = MAX_U64_BIG_INT,\n    royalty_payee_address: MaybeHexString = account.address(),\n    royalty_points_denominator: number = 0,\n    royalty_points_numerator: number = 0,\n    property_keys: Array<string> = [],\n    property_values: Array<string> = [],\n    property_types: Array<string> = [],\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    // <:!:createToken\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n\n    const rawTxn = await builder.build(\n      \"0x3::token::create_token_script\",\n      [],\n      [\n        collectionName,\n        name,\n        description,\n        supply,\n        max,\n        uri,\n        royalty_payee_address,\n        royalty_points_denominator,\n        royalty_points_numerator,\n        [false, false, false, false, false],\n        property_keys,\n        getPropertyValueRaw(property_values, property_types),\n        property_types,\n      ],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Creates a new NFT within the specified account\n   *\n   * @param account AptosAccount where token will be created\n   * @param collectionName Name of collection, that token belongs to\n   * @param name Token name\n   * @param description Token description\n   * @param supply Token supply\n   * @param uri URL to additional info about token\n   * @param max The maxium of tokens can be minted from this token\n   * @param royalty_payee_address the address to receive the royalty, the address can be a shared account address.\n   * @param royalty_points_denominator the denominator for calculating royalty\n   * @param royalty_points_numerator the numerator for calculating royalty\n   * @param property_keys the property keys for storing on-chain properties\n   * @param property_values the property values to be stored on-chain\n   * @param property_types the type of property values\n   * @param mutability_config configs which field is mutable\n   * @returns The hash of the transaction submitted to the API\n   */\n  // :!:>createToken\n  async createTokenWithMutabilityConfig(\n    account: AptosAccount,\n    collectionName: string,\n    name: string,\n    description: string,\n    supply: AnyNumber,\n    uri: string,\n    max: AnyNumber = MAX_U64_BIG_INT,\n    royalty_payee_address: MaybeHexString = account.address(),\n    royalty_points_denominator: AnyNumber = 0,\n    royalty_points_numerator: AnyNumber = 0,\n    property_keys: Array<string> = [],\n    property_values: Array<Bytes> = [],\n    property_types: Array<string> = [],\n    mutability_config: Array<boolean> = [false, false, false, false, false],\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    // <:!:createToken\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::create_token_script\",\n      [],\n      [\n        collectionName,\n        name,\n        description,\n        supply,\n        max,\n        uri,\n        royalty_payee_address,\n        royalty_points_denominator,\n        royalty_points_numerator,\n        mutability_config,\n        property_keys,\n        property_values,\n        property_types,\n      ],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Transfers specified amount of tokens from account to receiver\n   *\n   * @param account AptosAccount where token from which tokens will be transfered\n   * @param receiver  Hex-encoded 32 byte Aptos account address to which tokens will be transfered\n   * @param creator Hex-encoded 32 byte Aptos account address to which created tokens\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param amount Amount of tokens which will be transfered\n   * @param property_version the version of token PropertyMap with a default value 0.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async offerToken(\n    account: AptosAccount,\n    receiver: MaybeHexString,\n    creator: MaybeHexString,\n    collectionName: string,\n    name: string,\n    amount: number,\n    property_version: number = 0,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token_transfers::offer_script\",\n      [],\n      [receiver, creator, collectionName, name, property_version, amount],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Claims a token on specified account\n   *\n   * @param account AptosAccount which will claim token\n   * @param sender Hex-encoded 32 byte Aptos account address which holds a token\n   * @param creator Hex-encoded 32 byte Aptos account address which created a token\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param property_version the version of token PropertyMap with a default value 0.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async claimToken(\n    account: AptosAccount,\n    sender: MaybeHexString,\n    creator: MaybeHexString,\n    collectionName: string,\n    name: string,\n    property_version: number = 0,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token_transfers::claim_script\",\n      [],\n      [sender, creator, collectionName, name, property_version],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Removes a token from pending claims list\n   *\n   * @param account AptosAccount which will remove token from pending list\n   * @param receiver Hex-encoded 32 byte Aptos account address which had to claim token\n   * @param creator Hex-encoded 32 byte Aptos account address which created a token\n   * @param collectionName Name of collection where token is strored\n   * @param name Token name\n   * @param property_version the version of token PropertyMap with a default value 0.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async cancelTokenOffer(\n    account: AptosAccount,\n    receiver: MaybeHexString,\n    creator: MaybeHexString,\n    collectionName: string,\n    name: string,\n    property_version: number = 0,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token_transfers::cancel_offer_script\",\n      [],\n      [receiver, creator, collectionName, name, property_version],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Directly transfer the specified amount of tokens from account to receiver\n   * using a single multi signature transaction.\n   *\n   * @param sender AptosAccount where token from which tokens will be transferred\n   * @param receiver Hex-encoded 32 byte Aptos account address to which tokens will be transferred\n   * @param creator Hex-encoded 32 byte Aptos account address to which created tokens\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param amount Amount of tokens which will be transferred\n   * @param property_version the version of token PropertyMap with a default value 0.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async directTransferToken(\n    sender: AptosAccount,\n    receiver: AptosAccount,\n    creator: MaybeHexString,\n    collectionName: string,\n    name: string,\n    amount: AnyNumber,\n    propertyVersion: AnyNumber = 0,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: sender.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::direct_transfer_script\",\n      [],\n      [creator, collectionName, name, propertyVersion, amount],\n    );\n\n    const multiAgentTxn = new TxnBuilderTypes.MultiAgentRawTransaction(rawTxn, [\n      TxnBuilderTypes.AccountAddress.fromHex(receiver.address()),\n    ]);\n\n    const senderSignature = new TxnBuilderTypes.Ed25519Signature(\n      sender.signBuffer(TransactionBuilder.getSigningMessage(multiAgentTxn)).toUint8Array(),\n    );\n\n    const senderAuthenticator = new TxnBuilderTypes.AccountAuthenticatorEd25519(\n      new TxnBuilderTypes.Ed25519PublicKey(sender.signingKey.publicKey),\n      senderSignature,\n    );\n\n    const receiverSignature = new TxnBuilderTypes.Ed25519Signature(\n      receiver.signBuffer(TransactionBuilder.getSigningMessage(multiAgentTxn)).toUint8Array(),\n    );\n\n    const receiverAuthenticator = new TxnBuilderTypes.AccountAuthenticatorEd25519(\n      new TxnBuilderTypes.Ed25519PublicKey(receiver.signingKey.publicKey),\n      receiverSignature,\n    );\n\n    const multiAgentAuthenticator = new TxnBuilderTypes.TransactionAuthenticatorMultiAgent(\n      senderAuthenticator,\n      [TxnBuilderTypes.AccountAddress.fromHex(receiver.address())], // Secondary signer addresses\n      [receiverAuthenticator], // Secondary signer authenticators\n    );\n\n    const bcsTxn = bcsToBytes(new TxnBuilderTypes.SignedTransaction(rawTxn, multiAgentAuthenticator));\n\n    const transactionRes = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n\n    return transactionRes.hash;\n  }\n\n  /**\n   * Directly transfer the specified amount of tokens from account to receiver\n   * using a single multi signature transaction.\n   *\n   * @param sender AptosAccount where token from which tokens will be transferred\n   * @param receiver Hex-encoded 32 byte Aptos account address to which tokens will be transferred\n   * @param creator Hex-encoded 32 byte Aptos account address to which created tokens\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param amount Amount of tokens which will be transferred\n   * @param fee_payer AptosAccount which will pay fee for transaction\n   * @param property_version the version of token PropertyMap with a default value 0.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async directTransferTokenWithFeePayer(\n    sender: AptosAccount,\n    receiver: AptosAccount,\n    creator: MaybeHexString,\n    collectionName: string,\n    name: string,\n    amount: AnyNumber,\n    fee_payer: AptosAccount,\n    propertyVersion: AnyNumber = 0,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: sender.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::direct_transfer_script\",\n      [],\n      [creator, collectionName, name, propertyVersion, amount],\n    );\n\n    const feePayerTxn = new TxnBuilderTypes.FeePayerRawTransaction(\n      rawTxn,\n      [TxnBuilderTypes.AccountAddress.fromHex(receiver.address())],\n      TxnBuilderTypes.AccountAddress.fromHex(fee_payer.address()),\n    );\n\n    const senderSignature = new TxnBuilderTypes.Ed25519Signature(\n      sender.signBuffer(TransactionBuilder.getSigningMessage(feePayerTxn)).toUint8Array(),\n    );\n\n    const senderAuthenticator = new TxnBuilderTypes.AccountAuthenticatorEd25519(\n      new TxnBuilderTypes.Ed25519PublicKey(sender.signingKey.publicKey),\n      senderSignature,\n    );\n\n    const receiverSignature = new TxnBuilderTypes.Ed25519Signature(\n      receiver.signBuffer(TransactionBuilder.getSigningMessage(feePayerTxn)).toUint8Array(),\n    );\n\n    const receiverAuthenticator = new TxnBuilderTypes.AccountAuthenticatorEd25519(\n      new TxnBuilderTypes.Ed25519PublicKey(receiver.signingKey.publicKey),\n      receiverSignature,\n    );\n\n    const feePayerSignature = new TxnBuilderTypes.Ed25519Signature(\n      fee_payer.signBuffer(TransactionBuilder.getSigningMessage(feePayerTxn)).toUint8Array(),\n    );\n\n    const feePayerAuthenticator = new TxnBuilderTypes.AccountAuthenticatorEd25519(\n      new TxnBuilderTypes.Ed25519PublicKey(fee_payer.signingKey.publicKey),\n      feePayerSignature,\n    );\n\n    const txAuthenticatorFeePayer = new TxnBuilderTypes.TransactionAuthenticatorFeePayer(\n      senderAuthenticator,\n      [TxnBuilderTypes.AccountAddress.fromHex(receiver.address())],\n      [receiverAuthenticator],\n      { address: TxnBuilderTypes.AccountAddress.fromHex(fee_payer.address()), authenticator: feePayerAuthenticator },\n    );\n\n    const bcsTxn = bcsToBytes(new TxnBuilderTypes.SignedTransaction(rawTxn, txAuthenticatorFeePayer));\n\n    const transactionRes = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n\n    return transactionRes.hash;\n  }\n\n  /**\n   * User opt-in or out direct transfer through a boolean flag\n   *\n   * @param sender AptosAccount where the token will be transferred\n   * @param optIn boolean value indicates user want to opt-in or out of direct transfer\n   * @returns The hash of the transaction submitted to the API\n   */\n  async optInTokenTransfer(sender: AptosAccount, optIn: boolean, extraArgs?: OptionalTransactionArgs): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: sender.address(), ...extraArgs });\n    const rawTxn = await builder.build(\"0x3::token::opt_in_direct_transfer\", [], [optIn]);\n    const bcsTxn = AptosClient.generateBCSTransaction(sender, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Directly transfer token to a receiver. The receiver should have opted in to direct transfer\n   *\n   * @param sender AptosAccount where the token will be transferred\n   * @param creator  address of the token creator\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param property_version the version of token PropertyMap\n   * @param amount Amount of tokens which will be transfered\n   * @returns The hash of the transaction submitted to the API\n   */\n  async transferWithOptIn(\n    sender: AptosAccount,\n    creator: MaybeHexString,\n    collectionName: string,\n    tokenName: string,\n    propertyVersion: AnyNumber,\n    receiver: MaybeHexString,\n    amount: AnyNumber,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: sender.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::transfer_with_opt_in\",\n      [],\n      [creator, collectionName, tokenName, propertyVersion, receiver, amount],\n    );\n    const bcsTxn = AptosClient.generateBCSTransaction(sender, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * BurnToken by Creator\n   *\n   * @param creator creator of the token\n   * @param ownerAddress address of the token owner\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param amount Amount of tokens which will be transfered\n   * @param property_version the version of token PropertyMap\n   * @returns The hash of the transaction submitted to the API\n   */\n  async burnByCreator(\n    creator: AptosAccount,\n    ownerAddress: MaybeHexString,\n    collection: String,\n    name: String,\n    PropertyVersion: AnyNumber,\n    amount: AnyNumber,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: creator.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::burn_by_creator\",\n      [],\n      [ownerAddress, collection, name, PropertyVersion, amount],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(creator, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * BurnToken by Owner\n   *\n   * @param owner creator of the token\n   * @param creatorAddress address of the token creator\n   * @param collectionName Name of collection where token is stored\n   * @param name Token name\n   * @param amount Amount of tokens which will be transfered\n   * @param property_version the version of token PropertyMap\n   * @returns The hash of the transaction submitted to the API\n   */\n  async burnByOwner(\n    owner: AptosAccount,\n    creatorAddress: MaybeHexString,\n    collection: String,\n    name: String,\n    PropertyVersion: AnyNumber,\n    amount: AnyNumber,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: owner.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::burn\",\n      [],\n      [creatorAddress, collection, name, PropertyVersion, amount],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(owner, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * creator mutates the properties of the tokens\n   *\n   * @param account AptosAccount who modifies the token properties\n   * @param tokenOwner the address of account owning the token\n   * @param creator the creator of the token\n   * @param collection_name the name of the token collection\n   * @param tokenName the name of created token\n   * @param propertyVersion the property_version of the token to be modified\n   * @param amount the number of tokens to be modified\n   *\n   * @returns The hash of the transaction submitted to the API\n   */\n  async mutateTokenProperties(\n    account: AptosAccount,\n    tokenOwner: HexString,\n    creator: HexString,\n    collection_name: string,\n    tokenName: string,\n    propertyVersion: AnyNumber,\n    amount: AnyNumber,\n    keys: Array<string>,\n    values: Array<Bytes>,\n    types: Array<string>,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: account.address(), ...extraArgs });\n    const rawTxn = await builder.build(\n      \"0x3::token::mutate_token_properties\",\n      [],\n      [tokenOwner, creator, collection_name, tokenName, propertyVersion, amount, keys, values, types],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Queries collection data\n   * @param creator Hex-encoded 32 byte Aptos account address which created a collection\n   * @param collectionName Collection name\n   * @returns Collection data in below format\n   * ```\n   *  Collection {\n   *    // Describes the collection\n   *    description: string,\n   *    // Unique name within this creators account for this collection\n   *    name: string,\n   *    // URL for additional information/media\n   *    uri: string,\n   *    // Total number of distinct Tokens tracked by the collection\n   *    count: number,\n   *    // Optional maximum number of tokens allowed within this collections\n   *    maximum: number\n   *  }\n   * ```\n   */\n  async getCollectionData(creator: MaybeHexString, collectionName: string): Promise<any> {\n    const resources = await this.aptosClient.getAccountResources(creator);\n    const accountResource: { type: Gen.MoveStructTag; data: any } = resources.find(\n      (r) => r.type === \"0x3::token::Collections\",\n    )!;\n    const { handle }: { handle: string } = accountResource.data.collection_data;\n    const getCollectionTableItemRequest: Gen.TableItemRequest = {\n      key_type: \"0x1::string::String\",\n      value_type: \"0x3::token::CollectionData\",\n      key: collectionName,\n    };\n\n    const collectionTable = await this.aptosClient.getTableItem(handle, getCollectionTableItemRequest);\n    return collectionTable;\n  }\n\n  /**\n   * Queries token data from collection\n   *\n   * @param creator Hex-encoded 32 byte Aptos account address which created a token\n   * @param collectionName Name of collection, which holds a token\n   * @param tokenName Token name\n   * @returns Token data in below format\n   * ```\n   * TokenData {\n   *     // Unique name within this creators account for this Token's collection\n   *     collection: string;\n   *     // Describes this Token\n   *     description: string;\n   *     // The name of this Token\n   *     name: string;\n   *     // Optional maximum number of this type of Token.\n   *     maximum: number;\n   *     // Total number of this type of Token\n   *     supply: number;\n   *     /// URL for additional information / media\n   *     uri: string;\n   *   }\n   * ```\n   */\n  // :!:>getTokenData\n  async getTokenData(\n    creator: MaybeHexString,\n    collectionName: string,\n    tokenName: string,\n  ): Promise<TokenTypes.TokenData> {\n    const creatorHex = creator instanceof HexString ? creator.hex() : creator;\n    const collection: { type: Gen.MoveStructTag; data: any } = await this.aptosClient.getAccountResource(\n      creatorHex,\n      \"0x3::token::Collections\",\n    );\n    const { handle } = collection.data.token_data;\n    const tokenDataId = {\n      creator: creatorHex,\n      collection: collectionName,\n      name: tokenName,\n    };\n\n    const getTokenTableItemRequest: Gen.TableItemRequest = {\n      key_type: \"0x3::token::TokenDataId\",\n      value_type: \"0x3::token::TokenData\",\n      key: tokenDataId,\n    };\n\n    // We know the response will be a struct containing TokenData, hence the\n    // implicit cast.\n    const rawTokenData = await this.aptosClient.getTableItem(handle, getTokenTableItemRequest);\n    return new TokenData(\n      rawTokenData.collection,\n      rawTokenData.description,\n      rawTokenData.name,\n      rawTokenData.maximum,\n      rawTokenData.supply,\n      rawTokenData.uri,\n      rawTokenData.default_properties,\n      rawTokenData.mutability_config,\n    );\n  } // <:!:getTokenData\n\n  /**\n   * Queries token balance for the token creator\n   */\n  async getToken(\n    creator: MaybeHexString,\n    collectionName: string,\n    tokenName: string,\n    property_version: string = \"0\",\n  ): Promise<TokenTypes.Token> {\n    const tokenDataId: TokenTypes.TokenDataId = {\n      creator: creator instanceof HexString ? creator.hex() : creator,\n      collection: collectionName,\n      name: tokenName,\n    };\n    return this.getTokenForAccount(creator, {\n      token_data_id: tokenDataId,\n      property_version,\n    });\n  }\n\n  /**\n   * Queries token balance for a token account\n   * @param account Hex-encoded 32 byte Aptos account address which created a token\n   * @param tokenId token id\n   *\n   * TODO: Update this:\n   * @example\n   * ```\n   * {\n   *   creator: '0x1',\n   *   collection: 'Some collection',\n   *   name: 'Awesome token'\n   * }\n   * ```\n   * @returns Token object in below format\n   * ```\n   * Token {\n   *   id: TokenId;\n   *   value: number;\n   * }\n   * ```\n   */\n  async getTokenForAccount(account: MaybeHexString, tokenId: TokenTypes.TokenId): Promise<TokenTypes.Token> {\n    const tokenStore: { type: Gen.MoveStructTag; data: any } = await this.aptosClient.getAccountResource(\n      account instanceof HexString ? account.hex() : account,\n      \"0x3::token::TokenStore\",\n    );\n    const { handle } = tokenStore.data.tokens;\n\n    const getTokenTableItemRequest: Gen.TableItemRequest = {\n      key_type: \"0x3::token::TokenId\",\n      value_type: \"0x3::token::Token\",\n      key: tokenId,\n    };\n\n    try {\n      const rawToken = await this.aptosClient.getTableItem(handle, getTokenTableItemRequest);\n      return new Token(rawToken.id, rawToken.amount, rawToken.token_properties);\n    } catch (error: any) {\n      if (error?.status === 404) {\n        return {\n          id: tokenId,\n          amount: \"0\",\n          token_properties: new PropertyMap(),\n        };\n      }\n      return error;\n    }\n  }\n}\n","import { AptosAccount } from \"../account\";\nimport { RawTransaction } from \"../aptos_types\";\nimport * as Gen from \"../generated/index\";\nimport { OptionalTransactionArgs, Provider } from \"../providers\";\nimport { TransactionBuilderRemoteABI } from \"../transaction_builder\";\nimport { MaybeHexString, HexString } from \"../utils\";\n\nexport class FungibleAssetClient {\n  provider: Provider;\n\n  readonly assetType: string = \"0x1::fungible_asset::Metadata\";\n\n  /**\n   * Creates new FungibleAssetClient instance\n   *\n   * @param provider Provider instance\n   */\n  constructor(provider: Provider) {\n    this.provider = provider;\n  }\n\n  /**\n   *  Transfer `amount` of fungible asset from sender's primary store to recipient's primary store.\n   *\n   * Use this method to transfer any fungible asset including fungible token.\n   *\n   * @param sender The sender account\n   * @param fungibleAssetMetadataAddress The fungible asset address.\n   * For example if you’re transferring USDT this would be the USDT address\n   * @param recipient Recipient address\n   * @param amount Number of assets to transfer\n   * @returns The hash of the transaction submitted to the API\n   */\n  async transfer(\n    sender: AptosAccount,\n    fungibleAssetMetadataAddress: MaybeHexString,\n    recipient: MaybeHexString,\n    amount: number | bigint,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const rawTransaction = await this.generateTransfer(\n      sender,\n      fungibleAssetMetadataAddress,\n      recipient,\n      amount,\n      extraArgs,\n    );\n    const txnHash = await this.provider.signAndSubmitTransaction(sender, rawTransaction);\n    return txnHash;\n  }\n\n  /**\n   * Get the balance of a fungible asset from the account's primary fungible store.\n   *\n   * @param account Account that you want to get the balance of.\n   * @param fungibleAssetMetadataAddress The fungible asset address you want to check the balance of\n   * @returns Promise that resolves to the balance\n   */\n  async getPrimaryBalance(account: MaybeHexString, fungibleAssetMetadataAddress: MaybeHexString): Promise<bigint> {\n    const payload: Gen.ViewRequest = {\n      function: \"0x1::primary_fungible_store::balance\",\n      type_arguments: [this.assetType],\n      arguments: [HexString.ensure(account).hex(), HexString.ensure(fungibleAssetMetadataAddress).hex()],\n    };\n    const response = await this.provider.view(payload);\n    return BigInt((response as any)[0]);\n  }\n\n  /**\n   *\n   * Generate a transfer transaction that can be used to sign and submit to transfer an asset amount\n   * from the sender primary fungible store to the recipient primary fungible store.\n   *\n   * This method can be used if you want/need to get the raw transaction so you can\n   * first simulate the transaction and then sign and submit it.\n   *\n   * @param sender The sender account\n   * @param fungibleAssetMetadataAddress The fungible asset address.\n   * For example if you’re transferring USDT this would be the USDT address\n   * @param recipient Recipient address\n   * @param amount Number of assets to transfer\n   * @returns Raw Transaction\n   */\n  async generateTransfer(\n    sender: AptosAccount,\n    fungibleAssetMetadataAddress: MaybeHexString,\n    recipient: MaybeHexString,\n    amount: number | bigint,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<RawTransaction> {\n    const builder = new TransactionBuilderRemoteABI(this.provider, {\n      sender: sender.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(\n      \"0x1::primary_fungible_store::transfer\",\n      [this.assetType],\n      [HexString.ensure(fungibleAssetMetadataAddress).hex(), HexString.ensure(recipient).hex(), amount],\n    );\n    return rawTxn;\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable max-len */\n\nimport { AptosAccount } from \"../account/aptos_account\";\nimport { AnyNumber } from \"../bcs\";\nimport { MAX_U64_BIG_INT } from \"../bcs/consts\";\nimport { Provider } from \"../providers\";\nimport { AptosClient, OptionalTransactionArgs } from \"../providers/aptos_client\";\nimport { TransactionBuilderRemoteABI } from \"../transaction_builder\";\nimport { HexString, MaybeHexString } from \"../utils\";\nimport { getPropertyValueRaw, getSinglePropertyValueRaw } from \"../utils/property_map_serde\";\nimport { FungibleAssetClient } from \"./fungible_asset_client\";\n\nexport interface CreateCollectionOptions {\n  royaltyNumerator?: number;\n  royaltyDenominator?: number;\n  mutableDescription?: boolean;\n  mutableRoyalty?: boolean;\n  mutableURI?: boolean;\n  mutableTokenDescription?: boolean;\n  mutableTokenName?: boolean;\n  mutableTokenProperties?: boolean;\n  mutableTokenURI?: boolean;\n  tokensBurnableByCreator?: boolean;\n  tokensFreezableByCreator?: boolean;\n}\n\nconst PropertyTypeMap = {\n  BOOLEAN: \"bool\",\n  U8: \"u8\",\n  U16: \"u16\",\n  U32: \"u32\",\n  U64: \"u64\",\n  U128: \"u128\",\n  U256: \"u256\",\n  ADDRESS: \"address\",\n  VECTOR: \"vector<u8>\",\n  STRING: \"string\",\n};\n\nexport type PropertyType = keyof typeof PropertyTypeMap;\n\ntype FungibleTokenParameters = {\n  owner: AptosAccount;\n  tokenAddress: MaybeHexString;\n  recipient: MaybeHexString;\n  amount: number | bigint;\n  extraArgs?: OptionalTransactionArgs;\n};\n\ntype NonFungibleTokenParameters = {\n  owner: AptosAccount;\n  tokenAddress: MaybeHexString;\n  recipient: MaybeHexString;\n  tokenType?: string;\n  extraArgs?: OptionalTransactionArgs;\n};\n\n/**\n * Class for managing aptos_token\n */\nexport class AptosToken {\n  readonly provider: Provider;\n\n  private readonly tokenType: string = \"0x4::token::Token\";\n\n  /**\n   * Creates new AptosToken instance\n   *\n   * @param provider Provider instance\n   */\n  constructor(provider: Provider) {\n    this.provider = provider;\n  }\n\n  private async submitTransaction(\n    account: AptosAccount,\n    funcName: string,\n    typeArgs: string[],\n    args: any[],\n    extraArgs?: OptionalTransactionArgs,\n  ) {\n    const builder = new TransactionBuilderRemoteABI(this.provider, {\n      sender: account.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(`0x4::aptos_token::${funcName}`, typeArgs, args);\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Creates a new collection within the specified account\n   *\n   * @param creator AptosAccount where collection will be created\n   * @param description Collection description\n   * @param name Collection name\n   * @param uri URL to additional info about collection\n   * @param options CreateCollectionOptions type. By default all values set to `true` or `0`\n   * @returns The hash of the transaction submitted to the API\n   */\n  async createCollection(\n    creator: AptosAccount,\n    description: string,\n    name: string,\n    uri: string,\n    maxSupply: AnyNumber = MAX_U64_BIG_INT,\n    options?: CreateCollectionOptions,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"create_collection\",\n      [],\n      [\n        description,\n        maxSupply,\n        name,\n        uri,\n        options?.mutableDescription ?? true,\n        options?.mutableRoyalty ?? true,\n        options?.mutableURI ?? true,\n        options?.mutableTokenDescription ?? true,\n        options?.mutableTokenName ?? true,\n        options?.mutableTokenProperties ?? true,\n        options?.mutableTokenURI ?? true,\n        options?.tokensBurnableByCreator ?? true,\n        options?.tokensFreezableByCreator ?? true,\n        options?.royaltyNumerator ?? 0,\n        options?.royaltyDenominator ?? 0,\n      ],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Mint a new token within the specified account\n   *\n   * @param account AptosAccount where token will be created\n   * @param collection Name of collection, that token belongs to\n   * @param description Token description\n   * @param name Token name\n   * @param uri URL to additional info about token\n   * @param propertyKeys the property keys for storing on-chain properties\n   * @param propertyTypes the type of property values\n   * @param propertyValues the property values to be stored on-chain\n   * @returns The hash of the transaction submitted to the API\n   */\n  async mint(\n    account: AptosAccount,\n    collection: string,\n    description: string,\n    name: string,\n    uri: string,\n    propertyKeys: Array<string> = [],\n    propertyTypes: Array<string> = [],\n    propertyValues: Array<string> = [],\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      account,\n      \"mint\",\n      [],\n      [\n        collection,\n        description,\n        name,\n        uri,\n        propertyKeys,\n        propertyTypes,\n        getPropertyValueRaw(propertyValues, propertyTypes),\n      ],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Mint a soul bound token into a recipient's account\n   *\n   * @param account AptosAccount that mints the token\n   * @param collection Name of collection, that token belongs to\n   * @param description Token description\n   * @param name Token name\n   * @param uri URL to additional info about token\n   * @param recipient AptosAccount where token will be created\n   * @param propertyKeys the property keys for storing on-chain properties\n   * @param propertyTypes the type of property values\n   * @param propertyValues the property values to be stored on-chain\n   * @returns The hash of the transaction submitted to the API\n   */\n  async mintSoulBound(\n    account: AptosAccount,\n    collection: string,\n    description: string,\n    name: string,\n    uri: string,\n    recipient: AptosAccount,\n    propertyKeys: Array<string> = [],\n    propertyTypes: Array<string> = [],\n    propertyValues: Array<string> = [],\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      account,\n      \"mint_soul_bound\",\n      [],\n      [\n        collection,\n        description,\n        name,\n        uri,\n        propertyKeys,\n        propertyTypes,\n        getPropertyValueRaw(propertyValues, propertyTypes),\n        recipient.address().hex(),\n      ],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Burn a token by its creator\n   * @param creator Creator account\n   * @param token Token address\n   * @returns The hash of the transaction submitted to the API\n   */\n  async burnToken(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"burn\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex()],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Freeze token transfer ability\n   * @param creator Creator account\n   * @param token Token address\n   * @returns The hash of the transaction submitted to the API\n   */\n  async freezeTokenTransafer(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"freeze_transfer\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex()],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Unfreeze token transfer ability\n   * @param creator Creator account\n   * @param token Token address\n   * @returns The hash of the transaction submitted to the API\n   */\n  async unfreezeTokenTransafer(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"unfreeze_transfer\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex()],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Set token description\n   * @param creator Creator account\n   * @param token Token address\n   * @param description Token description\n   * @returns The hash of the transaction submitted to the API\n   */\n  async setTokenDescription(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    description: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"set_description\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex(), description],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Set token name\n   * @param creator Creator account\n   * @param token Token address\n   * @param name Token name\n   * @returns The hash of the transaction submitted to the API\n   */\n  async setTokenName(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    name: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"set_name\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex(), name],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Set token URI\n   * @param creator Creator account\n   * @param token Token address\n   * @param uri Token uri\n   * @returns The hash of the transaction submitted to the API\n   */\n  async setTokenURI(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    uri: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"set_uri\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex(), uri],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Add token property\n   * @param creator Creator account\n   * @param token Token address\n   * @param key the property key for storing on-chain property\n   * @param type the type of property value\n   * @param value the property value to be stored on-chain\n   * @returns The hash of the transaction submitted to the API\n   */\n  async addTokenProperty(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    propertyKey: string,\n    propertyType: PropertyType,\n    propertyValue: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"add_property\",\n      [tokenType || this.tokenType],\n      [\n        HexString.ensure(token).hex(),\n        propertyKey,\n        PropertyTypeMap[propertyType],\n        getSinglePropertyValueRaw(propertyValue, PropertyTypeMap[propertyType]),\n      ],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Remove token property\n   * @param creator Creator account\n   * @param token Token address\n   * @param key the property key stored on-chain\n   * @returns The hash of the transaction submitted to the API\n   */\n  async removeTokenProperty(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    propertyKey: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"remove_property\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex(), propertyKey],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Update token property\n   * @param creator Creator account\n   * @param token Token address\n   * @param key the property key stored on-chain\n   * @param type the property typed stored on-chain\n   * @param value the property value to be stored on-chain\n   * @returns The hash of the transaction submitted to the API\n   */\n  async updateTokenProperty(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    propertyKey: string,\n    propertyType: PropertyType,\n    propertyValue: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    return this.submitTransaction(\n      creator,\n      \"update_property\",\n      [tokenType || this.tokenType],\n      [\n        HexString.ensure(token).hex(),\n        propertyKey,\n        PropertyTypeMap[propertyType],\n        getSinglePropertyValueRaw(propertyValue, PropertyTypeMap[propertyType]),\n      ],\n      extraArgs,\n    );\n  }\n\n  async addTypedProperty(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    propertyKey: string,\n    propertyType: PropertyType,\n    propertyValue: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ) {\n    return this.submitTransaction(\n      creator,\n      \"add_typed_property\",\n      [tokenType || this.tokenType, PropertyTypeMap[propertyType]],\n      [HexString.ensure(token).hex(), propertyKey, propertyValue],\n      extraArgs,\n    );\n  }\n\n  async updateTypedProperty(\n    creator: AptosAccount,\n    token: MaybeHexString,\n    propertyKey: string,\n    propertyType: PropertyType,\n    propertyValue: string,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ) {\n    return this.submitTransaction(\n      creator,\n      \"update_typed_property\",\n      [tokenType || this.tokenType, PropertyTypeMap[propertyType]],\n      [HexString.ensure(token).hex(), propertyKey, propertyValue],\n      extraArgs,\n    );\n  }\n\n  /**\n   * Transfer a non fungible token ownership.\n   * We can transfer a token only when the token is not frozen (i.e. owner transfer is not disabled such as for soul bound tokens)\n   * @param owner The account of the current token owner\n   * @param token Token address\n   * @param recipient Recipient address\n   * @returns The hash of the transaction submitted to the API\n   */\n  async transferTokenOwnership(\n    owner: AptosAccount,\n    token: MaybeHexString,\n    recipient: MaybeHexString,\n    tokenType?: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<string> {\n    const builder = new TransactionBuilderRemoteABI(this.provider, {\n      sender: owner.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(\n      \"0x1::object::transfer\",\n      [tokenType || this.tokenType],\n      [HexString.ensure(token).hex(), HexString.ensure(recipient).hex()],\n    );\n    const bcsTxn = AptosClient.generateBCSTransaction(owner, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Transfer a token. This function supports transfer non-fungible token and fungible token.\n   *\n   * To set the token type, set isFungibleToken param to true or false.\n   * If isFungibleToken param is not set, the function would query Indexer\n   * for the token data and check whether it is a non-fungible or a fungible token.\n   *\n   * Note: this function supports only token v2 standard (it does not support the token v1 standard)\n   *\n   * @param data NonFungibleTokenParameters | FungibleTokenParameters type\n   * @param isFungibleToken (optional) The token type, non-fungible or fungible token.\n   * @returns The hash of the transaction submitted to the API\n   */\n  async transfer(\n    data: NonFungibleTokenParameters | FungibleTokenParameters,\n    isFungibleToken?: boolean | null,\n  ): Promise<string> {\n    let isFungible = isFungibleToken;\n    if (isFungible === undefined || isFungible === null) {\n      const tokenData = await this.provider.getTokenData(HexString.ensure(data.tokenAddress).hex());\n      isFungible = tokenData.current_token_datas_v2[0].is_fungible_v2;\n    }\n    if (isFungible) {\n      const token = data as FungibleTokenParameters;\n      const fungibleAsset = new FungibleAssetClient(this.provider);\n      const txnHash = await fungibleAsset.transfer(\n        token.owner,\n        token.tokenAddress,\n        token.recipient,\n        token.amount,\n        token.extraArgs,\n      );\n      return txnHash;\n    }\n    const token = data as NonFungibleTokenParameters;\n    const txnHash = await this.transferTokenOwnership(\n      token.owner,\n      token.tokenAddress,\n      token.recipient,\n      token.tokenType,\n      token.extraArgs,\n    );\n    return txnHash;\n  }\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\nimport { AptosAccount, getAddressFromAccountOrAddress } from \"../account/aptos_account\";\nimport { AptosClient, OptionalTransactionArgs } from \"../providers/aptos_client\";\nimport { MaybeHexString, APTOS_COIN, NetworkToIndexerAPI, NodeAPIToNetwork } from \"../utils\";\nimport { TransactionBuilderRemoteABI } from \"../transaction_builder\";\nimport { FungibleAssetClient } from \"./fungible_asset_client\";\nimport { Provider } from \"../providers\";\nimport { AccountAddress } from \"../aptos_types\";\n\n/**\n * Class for working with the coin module, such as transferring coins and\n * checking balances.\n */\nexport class CoinClient {\n  aptosClient: AptosClient;\n\n  /**\n   * Creates new CoinClient instance\n   * @param aptosClient AptosClient instance\n   */\n  constructor(aptosClient: AptosClient) {\n    this.aptosClient = aptosClient;\n  }\n\n  /**\n   * Generate, sign, and submit a transaction to the Aptos blockchain API to\n   * transfer coins from one account to another. By default it transfers\n   * 0x1::aptos_coin::AptosCoin, but you can specify a different coin type\n   * with the `coinType` argument.\n   *\n   * You may set `createReceiverIfMissing` to true if you want to create the\n   * receiver account if it does not exist on chain yet. If you do not set\n   * this to true, the transaction will fail if the receiver account does not\n   * exist on-chain.\n   *\n   * The TS SDK supports fungible assets operations. If you want to use CoinClient\n   * with this feature, set the `coinType` to be the fungible asset metadata address.\n   * This option uses the `FungibleAssetClient` class and queries the\n   * fungible asset primary store.\n   *\n   * @param from Account sending the coins\n   * @param to Account to receive the coins\n   * @param amount Number of coins to transfer\n   * @param extraArgs Extra args for building the transaction or configuring how\n   * the client should submit and wait for the transaction\n   * @returns The hash of the transaction submitted to the API\n   */\n  // :!:>transfer\n  async transfer(\n    from: AptosAccount,\n    to: AptosAccount | MaybeHexString,\n    amount: number | bigint,\n    extraArgs?: OptionalTransactionArgs & {\n      // The coin type to use, defaults to 0x1::aptos_coin::AptosCoin.\n      // If you want to transfer a fungible asset, set this param to be the\n      // fungible asset address\n      coinType?: string | MaybeHexString;\n      // If set, create the `receiver` account if it doesn't exist on-chain.\n      // This is done by calling `0x1::aptos_account::transfer` instead, which\n      // will create the account on-chain first if it doesn't exist before\n      // transferring the coins to it.\n      // If this is the first time an account has received the specified coinType,\n      // and this is set to false, the transaction would fail.\n      createReceiverIfMissing?: boolean;\n    },\n  ): Promise<string> {\n    if (extraArgs?.coinType && AccountAddress.isValid(extraArgs.coinType)) {\n      /* eslint-disable no-console */\n      console.warn(\"to transfer a fungible asset, use `FungibleAssetClient()` class for better support\");\n      const provider = new Provider({\n        fullnodeUrl: this.aptosClient.nodeUrl,\n        indexerUrl: NetworkToIndexerAPI[NodeAPIToNetwork[this.aptosClient.nodeUrl]] ?? this.aptosClient.nodeUrl,\n      });\n      const fungibleAsset = new FungibleAssetClient(provider);\n      const txnHash = await fungibleAsset.transfer(\n        from,\n        extraArgs?.coinType,\n        getAddressFromAccountOrAddress(to),\n        amount,\n      );\n      return txnHash;\n    }\n\n    // If none is explicitly given, use 0x1::aptos_coin::AptosCoin as the coin type.\n    const coinTypeToTransfer = extraArgs?.coinType ?? APTOS_COIN;\n\n    // If we should create the receiver account if it doesn't exist on-chain,\n    // use the `0x1::aptos_account::transfer` function.\n    const func = extraArgs?.createReceiverIfMissing ? \"0x1::aptos_account::transfer_coins\" : \"0x1::coin::transfer\";\n\n    // Get the receiver address from the AptosAccount or MaybeHexString.\n    const toAddress = getAddressFromAccountOrAddress(to);\n\n    const builder = new TransactionBuilderRemoteABI(this.aptosClient, { sender: from.address(), ...extraArgs });\n    const rawTxn = await builder.build(func, [coinTypeToTransfer as string], [toAddress, amount]);\n\n    const bcsTxn = AptosClient.generateBCSTransaction(from, rawTxn);\n    const pendingTransaction = await this.aptosClient.submitSignedBCSTransaction(bcsTxn);\n    return pendingTransaction.hash;\n  } // <:!:transfer\n\n  /**\n   * Get the balance of the account. By default it checks the balance of\n   * 0x1::aptos_coin::AptosCoin, but you can specify a different coin type.\n   *\n   * to use a different type, set the `coinType` to be the fungible asset type.\n   *\n   * The TS SDK supports fungible assets operations. If you want to use CoinClient\n   * with this feature, set the `coinType` to be the fungible asset metadata address.\n   * This option uses the FungibleAssetClient class and queries the\n   * fungible asset primary store.\n   *\n   * @param account Account that you want to get the balance of.\n   * @param extraArgs Extra args for checking the balance.\n   * @returns Promise that resolves to the balance as a bigint.\n   */\n  // :!:>checkBalance\n  async checkBalance(\n    account: AptosAccount | MaybeHexString,\n    extraArgs?: {\n      // The coin type to use, defaults to 0x1::aptos_coin::AptosCoin.\n      // If you want to check the balance of a fungible asset, set this param to be the\n      // fungible asset address\n      coinType?: string;\n    },\n  ): Promise<bigint> {\n    if (extraArgs?.coinType && AccountAddress.isValid(extraArgs.coinType)) {\n      /* eslint-disable no-console */\n      console.warn(\"to check balance of a fungible asset, use `FungibleAssetClient()` class for better support\");\n      const provider = new Provider({\n        fullnodeUrl: this.aptosClient.nodeUrl,\n        indexerUrl: NetworkToIndexerAPI[NodeAPIToNetwork[this.aptosClient.nodeUrl]] ?? this.aptosClient.nodeUrl,\n      });\n      const fungibleAsset = new FungibleAssetClient(provider);\n      const balance = await fungibleAsset.getPrimaryBalance(\n        getAddressFromAccountOrAddress(account),\n        extraArgs?.coinType,\n      );\n      return balance;\n    }\n\n    const coinType = extraArgs?.coinType ?? APTOS_COIN;\n    const typeTag = `0x1::coin::CoinStore<${coinType}>`;\n    const address = getAddressFromAccountOrAddress(account);\n    const accountResource = await this.aptosClient.getAccountResource(address, typeTag);\n    return BigInt((accountResource.data as any).coin.value);\n  } // <:!:checkBalance\n}\n","// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/** Faucet creates and funds accounts. This is a thin wrapper around that. */\nimport { AptosClient } from \"../providers/aptos_client\";\nimport { HexString, MaybeHexString, DEFAULT_TXN_TIMEOUT_SEC } from \"../utils\";\nimport { post, ClientConfig } from \"../client\";\n\n/**\n * Class for requsting tokens from faucet\n */\nexport class FaucetClient extends AptosClient {\n  readonly faucetUrl: string;\n\n  readonly config: ClientConfig | undefined;\n\n  /**\n   * Establishes a connection to Aptos node\n   * @param nodeUrl A url of the Aptos Node API endpoint\n   * @param faucetUrl A faucet url\n   * @param config An optional config for inner axios instance\n   * Detailed config description: {@link https://github.com/axios/axios#request-config}\n   */\n  constructor(nodeUrl: string, faucetUrl: string, config?: ClientConfig) {\n    super(nodeUrl, config);\n\n    if (!faucetUrl) {\n      throw new Error(\"Faucet URL cannot be empty.\");\n    }\n    this.faucetUrl = faucetUrl;\n    this.config = config;\n  }\n\n  /**\n   * This creates an account if it does not exist and mints the specified amount of\n   * coins into that account\n   * @param address Hex-encoded 16 bytes Aptos account address wich mints tokens\n   * @param amount Amount of tokens to mint\n   * @param timeoutSecs\n   * @returns Hashes of submitted transactions\n   */\n  async fundAccount(address: MaybeHexString, amount: number, timeoutSecs = DEFAULT_TXN_TIMEOUT_SEC): Promise<string[]> {\n    const { data } = await post<any, Array<string>>({\n      url: this.faucetUrl,\n      endpoint: \"mint\",\n      body: null,\n      params: {\n        address: HexString.ensure(address).noPrefix(),\n        amount,\n      },\n      overrides: { ...this.config },\n      originMethod: \"fundAccount\",\n    });\n\n    const promises: Promise<void>[] = [];\n    for (let i = 0; i < data.length; i += 1) {\n      const tnxHash = data[i];\n      promises.push(this.waitForTransaction(tnxHash, { timeoutSecs }));\n    }\n    await Promise.all(promises);\n    return data;\n  }\n}\n","import { AptosClient, Provider, OptionalTransactionArgs, ApiError } from \"../providers\";\nimport * as Gen from \"../generated/index\";\nimport { AptosAccount } from \"../account\";\nimport { AccountAddress } from \"../aptos_types\";\nimport { TransactionBuilderRemoteABI } from \"../transaction_builder\";\n\nconst ansContractsMap: Record<string, string> = {\n  testnet: \"0x5f8fd2347449685cf41d4db97926ec3a096eaf381332be4f1318ad4d16a8497c\",\n  mainnet: \"0x867ed1f6bf916171b1de3ee92849b8978b7d1b9e0a8cc982a3d19d535dfd9c0c\",\n};\n\n// Each name component can only have lowercase letters, number or hyphens, and cannot start or end with a hyphen.\nconst nameComponentPattern = /^[a-z\\d][a-z\\d-]{1,61}[a-z\\d]$/;\n\nconst namePattern = new RegExp(\n  \"^\" +\n    // Optional subdomain (cannot be followed by .apt)\n    \"(?:(?<subdomain>[^.]+)\\\\.(?!apt$))?\" +\n    // Domain\n    \"(?<domain>[^.]+)\" +\n    // Optional .apt suffix\n    \"(?:\\\\.apt)?\" +\n    \"$\",\n);\n\ntype ReverseLookupRegistryV1 = {\n  registry: {\n    handle: string;\n  };\n};\n\ntype NameRegistryV1 = {\n  registry: {\n    handle: string;\n  };\n};\n\ntype AnsRegistry = {\n  expirationTimestampSeconds: number;\n  target: string | null;\n};\n\nexport class AnsClient {\n  contractAddress: string;\n\n  provider: Provider;\n\n  /**\n   * Creates new AnsClient instance\n   * @param provider Provider instance\n   * @param contractAddress An optional contract address.\n   * If there is no contract address matching to the provided network\n   * then the AnsClient class expects a contract address -\n   * this is to support both mainnet/testnet networks and local development.\n   */\n  constructor(provider: Provider, contractAddress?: string) {\n    this.provider = provider;\n    if (!ansContractsMap[this.provider.network] && !contractAddress) {\n      throw new Error(\"Error: For custom providers, you must pass in a contract address\");\n    }\n    this.contractAddress = ansContractsMap[this.provider.network] ?? contractAddress;\n  }\n\n  /**\n   * Returns the primary name for the given account address\n   * @param address An account address\n   * @returns Account's primary name | null if there is no primary name defined\n   */\n  async getPrimaryNameByAddress(address: string): Promise<string | null> {\n    const ansResource: Gen.MoveResource = await this.provider.getAccountResource(\n      this.contractAddress,\n      `${this.contractAddress}::domains::ReverseLookupRegistryV1`,\n    );\n    const data = ansResource.data as ReverseLookupRegistryV1;\n    const { handle } = data.registry;\n    const domainsTableItemRequest = {\n      key_type: \"address\",\n      value_type: `${this.contractAddress}::domains::NameRecordKeyV1`,\n      key: address,\n    };\n    try {\n      const item = await this.provider.getTableItem(handle, domainsTableItemRequest);\n      return item.subdomain_name.vec[0] ? `${item.subdomain_name.vec[0]}.${item.domain_name}` : item.domain_name;\n    } catch (error: any) {\n      // if item not found, response is 404 error - meaning item not found\n      if (error.status === 404) {\n        return null;\n      }\n      throw new Error(error);\n    }\n  }\n\n  /**\n   * Returns the target account address for the given name\n   * @param name ANS name\n   * @returns Account address | null\n   */\n  async getAddressByName(name: string): Promise<string | null> {\n    const { domain, subdomain } = name.match(namePattern)?.groups ?? {};\n    if (!domain) return null;\n    const registration = subdomain\n      ? await this.getRegistrationForSubdomainName(domain, subdomain)\n      : await this.getRegistrationForDomainName(domain);\n    return registration === null ? null : registration.target;\n  }\n\n  /**\n   * Mint a new Aptos name\n   *\n   * @param account AptosAccount where collection will be created\n   * @param domainName Aptos domain name to mint\n   * @param years year duration of the domain name\n   * @returns The hash of the pending transaction submitted to the API\n   */\n  async mintAptosName(\n    account: AptosAccount,\n    domainName: string,\n    years: number = 1,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<Gen.HashValue> {\n    // check if the name is valid\n    if (domainName.match(nameComponentPattern) === null) {\n      throw new ApiError(400, `Name ${domainName} is not valid`);\n    }\n    // check if the name is available\n    const registration = await this.getRegistrationForDomainName(domainName);\n    if (registration) {\n      const now = Math.ceil(Date.now() / 1000);\n      if (now < registration.expirationTimestampSeconds) {\n        throw new ApiError(400, `Name ${domainName} is not available`);\n      }\n    }\n\n    const builder = new TransactionBuilderRemoteABI(this.provider.aptosClient, {\n      sender: account.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(`${this.contractAddress}::domains::register_domain`, [], [domainName, years]);\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Mint a new Aptos Subdomain\n   *\n   * @param account AptosAccount the owner of the domain name\n   * @param subdomainName subdomain name to mint\n   * @param domainName Aptos domain name to mint under\n   * @param expirationTimestampSeconds must be set between the domains expiration and the current time\n   * @returns The hash of the pending transaction submitted to the API\n   */\n  async mintAptosSubdomain(\n    account: AptosAccount,\n    subdomainName: string,\n    domainName: string,\n    expirationTimestampSeconds?: number,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<Gen.HashValue> {\n    // check if the name is valid\n    if (domainName.match(nameComponentPattern) === null) {\n      throw new ApiError(400, `Domain name ${domainName} is not valid`);\n    }\n    // check if the name is valid\n    if (subdomainName.match(nameComponentPattern) === null) {\n      throw new ApiError(400, `Subdomain name ${subdomainName} is not valid`);\n    }\n    // check if the name is available\n    const subdomainRegistration = await this.getRegistrationForSubdomainName(domainName, subdomainName);\n    if (subdomainRegistration) {\n      const now = Math.ceil(Date.now() / 1000);\n      if (now < subdomainRegistration.expirationTimestampSeconds) {\n        throw new ApiError(400, `Name ${subdomainName}.${domainName} is not available`);\n      }\n    }\n\n    const domainRegistration = await this.getRegistrationForDomainName(domainName);\n    if (domainRegistration === null) {\n      throw new ApiError(400, `Domain name ${domainName} does not exist`);\n    }\n    const now = Math.ceil(Date.now() / 1000);\n    if (domainRegistration.expirationTimestampSeconds < now) {\n      throw new ApiError(400, `Domain name ${domainName} expired`);\n    }\n\n    const actualExpirationTimestampSeconds =\n      expirationTimestampSeconds || domainRegistration.expirationTimestampSeconds;\n    if (actualExpirationTimestampSeconds < now) {\n      throw new ApiError(400, `Expiration for ${subdomainName}.${domainName} is before now`);\n    }\n\n    const builder = new TransactionBuilderRemoteABI(this.provider.aptosClient, {\n      sender: account.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(\n      `${this.contractAddress}::domains::register_subdomain`,\n      [],\n      [subdomainName, domainName, actualExpirationTimestampSeconds],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * @param account AptosAccount the owner of the domain name\n   * @param subdomainName subdomain name to mint\n   * @param domainName Aptos domain name to mint\n   * @param target the target address for the subdomain\n   * @returns The hash of the pending transaction submitted to the API\n   */\n  async setSubdomainAddress(\n    account: AptosAccount,\n    subdomainName: string,\n    domainName: string,\n    target: string,\n    extraArgs?: OptionalTransactionArgs,\n  ): Promise<Gen.HashValue> {\n    const standardizeAddress = AccountAddress.standardizeAddress(target);\n\n    // check if the name is valid\n    if (domainName.match(nameComponentPattern) === null) {\n      throw new ApiError(400, `Name ${domainName} is not valid`);\n    }\n    // check if the name is valid\n    if (subdomainName.match(nameComponentPattern) === null) {\n      throw new ApiError(400, `Name ${subdomainName} is not valid`);\n    }\n\n    const builder = new TransactionBuilderRemoteABI(this.provider.aptosClient, {\n      sender: account.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(\n      `${this.contractAddress}::domains::set_subdomain_address`,\n      [],\n      [subdomainName, domainName, standardizeAddress],\n    );\n\n    const bcsTxn = AptosClient.generateBCSTransaction(account, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Initialize reverse lookup for contract owner\n   *\n   * @param owner the `aptos_names` AptosAccount\n   * @returns The hash of the pending transaction submitted to the API\n   */\n  async initReverseLookupRegistry(owner: AptosAccount, extraArgs?: OptionalTransactionArgs): Promise<Gen.HashValue> {\n    const builder = new TransactionBuilderRemoteABI(this.provider.aptosClient, {\n      sender: owner.address(),\n      ...extraArgs,\n    });\n    const rawTxn = await builder.build(`${this.contractAddress}::domains::init_reverse_lookup_registry_v1`, [], []);\n\n    const bcsTxn = AptosClient.generateBCSTransaction(owner, rawTxn);\n    const pendingTransaction = await this.provider.submitSignedBCSTransaction(bcsTxn);\n\n    return pendingTransaction.hash;\n  }\n\n  /**\n   * Returns the AnsRegistry for the given domain name\n   * @param domain domain name\n   * @example\n   * if name is `aptos.apt`\n   * domain = aptos\n   *\n   * @returns AnsRegistry | null\n   */\n  private async getRegistrationForDomainName(domain: string): Promise<AnsRegistry | null> {\n    if (domain.match(nameComponentPattern) === null) return null;\n    const ansResource: { type: Gen.MoveStructTag; data: any } = await this.provider.getAccountResource(\n      this.contractAddress,\n      `${this.contractAddress}::domains::NameRegistryV1`,\n    );\n    const data = ansResource.data as NameRegistryV1;\n    const { handle } = data.registry;\n    const domainsTableItemRequest = {\n      key_type: `${this.contractAddress}::domains::NameRecordKeyV1`,\n      value_type: `${this.contractAddress}::domains::NameRecordV1`,\n      key: {\n        subdomain_name: { vec: [] },\n        domain_name: domain,\n      },\n    };\n\n    try {\n      const item = await this.provider.getTableItem(handle, domainsTableItemRequest);\n      return {\n        target: item.target_address.vec.length === 1 ? item.target_address.vec[0] : null,\n        expirationTimestampSeconds: item.expiration_time_sec,\n      };\n    } catch (error: any) {\n      // if item not found, response is 404 error - meaning item not found\n      if (error.status === 404) {\n        return null;\n      }\n      throw new Error(error);\n    }\n  }\n\n  /**\n   * Returns the AnsRegistry for the given subdomain_name\n   * @param domain domain name\n   * @param subdomain subdomain name\n   * @example\n   * if name is `dev.aptos.apt`\n   * domain = aptos\n   * subdomain = dev\n   *\n   * @returns AnsRegistry | null\n   */\n  private async getRegistrationForSubdomainName(domain: string, subdomain: string): Promise<AnsRegistry | null> {\n    if (domain.match(nameComponentPattern) === null) return null;\n    if (subdomain.match(nameComponentPattern) === null) return null;\n    const ansResource: { type: Gen.MoveStructTag; data: any } = await this.provider.getAccountResource(\n      this.contractAddress,\n      `${this.contractAddress}::domains::NameRegistryV1`,\n    );\n    const data = ansResource.data as NameRegistryV1;\n    const { handle } = data.registry;\n    const domainsTableItemRequest = {\n      key_type: `${this.contractAddress}::domains::NameRecordKeyV1`,\n      value_type: `${this.contractAddress}::domains::NameRecordV1`,\n      key: {\n        subdomain_name: { vec: [subdomain] },\n        domain_name: domain,\n      },\n    };\n\n    try {\n      const item = await this.provider.getTableItem(handle, domainsTableItemRequest);\n      return {\n        target: item.target_address.vec.length === 1 ? item.target_address.vec[0] : null,\n        expirationTimestampSeconds: item.expiration_time_sec,\n      };\n    } catch (error: any) {\n      // if item not found, response is 404 error - meaning item not found\n      if (error.status === 404) {\n        return null;\n      }\n      throw new Error(error);\n    }\n  }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport { AptosGeneratedClient } from './AptosGeneratedClient';\n\nexport { ApiError } from './core/ApiError';\nexport { BaseHttpRequest } from './core/BaseHttpRequest';\nexport { CancelablePromise, CancelError } from './core/CancelablePromise';\nexport { OpenAPI } from './core/OpenAPI';\nexport type { OpenAPIConfig } from './core/OpenAPI';\n\nexport type { AccountData } from './models/AccountData';\nexport type { AccountSignature } from './models/AccountSignature';\nexport type { AccountSignature_Ed25519Signature } from './models/AccountSignature_Ed25519Signature';\nexport type { AccountSignature_MultiEd25519Signature } from './models/AccountSignature_MultiEd25519Signature';\nexport type { Address } from './models/Address';\nexport type { AptosError } from './models/AptosError';\nexport { AptosErrorCode } from './models/AptosErrorCode';\nexport type { Block } from './models/Block';\nexport type { BlockMetadataTransaction } from './models/BlockMetadataTransaction';\nexport type { DecodedTableData } from './models/DecodedTableData';\nexport type { DeletedTableData } from './models/DeletedTableData';\nexport type { DeleteModule } from './models/DeleteModule';\nexport type { DeleteResource } from './models/DeleteResource';\nexport type { DeleteTableItem } from './models/DeleteTableItem';\nexport type { DirectWriteSet } from './models/DirectWriteSet';\nexport type { Ed25519Signature } from './models/Ed25519Signature';\nexport type { EncodeSubmissionRequest } from './models/EncodeSubmissionRequest';\nexport type { EntryFunctionId } from './models/EntryFunctionId';\nexport type { EntryFunctionPayload } from './models/EntryFunctionPayload';\nexport type { Event } from './models/Event';\nexport type { EventGuid } from './models/EventGuid';\nexport type { FeePayerSignature } from './models/FeePayerSignature';\nexport type { GasEstimation } from './models/GasEstimation';\nexport type { GenesisPayload } from './models/GenesisPayload';\nexport type { GenesisPayload_WriteSetPayload } from './models/GenesisPayload_WriteSetPayload';\nexport type { GenesisTransaction } from './models/GenesisTransaction';\nexport type { HashValue } from './models/HashValue';\nexport type { HealthCheckSuccess } from './models/HealthCheckSuccess';\nexport type { HexEncodedBytes } from './models/HexEncodedBytes';\nexport type { IdentifierWrapper } from './models/IdentifierWrapper';\nexport type { IndexResponse } from './models/IndexResponse';\nexport type { ModuleBundlePayload } from './models/ModuleBundlePayload';\nexport type { MoveAbility } from './models/MoveAbility';\nexport type { MoveFunction } from './models/MoveFunction';\nexport type { MoveFunctionGenericTypeParam } from './models/MoveFunctionGenericTypeParam';\nexport { MoveFunctionVisibility } from './models/MoveFunctionVisibility';\nexport type { MoveModule } from './models/MoveModule';\nexport type { MoveModuleBytecode } from './models/MoveModuleBytecode';\nexport type { MoveModuleId } from './models/MoveModuleId';\nexport type { MoveResource } from './models/MoveResource';\nexport type { MoveScriptBytecode } from './models/MoveScriptBytecode';\nexport type { MoveStruct } from './models/MoveStruct';\nexport type { MoveStructField } from './models/MoveStructField';\nexport type { MoveStructGenericTypeParam } from './models/MoveStructGenericTypeParam';\nexport type { MoveStructTag } from './models/MoveStructTag';\nexport type { MoveStructValue } from './models/MoveStructValue';\nexport type { MoveType } from './models/MoveType';\nexport type { MoveValue } from './models/MoveValue';\nexport type { MultiAgentSignature } from './models/MultiAgentSignature';\nexport type { MultiEd25519Signature } from './models/MultiEd25519Signature';\nexport type { MultisigPayload } from './models/MultisigPayload';\nexport type { MultisigTransactionPayload } from './models/MultisigTransactionPayload';\nexport type { PendingTransaction } from './models/PendingTransaction';\nexport type { RawTableItemRequest } from './models/RawTableItemRequest';\nexport { RoleType } from './models/RoleType';\nexport type { ScriptPayload } from './models/ScriptPayload';\nexport type { ScriptWriteSet } from './models/ScriptWriteSet';\nexport type { StateCheckpointTransaction } from './models/StateCheckpointTransaction';\nexport type { StateKeyWrapper } from './models/StateKeyWrapper';\nexport type { SubmitTransactionRequest } from './models/SubmitTransactionRequest';\nexport type { TableItemRequest } from './models/TableItemRequest';\nexport type { Transaction } from './models/Transaction';\nexport type { Transaction_BlockMetadataTransaction } from './models/Transaction_BlockMetadataTransaction';\nexport type { Transaction_GenesisTransaction } from './models/Transaction_GenesisTransaction';\nexport type { Transaction_PendingTransaction } from './models/Transaction_PendingTransaction';\nexport type { Transaction_StateCheckpointTransaction } from './models/Transaction_StateCheckpointTransaction';\nexport type { Transaction_UserTransaction } from './models/Transaction_UserTransaction';\nexport type { TransactionPayload } from './models/TransactionPayload';\nexport type { TransactionPayload_EntryFunctionPayload } from './models/TransactionPayload_EntryFunctionPayload';\nexport type { TransactionPayload_ModuleBundlePayload } from './models/TransactionPayload_ModuleBundlePayload';\nexport type { TransactionPayload_MultisigPayload } from './models/TransactionPayload_MultisigPayload';\nexport type { TransactionPayload_ScriptPayload } from './models/TransactionPayload_ScriptPayload';\nexport type { TransactionsBatchSingleSubmissionFailure } from './models/TransactionsBatchSingleSubmissionFailure';\nexport type { TransactionsBatchSubmissionResult } from './models/TransactionsBatchSubmissionResult';\nexport type { TransactionSignature } from './models/TransactionSignature';\nexport type { TransactionSignature_Ed25519Signature } from './models/TransactionSignature_Ed25519Signature';\nexport type { TransactionSignature_FeePayerSignature } from './models/TransactionSignature_FeePayerSignature';\nexport type { TransactionSignature_MultiAgentSignature } from './models/TransactionSignature_MultiAgentSignature';\nexport type { TransactionSignature_MultiEd25519Signature } from './models/TransactionSignature_MultiEd25519Signature';\nexport type { U128 } from './models/U128';\nexport type { U256 } from './models/U256';\nexport type { U64 } from './models/U64';\nexport type { UserTransaction } from './models/UserTransaction';\nexport type { VersionedEvent } from './models/VersionedEvent';\nexport type { ViewRequest } from './models/ViewRequest';\nexport type { WriteModule } from './models/WriteModule';\nexport type { WriteResource } from './models/WriteResource';\nexport type { WriteSet } from './models/WriteSet';\nexport type { WriteSet_DirectWriteSet } from './models/WriteSet_DirectWriteSet';\nexport type { WriteSet_ScriptWriteSet } from './models/WriteSet_ScriptWriteSet';\nexport type { WriteSetChange } from './models/WriteSetChange';\nexport type { WriteSetChange_DeleteModule } from './models/WriteSetChange_DeleteModule';\nexport type { WriteSetChange_DeleteResource } from './models/WriteSetChange_DeleteResource';\nexport type { WriteSetChange_DeleteTableItem } from './models/WriteSetChange_DeleteTableItem';\nexport type { WriteSetChange_WriteModule } from './models/WriteSetChange_WriteModule';\nexport type { WriteSetChange_WriteResource } from './models/WriteSetChange_WriteResource';\nexport type { WriteSetChange_WriteTableItem } from './models/WriteSetChange_WriteTableItem';\nexport type { WriteSetPayload } from './models/WriteSetPayload';\nexport type { WriteTableItem } from './models/WriteTableItem';\n\nexport { $AccountData } from './schemas/$AccountData';\nexport { $AccountSignature } from './schemas/$AccountSignature';\nexport { $AccountSignature_Ed25519Signature } from './schemas/$AccountSignature_Ed25519Signature';\nexport { $AccountSignature_MultiEd25519Signature } from './schemas/$AccountSignature_MultiEd25519Signature';\nexport { $Address } from './schemas/$Address';\nexport { $AptosError } from './schemas/$AptosError';\nexport { $AptosErrorCode } from './schemas/$AptosErrorCode';\nexport { $Block } from './schemas/$Block';\nexport { $BlockMetadataTransaction } from './schemas/$BlockMetadataTransaction';\nexport { $DecodedTableData } from './schemas/$DecodedTableData';\nexport { $DeletedTableData } from './schemas/$DeletedTableData';\nexport { $DeleteModule } from './schemas/$DeleteModule';\nexport { $DeleteResource } from './schemas/$DeleteResource';\nexport { $DeleteTableItem } from './schemas/$DeleteTableItem';\nexport { $DirectWriteSet } from './schemas/$DirectWriteSet';\nexport { $Ed25519Signature } from './schemas/$Ed25519Signature';\nexport { $EncodeSubmissionRequest } from './schemas/$EncodeSubmissionRequest';\nexport { $EntryFunctionId } from './schemas/$EntryFunctionId';\nexport { $EntryFunctionPayload } from './schemas/$EntryFunctionPayload';\nexport { $Event } from './schemas/$Event';\nexport { $EventGuid } from './schemas/$EventGuid';\nexport { $FeePayerSignature } from './schemas/$FeePayerSignature';\nexport { $GasEstimation } from './schemas/$GasEstimation';\nexport { $GenesisPayload } from './schemas/$GenesisPayload';\nexport { $GenesisPayload_WriteSetPayload } from './schemas/$GenesisPayload_WriteSetPayload';\nexport { $GenesisTransaction } from './schemas/$GenesisTransaction';\nexport { $HashValue } from './schemas/$HashValue';\nexport { $HealthCheckSuccess } from './schemas/$HealthCheckSuccess';\nexport { $HexEncodedBytes } from './schemas/$HexEncodedBytes';\nexport { $IdentifierWrapper } from './schemas/$IdentifierWrapper';\nexport { $IndexResponse } from './schemas/$IndexResponse';\nexport { $ModuleBundlePayload } from './schemas/$ModuleBundlePayload';\nexport { $MoveAbility } from './schemas/$MoveAbility';\nexport { $MoveFunction } from './schemas/$MoveFunction';\nexport { $MoveFunctionGenericTypeParam } from './schemas/$MoveFunctionGenericTypeParam';\nexport { $MoveFunctionVisibility } from './schemas/$MoveFunctionVisibility';\nexport { $MoveModule } from './schemas/$MoveModule';\nexport { $MoveModuleBytecode } from './schemas/$MoveModuleBytecode';\nexport { $MoveModuleId } from './schemas/$MoveModuleId';\nexport { $MoveResource } from './schemas/$MoveResource';\nexport { $MoveScriptBytecode } from './schemas/$MoveScriptBytecode';\nexport { $MoveStruct } from './schemas/$MoveStruct';\nexport { $MoveStructField } from './schemas/$MoveStructField';\nexport { $MoveStructGenericTypeParam } from './schemas/$MoveStructGenericTypeParam';\nexport { $MoveStructTag } from './schemas/$MoveStructTag';\nexport { $MoveStructValue } from './schemas/$MoveStructValue';\nexport { $MoveType } from './schemas/$MoveType';\nexport { $MoveValue } from './schemas/$MoveValue';\nexport { $MultiAgentSignature } from './schemas/$MultiAgentSignature';\nexport { $MultiEd25519Signature } from './schemas/$MultiEd25519Signature';\nexport { $MultisigPayload } from './schemas/$MultisigPayload';\nexport { $MultisigTransactionPayload } from './schemas/$MultisigTransactionPayload';\nexport { $PendingTransaction } from './schemas/$PendingTransaction';\nexport { $RawTableItemRequest } from './schemas/$RawTableItemRequest';\nexport { $RoleType } from './schemas/$RoleType';\nexport { $ScriptPayload } from './schemas/$ScriptPayload';\nexport { $ScriptWriteSet } from './schemas/$ScriptWriteSet';\nexport { $StateCheckpointTransaction } from './schemas/$StateCheckpointTransaction';\nexport { $StateKeyWrapper } from './schemas/$StateKeyWrapper';\nexport { $SubmitTransactionRequest } from './schemas/$SubmitTransactionRequest';\nexport { $TableItemRequest } from './schemas/$TableItemRequest';\nexport { $Transaction } from './schemas/$Transaction';\nexport { $Transaction_BlockMetadataTransaction } from './schemas/$Transaction_BlockMetadataTransaction';\nexport { $Transaction_GenesisTransaction } from './schemas/$Transaction_GenesisTransaction';\nexport { $Transaction_PendingTransaction } from './schemas/$Transaction_PendingTransaction';\nexport { $Transaction_StateCheckpointTransaction } from './schemas/$Transaction_StateCheckpointTransaction';\nexport { $Transaction_UserTransaction } from './schemas/$Transaction_UserTransaction';\nexport { $TransactionPayload } from './schemas/$TransactionPayload';\nexport { $TransactionPayload_EntryFunctionPayload } from './schemas/$TransactionPayload_EntryFunctionPayload';\nexport { $TransactionPayload_ModuleBundlePayload } from './schemas/$TransactionPayload_ModuleBundlePayload';\nexport { $TransactionPayload_MultisigPayload } from './schemas/$TransactionPayload_MultisigPayload';\nexport { $TransactionPayload_ScriptPayload } from './schemas/$TransactionPayload_ScriptPayload';\nexport { $TransactionsBatchSingleSubmissionFailure } from './schemas/$TransactionsBatchSingleSubmissionFailure';\nexport { $TransactionsBatchSubmissionResult } from './schemas/$TransactionsBatchSubmissionResult';\nexport { $TransactionSignature } from './schemas/$TransactionSignature';\nexport { $TransactionSignature_Ed25519Signature } from './schemas/$TransactionSignature_Ed25519Signature';\nexport { $TransactionSignature_FeePayerSignature } from './schemas/$TransactionSignature_FeePayerSignature';\nexport { $TransactionSignature_MultiAgentSignature } from './schemas/$TransactionSignature_MultiAgentSignature';\nexport { $TransactionSignature_MultiEd25519Signature } from './schemas/$TransactionSignature_MultiEd25519Signature';\nexport { $U128 } from './schemas/$U128';\nexport { $U256 } from './schemas/$U256';\nexport { $U64 } from './schemas/$U64';\nexport { $UserTransaction } from './schemas/$UserTransaction';\nexport { $VersionedEvent } from './schemas/$VersionedEvent';\nexport { $ViewRequest } from './schemas/$ViewRequest';\nexport { $WriteModule } from './schemas/$WriteModule';\nexport { $WriteResource } from './schemas/$WriteResource';\nexport { $WriteSet } from './schemas/$WriteSet';\nexport { $WriteSet_DirectWriteSet } from './schemas/$WriteSet_DirectWriteSet';\nexport { $WriteSet_ScriptWriteSet } from './schemas/$WriteSet_ScriptWriteSet';\nexport { $WriteSetChange } from './schemas/$WriteSetChange';\nexport { $WriteSetChange_DeleteModule } from './schemas/$WriteSetChange_DeleteModule';\nexport { $WriteSetChange_DeleteResource } from './schemas/$WriteSetChange_DeleteResource';\nexport { $WriteSetChange_DeleteTableItem } from './schemas/$WriteSetChange_DeleteTableItem';\nexport { $WriteSetChange_WriteModule } from './schemas/$WriteSetChange_WriteModule';\nexport { $WriteSetChange_WriteResource } from './schemas/$WriteSetChange_WriteResource';\nexport { $WriteSetChange_WriteTableItem } from './schemas/$WriteSetChange_WriteTableItem';\nexport { $WriteSetPayload } from './schemas/$WriteSetPayload';\nexport { $WriteTableItem } from './schemas/$WriteTableItem';\n\nexport { AccountsService } from './services/AccountsService';\nexport { BlocksService } from './services/BlocksService';\nexport { EventsService } from './services/EventsService';\nexport { GeneralService } from './services/GeneralService';\nexport { TablesService } from './services/TablesService';\nexport { TransactionsService } from './services/TransactionsService';\nexport { ViewService } from './services/ViewService';\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport abstract class BaseHttpRequest {\n\n    constructor(public readonly config: OpenAPIConfig) {}\n\n    public abstract request<T>(options: ApiRequestOptions): CancelablePromise<T>;\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport axios from 'axios';\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport FormData from 'form-data';\n\nimport { ApiError } from './ApiError';\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\nimport { CancelablePromise } from './CancelablePromise';\nimport type { OnCancel } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\ninterface Cookie {\n  name: string;\n  value: string;\n  expires?: Date;\n  path?: string;\n  sameSite?: \"Lax\" | \"None\" | \"Strict\";\n  secure?: boolean;\n}\n\nclass CookieJar {\n  constructor(private jar = new Map<string, Cookie[]>()) {}\n\n  setCookie(url: URL, cookieStr: string) {\n    const key = url.origin.toLowerCase();\n    if (!this.jar.has(key)) {\n      this.jar.set(key, []);\n    }\n\n    const cookie = CookieJar.parse(cookieStr);\n    this.jar.set(key, [...(this.jar.get(key)?.filter((c) => c.name !== cookie.name) || []), cookie]);\n  }\n\n  getCookies(url: URL): Cookie[] {\n    const key = url.origin.toLowerCase();\n    if (!this.jar.get(key)) {\n      return [];\n    }\n\n    // Filter out expired cookies\n    return this.jar.get(key)?.filter((cookie) => !cookie.expires || cookie.expires > new Date()) || [];\n  }\n\n  static parse(str: string): Cookie {\n    if (typeof str !== \"string\") {\n      throw new Error(\"argument str must be a string\");\n    }\n\n    const parts = str.split(\";\").map((part) => part.trim());\n\n    let cookie: Cookie;\n\n    if (parts.length > 0) {\n      const [name, value] = parts[0].split(\"=\");\n      if (!name || !value) {\n        throw new Error(\"Invalid cookie\");\n      }\n\n      cookie = {\n        name,\n        value,\n      };\n    } else {\n      throw new Error(\"Invalid cookie\");\n    }\n\n    parts.slice(1).forEach((part) => {\n      const [name, value] = part.split(\"=\");\n      if (!name.trim()) {\n        throw new Error(\"Invalid cookie\");\n      }\n\n      const nameLow = name.toLowerCase();\n      // eslint-disable-next-line quotes\n      const val = value?.charAt(0) === \"'\" || value?.charAt(0) === '\"' ? value?.slice(1, -1) : value;\n      if (nameLow === \"expires\") {\n        cookie.expires = new Date(val);\n      }\n      if (nameLow === \"path\") {\n        cookie.path = val;\n      }\n      if (nameLow === \"samesite\") {\n        if (val !== \"Lax\" && val !== \"None\" && val !== \"Strict\") {\n          throw new Error(\"Invalid cookie SameSite value\");\n        }\n        cookie.sameSite = val;\n      }\n      if (nameLow === \"secure\") {\n        cookie.secure = true;\n      }\n    });\n\n    return cookie;\n  }\n}\n\nconst jar = new CookieJar();\n\naxios.interceptors.response.use((response) => {\n  if (Array.isArray(response.headers[\"set-cookie\"])) {\n    response.headers[\"set-cookie\"].forEach((c) => {\n      jar.setCookie(new URL(response.config.url!), c);\n    });\n  }\n  return response;\n});\n\naxios.interceptors.request.use(function (config) {\n  const cookies = jar.getCookies(new URL(config.url!));\n\n  if (cookies?.length > 0 && config.headers) {\n    config.headers.cookie = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join(\"; \");\n  }\n  return config;\n});\n\nconst isDefined = <T>(value: T | null | undefined): value is Exclude<T, null | undefined> => {\n    return value !== undefined && value !== null;\n};\n\nconst isString = (value: any): value is string => {\n    return typeof value === 'string';\n};\n\nconst isStringWithValue = (value: any): value is string => {\n    return isString(value) && value !== '';\n};\n\nconst isBlob = (value: any): value is Blob => {\n    return (\n        typeof value === 'object' &&\n        typeof value.type === 'string' &&\n        typeof value.stream === 'function' &&\n        typeof value.arrayBuffer === 'function' &&\n        typeof value.constructor === 'function' &&\n        typeof value.constructor.name === 'string' &&\n        /^(Blob|File)$/.test(value.constructor.name) &&\n        /^(Blob|File)$/.test(value[Symbol.toStringTag])\n    );\n};\n\nconst isFormData = (value: any): value is FormData => {\n    return value instanceof FormData;\n};\n\nconst isSuccess = (status: number): boolean => {\n    return status >= 200 && status < 300;\n};\n\nconst base64 = (str: string): string => { return btoa(str); };\n\nconst getQueryString = (params: Record<string, any>): string => {\n    const qs: string[] = [];\n\n    const append = (key: string, value: any) => {\n        qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n    };\n\n    const process = (key: string, value: any) => {\n        if (isDefined(value)) {\n            if (Array.isArray(value)) {\n                value.forEach(v => {\n                    process(key, v);\n                });\n            } else if (typeof value === 'object') {\n                Object.entries(value).forEach(([k, v]) => {\n                    process(`${key}[${k}]`, v);\n                });\n            } else {\n                append(key, value);\n            }\n        }\n    };\n\n    Object.entries(params).forEach(([key, value]) => {\n        process(key, value);\n    });\n\n    if (qs.length > 0) {\n        return `?${qs.join('&')}`;\n    }\n\n    return '';\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n    const encoder = config.ENCODE_PATH || encodeURI;\n\n    const path = options.url\n        .replace('{api-version}', config.VERSION)\n        .replace(/{(.*?)}/g, (substring: string, group: string) => {\n            if (options.path?.hasOwnProperty(group)) {\n                return encoder(String(options.path[group]));\n            }\n            return substring;\n        });\n\n    const url = `${config.BASE}${path}`;\n    if (options.query) {\n        return `${url}${getQueryString(options.query)}`;\n    }\n    return url;\n};\n\nconst getFormData = (options: ApiRequestOptions): FormData | undefined => {\n    if (options.formData) {\n        const formData = new FormData();\n\n        const process = (key: string, value: any) => {\n            if (isString(value) || isBlob(value)) {\n                formData.append(key, value);\n            } else {\n                formData.append(key, JSON.stringify(value));\n            }\n        };\n\n        Object.entries(options.formData)\n            .filter(([_, value]) => isDefined(value))\n            .forEach(([key, value]) => {\n                if (Array.isArray(value)) {\n                    value.forEach(v => process(key, v));\n                } else {\n                    process(key, value);\n                }\n            });\n\n        return formData;\n    }\n    return undefined;\n};\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\n\nconst resolve = async <T>(options: ApiRequestOptions, resolver?: T | Resolver<T>): Promise<T | undefined> => {\n    if (typeof resolver === 'function') {\n        return (resolver as Resolver<T>)(options);\n    }\n    return resolver;\n};\n\nconst getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise<Record<string, string>> => {\n    const token = await resolve(options, config.TOKEN);\n    const username = await resolve(options, config.USERNAME);\n    const password = await resolve(options, config.PASSWORD);\n    const additionalHeaders = await resolve(options, config.HEADERS);\n    const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {}\n\n    const headers = Object.entries({\n        Accept: 'application/json',\n        ...additionalHeaders,\n        ...options.headers,\n        ...formHeaders,\n    })\n    .filter(([_, value]) => isDefined(value))\n    .reduce((headers, [key, value]) => ({\n        ...headers,\n        [key]: String(value),\n    }), {} as Record<string, string>);\n\n    if (isStringWithValue(token)) {\n        headers['Authorization'] = `Bearer ${token}`;\n    }\n\n    if (isStringWithValue(username) && isStringWithValue(password)) {\n        const credentials = base64(`${username}:${password}`);\n        headers['Authorization'] = `Basic ${credentials}`;\n    }\n\n    if (options.body) {\n        if (options.mediaType) {\n            headers['Content-Type'] = options.mediaType;\n        } else if (isBlob(options.body)) {\n            headers['Content-Type'] = options.body.type || 'application/octet-stream';\n        } else if (isString(options.body)) {\n            headers['Content-Type'] = 'text/plain';\n        } else if (!isFormData(options.body)) {\n            headers['Content-Type'] = 'application/json';\n        }\n    }\n\n    return headers;\n};\n\nconst getRequestBody = (options: ApiRequestOptions): any => {\n    if (options.body) {\n        return options.body;\n    }\n    return undefined;\n};\n\nconst sendRequest = async <T>(\n    config: OpenAPIConfig,\n    options: ApiRequestOptions,\n    url: string,\n    body: any,\n    formData: FormData | undefined,\n    headers: Record<string, string>,\n    onCancel: OnCancel\n): Promise<AxiosResponse<T>> => {\n    const source = axios.CancelToken.source();\n\n    const requestConfig: AxiosRequestConfig = {\n        url,\n        headers,\n        data: body ?? formData,\n        method: options.method,\n        withCredentials: config.WITH_CREDENTIALS,\n        cancelToken: source.token,\n    };\n\n    const isBCS = Object.keys(config.HEADERS || {})\n    .filter((k) => k.toLowerCase() === \"accept\")\n    .map((k) => (config.HEADERS as Record<string, string>)[k])\n    .includes(\"application/x-bcs\");\n  if (isBCS) {\n    requestConfig.responseType = \"arraybuffer\";\n  }\n\n    onCancel(() => source.cancel('The user aborted a request.'));\n\n    try {\n        return await axios.request(requestConfig);\n    } catch (error) {\n        const axiosError = error as AxiosError<T>;\n        if (axiosError.response) {\n            return axiosError.response;\n        }\n        throw error;\n    }\n};\n\nconst getResponseHeader = (response: AxiosResponse<any>, responseHeader?: string): string | undefined => {\n    if (responseHeader) {\n        const content = response.headers[responseHeader];\n        if (isString(content)) {\n            return content;\n        }\n    }\n    return undefined;\n};\n\nconst getResponseBody = (response: AxiosResponse<any>): any => {\n    if (response.status !== 204) {\n        return response.data;\n    }\n    return undefined;\n};\n\nconst catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\n    const errors: Record<number, string> = {\n        400: 'Bad Request',\n        401: 'Unauthorized',\n        403: 'Forbidden',\n        404: 'Not Found',\n        429: 'Too Many Requests',\n        500: 'Internal Server Error',\n        502: 'Bad Gateway',\n        503: 'Service Unavailable',\n        ...options.errors,\n    }\n\n    const error = errors[result.status];\n    if (error) {\n        throw new ApiError(options, result, error);\n    }\n\n    if (!result.ok) {\n        throw new ApiError(options, result, 'Generic Error');\n    }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise<T> => {\n    return new CancelablePromise(async (resolve, reject, onCancel) => {\n        try {\n            const url = getUrl(config, options);\n            const formData = getFormData(options);\n            const body = getRequestBody(options);\n            const headers = await getHeaders(config, options, formData);\n\n            if (!onCancel.isCancelled) {\n                const response = await sendRequest<T>(config, options, url, body, formData, headers, onCancel);\n                const responseBody = getResponseBody(response);\n                const responseHeader = getResponseHeader(response, options.responseHeader);\n\n                const result: ApiResult = {\n                    url,\n                    ok: isSuccess(response.status),\n                    status: response.status,\n                    statusText: response.statusText,\n                    body: responseHeader ?? responseBody,\n                };\n\n                catchErrorCodes(options, result);\n\n                // Attach the response headers to the output. This is a hack to fix\n                // https://github.com/ferdikoomen/openapi-typescript-codegen/issues/1295\n                const out = result.body;\n                try {\n                    out[\"__headers\"] = response.headers;\n                } catch (_) {}\n\n                resolve(out);\n            }\n        } catch (error) {\n            reject(error);\n        }\n    });\n};\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\n\nexport class ApiError extends Error {\n    public readonly url: string;\n    public readonly status: number;\n    public readonly statusText: string;\n    public readonly body: any;\n    public readonly request: ApiRequestOptions;\n\n    constructor(request: ApiRequestOptions, response: ApiResult, message: string) {\n        super(message);\n\n        this.name = 'ApiError';\n        this.url = response.url;\n        this.status = response.status;\n        this.statusText = response.statusText;\n        this.body = response.body;\n        this.request = request;\n    }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\n    constructor(message: string) {\n        super(message);\n        this.name = 'CancelError';\n    }\n\n    public get isCancelled(): boolean {\n        return true;\n    }\n}\n\nexport interface OnCancel {\n    readonly isResolved: boolean;\n    readonly isRejected: boolean;\n    readonly isCancelled: boolean;\n\n    (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise<T> implements Promise<T> {\n    readonly [Symbol.toStringTag]!: string;\n\n    private _isResolved: boolean;\n    private _isRejected: boolean;\n    private _isCancelled: boolean;\n    private readonly _cancelHandlers: (() => void)[];\n    private readonly _promise: Promise<T>;\n    private _resolve?: (value: T | PromiseLike<T>) => void;\n    private _reject?: (reason?: any) => void;\n\n    constructor(\n        executor: (\n            resolve: (value: T | PromiseLike<T>) => void,\n            reject: (reason?: any) => void,\n            onCancel: OnCancel\n        ) => void\n    ) {\n        this._isResolved = false;\n        this._isRejected = false;\n        this._isCancelled = false;\n        this._cancelHandlers = [];\n        this._promise = new Promise<T>((resolve, reject) => {\n            this._resolve = resolve;\n            this._reject = reject;\n\n            const onResolve = (value: T | PromiseLike<T>): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._isResolved = true;\n                this._resolve?.(value);\n            };\n\n            const onReject = (reason?: any): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._isRejected = true;\n                this._reject?.(reason);\n            };\n\n            const onCancel = (cancelHandler: () => void): void => {\n                if (this._isResolved || this._isRejected || this._isCancelled) {\n                    return;\n                }\n                this._cancelHandlers.push(cancelHandler);\n            };\n\n            Object.defineProperty(onCancel, 'isResolved', {\n                get: (): boolean => this._isResolved,\n            });\n\n            Object.defineProperty(onCancel, 'isRejected', {\n                get: (): boolean => this._isRejected,\n            });\n\n            Object.defineProperty(onCancel, 'isCancelled', {\n                get: (): boolean => this._isCancelled,\n            });\n\n            return executor(onResolve, onReject, onCancel as OnCancel);\n        });\n    }\n\n    public then<TResult1 = T, TResult2 = never>(\n        onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n        onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n    ): Promise<TResult1 | TResult2> {\n        return this._promise.then(onFulfilled, onRejected);\n    }\n\n    public catch<TResult = never>(\n        onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n    ): Promise<T | TResult> {\n        return this._promise.catch(onRejected);\n    }\n\n    public finally(onFinally?: (() => void) | null): Promise<T> {\n        return this._promise.finally(onFinally);\n    }\n\n    public cancel(): void {\n        if (this._isResolved || this._isRejected || this._isCancelled) {\n            return;\n        }\n        this._isCancelled = true;\n        if (this._cancelHandlers.length) {\n            try {\n                for (const cancelHandler of this._cancelHandlers) {\n                    cancelHandler();\n                }\n            } catch (error) {\n                console.warn('Cancellation threw an error', error);\n                return;\n            }\n        }\n        this._cancelHandlers.length = 0;\n        this._reject?.(new CancelError('Request aborted'));\n    }\n\n    public get isCancelled(): boolean {\n        return this._isCancelled;\n    }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport { BaseHttpRequest } from './BaseHttpRequest';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\nimport { request as __request } from './request';\n\nexport class AxiosHttpRequest extends BaseHttpRequest {\n\n    constructor(config: OpenAPIConfig) {\n        super(config);\n    }\n\n    /**\n     * Request method\n     * @param options The request options from the service\n     * @returns CancelablePromise<T>\n     * @throws ApiError\n     */\n    public request<T>(options: ApiRequestOptions): CancelablePromise<T> {\n        return __request(this.config, options);\n    }\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { AccountData } from '../models/AccountData';\nimport type { Address } from '../models/Address';\nimport type { IdentifierWrapper } from '../models/IdentifierWrapper';\nimport type { MoveModuleBytecode } from '../models/MoveModuleBytecode';\nimport type { MoveResource } from '../models/MoveResource';\nimport type { MoveStructTag } from '../models/MoveStructTag';\nimport type { StateKeyWrapper } from '../models/StateKeyWrapper';\nimport type { U64 } from '../models/U64';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class AccountsService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get account\n     * Return the authentication key and the sequence number for an account\n     * address. Optionally, a ledger version can be specified. If the ledger\n     * version is not specified in the request, the latest ledger version is used.\n     * @param address Address of account with or without a `0x` prefix\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns AccountData\n     * @throws ApiError\n     */\n    public getAccount(\n        address: Address,\n        ledgerVersion?: U64,\n    ): CancelablePromise<AccountData> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}',\n            path: {\n                'address': address,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n        });\n    }\n\n    /**\n     * Get account resources\n     * Retrieves all account resources for a given account and a specific ledger version.  If the\n     * ledger version is not specified in the request, the latest ledger version is used.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param address Address of account with or without a `0x` prefix\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @param start Cursor specifying where to start for pagination\n     *\n     * This cursor cannot be derived manually client-side. Instead, you must\n     * call this endpoint once without this query parameter specified, and\n     * then use the cursor returned in the X-Aptos-Cursor header in the\n     * response.\n     * @param limit Max number of account resources to retrieve\n     *\n     * If not provided, defaults to default page size.\n     * @returns MoveResource\n     * @throws ApiError\n     */\n    public getAccountResources(\n        address: Address,\n        ledgerVersion?: U64,\n        start?: StateKeyWrapper,\n        limit?: number,\n    ): CancelablePromise<Array<MoveResource>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/resources',\n            path: {\n                'address': address,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n    /**\n     * Get account modules\n     * Retrieves all account modules' bytecode for a given account at a specific ledger version.\n     * If the ledger version is not specified in the request, the latest ledger version is used.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param address Address of account with or without a `0x` prefix\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @param start Cursor specifying where to start for pagination\n     *\n     * This cursor cannot be derived manually client-side. Instead, you must\n     * call this endpoint once without this query parameter specified, and\n     * then use the cursor returned in the X-Aptos-Cursor header in the\n     * response.\n     * @param limit Max number of account modules to retrieve\n     *\n     * If not provided, defaults to default page size.\n     * @returns MoveModuleBytecode\n     * @throws ApiError\n     */\n    public getAccountModules(\n        address: Address,\n        ledgerVersion?: U64,\n        start?: StateKeyWrapper,\n        limit?: number,\n    ): CancelablePromise<Array<MoveModuleBytecode>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/modules',\n            path: {\n                'address': address,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n    /**\n     * Get account resource\n     * Retrieves an individual resource from a given account and at a specific ledger version. If the\n     * ledger version is not specified in the request, the latest ledger version is used.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param address Address of account with or without a `0x` prefix\n     * @param resourceType Name of struct to retrieve e.g. `0x1::account::Account`\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns MoveResource\n     * @throws ApiError\n     */\n    public getAccountResource(\n        address: Address,\n        resourceType: MoveStructTag,\n        ledgerVersion?: U64,\n    ): CancelablePromise<MoveResource> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/resource/{resource_type}',\n            path: {\n                'address': address,\n                'resource_type': resourceType,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n        });\n    }\n\n    /**\n     * Get account module\n     * Retrieves an individual module from a given account and at a specific ledger version. If the\n     * ledger version is not specified in the request, the latest ledger version is used.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param address Address of account with or without a `0x` prefix\n     * @param moduleName Name of module to retrieve e.g. `coin`\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns MoveModuleBytecode\n     * @throws ApiError\n     */\n    public getAccountModule(\n        address: Address,\n        moduleName: IdentifierWrapper,\n        ledgerVersion?: U64,\n    ): CancelablePromise<MoveModuleBytecode> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/module/{module_name}',\n            path: {\n                'address': address,\n                'module_name': moduleName,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Block } from '../models/Block';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class BlocksService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get blocks by height\n     * This endpoint allows you to get the transactions in a block\n     * and the corresponding block information.\n     *\n     * Transactions are limited by max default transactions size.  If not all transactions\n     * are present, the user will need to query for the rest of the transactions via the\n     * get transactions API.\n     *\n     * If the block is pruned, it will return a 410\n     * @param blockHeight Block height to lookup.  Starts at 0\n     * @param withTransactions If set to true, include all transactions in the block\n     *\n     * If not provided, no transactions will be retrieved\n     * @returns Block\n     * @throws ApiError\n     */\n    public getBlockByHeight(\n        blockHeight: number,\n        withTransactions?: boolean,\n    ): CancelablePromise<Block> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/blocks/by_height/{block_height}',\n            path: {\n                'block_height': blockHeight,\n            },\n            query: {\n                'with_transactions': withTransactions,\n            },\n        });\n    }\n\n    /**\n     * Get blocks by version\n     * This endpoint allows you to get the transactions in a block\n     * and the corresponding block information given a version in the block.\n     *\n     * Transactions are limited by max default transactions size.  If not all transactions\n     * are present, the user will need to query for the rest of the transactions via the\n     * get transactions API.\n     *\n     * If the block has been pruned, it will return a 410\n     * @param version Ledger version to lookup block information for.\n     * @param withTransactions If set to true, include all transactions in the block\n     *\n     * If not provided, no transactions will be retrieved\n     * @returns Block\n     * @throws ApiError\n     */\n    public getBlockByVersion(\n        version: number,\n        withTransactions?: boolean,\n    ): CancelablePromise<Block> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/blocks/by_version/{version}',\n            path: {\n                'version': version,\n            },\n            query: {\n                'with_transactions': withTransactions,\n            },\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Address } from '../models/Address';\nimport type { IdentifierWrapper } from '../models/IdentifierWrapper';\nimport type { MoveStructTag } from '../models/MoveStructTag';\nimport type { U64 } from '../models/U64';\nimport type { VersionedEvent } from '../models/VersionedEvent';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class EventsService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get events by creation number\n     * Event types are globally identifiable by an account `address` and\n     * monotonically increasing `creation_number`, one per event type emitted\n     * to the given account. This API returns events corresponding to that\n     * that event type.\n     * @param address Hex-encoded 32 byte Aptos account, with or without a `0x` prefix, for\n     * which events are queried. This refers to the account that events were\n     * emitted to, not the account hosting the move module that emits that\n     * event type.\n     * @param creationNumber Creation number corresponding to the event stream originating\n     * from the given account.\n     * @param start Starting sequence number of events.\n     *\n     * If unspecified, by default will retrieve the most recent events\n     * @param limit Max number of events to retrieve.\n     *\n     * If unspecified, defaults to default page size\n     * @returns VersionedEvent\n     * @throws ApiError\n     */\n    public getEventsByCreationNumber(\n        address: Address,\n        creationNumber: U64,\n        start?: U64,\n        limit?: number,\n    ): CancelablePromise<Array<VersionedEvent>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/events/{creation_number}',\n            path: {\n                'address': address,\n                'creation_number': creationNumber,\n            },\n            query: {\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n    /**\n     * Get events by event handle\n     * This API uses the given account `address`, `eventHandle`, and `fieldName`\n     * to build a key that can globally identify an event types. It then uses this\n     * key to return events emitted to the given account matching that event type.\n     * @param address Hex-encoded 32 byte Aptos account, with or without a `0x` prefix, for\n     * which events are queried. This refers to the account that events were\n     * emitted to, not the account hosting the move module that emits that\n     * event type.\n     * @param eventHandle Name of struct to lookup event handle e.g. `0x1::account::Account`\n     * @param fieldName Name of field to lookup event handle e.g. `withdraw_events`\n     * @param start Starting sequence number of events.\n     *\n     * If unspecified, by default will retrieve the most recent\n     * @param limit Max number of events to retrieve.\n     *\n     * If unspecified, defaults to default page size\n     * @returns VersionedEvent\n     * @throws ApiError\n     */\n    public getEventsByEventHandle(\n        address: Address,\n        eventHandle: MoveStructTag,\n        fieldName: IdentifierWrapper,\n        start?: U64,\n        limit?: number,\n    ): CancelablePromise<Array<VersionedEvent>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/events/{event_handle}/{field_name}',\n            path: {\n                'address': address,\n                'event_handle': eventHandle,\n                'field_name': fieldName,\n            },\n            query: {\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { HealthCheckSuccess } from '../models/HealthCheckSuccess';\nimport type { IndexResponse } from '../models/IndexResponse';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class GeneralService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Show OpenAPI explorer\n     * Provides a UI that you can use to explore the API. You can also\n     * retrieve the API directly at `/spec.yaml` and `/spec.json`.\n     * @returns string\n     * @throws ApiError\n     */\n    public spec(): CancelablePromise<string> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/spec',\n        });\n    }\n\n    /**\n     * Check basic node health\n     * By default this endpoint just checks that it can get the latest ledger\n     * info and then returns 200.\n     *\n     * If the duration_secs param is provided, this endpoint will return a\n     * 200 if the following condition is true:\n     *\n     * `server_latest_ledger_info_timestamp >= server_current_time_timestamp - duration_secs`\n     * @param durationSecs Threshold in seconds that the server can be behind to be considered healthy\n     *\n     * If not provided, the healthcheck will always succeed\n     * @returns HealthCheckSuccess\n     * @throws ApiError\n     */\n    public healthy(\n        durationSecs?: number,\n    ): CancelablePromise<HealthCheckSuccess> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/-/healthy',\n            query: {\n                'duration_secs': durationSecs,\n            },\n        });\n    }\n\n    /**\n     * Get ledger info\n     * Get the latest ledger information, including data such as chain ID,\n     * role type, ledger versions, epoch, etc.\n     * @returns IndexResponse\n     * @throws ApiError\n     */\n    public getLedgerInfo(): CancelablePromise<IndexResponse> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/',\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Address } from '../models/Address';\nimport type { MoveValue } from '../models/MoveValue';\nimport type { RawTableItemRequest } from '../models/RawTableItemRequest';\nimport type { TableItemRequest } from '../models/TableItemRequest';\nimport type { U64 } from '../models/U64';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class TablesService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get table item\n     * Get a table item at a specific ledger version from the table identified by {table_handle}\n     * in the path and the \"key\" (TableItemRequest) provided in the request body.\n     *\n     * This is a POST endpoint because the \"key\" for requesting a specific\n     * table item (TableItemRequest) could be quite complex, as each of its\n     * fields could themselves be composed of other structs. This makes it\n     * impractical to express using query params, meaning GET isn't an option.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param tableHandle Table handle hex encoded 32-byte string\n     * @param requestBody\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns MoveValue\n     * @throws ApiError\n     */\n    public getTableItem(\n        tableHandle: Address,\n        requestBody: TableItemRequest,\n        ledgerVersion?: U64,\n    ): CancelablePromise<MoveValue> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/tables/{table_handle}/item',\n            path: {\n                'table_handle': tableHandle,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n    /**\n     * Get raw table item\n     * Get a table item at a specific ledger version from the table identified by {table_handle}\n     * in the path and the \"key\" (RawTableItemRequest) provided in the request body.\n     *\n     * The `get_raw_table_item` requires only a serialized key comparing to the full move type information\n     * comparing to the `get_table_item` api, and can only return the query in the bcs format.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param tableHandle Table handle hex encoded 32-byte string\n     * @param requestBody\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns MoveValue\n     * @throws ApiError\n     */\n    public getRawTableItem(\n        tableHandle: Address,\n        requestBody: RawTableItemRequest,\n        ledgerVersion?: U64,\n    ): CancelablePromise<MoveValue> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/tables/{table_handle}/raw_item',\n            path: {\n                'table_handle': tableHandle,\n            },\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { Address } from '../models/Address';\nimport type { EncodeSubmissionRequest } from '../models/EncodeSubmissionRequest';\nimport type { GasEstimation } from '../models/GasEstimation';\nimport type { HashValue } from '../models/HashValue';\nimport type { HexEncodedBytes } from '../models/HexEncodedBytes';\nimport type { PendingTransaction } from '../models/PendingTransaction';\nimport type { SubmitTransactionRequest } from '../models/SubmitTransactionRequest';\nimport type { Transaction } from '../models/Transaction';\nimport type { TransactionsBatchSubmissionResult } from '../models/TransactionsBatchSubmissionResult';\nimport type { U64 } from '../models/U64';\nimport type { UserTransaction } from '../models/UserTransaction';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class TransactionsService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Get transactions\n     * Retrieve on-chain committed transactions. The page size and start ledger version\n     * can be provided to get a specific sequence of transactions.\n     *\n     * If the version has been pruned, then a 410 will be returned.\n     *\n     * To retrieve a pending transaction, use /transactions/by_hash.\n     * @param start Ledger version to start list of transactions\n     *\n     * If not provided, defaults to showing the latest transactions\n     * @param limit Max number of transactions to retrieve.\n     *\n     * If not provided, defaults to default page size\n     * @returns Transaction\n     * @throws ApiError\n     */\n    public getTransactions(\n        start?: U64,\n        limit?: number,\n    ): CancelablePromise<Array<Transaction>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/transactions',\n            query: {\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n    /**\n     * Submit transaction\n     * This endpoint accepts transaction submissions in two formats.\n     *\n     * To submit a transaction as JSON, you must submit a SubmitTransactionRequest.\n     * To build this request, do the following:\n     *\n     * 1. Encode the transaction as BCS. If you are using a language that has\n     * native BCS support, make sure of that library. If not, you may take\n     * advantage of /transactions/encode_submission. When using this\n     * endpoint, make sure you trust the node you're talking to, as it is\n     * possible they could manipulate your request.\n     * 2. Sign the encoded transaction and use it to create a TransactionSignature.\n     * 3. Submit the request. Make sure to use the \"application/json\" Content-Type.\n     *\n     * To submit a transaction as BCS, you must submit a SignedTransaction\n     * encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.\n     * Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.\n     * @param requestBody\n     * @returns PendingTransaction\n     * @throws ApiError\n     */\n    public submitTransaction(\n        requestBody: SubmitTransactionRequest,\n    ): CancelablePromise<PendingTransaction> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/transactions',\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n    /**\n     * Get transaction by hash\n     * Look up a transaction by its hash. This is the same hash that is returned\n     * by the API when submitting a transaction (see PendingTransaction).\n     *\n     * When given a transaction hash, the server first looks for the transaction\n     * in storage (on-chain, committed). If no on-chain transaction is found, it\n     * looks the transaction up by hash in the mempool (pending, not yet committed).\n     *\n     * To create a transaction hash by yourself, do the following:\n     * 1. Hash message bytes: \"RawTransaction\" bytes + BCS bytes of [Transaction](https://aptos-labs.github.io/aptos-core/aptos_types/transaction/enum.Transaction.html).\n     * 2. Apply hash algorithm `SHA3-256` to the hash message bytes.\n     * 3. Hex-encode the hash bytes with `0x` prefix.\n     * @param txnHash Hash of transaction to retrieve\n     * @returns Transaction\n     * @throws ApiError\n     */\n    public getTransactionByHash(\n        txnHash: HashValue,\n    ): CancelablePromise<Transaction> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/transactions/by_hash/{txn_hash}',\n            path: {\n                'txn_hash': txnHash,\n            },\n        });\n    }\n\n    /**\n     * Get transaction by version\n     * Retrieves a transaction by a given version. If the version has been\n     * pruned, a 410 will be returned.\n     * @param txnVersion Version of transaction to retrieve\n     * @returns Transaction\n     * @throws ApiError\n     */\n    public getTransactionByVersion(\n        txnVersion: U64,\n    ): CancelablePromise<Transaction> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/transactions/by_version/{txn_version}',\n            path: {\n                'txn_version': txnVersion,\n            },\n        });\n    }\n\n    /**\n     * Get account transactions\n     * Retrieves on-chain committed transactions from an account. If the start\n     * version is too far in the past, a 410 will be returned.\n     *\n     * If no start version is given, it will start at version 0.\n     *\n     * To retrieve a pending transaction, use /transactions/by_hash.\n     * @param address Address of account with or without a `0x` prefix\n     * @param start Account sequence number to start list of transactions\n     *\n     * If not provided, defaults to showing the latest transactions\n     * @param limit Max number of transactions to retrieve.\n     *\n     * If not provided, defaults to default page size\n     * @returns Transaction\n     * @throws ApiError\n     */\n    public getAccountTransactions(\n        address: Address,\n        start?: U64,\n        limit?: number,\n    ): CancelablePromise<Array<Transaction>> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/accounts/{address}/transactions',\n            path: {\n                'address': address,\n            },\n            query: {\n                'start': start,\n                'limit': limit,\n            },\n        });\n    }\n\n    /**\n     * Submit batch transactions\n     * This allows you to submit multiple transactions.  The response has three outcomes:\n     *\n     * 1. All transactions succeed, and it will return a 202\n     * 2. Some transactions succeed, and it will return the failed transactions and a 206\n     * 3. No transactions succeed, and it will also return the failed transactions and a 206\n     *\n     * To submit a transaction as JSON, you must submit a SubmitTransactionRequest.\n     * To build this request, do the following:\n     *\n     * 1. Encode the transaction as BCS. If you are using a language that has\n     * native BCS support, make sure to use that library. If not, you may take\n     * advantage of /transactions/encode_submission. When using this\n     * endpoint, make sure you trust the node you're talking to, as it is\n     * possible they could manipulate your request.\n     * 2. Sign the encoded transaction and use it to create a TransactionSignature.\n     * 3. Submit the request. Make sure to use the \"application/json\" Content-Type.\n     *\n     * To submit a transaction as BCS, you must submit a SignedTransaction\n     * encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.\n     * Make sure to use the `application/x.aptos.signed_transaction+bcs` Content-Type.\n     * @param requestBody\n     * @returns TransactionsBatchSubmissionResult\n     * @throws ApiError\n     */\n    public submitBatchTransactions(\n        requestBody: Array<SubmitTransactionRequest>,\n    ): CancelablePromise<TransactionsBatchSubmissionResult> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/transactions/batch',\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n    /**\n     * Simulate transaction\n     * The output of the transaction will have the exact transaction outputs and events that running\n     * an actual signed transaction would have.  However, it will not have the associated state\n     * hashes, as they are not updated in storage.  This can be used to estimate the maximum gas\n     * units for a submitted transaction.\n     *\n     * To use this, you must:\n     * - Create a SignedTransaction with a zero-padded signature.\n     * - Submit a SubmitTransactionRequest containing a UserTransactionRequest containing that signature.\n     *\n     * To use this endpoint with BCS, you must submit a SignedTransaction\n     * encoded as BCS. See SignedTransaction in types/src/transaction/mod.rs.\n     * @param requestBody\n     * @param estimateMaxGasAmount If set to true, the max gas value in the transaction will be ignored\n     * and the maximum possible gas will be used\n     * @param estimateGasUnitPrice If set to true, the gas unit price in the transaction will be ignored\n     * and the estimated value will be used\n     * @param estimatePrioritizedGasUnitPrice If set to true, the transaction will use a higher price than the original\n     * estimate.\n     * @returns UserTransaction\n     * @throws ApiError\n     */\n    public simulateTransaction(\n        requestBody: SubmitTransactionRequest,\n        estimateMaxGasAmount?: boolean,\n        estimateGasUnitPrice?: boolean,\n        estimatePrioritizedGasUnitPrice?: boolean,\n    ): CancelablePromise<Array<UserTransaction>> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/transactions/simulate',\n            query: {\n                'estimate_max_gas_amount': estimateMaxGasAmount,\n                'estimate_gas_unit_price': estimateGasUnitPrice,\n                'estimate_prioritized_gas_unit_price': estimatePrioritizedGasUnitPrice,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n    /**\n     * Encode submission\n     * This endpoint accepts an EncodeSubmissionRequest, which internally is a\n     * UserTransactionRequestInner (and optionally secondary signers) encoded\n     * as JSON, validates the request format, and then returns that request\n     * encoded in BCS. The client can then use this to create a transaction\n     * signature to be used in a SubmitTransactionRequest, which it then\n     * passes to the /transactions POST endpoint.\n     *\n     * To be clear, this endpoint makes it possible to submit transaction\n     * requests to the API from languages that do not have library support for\n     * BCS. If you are using an SDK that has BCS support, such as the official\n     * Rust, TypeScript, or Python SDKs, you do not need to use this endpoint.\n     *\n     * To sign a message using the response from this endpoint:\n     * - Decode the hex encoded string in the response to bytes.\n     * - Sign the bytes to create the signature.\n     * - Use that as the signature field in something like Ed25519Signature, which you then use to build a TransactionSignature.\n     * @param requestBody\n     * @returns HexEncodedBytes\n     * @throws ApiError\n     */\n    public encodeSubmission(\n        requestBody: EncodeSubmissionRequest,\n    ): CancelablePromise<HexEncodedBytes> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/transactions/encode_submission',\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n    /**\n     * Estimate gas price\n     * Gives an estimate of the gas unit price required to get a transaction on chain in a\n     * reasonable amount of time. The gas unit price is the amount that each transaction commits to\n     * pay for each unit of gas consumed in executing the transaction. The estimate is based on\n     * recent history: it gives the minimum gas that would have been required to get into recent\n     * blocks, for blocks that were full. (When blocks are not full, the estimate will match the\n     * minimum gas unit price.)\n     *\n     * The estimation is given in three values: de-prioritized (low), regular, and prioritized\n     * (aggressive). Using a more aggressive value increases the likelihood that the transaction\n     * will make it into the next block; more aggressive values are computed with a larger history\n     * and higher percentile statistics. More details are in AIP-34.\n     * @returns GasEstimation\n     * @throws ApiError\n     */\n    public estimateGasPrice(): CancelablePromise<GasEstimation> {\n        return this.httpRequest.request({\n            method: 'GET',\n            url: '/estimate_gas_price',\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { MoveValue } from '../models/MoveValue';\nimport type { U64 } from '../models/U64';\nimport type { ViewRequest } from '../models/ViewRequest';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class ViewService {\n\n    constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n    /**\n     * Execute view function of a module\n     * Execute the Move function with the given parameters and return its execution result.\n     *\n     * The Aptos nodes prune account state history, via a configurable time window.\n     * If the requested ledger version has been pruned, the server responds with a 410.\n     * @param requestBody\n     * @param ledgerVersion Ledger version to get state of account\n     *\n     * If not provided, it will be the latest version\n     * @returns MoveValue\n     * @throws ApiError\n     */\n    public view(\n        requestBody: ViewRequest,\n        ledgerVersion?: U64,\n    ): CancelablePromise<Array<MoveValue>> {\n        return this.httpRequest.request({\n            method: 'POST',\n            url: '/view',\n            query: {\n                'ledger_version': ledgerVersion,\n            },\n            body: requestBody,\n            mediaType: 'application/json',\n        });\n    }\n\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseHttpRequest } from './core/BaseHttpRequest';\nimport type { OpenAPIConfig } from './core/OpenAPI';\nimport { AxiosHttpRequest } from './core/AxiosHttpRequest';\n\nimport { AccountsService } from './services/AccountsService';\nimport { BlocksService } from './services/BlocksService';\nimport { EventsService } from './services/EventsService';\nimport { GeneralService } from './services/GeneralService';\nimport { TablesService } from './services/TablesService';\nimport { TransactionsService } from './services/TransactionsService';\nimport { ViewService } from './services/ViewService';\n\ntype HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;\n\nexport class AptosGeneratedClient {\n\n    public readonly accounts: AccountsService;\n    public readonly blocks: BlocksService;\n    public readonly events: EventsService;\n    public readonly general: GeneralService;\n    public readonly tables: TablesService;\n    public readonly transactions: TransactionsService;\n    public readonly view: ViewService;\n\n    public readonly request: BaseHttpRequest;\n\n    constructor(config?: Partial<OpenAPIConfig>, HttpRequest: HttpRequestConstructor = AxiosHttpRequest) {\n        this.request = new HttpRequest({\n            BASE: config?.BASE ?? '/v1',\n            VERSION: config?.VERSION ?? '1.2.0',\n            WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,\n            CREDENTIALS: config?.CREDENTIALS ?? 'include',\n            TOKEN: config?.TOKEN,\n            USERNAME: config?.USERNAME,\n            PASSWORD: config?.PASSWORD,\n            HEADERS: config?.HEADERS,\n            ENCODE_PATH: config?.ENCODE_PATH,\n        });\n\n        this.accounts = new AccountsService(this.request);\n        this.blocks = new BlocksService(this.request);\n        this.events = new EventsService(this.request);\n        this.general = new GeneralService(this.request);\n        this.tables = new TablesService(this.request);\n        this.transactions = new TransactionsService(this.request);\n        this.view = new ViewService(this.request);\n    }\n}\n\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\ntype Headers = Record<string, string>;\n\nexport type OpenAPIConfig = {\n    BASE: string;\n    VERSION: string;\n    WITH_CREDENTIALS: boolean;\n    CREDENTIALS: 'include' | 'omit' | 'same-origin';\n    TOKEN?: string | Resolver<string>;\n    USERNAME?: string | Resolver<string>;\n    PASSWORD?: string | Resolver<string>;\n    HEADERS?: Headers | Resolver<Headers>;\n    ENCODE_PATH?: (path: string) => string;\n};\n\nexport const OpenAPI: OpenAPIConfig = {\n    BASE: '/v1',\n    VERSION: '1.2.0',\n    WITH_CREDENTIALS: false,\n    CREDENTIALS: 'include',\n    TOKEN: undefined,\n    USERNAME: undefined,\n    PASSWORD: undefined,\n    HEADERS: undefined,\n    ENCODE_PATH: undefined,\n};\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * These codes provide more granular error information beyond just the HTTP\n * status code of the response.\n */\nexport enum AptosErrorCode {\n    ACCOUNT_NOT_FOUND = 'account_not_found',\n    RESOURCE_NOT_FOUND = 'resource_not_found',\n    MODULE_NOT_FOUND = 'module_not_found',\n    STRUCT_FIELD_NOT_FOUND = 'struct_field_not_found',\n    VERSION_NOT_FOUND = 'version_not_found',\n    TRANSACTION_NOT_FOUND = 'transaction_not_found',\n    TABLE_ITEM_NOT_FOUND = 'table_item_not_found',\n    BLOCK_NOT_FOUND = 'block_not_found',\n    STATE_VALUE_NOT_FOUND = 'state_value_not_found',\n    VERSION_PRUNED = 'version_pruned',\n    BLOCK_PRUNED = 'block_pruned',\n    INVALID_INPUT = 'invalid_input',\n    INVALID_TRANSACTION_UPDATE = 'invalid_transaction_update',\n    SEQUENCE_NUMBER_TOO_OLD = 'sequence_number_too_old',\n    VM_ERROR = 'vm_error',\n    HEALTH_CHECK_FAILED = 'health_check_failed',\n    MEMPOOL_IS_FULL = 'mempool_is_full',\n    INTERNAL_ERROR = 'internal_error',\n    WEB_FRAMEWORK_ERROR = 'web_framework_error',\n    BCS_NOT_SUPPORTED = 'bcs_not_supported',\n    API_DISABLED = 'api_disabled',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\n/**\n * Move function visibility\n */\nexport enum MoveFunctionVisibility {\n    PRIVATE = 'private',\n    PUBLIC = 'public',\n    FRIEND = 'friend',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\n\nexport enum RoleType {\n    VALIDATOR = 'validator',\n    FULL_NODE = 'full_node',\n}\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AccountData = {\n    description: `Account data\n\n    A simplified version of the onchain Account resource`,\n    properties: {\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        authentication_key: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AccountSignature = {\n    type: 'one-of',\n    description: `Account signature scheme\n\n    The account signature scheme allows you to have two types of accounts:\n\n    1. A single Ed25519 key account, one private key\n    2. A k-of-n multi-Ed25519 key account, multiple private keys, such that k-of-n must sign a transaction.`,\n    contains: [{\n        type: 'AccountSignature_Ed25519Signature',\n    }, {\n        type: 'AccountSignature_MultiEd25519Signature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AccountSignature_Ed25519Signature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'Ed25519Signature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AccountSignature_MultiEd25519Signature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'MultiEd25519Signature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Address = {\n    type: 'string',\n    description: `A hex encoded 32 byte Aptos account address.\n\n    This is represented in a string as a 64 character hex string, sometimes\n    shortened by stripping leading 0s, and adding a 0x.\n\n    For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1.\n    `,\n    format: 'hex',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AptosError = {\n    description: `This is the generic struct we use for all API errors, it contains a string\n    message and an Aptos API specific error code.`,\n    properties: {\n        message: {\n            type: 'string',\n            description: `A message describing the error`,\n            isRequired: true,\n        },\n        error_code: {\n            type: 'AptosErrorCode',\n            isRequired: true,\n        },\n        vm_error_code: {\n            type: 'number',\n            description: `A code providing VM error details when submitting transactions to the VM`,\n            format: 'uint64',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $AptosErrorCode = {\n    type: 'Enum',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Block = {\n    description: `A Block with or without transactions\n\n    This contains the information about a transactions along with\n    associated transactions if requested`,\n    properties: {\n        block_height: {\n            type: 'U64',\n            isRequired: true,\n        },\n        block_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        block_timestamp: {\n            type: 'U64',\n            isRequired: true,\n        },\n        first_version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        last_version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        transactions: {\n            type: 'array',\n            contains: {\n                type: 'Transaction',\n            },\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $BlockMetadataTransaction = {\n    description: `A block metadata transaction\n\n    This signifies the beginning of a block, and contains information\n    about the specific block`,\n    properties: {\n        version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_change_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        event_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_checkpoint_hash: {\n            type: 'HashValue',\n        },\n        gas_used: {\n            type: 'U64',\n            isRequired: true,\n        },\n        success: {\n            type: 'boolean',\n            description: `Whether the transaction was successful`,\n            isRequired: true,\n        },\n        vm_status: {\n            type: 'string',\n            description: `The VM status of the transaction, can tell useful information in a failure`,\n            isRequired: true,\n        },\n        accumulator_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        changes: {\n            type: 'array',\n            contains: {\n                type: 'WriteSetChange',\n            },\n            isRequired: true,\n        },\n        id: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        epoch: {\n            type: 'U64',\n            isRequired: true,\n        },\n        round: {\n            type: 'U64',\n            isRequired: true,\n        },\n        events: {\n            type: 'array',\n            contains: {\n                type: 'Event',\n            },\n            isRequired: true,\n        },\n        previous_block_votes_bitvec: {\n            type: 'array',\n            contains: {\n                type: 'number',\n                format: 'uint8',\n            },\n            isRequired: true,\n        },\n        proposer: {\n            type: 'Address',\n            isRequired: true,\n        },\n        failed_proposer_indices: {\n            type: 'array',\n            contains: {\n                type: 'number',\n                format: 'uint32',\n            },\n            isRequired: true,\n        },\n        timestamp: {\n            type: 'U64',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DecodedTableData = {\n    description: `Decoded table data`,\n    properties: {\n        key: {\n            description: `Key of table in JSON`,\n            properties: {\n            },\n            isRequired: true,\n        },\n        key_type: {\n            type: 'string',\n            description: `Type of key`,\n            isRequired: true,\n        },\n        value: {\n            description: `Value of table in JSON`,\n            properties: {\n            },\n            isRequired: true,\n        },\n        value_type: {\n            type: 'string',\n            description: `Type of value`,\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DeletedTableData = {\n    description: `Deleted table data`,\n    properties: {\n        key: {\n            description: `Deleted key`,\n            properties: {\n            },\n            isRequired: true,\n        },\n        key_type: {\n            type: 'string',\n            description: `Deleted key type`,\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DeleteModule = {\n    description: `Delete a module`,\n    properties: {\n        address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        state_key_hash: {\n            type: 'string',\n            description: `State key hash`,\n            isRequired: true,\n        },\n        module: {\n            type: 'MoveModuleId',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DeleteResource = {\n    description: `Delete a resource`,\n    properties: {\n        address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        state_key_hash: {\n            type: 'string',\n            description: `State key hash`,\n            isRequired: true,\n        },\n        resource: {\n            type: 'MoveStructTag',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DeleteTableItem = {\n    description: `Delete a table item`,\n    properties: {\n        state_key_hash: {\n            type: 'string',\n            isRequired: true,\n        },\n        handle: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        key: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        data: {\n            type: 'DeletedTableData',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $DirectWriteSet = {\n    properties: {\n        changes: {\n            type: 'array',\n            contains: {\n                type: 'WriteSetChange',\n            },\n            isRequired: true,\n        },\n        events: {\n            type: 'array',\n            contains: {\n                type: 'Event',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Ed25519Signature = {\n    description: `A single Ed25519 signature`,\n    properties: {\n        public_key: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        signature: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $EncodeSubmissionRequest = {\n    description: `Request to encode a submission`,\n    properties: {\n        sender: {\n            type: 'Address',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        max_gas_amount: {\n            type: 'U64',\n            isRequired: true,\n        },\n        gas_unit_price: {\n            type: 'U64',\n            isRequired: true,\n        },\n        expiration_timestamp_secs: {\n            type: 'U64',\n            isRequired: true,\n        },\n        payload: {\n            type: 'TransactionPayload',\n            isRequired: true,\n        },\n        secondary_signers: {\n            type: 'array',\n            contains: {\n                type: 'Address',\n            },\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $EntryFunctionId = {\n    type: 'string',\n    description: `Entry function id is string representation of a entry function defined on-chain.\n\n    Format: \\`{address}::{module name}::{function name}\\`\n\n    Both \\`module name\\` and \\`function name\\` are case-sensitive.\n    `,\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $EntryFunctionPayload = {\n    description: `Payload which runs a single entry function`,\n    properties: {\n        function: {\n            type: 'EntryFunctionId',\n            isRequired: true,\n        },\n        type_arguments: {\n            type: 'array',\n            contains: {\n                type: 'MoveType',\n            },\n            isRequired: true,\n        },\n        arguments: {\n            type: 'array',\n            contains: {\n                properties: {\n                },\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Event = {\n    description: `An event from a transaction`,\n    properties: {\n        guid: {\n            type: 'EventGuid',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        type: {\n            type: 'MoveType',\n            isRequired: true,\n        },\n        data: {\n            description: `The JSON representation of the event`,\n            properties: {\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $EventGuid = {\n    properties: {\n        creation_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        account_address: {\n            type: 'Address',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $FeePayerSignature = {\n    description: `Fee payer signature for fee payer transactions\n\n    This allows you to have transactions across multiple accounts and with a fee payer`,\n    properties: {\n        sender: {\n            type: 'AccountSignature',\n            isRequired: true,\n        },\n        secondary_signer_addresses: {\n            type: 'array',\n            contains: {\n                type: 'Address',\n            },\n            isRequired: true,\n        },\n        secondary_signers: {\n            type: 'array',\n            contains: {\n                type: 'AccountSignature',\n            },\n            isRequired: true,\n        },\n        fee_payer_address: {\n            type: 'all-of',\n            contains: [{\n                type: 'Address',\n            }],\n            isRequired: true,\n        },\n        fee_payer_signer: {\n            type: 'all-of',\n            contains: [{\n                type: 'AccountSignature',\n            }],\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $GasEstimation = {\n    description: `Struct holding the outputs of the estimate gas API`,\n    properties: {\n        deprioritized_gas_estimate: {\n            type: 'number',\n            description: `The deprioritized estimate for the gas unit price`,\n            format: 'uint64',\n        },\n        gas_estimate: {\n            type: 'number',\n            description: `The current estimate for the gas unit price`,\n            isRequired: true,\n            format: 'uint64',\n        },\n        prioritized_gas_estimate: {\n            type: 'number',\n            description: `The prioritized estimate for the gas unit price`,\n            format: 'uint64',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $GenesisPayload = {\n    type: 'one-of',\n    description: `The writeset payload of the Genesis transaction`,\n    contains: [{\n        type: 'GenesisPayload_WriteSetPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $GenesisPayload_WriteSetPayload = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'WriteSetPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $GenesisTransaction = {\n    description: `The genesis transaction\n\n    This only occurs at the genesis transaction (version 0)`,\n    properties: {\n        version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_change_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        event_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_checkpoint_hash: {\n            type: 'HashValue',\n        },\n        gas_used: {\n            type: 'U64',\n            isRequired: true,\n        },\n        success: {\n            type: 'boolean',\n            description: `Whether the transaction was successful`,\n            isRequired: true,\n        },\n        vm_status: {\n            type: 'string',\n            description: `The VM status of the transaction, can tell useful information in a failure`,\n            isRequired: true,\n        },\n        accumulator_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        changes: {\n            type: 'array',\n            contains: {\n                type: 'WriteSetChange',\n            },\n            isRequired: true,\n        },\n        payload: {\n            type: 'GenesisPayload',\n            isRequired: true,\n        },\n        events: {\n            type: 'array',\n            contains: {\n                type: 'Event',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $HashValue = {\n    type: 'string',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $HealthCheckSuccess = {\n    description: `Representation of a successful healthcheck`,\n    properties: {\n        message: {\n            type: 'string',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $HexEncodedBytes = {\n    type: 'string',\n    description: `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    format: 'hex',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $IdentifierWrapper = {\n    type: 'string',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $IndexResponse = {\n    description: `The struct holding all data returned to the client by the\n    index endpoint (i.e., GET \"/\").  Only for responding in JSON`,\n    properties: {\n        chain_id: {\n            type: 'number',\n            description: `Chain ID of the current chain`,\n            isRequired: true,\n            format: 'uint8',\n        },\n        epoch: {\n            type: 'U64',\n            isRequired: true,\n        },\n        ledger_version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        oldest_ledger_version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        ledger_timestamp: {\n            type: 'U64',\n            isRequired: true,\n        },\n        node_role: {\n            type: 'RoleType',\n            isRequired: true,\n        },\n        oldest_block_height: {\n            type: 'U64',\n            isRequired: true,\n        },\n        block_height: {\n            type: 'U64',\n            isRequired: true,\n        },\n        git_hash: {\n            type: 'string',\n            description: `Git hash of the build of the API endpoint.  Can be used to determine the exact\n            software version used by the API endpoint.`,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $ModuleBundlePayload = {\n    properties: {\n        modules: {\n            type: 'array',\n            contains: {\n                type: 'MoveModuleBytecode',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveAbility = {\n    type: 'string',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveFunction = {\n    description: `Move function`,\n    properties: {\n        name: {\n            type: 'IdentifierWrapper',\n            isRequired: true,\n        },\n        visibility: {\n            type: 'MoveFunctionVisibility',\n            isRequired: true,\n        },\n        is_entry: {\n            type: 'boolean',\n            description: `Whether the function can be called as an entry function directly in a transaction`,\n            isRequired: true,\n        },\n        is_view: {\n            type: 'boolean',\n            description: `Whether the function is a view function or not`,\n            isRequired: true,\n        },\n        generic_type_params: {\n            type: 'array',\n            contains: {\n                type: 'MoveFunctionGenericTypeParam',\n            },\n            isRequired: true,\n        },\n        params: {\n            type: 'array',\n            contains: {\n                type: 'MoveType',\n            },\n            isRequired: true,\n        },\n        return: {\n            type: 'array',\n            contains: {\n                type: 'MoveType',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveFunctionGenericTypeParam = {\n    description: `Move function generic type param`,\n    properties: {\n        constraints: {\n            type: 'array',\n            contains: {\n                type: 'MoveAbility',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveFunctionVisibility = {\n    type: 'Enum',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveModule = {\n    description: `A Move module`,\n    properties: {\n        address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        name: {\n            type: 'IdentifierWrapper',\n            isRequired: true,\n        },\n        friends: {\n            type: 'array',\n            contains: {\n                type: 'MoveModuleId',\n            },\n            isRequired: true,\n        },\n        exposed_functions: {\n            type: 'array',\n            contains: {\n                type: 'MoveFunction',\n            },\n            isRequired: true,\n        },\n        structs: {\n            type: 'array',\n            contains: {\n                type: 'MoveStruct',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveModuleBytecode = {\n    description: `Move module bytecode along with it's ABI`,\n    properties: {\n        bytecode: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        abi: {\n            type: 'MoveModule',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveModuleId = {\n    type: 'string',\n    description: `Move module id is a string representation of Move module.\n\n    Format: \\`{address}::{module name}\\`\n\n    \\`address\\` should be hex-encoded 32 byte account address that is prefixed with \\`0x\\`.\n\n    Module name is case-sensitive.\n    `,\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveResource = {\n    description: `A parsed Move resource`,\n    properties: {\n        type: {\n            type: 'MoveStructTag',\n            isRequired: true,\n        },\n        data: {\n            type: 'MoveStructValue',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveScriptBytecode = {\n    description: `Move script bytecode`,\n    properties: {\n        bytecode: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        abi: {\n            type: 'MoveFunction',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveStruct = {\n    description: `A move struct`,\n    properties: {\n        name: {\n            type: 'IdentifierWrapper',\n            isRequired: true,\n        },\n        is_native: {\n            type: 'boolean',\n            description: `Whether the struct is a native struct of Move`,\n            isRequired: true,\n        },\n        abilities: {\n            type: 'array',\n            contains: {\n                type: 'MoveAbility',\n            },\n            isRequired: true,\n        },\n        generic_type_params: {\n            type: 'array',\n            contains: {\n                type: 'MoveStructGenericTypeParam',\n            },\n            isRequired: true,\n        },\n        fields: {\n            type: 'array',\n            contains: {\n                type: 'MoveStructField',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveStructField = {\n    description: `Move struct field`,\n    properties: {\n        name: {\n            type: 'IdentifierWrapper',\n            isRequired: true,\n        },\n        type: {\n            type: 'MoveType',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveStructGenericTypeParam = {\n    description: `Move generic type param`,\n    properties: {\n        constraints: {\n            type: 'array',\n            contains: {\n                type: 'MoveAbility',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveStructTag = {\n    type: 'string',\n    description: `String representation of a MoveStructTag (on-chain Move struct type). This exists so you\n    can specify MoveStructTags as path / query parameters, e.g. for get_events_by_event_handle.\n\n    It is a combination of:\n    1. \\`move_module_address\\`, \\`module_name\\` and \\`struct_name\\`, all joined by \\`::\\`\n    2. \\`struct generic type parameters\\` joined by \\`, \\`\n\n    Examples:\n     * \\`0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>\\`\n     * \\`0x1::account::Account\\`\n\n    Note:\n    1. Empty chars should be ignored when comparing 2 struct tag ids.\n    2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).\n\n    See [doc](https://aptos.dev/concepts/accounts) for more details.\n    `,\n    pattern: '^0x[0-9a-zA-Z:_<>]+$',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveStructValue = {\n    description: `This is a JSON representation of some data within an account resource. More specifically,\n    it is a map of strings to arbitrary JSON values / objects, where the keys are top level\n    fields within the given resource.\n\n    To clarify, you might query for 0x1::account::Account and see the example data.\n\n    Move \\`bool\\` type value is serialized into \\`boolean\\`.\n\n    Move \\`u8\\`, \\`u16\\` and \\`u32\\` type value is serialized into \\`integer\\`.\n\n    Move \\`u64\\`, \\`u128\\` and \\`u256\\` type value is serialized into \\`string\\`.\n\n    Move \\`address\\` type value (32 byte Aptos account address) is serialized into a HexEncodedBytes string.\n    For example:\n    - \\`0x1\\`\n    - \\`0x1668f6be25668c1a17cd8caf6b8d2f25\\`\n\n    Move \\`vector\\` type value is serialized into \\`array\\`, except \\`vector<u8>\\` which is serialized into a\n    HexEncodedBytes string with \\`0x\\` prefix.\n    For example:\n    - \\`vector<u64>{255, 255}\\` => \\`[\"255\", \"255\"]\\`\n    - \\`vector<u8>{255, 255}\\` => \\`0xffff\\`\n\n    Move \\`struct\\` type value is serialized into \\`object\\` that looks like this (except some Move stdlib types, see the following section):\n    \\`\\`\\`json\n    {\n        field1_name: field1_value,\n        field2_name: field2_value,\n        ......\n    }\n    \\`\\`\\`\n\n    For example:\n    \\`{ \"created\": \"0xa550c18\", \"role_id\": \"0\" }\\`\n\n     **Special serialization for Move stdlib types**:\n    - [0x1::string::String](https://github.com/aptos-labs/aptos-core/blob/main/language/move-stdlib/docs/ascii.md)\n    is serialized into \\`string\\`. For example, struct value \\`0x1::string::String{bytes: b\"Hello World!\"}\\`\n    is serialized as \\`\"Hello World!\"\\` in JSON.\n    `,\n    properties: {\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveType = {\n    type: 'string',\n    description: `String representation of an on-chain Move type tag that is exposed in transaction payload.\n    Values:\n    - bool\n    - u8\n    - u16\n    - u32\n    - u64\n    - u128\n    - u256\n    - address\n    - signer\n    - vector: \\`vector<{non-reference MoveTypeId}>\\`\n    - struct: \\`{address}::{module_name}::{struct_name}::<{generic types}>\\`\n\n    Vector type value examples:\n    - \\`vector<u8>\\`\n    - \\`vector<vector<u64>>\\`\n    - \\`vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>\\`\n\n    Struct type value examples:\n    - \\`0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>\n    - \\`0x1::account::Account\\`\n\n    Note:\n    1. Empty chars should be ignored when comparing 2 struct tag ids.\n    2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding).\n    `,\n    pattern: '^(bool|u8|u64|u128|address|signer|vector<.+>|0x[0-9a-zA-Z:_<, >]+)$',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MoveValue = {\n    type: 'any-of',\n    description: `An enum of the possible Move value types`,\n    contains: [{\n        type: 'number',\n        format: 'uint8',\n    }, {\n        type: 'number',\n        format: 'uint16',\n    }, {\n        type: 'number',\n        format: 'uint32',\n    }, {\n        type: 'U64',\n    }, {\n        type: 'U128',\n    }, {\n        type: 'U256',\n    }, {\n        type: 'boolean',\n    }, {\n        type: 'Address',\n    }, {\n        type: 'array',\n        contains: {\n            type: 'MoveValue',\n        },\n    }, {\n        type: 'HexEncodedBytes',\n    }, {\n        type: 'MoveStructValue',\n    }, {\n        type: 'string',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MultiAgentSignature = {\n    description: `Multi agent signature for multi agent transactions\n\n    This allows you to have transactions across multiple accounts`,\n    properties: {\n        sender: {\n            type: 'AccountSignature',\n            isRequired: true,\n        },\n        secondary_signer_addresses: {\n            type: 'array',\n            contains: {\n                type: 'Address',\n            },\n            isRequired: true,\n        },\n        secondary_signers: {\n            type: 'array',\n            contains: {\n                type: 'AccountSignature',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MultiEd25519Signature = {\n    description: `A Ed25519 multi-sig signature\n\n    This allows k-of-n signing for a transaction`,\n    properties: {\n        public_keys: {\n            type: 'array',\n            contains: {\n                type: 'HexEncodedBytes',\n            },\n            isRequired: true,\n        },\n        signatures: {\n            type: 'array',\n            contains: {\n                type: 'HexEncodedBytes',\n            },\n            isRequired: true,\n        },\n        threshold: {\n            type: 'number',\n            description: `The number of signatures required for a successful transaction`,\n            isRequired: true,\n            format: 'uint8',\n        },\n        bitmap: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MultisigPayload = {\n    description: `A multisig transaction that allows an owner of a multisig account to execute a pre-approved\n    transaction as the multisig account.`,\n    properties: {\n        multisig_address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        transaction_payload: {\n            type: 'MultisigTransactionPayload',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $MultisigTransactionPayload = {\n    type: 'any-of',\n    contains: [{\n        type: 'EntryFunctionPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $PendingTransaction = {\n    description: `A transaction waiting in mempool`,\n    properties: {\n        hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        sender: {\n            type: 'Address',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        max_gas_amount: {\n            type: 'U64',\n            isRequired: true,\n        },\n        gas_unit_price: {\n            type: 'U64',\n            isRequired: true,\n        },\n        expiration_timestamp_secs: {\n            type: 'U64',\n            isRequired: true,\n        },\n        payload: {\n            type: 'TransactionPayload',\n            isRequired: true,\n        },\n        signature: {\n            type: 'TransactionSignature',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $RawTableItemRequest = {\n    description: `Table Item request for the GetTableItemRaw API`,\n    properties: {\n        key: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $RoleType = {\n    type: 'Enum',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $ScriptPayload = {\n    description: `Payload which runs a script that can run multiple functions`,\n    properties: {\n        code: {\n            type: 'MoveScriptBytecode',\n            isRequired: true,\n        },\n        type_arguments: {\n            type: 'array',\n            contains: {\n                type: 'MoveType',\n            },\n            isRequired: true,\n        },\n        arguments: {\n            type: 'array',\n            contains: {\n                properties: {\n                },\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $ScriptWriteSet = {\n    properties: {\n        execute_as: {\n            type: 'Address',\n            isRequired: true,\n        },\n        script: {\n            type: 'ScriptPayload',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $StateCheckpointTransaction = {\n    description: `A state checkpoint transaction`,\n    properties: {\n        version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_change_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        event_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_checkpoint_hash: {\n            type: 'HashValue',\n        },\n        gas_used: {\n            type: 'U64',\n            isRequired: true,\n        },\n        success: {\n            type: 'boolean',\n            description: `Whether the transaction was successful`,\n            isRequired: true,\n        },\n        vm_status: {\n            type: 'string',\n            description: `The VM status of the transaction, can tell useful information in a failure`,\n            isRequired: true,\n        },\n        accumulator_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        changes: {\n            type: 'array',\n            contains: {\n                type: 'WriteSetChange',\n            },\n            isRequired: true,\n        },\n        timestamp: {\n            type: 'U64',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $StateKeyWrapper = {\n    type: 'string',\n    description: `Representation of a StateKey as a hex string. This is used for cursor based pagination.\n    `,\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $SubmitTransactionRequest = {\n    description: `A request to submit a transaction\n\n    This requires a transaction and a signature of it`,\n    properties: {\n        sender: {\n            type: 'Address',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        max_gas_amount: {\n            type: 'U64',\n            isRequired: true,\n        },\n        gas_unit_price: {\n            type: 'U64',\n            isRequired: true,\n        },\n        expiration_timestamp_secs: {\n            type: 'U64',\n            isRequired: true,\n        },\n        payload: {\n            type: 'TransactionPayload',\n            isRequired: true,\n        },\n        signature: {\n            type: 'TransactionSignature',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TableItemRequest = {\n    description: `Table Item request for the GetTableItem API`,\n    properties: {\n        key_type: {\n            type: 'MoveType',\n            isRequired: true,\n        },\n        value_type: {\n            type: 'MoveType',\n            isRequired: true,\n        },\n        key: {\n            description: `The value of the table item's key`,\n            properties: {\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction = {\n    type: 'one-of',\n    description: `Enum of the different types of transactions in Aptos`,\n    contains: [{\n        type: 'Transaction_PendingTransaction',\n    }, {\n        type: 'Transaction_UserTransaction',\n    }, {\n        type: 'Transaction_GenesisTransaction',\n    }, {\n        type: 'Transaction_BlockMetadataTransaction',\n    }, {\n        type: 'Transaction_StateCheckpointTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction_BlockMetadataTransaction = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'BlockMetadataTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction_GenesisTransaction = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'GenesisTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction_PendingTransaction = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'PendingTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction_StateCheckpointTransaction = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'StateCheckpointTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $Transaction_UserTransaction = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'UserTransaction',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionPayload = {\n    type: 'one-of',\n    description: `An enum of the possible transaction payloads`,\n    contains: [{\n        type: 'TransactionPayload_EntryFunctionPayload',\n    }, {\n        type: 'TransactionPayload_ScriptPayload',\n    }, {\n        type: 'TransactionPayload_ModuleBundlePayload',\n    }, {\n        type: 'TransactionPayload_MultisigPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionPayload_EntryFunctionPayload = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'EntryFunctionPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionPayload_ModuleBundlePayload = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'ModuleBundlePayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionPayload_MultisigPayload = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'MultisigPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionPayload_ScriptPayload = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'ScriptPayload',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionsBatchSingleSubmissionFailure = {\n    description: `Information telling which batch submission transactions failed`,\n    properties: {\n        error: {\n            type: 'AptosError',\n            isRequired: true,\n        },\n        transaction_index: {\n            type: 'number',\n            description: `The index of which transaction failed, same as submission order`,\n            isRequired: true,\n            format: 'uint64',\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionsBatchSubmissionResult = {\n    description: `Batch transaction submission result\n\n    Tells which transactions failed`,\n    properties: {\n        transaction_failures: {\n            type: 'array',\n            contains: {\n                type: 'TransactionsBatchSingleSubmissionFailure',\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionSignature = {\n    type: 'one-of',\n    description: `An enum representing the different transaction signatures available`,\n    contains: [{\n        type: 'TransactionSignature_Ed25519Signature',\n    }, {\n        type: 'TransactionSignature_MultiEd25519Signature',\n    }, {\n        type: 'TransactionSignature_MultiAgentSignature',\n    }, {\n        type: 'TransactionSignature_FeePayerSignature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionSignature_Ed25519Signature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'Ed25519Signature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionSignature_FeePayerSignature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'FeePayerSignature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionSignature_MultiAgentSignature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'MultiAgentSignature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $TransactionSignature_MultiEd25519Signature = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'MultiEd25519Signature',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $U128 = {\n    type: 'string',\n    description: `A string containing a 128-bit unsigned integer.\n\n    We represent u128 values as a string to ensure compatibility with languages such\n    as JavaScript that do not parse u128s in JSON natively.\n    `,\n    format: 'uint128',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $U256 = {\n    type: 'string',\n    description: `A string containing a 256-bit unsigned integer.\n\n    We represent u256 values as a string to ensure compatibility with languages such\n    as JavaScript that do not parse u256s in JSON natively.\n    `,\n    format: 'uint256',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $U64 = {\n    type: 'string',\n    description: `A string containing a 64-bit unsigned integer.\n\n    We represent u64 values as a string to ensure compatibility with languages such\n    as JavaScript that do not parse u64s in JSON natively.\n    `,\n    format: 'uint64',\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $UserTransaction = {\n    description: `A transaction submitted by a user to change the state of the blockchain`,\n    properties: {\n        version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_change_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        event_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        state_checkpoint_hash: {\n            type: 'HashValue',\n        },\n        gas_used: {\n            type: 'U64',\n            isRequired: true,\n        },\n        success: {\n            type: 'boolean',\n            description: `Whether the transaction was successful`,\n            isRequired: true,\n        },\n        vm_status: {\n            type: 'string',\n            description: `The VM status of the transaction, can tell useful information in a failure`,\n            isRequired: true,\n        },\n        accumulator_root_hash: {\n            type: 'HashValue',\n            isRequired: true,\n        },\n        changes: {\n            type: 'array',\n            contains: {\n                type: 'WriteSetChange',\n            },\n            isRequired: true,\n        },\n        sender: {\n            type: 'Address',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        max_gas_amount: {\n            type: 'U64',\n            isRequired: true,\n        },\n        gas_unit_price: {\n            type: 'U64',\n            isRequired: true,\n        },\n        expiration_timestamp_secs: {\n            type: 'U64',\n            isRequired: true,\n        },\n        payload: {\n            type: 'TransactionPayload',\n            isRequired: true,\n        },\n        signature: {\n            type: 'TransactionSignature',\n        },\n        events: {\n            type: 'array',\n            contains: {\n                type: 'Event',\n            },\n            isRequired: true,\n        },\n        timestamp: {\n            type: 'U64',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $VersionedEvent = {\n    description: `An event from a transaction with a version`,\n    properties: {\n        version: {\n            type: 'U64',\n            isRequired: true,\n        },\n        guid: {\n            type: 'EventGuid',\n            isRequired: true,\n        },\n        sequence_number: {\n            type: 'U64',\n            isRequired: true,\n        },\n        type: {\n            type: 'MoveType',\n            isRequired: true,\n        },\n        data: {\n            description: `The JSON representation of the event`,\n            properties: {\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $ViewRequest = {\n    description: `View request for the Move View Function API`,\n    properties: {\n        function: {\n            type: 'EntryFunctionId',\n            isRequired: true,\n        },\n        type_arguments: {\n            type: 'array',\n            contains: {\n                type: 'MoveType',\n            },\n            isRequired: true,\n        },\n        arguments: {\n            type: 'array',\n            contains: {\n                properties: {\n                },\n            },\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteModule = {\n    description: `Write a new module or update an existing one`,\n    properties: {\n        address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        state_key_hash: {\n            type: 'string',\n            description: `State key hash`,\n            isRequired: true,\n        },\n        data: {\n            type: 'MoveModuleBytecode',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteResource = {\n    description: `Write a resource or update an existing one`,\n    properties: {\n        address: {\n            type: 'Address',\n            isRequired: true,\n        },\n        state_key_hash: {\n            type: 'string',\n            description: `State key hash`,\n            isRequired: true,\n        },\n        data: {\n            type: 'MoveResource',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSet = {\n    type: 'one-of',\n    description: `The associated writeset with a payload`,\n    contains: [{\n        type: 'WriteSet_ScriptWriteSet',\n    }, {\n        type: 'WriteSet_DirectWriteSet',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSet_DirectWriteSet = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'DirectWriteSet',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSet_ScriptWriteSet = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'ScriptWriteSet',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange = {\n    type: 'one-of',\n    description: `A final state change of a transaction on a resource or module`,\n    contains: [{\n        type: 'WriteSetChange_DeleteModule',\n    }, {\n        type: 'WriteSetChange_DeleteResource',\n    }, {\n        type: 'WriteSetChange_DeleteTableItem',\n    }, {\n        type: 'WriteSetChange_WriteModule',\n    }, {\n        type: 'WriteSetChange_WriteResource',\n    }, {\n        type: 'WriteSetChange_WriteTableItem',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_DeleteModule = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'DeleteModule',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_DeleteResource = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'DeleteResource',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_DeleteTableItem = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'DeleteTableItem',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_WriteModule = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'WriteModule',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_WriteResource = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'WriteResource',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetChange_WriteTableItem = {\n    type: 'all-of',\n    contains: [{\n        properties: {\n            type: {\n                type: 'string',\n                isRequired: true,\n            },\n        },\n    }, {\n        type: 'WriteTableItem',\n    }],\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteSetPayload = {\n    description: `A writeset payload, used only for genesis`,\n    properties: {\n        write_set: {\n            type: 'WriteSet',\n            isRequired: true,\n        },\n    },\n} as const;\n","/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport const $WriteTableItem = {\n    description: `Change set to write a table item`,\n    properties: {\n        state_key_hash: {\n            type: 'string',\n            isRequired: true,\n        },\n        handle: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        key: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        value: {\n            type: 'HexEncodedBytes',\n            isRequired: true,\n        },\n        data: {\n            type: 'DecodedTableData',\n        },\n    },\n} as const;\n"],"mappings":"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","names":["nacl","bytesToHex","sha3Hash","resolve","axios","request","jar","axios","Network","hexToBytes","sha3Hash","sha3Hash","bytesToHex","nacl","sha3Hash","sha3Hash","serializeVector","sha3Hash","token","txnHash","now","ApiError","axios","ApiError","request","resolve","CookieJar","jar","axios","headers","errors","ApiError","resolve","AptosErrorCode","MoveFunctionVisibility","RoleType"]}