{"version":3,"file":"get-equivalent-type.mjs","sources":["../../../src/client/helpers/get-equivalent-type.ts"],"sourcesContent":["import { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport {\n  ABIAddressType,\n  ABIArrayDynamicType,\n  ABIArrayStaticType,\n  ABIBoolType,\n  ABIByteType,\n  ABIReferenceType,\n  ABIStringType,\n  ABITupleType,\n  ABIType,\n  ABIUfixedType,\n  ABIUintType,\n  abiTypeIsTransaction,\n} from 'algosdk'\nimport { Sanitizer } from '../../util/sanitization'\n\nconst bigIntOrNumberType = 'bigint | number'\nconst bytesOrStringType = 'Uint8Array | string'\n\nexport function getEquivalentType(\n  abiTypeStr: string,\n  ioType: 'input' | 'output',\n  ctx: { app: Arc56Contract; sanitizer: Sanitizer },\n): string {\n  const { app, sanitizer } = ctx\n  if (abiTypeStr == 'void') {\n    return 'void'\n  }\n  if (abiTypeStr == 'AVMBytes') {\n    return ioType === 'input' ? bytesOrStringType : 'Uint8Array'\n  }\n  if (abiTypeStr == 'AVMString') {\n    return 'string'\n  }\n  if (abiTypeStr == 'AVMUint64') {\n    return 'bigint'\n  }\n  if (abiTypeIsTransaction(abiTypeStr)) {\n    return 'AppMethodCallTransactionArgument'\n  }\n  if (abiTypeStr == ABIReferenceType.account) {\n    return bytesOrStringType\n  }\n  if (abiTypeStr == ABIReferenceType.application || abiTypeStr == ABIReferenceType.asset) {\n    return 'bigint'\n  }\n  if (Object.keys(app.structs).includes(abiTypeStr)) {\n    return sanitizer.makeSafeTypeIdentifier(abiTypeStr)\n  }\n\n  const abiType = ABIType.from(abiTypeStr)\n\n  return abiTypeToTs(abiType, ioType)\n\n  function abiTypeToTs(abiType: ABIType, ioType: 'input' | 'output'): string {\n    if (abiType instanceof ABIUintType) {\n      if (abiType.bitSize < 53) return ioType === 'input' ? bigIntOrNumberType : 'number'\n      return ioType === 'input' ? bigIntOrNumberType : 'bigint'\n    }\n    if (abiType instanceof ABIArrayDynamicType) {\n      if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n\n      const childTsType = abiTypeToTs(abiType.childType, ioType)\n      if (childTsType === bigIntOrNumberType) {\n        return 'bigint[] | number[]'\n      } else if (childTsType === bytesOrStringType) {\n        return 'Uint8Array[] | string[]'\n      }\n\n      return `${childTsType}[]`\n    }\n    if (abiType instanceof ABIArrayStaticType) {\n      if (abiType.childType instanceof ABIByteType) return 'Uint8Array'\n      return `[${new Array(abiType.staticLength).fill(abiTypeToTs(abiType.childType, ioType)).join(', ')}]`\n    }\n    if (abiType instanceof ABIAddressType) {\n      return 'string'\n    }\n    if (abiType instanceof ABIBoolType) {\n      return 'boolean'\n    }\n    if (abiType instanceof ABIUfixedType) {\n      return 'number'\n    }\n    if (abiType instanceof ABITupleType) {\n      return `[${abiType.childTypes.map((c) => abiTypeToTs(c, ioType)).join(', ')}]`\n    }\n    if (abiType instanceof ABIByteType) {\n      return 'number'\n    }\n    if (abiType instanceof ABIStringType) {\n      return 'string'\n    }\n    return 'unknown'\n  }\n}\n"],"names":[],"mappings":"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"}