{"version":3,"file":"provider.cjs","names":["BaseTm2Provider","extractStringFromResponse","VMEndpoint","encodeVMQueryData"],"sources":["../../src/provider/provider.ts"],"sourcesContent":["import {\n  ABCIResponse,\n  adaptAbciQueryResponse,\n  BaseTm2Provider,\n  Provider,\n} from \"@gnolang/tm2-js-client\";\n\nimport {\n  VMEndpoint,\n} from \"./endpoints.js\";\nimport {\n  FunctionSignature,\n} from \"./types/index.js\";\nimport {\n  encodeVMQueryData,\n  extractStringFromResponse,\n} from \"./utility/index.js\";\n\n/**\n * GnoProvider is the Provider interface for Gno-specific functionality\n */\nexport interface GnoProvider extends Provider {\n  /**\n   * Executes the Render(<path>) method in read-only mode\n   * @param {string} packagePath the gno package path\n   * @param {string} path the render path\n   * @param {number} [height=0] the height for querying.\n   */\n  getRenderOutput(\n    packagePath: string,\n    path: string,\n    height?: number\n  ): Promise<string>\n\n  /**\n   * Fetches public facing function signatures\n   * @param {string} packagePath the gno package path\n   * @param {number} [height=0] the height for querying.\n   */\n  getFunctionSignatures(\n    packagePath: string,\n    height?: number\n  ): Promise<FunctionSignature[]>\n\n  /**\n   * Evaluates any expression in readonly mode and returns the results\n   * @param {string} packagePath the gno package path\n   * @param {string} expression the expression to be evaluated\n   * @param {number} [height=0] the height for querying.\n   */\n  evaluateExpression(\n    packagePath: string,\n    expression: string,\n    height?: number\n  ): Promise<string>\n\n  /**\n   * Fetches the file content, or the list of files if the path is a directory\n   * @param {string} packagePath the gno package path\n   * @param {number} [height=0] the height for querying.\n   */\n  getFileContent(packagePath: string, height?: number): Promise<string>\n}\n\n/**\n * Base implementation of GnoProvider backed by a Tm2Client.\n * Provides all VM query methods; subclasses only need a static `create()` factory.\n */\nexport abstract class BaseGnoProvider extends BaseTm2Provider implements GnoProvider {\n  private async abciQuery(path: string, data: Uint8Array, height?: number): Promise<ABCIResponse> {\n    return adaptAbciQueryResponse(\n      await this.client.abciQuery({\n        path,\n        data,\n        height: height ?? 0,\n        prove: false,\n      }),\n    );\n  }\n\n  async evaluateExpression(\n    packagePath: string,\n    expression: string,\n    height?: number,\n  ): Promise<string> {\n    const abciResponse = await this.abciQuery(\n      `vm/${VMEndpoint.EVALUATE}`,\n      encodeVMQueryData([packagePath, expression], \".\"),\n      height,\n    );\n\n    return extractStringFromResponse(abciResponse.response.ResponseBase.Data);\n  }\n\n  async getFileContent(packagePath: string, height?: number): Promise<string> {\n    const abciResponse = await this.abciQuery(\n      `vm/${VMEndpoint.FILE_CONTENT}`,\n      encodeVMQueryData([packagePath]),\n      height,\n    );\n\n    return extractStringFromResponse(abciResponse.response.ResponseBase.Data);\n  }\n\n  async getFunctionSignatures(\n    packagePath: string,\n    height?: number,\n  ): Promise<FunctionSignature[]> {\n    const abciResponse = await this.abciQuery(\n      `vm/${VMEndpoint.FUNCTION_SIGNATURES}`,\n      encodeVMQueryData([packagePath]),\n      height,\n    );\n\n    const {\n      ResponseBase,\n    } = abciResponse.response;\n\n    if (ResponseBase.Error) {\n      throw new Error(\n        `ABCI error querying ${packagePath}: ${ResponseBase.Log || JSON.stringify(ResponseBase.Error)}`,\n      );\n    }\n\n    const responseRaw: string = extractStringFromResponse(ResponseBase.Data);\n\n    return JSON.parse(responseRaw);\n  }\n\n  async getRenderOutput(\n    packagePath: string,\n    path: string,\n    height?: number,\n  ): Promise<string> {\n    const abciResponse = await this.abciQuery(\n      `vm/${VMEndpoint.RENDER}`,\n      encodeVMQueryData([packagePath, path], \":\"),\n      height,\n    );\n\n    return extractStringFromResponse(abciResponse.response.ResponseBase.Data);\n  }\n\n  async getRealmPaths(prefix: string): Promise<string[]> {\n    const abciResponse = await this.abciQuery(\n      \"vm/qpaths\",\n      encodeVMQueryData([prefix]),\n    );\n\n    const {\n      ResponseBase,\n    } = abciResponse.response;\n\n    if (ResponseBase.Error) {\n      throw new Error(ResponseBase.Log || JSON.stringify(ResponseBase.Error));\n    }\n    if (!ResponseBase.Data) {\n      return [];\n    }\n\n    const raw = extractStringFromResponse(ResponseBase.Data);\n    try {\n      const parsed = JSON.parse(raw);\n      if (Array.isArray(parsed)) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return parsed.map((p: any) => (typeof p === \"string\" ? p : p.path));\n      }\n    }\n    catch {\n      // Not JSON — treat as newline-separated paths\n    }\n    return raw.split(\"\\n\").filter(p => p.length > 0);\n  }\n}\n"],"mappings":";;;;;;;;;;AAoEA,IAAsB,kBAAtB,cAA8CA,uBAAAA,gBAAuC;CACnF,MAAc,UAAU,MAAc,MAAkB,QAAwC;AAC9F,UAAA,GAAA,uBAAA,wBACE,MAAM,KAAK,OAAO,UAAU;GAC1B;GACA;GACA,QAAQ,UAAU;GAClB,OAAO;GACR,CAAC,CACH;;CAGH,MAAM,mBACJ,aACA,YACA,QACiB;AAOjB,SAAOC,yBAAAA,2BANc,MAAM,KAAK,UAC9B,MAAMC,kBAAAA,WAAW,YACjBC,yBAAAA,kBAAkB,CAAC,aAAa,WAAW,EAAE,IAAI,EACjD,OACD,EAE6C,SAAS,aAAa,KAAK;;CAG3E,MAAM,eAAe,aAAqB,QAAkC;AAO1E,SAAOF,yBAAAA,2BANc,MAAM,KAAK,UAC9B,MAAMC,kBAAAA,WAAW,gBACjBC,yBAAAA,kBAAkB,CAAC,YAAY,CAAC,EAChC,OACD,EAE6C,SAAS,aAAa,KAAK;;CAG3E,MAAM,sBACJ,aACA,QAC8B;EAO9B,MAAM,EACJ,kBAPmB,MAAM,KAAK,UAC9B,MAAMD,kBAAAA,WAAW,uBACjBC,yBAAAA,kBAAkB,CAAC,YAAY,CAAC,EAChC,OACD,EAIgB;AAEjB,MAAI,aAAa,MACf,OAAM,IAAI,MACR,uBAAuB,YAAY,IAAI,aAAa,OAAO,KAAK,UAAU,aAAa,MAAM,GAC9F;EAGH,MAAM,cAAsBF,yBAAAA,0BAA0B,aAAa,KAAK;AAExE,SAAO,KAAK,MAAM,YAAY;;CAGhC,MAAM,gBACJ,aACA,MACA,QACiB;AAOjB,SAAOA,yBAAAA,2BANc,MAAM,KAAK,UAC9B,MAAMC,kBAAAA,WAAW,UACjBC,yBAAAA,kBAAkB,CAAC,aAAa,KAAK,EAAE,IAAI,EAC3C,OACD,EAE6C,SAAS,aAAa,KAAK;;CAG3E,MAAM,cAAc,QAAmC;EAMrD,MAAM,EACJ,kBANmB,MAAM,KAAK,UAC9B,aACAA,yBAAAA,kBAAkB,CAAC,OAAO,CAAC,CAC5B,EAIgB;AAEjB,MAAI,aAAa,MACf,OAAM,IAAI,MAAM,aAAa,OAAO,KAAK,UAAU,aAAa,MAAM,CAAC;AAEzE,MAAI,CAAC,aAAa,KAChB,QAAO,EAAE;EAGX,MAAM,MAAMF,yBAAAA,0BAA0B,aAAa,KAAK;AACxD,MAAI;GACF,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,OAAI,MAAM,QAAQ,OAAO,CAEvB,QAAO,OAAO,KAAK,MAAY,OAAO,MAAM,WAAW,IAAI,EAAE,KAAM;UAGjE;AAGN,SAAO,IAAI,MAAM,KAAK,CAAC,QAAO,MAAK,EAAE,SAAS,EAAE"}