{"version":3,"sources":["../src/generate/contractsGenerator.ts"],"names":["res"],"mappings":";;;;;;;;;AAyCA,IAAM,kBAAkB,CAAC;AAAA,EACvB,IAAA;AAAA,EACA;AACF,CAAA,KAG8B;AAC5B,EAAA,IAAI,qBAAA,CAAsB,IAAI,CAAA,EAAG;AAC/B,IAAA,IAAI,SAAS,SAAA,EAAW;AACtB,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,OAAO,CAAA,EAAE;AAAA,IAC1B,CAAA,MAAA,IAAW,SAAS,QAAA,EAAU;AAC5B,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,MAAM,CAAA,EAAE;AAAA,IACzB,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,UAAU,CAAA,EAAE;AAAA,IAC7B,CAAA,MAAA,IAAW,SAAS,WAAA,EAAa;AAC/B,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,YAAY,CAAA,EAAE;AAAA,IAC/B,CAAA,MAAA,IAAW,SAAS,iBAAA,EAAmB;AACrC,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,QAAQ,CAAA,EAAE;AAAA,IAC3B,CAAA,MAAA,IAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,OAAO,EAAE,GAAA,EAAK,CAAC,OAAO,CAAA,EAAE;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,WAAA,CAAY,IAAI,CAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,IAAI,sBAAA,CAAuB,IAAI,CAAA,EAAG;AAChC,IAAA,OAAO,EAAE,GAAA,EAAK,CAAC,SAAS,CAAA,EAAE;AAAA,EAC5B;AAEA,EAAA,IAAI,uBAAA,CAAwB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,GAAA,EAAK,CAAC,cAAc,CAAA,EAAE;AAAA,EACjC;AAEA,EAAA,IAAI,kBAAA,CAAmB,IAAI,CAAA,EAAG;AAC5B,IAAA,OAAO,EAAE,GAAA,EAAK,CAAC,SAAS,CAAA,EAAE;AAAA,EAC5B;AAEA,EAAA,IAAI,oBAAA,CAAqB,IAAI,CAAA,EAAG;AAC9B,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAC,WAAA,EAAa,eAAA,CAAgB,EAAE,MAAM,IAAA,CAAK,QAAA,EAAU,CAAA,CAAE,GAAG;AAAA,KACjE;AAAA,EACF;AAEA,EAAA,IAAI,oBAAA,CAAqB,IAAI,CAAA,EAAG;AAC9B,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAC,iBAAA,EAAmB,eAAA,CAAgB,EAAE,IAAA,EAAM,IAAA,CAAK,QAAA,CAAS,EAAA,EAAI,CAAA,CAAE,GAAG;AAAA,KAC1E;AAAA,EACF;AAEA,EAAA,IAAI,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC1B,IAAA,MAAM,OAAO,IAAA,CAAK,IAAA;AAClB,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAC,CAAA,KAAA,CAAA,EAAS,eAAA,CAAgB,EAAE,MAAM,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,GAAG;AAAA,KACzD;AAAA,EACF;AAEA,EAAA,IAAI,iBAAA,CAAkB,IAAI,CAAA,EAAG;AAC3B,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA;AACnB,IAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AAAA,MACnB,CAAC,KAAK,CAAA,MAAO;AAAA,QACX,GAAG,GAAA;AAAA,QACH,CAAC,CAAA,CAAE,IAAI,GAAG,eAAA,CAAgB,EAAE,IAAA,EAAM,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE;AAAA,OAC9C,CAAA;AAAA,MACA;AAAC,KACH;AAEA,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAC,QAAA,EAAU,MAAM;AAAA,KACxB;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,IAAI,CAAA,EAAA,EAAK,KAAK,SAAA,CAAU,IAAI,CAAC,CAAA,wBAAA,CAA0B,CAAA;AACvE,EAAA,WAAA,CAAY,IAAI,CAAA;AAClB,CAAA;AAEA,IAAM,iBAAA,GAAoB,CACxB,GAAA,EACA,SAAA,KAkBS;AACT,EAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AAEpB,EAAA,SAAA,CAAU,uBAAuB,GAAG,CAAA;AACpC,EAAC,IAAI,KAAA,CAAM,CAAC,CAAA,CAA8B,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC1D,IAAA,IAAI,QAAA,GAAgC,IAAA;AAEpC,IAAA,IAAI,UAAU,4BAAA,EAA8B;AAC1C,MAAA,QAAA,GAAW,SAAA,CAAU,4BAAA,CAA6B,GAAA,CAAI,CAAC,GAAG,IAAI,CAAA;AAAA,IAChE;AAEA,IAAA,IAAI,aAAa,KAAA,EAAO;AACtB,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,QAAA,iBAAA,CAAkB,MAAM,SAAS,CAAA;AAAA,MACnC,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,IAAA,EAAM,CAAC,MAAA,KAAW;AAC1B,UAAA,iBAAA,CAAkB,QAAQ,SAAS,CAAA;AAAA,QACrC,CAAC,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,SAAA,CAAU,0BAAA,GAA6B,GAAA,CAAI,CAAC,CAAA,EAAG,IAAI,CAAA;AAAA,EACrD,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,qBAAqB,GAAG,CAAA;AACpC,CAAA;AAEA,IAAM,oBAAA,GAAuB,CAAC,MAAA,KAAsC;AAClE,EAAA,MAAM,MAAgB,EAAC;AAEvB,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACtB,IAAA,iBAAA,CAAkB,GAAA,EAAK;AAAA,MACrB,qBAAqBA,IAAAA,EAAK;AACxB,QAAA,GAAA,CAAI,IAAA,CAAKA,IAAAA,CAAI,CAAC,CAAC,CAAA;AAAA,MACjB;AAAA,KACD,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AAChC,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAAC,GAAA,KAA+B;AAC7D,EAAA,IAAI,GAAA,GAAM,EAAA;AAEV,EAAA,iBAAA,CAAkB,GAAA,EAAK;AAAA,IACrB,qBAAqBA,IAAAA,EAAK;AACxB,MAAA,IAAIA,IAAAA,CAAI,WAAW,CAAA,EAAG;AACpB,QAAA,GAAA,IAAOA,KAAI,CAAC,CAAA;AAAA,MACd,CAAA,MAAO;AACL,QAAA,GAAA,IAAO,CAAA,EAAGA,IAAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA,mBAAmBA,IAAAA,EAAK;AACtB,MAAA,IAAIA,IAAAA,CAAI,WAAW,CAAA,EAAG;AACpB,QAAA,GAAA,IAAO,CAAA,CAAA,CAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA,4BAAA,CAA6B,MAAM,IAAA,EAAM;AACvC,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,QAAA,GAAA,IAAO,OAAA;AAAA,UACL,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA,MAAO;AAAA,YACtB,CAAC,OAAA,CAAQ,MAAM,GAAG,MAAM,uBAAuB,CAAC;AAAA,WAClD,CAAE,CAAA;AAAA,UACF,EAAE,OAAO,IAAA;AAAK,SAChB;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA,0BAAA,GAA6B;AAC3B,MAAA,GAAA,IAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AAED,EAAA,OAAO,GAAA;AACT,CAAA;AAmBA,IAAM,uBAAA,GAA0B,CAC9B,KAAA,KAC+B;AAC/B,EAAA,OAAO;AAAA,IACL,OAAO,eAAA,CAAgB,EAAE,MAAM,KAAA,CAAM,GAAA,EAAK,CAAA,CAAE,GAAA;AAAA,IAC5C,MAAA,EAAQ,eAAA,CAAgB,EAAE,IAAA,EAAM,EAAE,UAAU,KAAA,CAAM,KAAA,EAAM,EAAG,CAAA,CAAE,GAAA;AAAA,IAC7D,IAAA,EAAM;AAAA,GACR;AACF,CAAA;AAEA,IAAM,uBAAA,GAA0B,CAC9B,KAAA,KAC+B;AAC/B,EAAA,OAAO;AAAA,IACL,QAAQ,eAAA,CAAgB,EAAE,MAAM,KAAA,CAAM,IAAA,EAAM,CAAA,CAAE,GAAA;AAAA,IAC9C,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,IACf,MAAM,KAAA,CAAM;AAAA,GACd;AACF,CAAA;AAEA,IAAM,uBAAA,GAA0B,CAC9B,IAAA,KACsC;AACtC,EAAA,IAAI,IAAA,CAAK,WAAW,SAAA,EAAW;AAE/B,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,MAC7B,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,IAAA,EAAM,eAAA,CAAgB,GAAG,CAAA,CAAE;AAAA,KAC7B,CAAE,CAAA;AAAA,IACF,MAAA,EAAQ,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,CAAE,GAAA;AAAA,IACtC,IAAA,EAAM,IAAA,CAAK,MAAA,KAAW,QAAA,GAAW,QAAA,GAAW;AAAA,GAC9C;AACF,CAAA;AAEO,IAAM,0BAA0B,OAAO;AAAA,EAC5C,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,EAAW,MAAA;AAAA,EACX,kBAAA;AAAA,EACA;AACF,CAAA,KASqB;AACnB,EAAA,MAAM,GAAA,GAAM,GAAG,OAAO,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAA,EACxD,kBAAA,CAAmB,YAAY,CAAA,IAAK,YACtC,CAAA,CAAA;AACA,EAAA,MAAM,WAAW,MAAM,cAAA,CAAe,MAAM,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA,EAAG;AAAA,IAC1D,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,MAAA,IAAI,MAAM,YAAA,CAAa,KAAK,KAAK,KAAA,CAAM,QAAA,EAAU,WAAW,GAAA,EAAK;AAC/D,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,GACD,CAAA;AACD,EAAA,MAAM,gBAA4B,QAAA,CAAS,IAAA;AAC3C,EAAA,MAAM,OAAO,EAAC;AACd,EAAA,KAAA,MAAW,IAAA,IAAQ,cAAc,SAAA,EAAW;AAC1C,IAAA,MAAM,GAAA,GAAM,wBAAwB,IAAI,CAAA;AACxC,IAAA,IAAI,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,GAAI,GAAA;AAAA,EAC7B;AACA,EAAA,KAAA,MAAW,QAAA,IAAY,cAAc,IAAA,EAAM;AACzC,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,uBAAA,CAAwB,QAAQ,CAAA;AAAA,EACxD;AACA,EAAA,KAAA,MAAW,QAAA,IAAY,cAAc,SAAA,EAAW;AAC9C,IAAA,IAAI,QAAA,CAAS,WAAW,UAAA,EAAY;AACpC,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,uBAAA,CAAwB,QAAQ,CAAA;AAAA,EACxD;AAEA,EAAA,MAAM,eAAA,GAAkB,oBAAA;AAAA,IACtB,OAAO,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAAA,MACnC,IAAI,WAAY;AACd,QAAA,QAAQ,IAAI,IAAA;AAAM,UAChB,KAAK,UAAA;AAAA,UACL,KAAK,QAAA;AACH,YAAA,OAAO,IAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAAA,UACpC;AACE,YAAA,OAAO,CAAC,IAAI,KAAK,CAAA;AAAA;AACrB,MACF,CAAA,GAAG;AAAA,MACH,GAAA,CAAI;AAAA,KACL;AAAA,GACH;AAEA,EAAA,MAAM,MAAA,GAAS;AAAA;AAAA;AAAA,EAGf,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAC;AAAA,QAAA,EACnB,kBAAkB,CAAA;;AAAA,aAAA,EAEb,SAAA,CAAU,YAAY,CAAC,CAAA;AAAA,CAAA,EACnC,YAAY,CAAA,GAAA,EAAM,OAAA;AAAA,IACjB,SAAA,CAAU,IAAA,EAAM,CAAC,CAAA,MAAO;AAAA,MACtB,QAAQ,WAAY;AAClB,QAAA,QAAQ,EAAE,IAAA;AAAM,UACd,KAAK,UAAA;AAAA,UACL,KAAK,QAAA;AACH,YAAA,OAAO,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,cACzB,MAAM,CAAA,CAAE,IAAA;AAAA,cACR,IAAA,EAAM;AAAA,gBACJ,CAAC,OAAA,CAAQ,MAAM,GAAG,MAAM,sBAAA,CAAuB,EAAE,IAAI;AAAA;AACvD,aACF,CAAE,CAAA;AAAA,UACJ;AACE,YAAA,OAAO;AAAA,cACL,CAAC,OAAA,CAAQ,MAAM,GAAG,MAAM,sBAAA,CAAuB,EAAE,KAAK;AAAA,aACxD;AAAA;AACJ,MACF,CAAA,GAAG;AAAA,MACH,MAAA,EAAQ;AAAA,QACN,CAAC,OAAA,CAAQ,MAAM,GAAG,MAAM,sBAAA,CAAuB,EAAE,MAAM;AAAA,OACzD;AAAA,MACA,MAAM,CAAA,CAAE;AAAA,KACV,CAAE,CAAA;AAAA,IACF,EAAE,OAAO,IAAA;AAAK,GACf;AAAA;;;AAAA,CAAA;AAMD,EAAG,EAAA,CAAA,aAAA;AAAA,IACD,IAAA,CAAK,OAAA;AAAA,MACH,MAAA;AAAA,MACA,CAAA,EAAA,EAAK,mBAAA,CAAoB,WAAA,EAAa,YAAY,CAAC,CAAA,GAAA;AAAA,KACrD;AAAA,IACA;AAAA,GACF;AACF;AAEO,IAAM,oBAAoB,OAAO;AAAA,EACtC,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAKqB;AACnB,EAAA,MAAM,cAAA,GAAiB,UAAU,GAAA,CAAI,CAAC,MAAM,CAAA,GAAA,EAAM,SAAA,CAAU,CAAC,CAAC,CAAA,CAAE,CAAA;AAChE,EAAA,MAAM,iBAAiB,SAAA,CAAU,GAAA;AAAA,IAC/B,CAAC,CAAA,KACC,CAAA,SAAA,EAAY,SAAA,CAAU,CAAC,CAAC,CAAA,WAAA,EAAc,mBAAA;AAAA,MACpC,WAAA;AAAA,MACA;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AACA,EAAA,MAAM,IAAA,GAAO,mCAAmC,kBAAkB,CAAA;AAAA,EAClE,cAAA,CAAe,IAAA,CAAK,IAAI,CAAC;;AAAA,aAAA,EAEZ,WAAW,CAAA;AAAA,EACxB,cAAA,CAAe,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA,EAAA,CAAA;AAK1B,EAAG,EAAA,CAAA,aAAA;AAAA,IACD,IAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,CAAA,YAAA,EAAe,WAAW,CAAA,GAAA,CAAK,CAAA;AAAA,IACvD;AAAA,GACF;AACF;AAEA,IAAM,sBAAsB,CAAC,WAAA,EAAqB,iBAChD,CAAA,SAAA,EAAY,WAAW,IAAI,YAAY,CAAA,CAAA","file":"chunk-6YJDRQNQ.mjs","sourcesContent":["import * as fs from \"fs\";\nimport { camelCase } from \"lodash\";\nimport path from \"path\";\nimport { inspect } from \"util\";\nimport {\n  ClarityAbi,\n  ClarityAbiFunction,\n  ClarityAbiMap,\n  ClarityAbiType,\n  ClarityAbiVariable,\n  isClarityAbiBuffer,\n  isClarityAbiList,\n  isClarityAbiOptional,\n  isClarityAbiPrimitive,\n  isClarityAbiResponse,\n  isClarityAbiStringAscii,\n  isClarityAbiStringUtf8,\n  isClarityAbiTuple,\n} from \"./contractAbi\";\nimport { assertNever, mapValues } from \"../utils/helpers\";\nimport { asyncAutoRetry } from \"../utils/asyncAutoRetry\";\nimport axios from \"axios\";\nimport { AxiosError } from \"axios\";\n\ntype TranscoderDefType =\n  | \"uintT\"\n  | \"intT\"\n  | \"booleanT\"\n  | \"principalT\"\n  | \"traitT\"\n  | \"noneT\"\n  | \"stringT\"\n  | \"stringAsciiT\"\n  | \"bufferT\"\n  | \"optionalT\"\n  | \"responseSimpleT\"\n  | \"listT\"\n  | \"tupleT\";\ntype TranscoderDefArgument = TranscoderDef | Record<string, TranscoderDef>;\ntype TranscoderDef = [TranscoderDefType, ...TranscoderDefArgument[]];\n\nconst toTranscoderDef = ({\n  name,\n  type,\n}: {\n  name?: string;\n  type: ClarityAbiType;\n}): { def: TranscoderDef } => {\n  if (isClarityAbiPrimitive(type)) {\n    if (type === \"uint128\") {\n      return { def: [\"uintT\"] };\n    } else if (type === \"int128\") {\n      return { def: [\"intT\"] };\n    } else if (type === \"bool\") {\n      return { def: [\"booleanT\"] };\n    } else if (type === \"principal\") {\n      return { def: [\"principalT\"] };\n    } else if (type === \"trait_reference\") {\n      return { def: [\"traitT\"] };\n    } else if (type === \"none\") {\n      return { def: [\"noneT\"] };\n    } else {\n      assertNever(type);\n    }\n  }\n\n  if (isClarityAbiStringUtf8(type)) {\n    return { def: [\"stringT\"] };\n  }\n\n  if (isClarityAbiStringAscii(type)) {\n    return { def: [\"stringAsciiT\"] };\n  }\n\n  if (isClarityAbiBuffer(type)) {\n    return { def: [\"bufferT\"] };\n  }\n\n  if (isClarityAbiOptional(type)) {\n    return {\n      def: [\"optionalT\", toTranscoderDef({ type: type.optional }).def],\n    };\n  }\n\n  if (isClarityAbiResponse(type)) {\n    return {\n      def: [\"responseSimpleT\", toTranscoderDef({ type: type.response.ok }).def],\n    };\n  }\n\n  if (isClarityAbiList(type)) {\n    const list = type.list;\n    return {\n      def: [`listT`, toTranscoderDef({ type: list.type }).def],\n    };\n  }\n\n  if (isClarityAbiTuple(type)) {\n    const tuple = type.tuple;\n    const result = tuple.reduce(\n      (acc, c) => ({\n        ...acc,\n        [c.name]: toTranscoderDef({ type: c.type }).def,\n      }),\n      {}\n    );\n\n    return {\n      def: [\"tupleT\", result],\n    };\n  }\n\n  console.warn(`${name}: ${JSON.stringify(type)} is not a supported type`);\n  assertNever(type);\n};\n\nconst walkTranscoderDef = (\n  res: TranscoderDef,\n  callbacks: {\n    onTranscoderDefStart?: (result: TranscoderDef) => void;\n\n    onTranscoderDefEnd?: (result: TranscoderDef) => void;\n\n    /**\n     * return `false` to prevent walk into this rest\n     */\n    onTranscoderDefArgumentStart?: (\n      transcoderName: string,\n      resultRest: TranscoderDefArgument\n    ) => undefined | boolean;\n\n    onTranscoderDefArgumentEnd?: (\n      transcoderName: string,\n      resultRest: TranscoderDefArgument\n    ) => void;\n  }\n): void => {\n  if (res.length < 1) return;\n\n  callbacks.onTranscoderDefStart?.(res);\n  (res.slice(1) as TranscoderDefArgument[]).forEach((rest) => {\n    let walkInto: undefined | boolean = true;\n\n    if (callbacks.onTranscoderDefArgumentStart) {\n      walkInto = callbacks.onTranscoderDefArgumentStart(res[0], rest);\n    }\n\n    if (walkInto !== false) {\n      if (Array.isArray(rest)) {\n        walkTranscoderDef(rest, callbacks);\n      } else {\n        mapValues(rest, (result) => {\n          walkTranscoderDef(result, callbacks);\n        });\n      }\n    }\n\n    callbacks.onTranscoderDefArgumentEnd?.(res[0], rest);\n  });\n\n  callbacks.onTranscoderDefEnd?.(res);\n};\n\nconst getAllTranscoderName = (resAry: TranscoderDef[]): string[] => {\n  const ret: string[] = [];\n\n  resAry.forEach((res) => {\n    walkTranscoderDef(res, {\n      onTranscoderDefStart(res) {\n        ret.push(res[0]);\n      },\n    });\n  });\n\n  return Array.from(new Set(ret));\n};\n\nconst stringifyTranscoderDef = (res: TranscoderDef): string => {\n  let ret = \"\";\n\n  walkTranscoderDef(res, {\n    onTranscoderDefStart(res) {\n      if (res.length === 1) {\n        ret += res[0];\n      } else {\n        ret += `${res[0]}(`;\n      }\n    },\n    onTranscoderDefEnd(res) {\n      if (res.length !== 1) {\n        ret += `)`;\n      }\n    },\n    onTranscoderDefArgumentStart(name, rest) {\n      if (!Array.isArray(rest)) {\n        ret += inspect(\n          mapValues(rest, (i) => ({\n            [inspect.custom]: () => stringifyTranscoderDef(i),\n          })),\n          { depth: null }\n        );\n        return false;\n      }\n    },\n    onTranscoderDefArgumentEnd() {\n      ret += \", \";\n    },\n  });\n\n  return ret;\n};\n\ntype ContractEntryDescriptorDef =\n  | {\n      input: { name: string; type: TranscoderDef }[];\n      output: TranscoderDef;\n      mode: \"public\" | \"readonly\";\n    }\n  | {\n      mode: \"mapEntry\";\n      output: TranscoderDef;\n      input: TranscoderDef;\n    }\n  | {\n      mode: \"variable\" | \"constant\";\n      input: [\"noneT\"];\n      output: TranscoderDef;\n    };\n\nconst toMapEntryDescriptorDef = (\n  entry: ClarityAbiMap\n): ContractEntryDescriptorDef => {\n  return {\n    input: toTranscoderDef({ type: entry.key }).def,\n    output: toTranscoderDef({ type: { optional: entry.value } }).def,\n    mode: \"mapEntry\",\n  };\n};\n\nconst toVariableDescriptorDef = (\n  entry: ClarityAbiVariable\n): ContractEntryDescriptorDef => {\n  return {\n    output: toTranscoderDef({ type: entry.type }).def,\n    input: [\"noneT\"],\n    mode: entry.access,\n  };\n};\n\nconst toFunctionDescriptorDef = (\n  func: ClarityAbiFunction\n): void | ContractEntryDescriptorDef => {\n  if (func.access === \"private\") return;\n\n  return {\n    input: func.args.map((arg) => ({\n      name: arg.name,\n      type: toTranscoderDef(arg).def,\n    })),\n    output: toTranscoderDef(func.outputs).def,\n    mode: func.access === \"public\" ? \"public\" : \"readonly\",\n  };\n};\n\nexport const generateContractFromAbi = async ({\n  projectName,\n  contractName,\n  principal,\n  apiHost,\n  outputDir: output,\n  runtimePackagePath,\n  contractOverwrites,\n}: {\n  projectName: string;\n  contractName: string;\n  aliasContractName?: string;\n  principal: string;\n  apiHost: string;\n  outputDir: string;\n  runtimePackagePath: string;\n  contractOverwrites: { [from: string]: string };\n}): Promise<void> => {\n  const url = `${apiHost}/v2/contracts/interface/${principal}/${\n    contractOverwrites[contractName] ?? contractName\n  }`;\n  const response = await asyncAutoRetry(() => axios.get(url), {\n    isNeedRetry: (error) => {\n      if (axios.isAxiosError(error) && error.response?.status === 429) {\n        return true;\n      }\n      return false;\n    },\n  });\n  const interfaceData: ClarityAbi = response.data;\n  const defs = {} as Record<string, ContractEntryDescriptorDef>;\n  for (const func of interfaceData.functions) {\n    const res = toFunctionDescriptorDef(func);\n    if (res) defs[func.name] = res;\n  }\n  for (const mapEntry of interfaceData.maps) {\n    defs[mapEntry.name] = toMapEntryDescriptorDef(mapEntry);\n  }\n  for (const varEntry of interfaceData.variables) {\n    if (varEntry.access !== \"variable\") continue;\n    defs[varEntry.name] = toVariableDescriptorDef(varEntry);\n  }\n\n  const transcoderNames = getAllTranscoderName(\n    Object.values(defs).flatMap((def) => [\n      ...(function () {\n        switch (def.mode) {\n          case \"readonly\":\n          case \"public\":\n            return def.input.map((i) => i.type);\n          default:\n            return [def.input];\n        }\n      })(),\n      def.output,\n    ])\n  );\n\n  const source = `\nimport {\ndefineContract,\n${transcoderNames.join(\",\\n\")}\n} from \"${runtimePackagePath}\"\n\nexport const ${camelCase(contractName)} = defineContract({\n\"${contractName}\": ${inspect(\n    mapValues(defs, (o) => ({\n      input: (function () {\n        switch (o.mode) {\n          case \"readonly\":\n          case \"public\":\n            return o.input.map((i) => ({\n              name: i.name,\n              type: {\n                [inspect.custom]: () => stringifyTranscoderDef(i.type),\n              },\n            }));\n          default:\n            return {\n              [inspect.custom]: () => stringifyTranscoderDef(o.input),\n            };\n        }\n      })(),\n      output: {\n        [inspect.custom]: () => stringifyTranscoderDef(o.output),\n      },\n      mode: o.mode,\n    })),\n    { depth: null }\n  )}\n} as const)\n\n\n`;\n\n  fs.writeFileSync(\n    path.resolve(\n      output,\n      `./${getContractFileName(projectName, contractName)}.ts`\n    ),\n    source\n  );\n};\n\nexport const contractGenerator = async ({\n  contracts,\n  projectName,\n  outputDir,\n  runtimePackagePath,\n}: {\n  contracts: string[];\n  projectName: string;\n  outputDir: string;\n  runtimePackagePath: string;\n}): Promise<void> => {\n  const importsObjects = contracts.map((n) => `...${camelCase(n)}`);\n  const importsHeaders = contracts.map(\n    (n) =>\n      `import { ${camelCase(n)} } from \"./${getContractFileName(\n        projectName,\n        n\n      )}\"`\n  );\n  const code = `import { defineContract } from \"${runtimePackagePath}\";\n${importsHeaders.join(\"\\n\")}\n\nexport const ${projectName}Contracts = defineContract({\n${importsObjects.join(\",\\n\")}\n});\n\n  `; /*? */\n\n  fs.writeFileSync(\n    path.resolve(outputDir, `./contracts_${projectName}.ts`),\n    code\n  );\n};\n\nconst getContractFileName = (projectName: string, contractName: string) =>\n  `contract_${projectName}_${contractName}`;\n"]}