{"version":3,"sources":["../../src/api/general.ts"],"sourcesContent":["// Copyright © Endless\n// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { EndlessConfig } from \"./endlessConfig\";\nimport { getIndexerStatus, getLedgerInfo, search } from \"../internal/general\";\nimport { getBlockByHeight, getBlockByVersion } from \"../internal/transaction\";\nimport { view } from \"../internal/view\";\nimport { AnyNumber, Block, LedgerInfo, LedgerVersionArg, MoveValue, SearchResponse, Status } from \"../types\";\nimport { InputViewFunctionData } from \"../transactions\";\n\n/**\n * A class to query all `General` Endless related queries\n */\nexport class General {\n  readonly config: EndlessConfig;\n\n  constructor(config: EndlessConfig) {\n    this.config = config;\n  }\n\n  /**\n   * Queries for the Endless ledger info\n   *\n   * @returns Endless Ledger Info\n   *\n   * @example\n   * const ledgerInfo = await endless.getLedgerInfo()\n   * // an example of the returned data\n   * ```\n   * {\n   * \"chain_id\": 4,\n   * \"epoch\": \"8\",\n   * \"ledger_version\": \"714\",\n   * \"oldest_ledger_version\": \"0\",\n   * \"ledger_timestamp\": \"1694695496521775\",\n   * \"node_role\": \"validator\",\n   * \"oldest_block_height\": \"0\",\n   * \"block_height\": \"359\",\n   * \"git_hash\": \"c82193f36f4e185fed9f68c4ad21f6c6dd390c6e\"\n   * }\n   * ```\n   */\n  async getLedgerInfo(): Promise<LedgerInfo> {\n    return getLedgerInfo({ endlessConfig: this.config });\n  }\n\n  /**\n   * Queries for indexer service status\n   *\n   * @param args.durationSecs The interval between latest indexed tx time and service time\n   * @returns Indexer status\n   */\n  async getIndexerStatus(args?: { durationSecs?: number }): Promise<Status> {\n    return getIndexerStatus({ endlessConfig: this.config, ...args });\n  }\n\n  /**\n   * Queries for the chain id\n   *\n   * @example\n   * const chainId = await endless.getChainId()\n   *\n   * @returns The chain id\n   */\n  async getChainId(): Promise<number> {\n    const result = await this.getLedgerInfo();\n    return result.chain_id;\n  }\n\n  /**\n   * Queries for block by transaction version\n   *\n   * @example\n   * const block = await endless.getBlockByVersion({ledgerVersion:5})\n   *\n   * @param args.ledgerVersion Ledger version to lookup block information for\n   * @param args.options.withTransactions If set to true, include all transactions in the block\n   *\n   * @returns Block information with optional transactions\n   */\n  async getBlockByVersion(args: {\n    ledgerVersion: AnyNumber;\n    options?: { withTransactions?: boolean };\n  }): Promise<Block> {\n    return getBlockByVersion({\n      endlessConfig: this.config,\n      ...args,\n    });\n  }\n\n  /**\n   * Get block by block height\n   *\n   * @example\n   * const block = await endless.getBlockByVersion({blockHeight:5})\n   *\n   * @param args.blockHeight Block height to lookup.  Starts at 0\n   * @param args.options.withTransactions If set to true, include all transactions in the block\n   *\n   * @returns Block with optional transactions\n   */\n  async getBlockByHeight(args: { blockHeight: AnyNumber; options?: { withTransactions?: boolean } }): Promise<Block> {\n    return getBlockByHeight({ endlessConfig: this.config, ...args });\n  }\n\n  /**\n   * Queries for a Move view function\n   * @param args.payload Payload for the view function\n   * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version\n   *\n   * @example\n   * const data = await endless.view({\n   *  payload: {\n   *   function: \"0x1::coin::balance\",\n   *   typeArguments: [\"0x1::endless_coin::EndlessCoin\"],\n   *   functionArguments: [accountAddress],\n   *  }\n   * })\n   *\n   * @returns an array of Move values\n   */\n  async view<T extends Array<MoveValue>>(args: {\n    payload: InputViewFunctionData;\n    options?: LedgerVersionArg;\n  }): Promise<T> {\n    return view<T>({ endlessConfig: this.config, ...args });\n  }\n\n  /**\n   * Search coin or collection by name\n   *\n   * @param args.query Search keyword\n   * @returns Search results\n   */\n  async search(args: { query: string }): Promise<SearchResponse[]> {\n    return search({ endlessConfig: this.config, ...args });\n  }\n}\n"],"mappings":"gJAcO,IAAMA,EAAN,KAAc,CAGnB,YAAYC,EAAuB,CACjC,KAAK,OAASA,CAChB,CAwBA,MAAM,eAAqC,CACzC,OAAOC,EAAc,CAAE,cAAe,KAAK,MAAO,CAAC,CACrD,CAQA,MAAM,iBAAiBC,EAAmD,CACxE,OAAOC,EAAiB,CAAE,cAAe,KAAK,OAAQ,GAAGD,CAAK,CAAC,CACjE,CAUA,MAAM,YAA8B,CAElC,OADe,MAAM,KAAK,cAAc,GAC1B,QAChB,CAaA,MAAM,kBAAkBA,EAGL,CACjB,OAAOE,EAAkB,CACvB,cAAe,KAAK,OACpB,GAAGF,CACL,CAAC,CACH,CAaA,MAAM,iBAAiBA,EAA4F,CACjH,OAAOG,EAAiB,CAAE,cAAe,KAAK,OAAQ,GAAGH,CAAK,CAAC,CACjE,CAkBA,MAAM,KAAiCA,EAGxB,CACb,OAAOI,EAAQ,CAAE,cAAe,KAAK,OAAQ,GAAGJ,CAAK,CAAC,CACxD,CAQA,MAAM,OAAOA,EAAoD,CAC/D,OAAOK,EAAO,CAAE,cAAe,KAAK,OAAQ,GAAGL,CAAK,CAAC,CACvD,CACF","names":["General","config","getLedgerInfo","args","getIndexerStatus","getBlockByVersion","getBlockByHeight","view","search"]}