{"version":3,"sources":["../src/runtime/decoders.ts"],"names":[],"mappings":"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","file":"chunk-ELO6AFS4.mjs","sourcesContent":["import {\n  addressToString,\n  ClarityType,\n  ClarityValue,\n} from \"@stacks/transactions\";\nimport {hexToBytes} from '@stacks/common'\nimport { Decoder, Response, UnboxDecoder } from \"./types\";\n\nexport class ClarityError extends Error {\n  constructor(readonly code: number) {\n    super(`ClarityError: ${code}`);\n  }\n}\n\nexport const boolResult: Decoder<boolean> = (result) => {\n  if (result.type === ClarityType.BoolTrue) {\n    return true;\n  }\n  if (result.type === ClarityType.BoolFalse) {\n    return false;\n  }\n  throw new Error(`Expected integer, got ${result.type}`);\n};\n\nexport const principalResult: Decoder<string> = (result) => {\n  if (result.type === ClarityType.PrincipalStandard) {\n    return addressResult(result);\n  }\n  if (result.type === ClarityType.PrincipalContract) {\n    return contractResult(result);\n  }\n  throw new Error(`Expected principal, got ${result.type}`);\n};\n\nexport const addressResult: Decoder<string> = (result) => {\n  if (result.type === ClarityType.PrincipalStandard) {\n    return result.value;\n  }\n  throw new Error(`Expected principal, got ${result.type}`);\n};\n\nexport const contractResult: Decoder<`${string}.${string}`> = (result) => {\n  if (result.type === ClarityType.PrincipalContract) {\n    return result.value;\n  }\n  throw new Error(`Expected principal, got ${result.type}`);\n};\n\nexport const intResult: Decoder<bigint> = (result) => {\n  if (result.type === ClarityType.Int || result.type === ClarityType.UInt) {\n    return BigInt(result.value);\n  }\n  throw new Error(`Expected integer, got ${result.type}`);\n};\n\nexport const stringResult: Decoder<string> = (result) => {\n  if (\n    result.type === ClarityType.StringASCII ||\n    result.type === ClarityType.StringUTF8\n  ) {\n    return result.value;\n  }\n  throw new Error(`Expected string, got ${result.type}`);\n};\n\nexport const bufferResult: Decoder<Uint8Array> = (result) => {\n  if (result.type === ClarityType.Buffer) {\n    return hexToBytes(result.value);\n  }\n  throw new Error(`Expected buffer, got ${result.type}`);\n};\n\nexport const defaultErrorDecoder: Decoder<Error> = (value: ClarityValue) => {\n  if (\n    value.type === ClarityType.StringASCII ||\n    value.type === ClarityType.StringUTF8\n  ) {\n    return new Error(value.value);\n  }\n  if (value.type === ClarityType.UInt || value.type === ClarityType.Int) {\n    return new ClarityError(Number(value.value));\n  }\n  return new Error(\"Unknown error\");\n};\n\nexport function responseSimpleDecoder<T>(\n  success: Decoder<T>,\n  failure: Decoder<Error> = defaultErrorDecoder\n): Decoder<Response<T>> {\n  return (value: ClarityValue): Response<T> => {\n    if (value.type === ClarityType.ResponseErr) {\n      return {\n        type: \"error\",\n        error: failure(value.value),\n      };\n    }\n\n    if (value.type === ClarityType.ResponseOk) {\n      return {\n        type: \"success\",\n        value: success(value.value),\n      };\n    }\n\n    throw new Error(`Expected response, got ${value.type}`);\n  };\n}\n\nexport function optionalDecoder<T>(\n  decoder: Decoder<T>\n): Decoder<T | undefined> {\n  return (value) => {\n    if (value.type === ClarityType.OptionalNone) {\n      return undefined;\n    }\n    if (value.type === ClarityType.OptionalSome) {\n      return decoder(value.value);\n    }\n    return decoder(value);\n  };\n}\n\nexport const noneResult: Decoder<void> = (result) => {\n  if (result.type === ClarityType.OptionalNone) {\n    return null;\n  }\n  throw new Error(`Expected none, got ${result.type}`);\n};\n\nexport function tupleDecoder<P extends Record<string, Decoder<any>>>(\n  decorators: P\n): Decoder<{\n  [K in keyof P]: UnboxDecoder<P[K]>;\n}> {\n  return (input) => {\n    if (input.type !== ClarityType.Tuple) {\n      throw new Error(`Expected tuple, got ${input.type}`);\n    }\n    const result = {} as any;\n    for (const key of Object.keys(decorators)) {\n      result[key] = decorators[key as keyof P]!(input.value[key]!);\n    }\n    return result;\n  };\n}\n\nexport function listDecoder<T>(decoder: Decoder<T>): Decoder<T[]> {\n  return (value) => {\n    if (value.type === ClarityType.List) {\n      return value.value.map(decoder);\n    }\n    throw new Error(`Expected list, got ${value.type}`);\n  };\n}\n"]}