{"version":3,"file":"helpers.mjs","names":[],"sources":["../../src/wallet/helpers.ts"],"sourcesContent":["import {\n  GnoWallet,\n} from \"./wallet.js\";\n\nexport type Constructor<T> = new (...args: unknown[]) => T;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyFunction = (...args: unknown[]) => any;\n\nexport type UnionToIntersection<Union> = (\n  Union extends unknown ? (argument: Union) => void : never\n) extends (argument: infer Intersection) => void\n  ? Intersection\n  : never;\n\nexport type Return<T> = T extends AnyFunction\n  ? ReturnType<T>\n  : T extends AnyFunction[]\n    ? UnionToIntersection<ReturnType<T[number]>>\n    : never;\n\nexport type RealmInterface = {\n  [key: string]: unknown\n};\nexport type Realm = (instance: GnoWallet) => {\n  realm: RealmInterface\n};\n\nconst bigIntTypes = new Set([\"int\", \"int64\", \"uint\", \"uint64\"]);\n\nexport const parseGnoReturns = (result: string): Array<unknown> => {\n  const ret = [];\n  const values = result.split(\"\\n\").filter(v => v.length > 0);\n  for (let i = 0; i < values.length; i++) {\n    // Format: \"(value type)\" — strip parens, split type from value\n    const inner = values[i].slice(1, -1);\n    const lastSpace = inner.lastIndexOf(\" \");\n    const rawValue = inner.substring(0, lastSpace);\n    const gnoType = inner.substring(lastSpace + 1);\n\n    if (bigIntTypes.has(gnoType)) {\n      ret.push(BigInt(rawValue));\n    }\n    else {\n      ret.push(JSON.parse(rawValue));\n    }\n  }\n  return ret;\n};\n"],"mappings":";AA4BA,MAAM,cAAc,IAAI,IAAI;CAAC;CAAO;CAAS;CAAQ;CAAS,CAAC;AAE/D,MAAa,mBAAmB,WAAmC;CACjE,MAAM,MAAM,EAAE;CACd,MAAM,SAAS,OAAO,MAAM,KAAK,CAAC,QAAO,MAAK,EAAE,SAAS,EAAE;AAC3D,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;EAEtC,MAAM,QAAQ,OAAO,GAAG,MAAM,GAAG,GAAG;EACpC,MAAM,YAAY,MAAM,YAAY,IAAI;EACxC,MAAM,WAAW,MAAM,UAAU,GAAG,UAAU;EAC9C,MAAM,UAAU,MAAM,UAAU,YAAY,EAAE;AAE9C,MAAI,YAAY,IAAI,QAAQ,CAC1B,KAAI,KAAK,OAAO,SAAS,CAAC;MAG1B,KAAI,KAAK,KAAK,MAAM,SAAS,CAAC;;AAGlC,QAAO"}