@clarigen/core 4.1.3 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["result: Partial<ErrorCodes<T['constants']>>","result: Partial<ProjectErrors<T>>","val","hexToCV","hex","tuple: Record<string, ClarityValue>","input","_parseToCV","options: CvToStringOptions","e: [keyof C, FullContract<TypedAbi>][]","fnName: keyof (typeof def)['functions']","headers: Record<string, string>","hexToCV","cvToHex","result: Record<string, unknown>","apiKey?: string","headers?: Record<string, string>","tuple: Record<string, any>","byteToHexCache: string[]","elements: string[]","tuple: Record<string, string>","key: string"],"sources":["../src/utils.ts","../src/events.ts","../src/contracts.ts","../src/clarity-types.ts","../src/factory.ts","../src/api/api-helpers.ts","../src/api/call-read-only.ts","../src/api/url-parsing.ts","../src/api/index.ts","../src/post-conditions.ts","../src/raw-clarity.ts"],"sourcesContent":["/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n contractPrincipalCV,\n type ContractPrincipalCV,\n} from '@stacks/transactions';\nimport type { Contract } from './types';\nimport { hex } from '@scure/base';\nimport type { TypedAbi } from './abi-types';\nimport type { AllContracts } from './factory-types';\n\nexport const TESTNET_BURN_ADDRESS = 'ST000000000000000000002AMW42H';\nexport const MAINNET_BURN_ADDRESS = 'SP000000000000000000002Q6VF78';\n\nexport const toCamelCase = (\n input: string | number | symbol,\n titleCase?: boolean\n) => {\n const inputStr = typeof input === 'string' ? input : String(input);\n // Check if the input string only contains uppercase letters and/or underscores\n // biome-ignore lint/performance/useTopLevelRegex: ignored using `--suppress`\n const isUpperCaseAndUnderscore = /^[A-Z_]+$/.test(inputStr);\n if (isUpperCaseAndUnderscore) {\n return inputStr;\n }\n const [first, ...parts] = inputStr\n .replace('!', '_x')\n .replace('?', '_q')\n .split('-');\n const firstChar = titleCase\n ? // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n first![0]!.toUpperCase()\n : // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n first![0]!.toLowerCase();\n let result = `${firstChar}${\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n first!.slice(1)\n }`;\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n parts.forEach((part) => {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const capitalized = part[0]!.toUpperCase() + part.slice(1);\n result += capitalized;\n });\n return result;\n};\n\nexport function toKebabCase(input: string): string {\n const matches = input.match(\n /[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g\n );\n if (!matches) return input;\n return matches.join('-').toLowerCase();\n}\n\nexport function getContractName(identifier: string, camelCase = true): string {\n const name = identifier.split('.')[1];\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n return camelCase ? toCamelCase(name!) : name!;\n}\n\nexport const getContractNameFromPath = (path: string) => {\n const contractPaths = path.split('/');\n const filename = contractPaths.at(-1);\n const [contractName] = filename?.split('.') ?? [];\n return contractName;\n};\n\nexport const getContractIdentifier = <T>(contract: Contract<T>) =>\n `${contract.address}.${contract.name}`;\n\nexport const getContractPrincipalCV = <T>(\n contract: Contract<T>\n): ContractPrincipalCV => {\n const contractName = getContractNameFromPath(contract.contractFile);\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n return contractPrincipalCV(contract.address, contractName!);\n};\n\nexport function bootContractIdentifier(name: string, mainnet: boolean) {\n const addr = mainnet ? MAINNET_BURN_ADDRESS : TESTNET_BURN_ADDRESS;\n return `${addr}.${name}`;\n}\n\nexport function bytesToHex(bytes: Uint8Array) {\n return hex.encode(bytes);\n}\n\nexport function hexToBytes(hexString: string) {\n return hex.decode(hexString);\n}\n\nexport function bytesToAscii(bytes: Uint8Array) {\n const bytesArray = Array.from(bytes);\n return String.fromCharCode.apply(null, bytesArray);\n}\n\nexport const isNumber = (value: number | string): value is number =>\n typeof value === 'number';\n\n// Error code helpers\n\ntype ErrorKeyCheck<K> = K extends string\n ? Lowercase<K> extends `err${string}`\n ? K\n : never\n : never;\n\nexport type ErrorCodes<C extends TypedAbi['constants']> = {\n [K in keyof C as ErrorKeyCheck<K>]: C[K] extends {\n isOk: boolean;\n value: infer V;\n }\n ? V\n : C[K];\n};\n\nexport type ProjectErrors<\n T extends {\n contracts: AllContracts;\n },\n> = {\n [K in keyof T['contracts']]: ErrorCodes<T['contracts'][K]['constants']>;\n};\n\nexport function extractErrors<T extends TypedAbi>(\n contract: T\n): ErrorCodes<T['constants']> {\n const { constants } = contract;\n\n const result: Partial<ErrorCodes<T['constants']>> = {};\n\n for (const key in constants) {\n if (key.toLowerCase().startsWith('err')) {\n const value = constants[key];\n if (\n typeof value === 'object' &&\n value &&\n 'isOk' in value &&\n !value.isOk &&\n 'value' in value\n ) {\n result[key as keyof ErrorCodes<T['constants']>] =\n value.value as ErrorCodes<T['constants']>[keyof ErrorCodes<\n T['constants']\n >];\n } else {\n result[key as keyof ErrorCodes<T['constants']>] = value as ErrorCodes<\n T['constants']\n >[keyof ErrorCodes<T['constants']>];\n }\n }\n }\n\n return result as unknown as ErrorCodes<T['constants']>;\n}\n\nexport function projectErrors<\n T extends {\n contracts: AllContracts;\n },\n>(project: T): ProjectErrors<T> {\n const { contracts } = project;\n const result: Partial<ProjectErrors<T>> = {};\n\n // biome-ignore lint/suspicious/useGuardForIn: ignored using `--suppress`\n for (const key in contracts) {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n result[key as keyof ProjectErrors<T>] = extractErrors(contracts[key]!);\n }\n\n return result as unknown as ProjectErrors<T>;\n}\n","// biome-ignore lint/style/noEnum: ignored using `--suppress`\nexport enum CoreNodeEventType {\n ContractEvent = 'contract_event',\n StxTransferEvent = 'stx_transfer_event',\n StxMintEvent = 'stx_mint_event',\n StxBurnEvent = 'stx_burn_event',\n StxLockEvent = 'stx_lock_event',\n NftTransferEvent = 'nft_transfer_event',\n NftMintEvent = 'nft_mint_event',\n NftBurnEvent = 'nft_burn_event',\n FtTransferEvent = 'ft_transfer_event',\n FtMintEvent = 'ft_mint_event',\n FtBurnEvent = 'ft_burn_event',\n}\n\nexport type NonStandardClarityValue = unknown;\n\nexport type CoreNodeEventBase = {\n /** 0x-prefix transaction hash. */\n txid: string;\n event_index: number;\n committed: boolean;\n};\n\nexport interface SmartContractEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.ContractEvent;\n contract_event: {\n /** Fully qualified contract ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.kv-store\" */\n contract_identifier: string;\n topic: string;\n value: NonStandardClarityValue;\n /** Hex encoded Clarity value. */\n raw_value: string;\n };\n}\n\nexport interface StxTransferEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.StxTransferEvent;\n stx_transfer_event: {\n recipient: string;\n sender: string;\n amount: string;\n };\n}\n\nexport interface StxMintEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.StxMintEvent;\n stx_mint_event: {\n recipient: string;\n amount: string;\n };\n}\n\nexport interface StxBurnEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.StxBurnEvent;\n stx_burn_event: {\n sender: string;\n amount: string;\n };\n}\n\nexport interface StxLockEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.StxLockEvent;\n /** TODO: what dis? */\n committed: boolean;\n stx_lock_event: {\n /** String quoted base10 integer. */\n locked_amount: string;\n /** String quoted base10 integer. */\n unlock_height: string;\n /** STX principal associated with the locked tokens. */\n locked_address: string;\n };\n}\n\nexport interface NftTransferEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.NftTransferEvent;\n nft_transfer_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n recipient: string;\n sender: string;\n value: NonStandardClarityValue;\n /** Hex encoded Clarity value. */\n raw_value: string;\n };\n}\n\nexport interface NftMintEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.NftMintEvent;\n nft_mint_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n recipient: string;\n value: NonStandardClarityValue;\n /** Hex encoded Clarity value. */\n raw_value: string;\n };\n}\n\nexport interface NftBurnEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.NftBurnEvent;\n nft_burn_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n sender: string;\n value: NonStandardClarityValue;\n /** Hex encoded Clarity value. */\n raw_value: string;\n };\n}\n\nexport interface FtTransferEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.FtTransferEvent;\n ft_transfer_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n recipient: string;\n sender: string;\n amount: string;\n };\n}\n\nexport interface FtMintEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.FtMintEvent;\n ft_mint_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n recipient: string;\n amount: string;\n };\n}\n\nexport interface FtBurnEvent extends CoreNodeEventBase {\n type: CoreNodeEventType.FtBurnEvent;\n ft_burn_event: {\n /** Fully qualified asset ID, e.g. \"ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name\" */\n asset_identifier: string;\n sender: string;\n amount: string;\n };\n}\n\nexport type CoreNodeEvent =\n | SmartContractEvent\n | StxTransferEvent\n | StxMintEvent\n | StxBurnEvent\n | StxLockEvent\n | FtTransferEvent\n | FtMintEvent\n | FtBurnEvent\n | NftTransferEvent\n | NftMintEvent\n | NftBurnEvent;\n\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.ContractEvent\n): SmartContractEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxTransferEvent\n): StxTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxMintEvent\n): StxMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxBurnEvent\n): StxBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.StxLockEvent\n): StxLockEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftTransferEvent\n): NftTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftMintEvent\n): NftMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.NftBurnEvent\n): NftBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtTransferEvent\n): FtTransferEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtMintEvent\n): FtMintEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType.FtBurnEvent\n): FtBurnEvent[];\nexport function filterEvents(\n events: CoreNodeEvent[],\n type: CoreNodeEventType\n): CoreNodeEvent[] {\n return events.filter((event) => event.type === type);\n}\n","import type { Contracts, ContractInstances } from './types';\n\ntype MakeContractsOptions = {\n deployerAddress?: string;\n};\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function makeContracts<T extends Contracts<any>>(\n contracts: T,\n options: MakeContractsOptions = {}\n): ContractInstances<T> {\n const instances = {} as ContractInstances<T>;\n // biome-ignore lint/suspicious/useGuardForIn: ignored using `--suppress`\n for (const k in contracts) {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const contract = contracts[k]!;\n const address = options.deployerAddress || contract.address;\n const identifier = `${address}.${contract.name}`;\n const instance = contract.contract(address, contract.name) as ReturnType<\n T[typeof k]['contract']\n >;\n instances[k] = {\n identifier,\n contract: instance,\n };\n }\n return instances;\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n type ClarityAbi as _ClarityAbi,\n type ClarityAbiType as MSClarityAbiType,\n type ClarityAbiTypeTuple,\n ClarityType,\n type ClarityValue,\n type PrincipalCV,\n uintCV,\n contractPrincipalCV,\n intCV,\n stringAsciiCV,\n stringUtf8CV,\n noneCV,\n someCV,\n tupleCV,\n listCV,\n hexToCV,\n bufferCV,\n parseToCV as _parseToCV,\n responseErrorCV,\n responseOkCV,\n} from '@stacks/transactions';\n\nimport type {\n Response,\n ResponseOk,\n ResponseErr,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeUInt128,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeBool,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeBuffer,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeInt128,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeList,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeNone,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeOptional,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypePrimitive,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypePrincipal,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeResponse,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeStringAscii,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeStringUtf8,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiTypeTraitReference,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiMap,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiFunction,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiType,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityAbiArg,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n TypedAbiFunction,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n TypedAbiArg,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n StacksEpochId,\n // biome-ignore lint/style/noExportedImports: ignored using `--suppress`\n ClarityVersion,\n} from './abi-types';\nexport type {\n ClarityAbiTypeUInt128,\n ClarityAbiTypeBool,\n ClarityAbiTypeBuffer,\n ClarityAbiTypeInt128,\n ClarityAbiTypeList,\n ClarityAbiTypeNone,\n ClarityAbiTypeOptional,\n ClarityAbiTypePrimitive,\n ClarityAbiTypePrincipal,\n ClarityAbiTypeResponse,\n ClarityAbiTypeStringAscii,\n ClarityAbiTypeStringUtf8,\n ClarityAbiTypeTraitReference,\n ClarityAbiMap,\n ClarityAbiFunction,\n ClarityAbiType,\n ClarityAbiArg,\n TypedAbiFunction,\n TypedAbiArg,\n StacksEpochId,\n ClarityVersion,\n};\nimport { toCamelCase, toKebabCase, bytesToAscii, hexToBytes } from './utils';\n\nexport function ok<T, Err = never>(value: T): ResponseOk<T, Err> {\n return {\n isOk: true,\n value,\n };\n}\n\nexport function err<Ok = never, T = unknown>(value: T): ResponseErr<Ok, T> {\n return {\n isOk: false,\n value,\n };\n}\n\nexport function isResponse<T>(\n value: Response<T, T> | T\n): value is Response<T, T> {\n return typeof value === 'object' && value !== null && 'isOk' in value;\n}\n\n// export interface ClarityAbi extends Omit<_ClarityAbi, 'maps'> {\n// maps: ClarityAbiMap[];\n// epoch: StacksEpochId;\n// clarity_version: ClarityVersion;\n// // clarity_version?: string;\n// }\n\nexport interface ClarityAbi extends _ClarityAbi {\n // maps: ClarityAbiMap[];\n epoch: StacksEpochId;\n clarity_version: ClarityVersion;\n // clarity_version?: string;\n}\n\nexport function principalToString(principal: PrincipalCV): string {\n return principal.value;\n}\n\n/**\n * @param val - ClarityValue\n * @param returnResponse - if true, this will return a \"response\" object.\n * Otherwise, it returns the inner value of the response (whether ok or err)\n */\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function cvToValue<T = any>(\n val: ClarityValue,\n returnResponse = false\n): T {\n // biome-ignore lint/style/useDefaultSwitchClause: ignored using `--suppress`\n switch (val.type) {\n case ClarityType.BoolTrue:\n return true as unknown as T;\n case ClarityType.BoolFalse:\n return false as unknown as T;\n case ClarityType.Int:\n case ClarityType.UInt:\n return val.value as unknown as T;\n case ClarityType.Buffer:\n return hexToBytes(val.value) as unknown as T;\n case ClarityType.OptionalNone:\n return null as unknown as T;\n case ClarityType.OptionalSome:\n return cvToValue(val.value, true);\n case ClarityType.ResponseErr:\n if (returnResponse)\n return err(cvToValue(val.value, true)) as unknown as T;\n return cvToValue(val.value, true);\n case ClarityType.ResponseOk:\n if (returnResponse) return ok(cvToValue(val.value, true)) as unknown as T;\n return cvToValue(val.value, true);\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return principalToString(val) as unknown as T;\n case ClarityType.List:\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return val.value.map((v) => cvToValue(v, true)) as unknown as T;\n case ClarityType.Tuple: {\n const tupleReduced = Object.entries(val.value).reduce(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n (acc, [key, val]) => {\n const keyFixed = toCamelCase(key);\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: ignored using `--suppress`\n ...acc,\n [keyFixed]: cvToValue(val, true),\n };\n },\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n {} as Record<string, any>\n );\n return tupleReduced as unknown as T;\n }\n case ClarityType.StringASCII:\n return val.value as unknown as T;\n case ClarityType.StringUTF8:\n return val.value as unknown as T;\n }\n}\n\n/**\n * Converts a hex encoded string to the javascript clarity value object {type: string; value: any}\n * @param hex - the hex encoded string with or without `0x` prefix\n * @param jsonCompat - enable to serialize bigints to strings\n */\nexport function hexToCvValue<_T>(hex: string, jsonCompat = false) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return cvToValue(hexToCV(hex), jsonCompat);\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport type TupleInput = Record<string, any>;\nexport type CVInput = string | boolean | TupleInput | number | bigint;\n\nfunction inputToBigInt(input: CVInput) {\n const isBigInt = typeof input === 'bigint';\n const isNumber = typeof input === 'number';\n const isString = typeof input === 'string';\n const isOk = isBigInt || isNumber || isString;\n if (!isOk) {\n throw new Error('Invalid input type for integer');\n }\n return BigInt(input);\n}\n\nexport const isClarityAbiPrimitive = (\n val: ClarityAbiType\n): val is ClarityAbiTypePrimitive => typeof val === 'string';\nexport const isClarityAbiBuffer = (\n val: ClarityAbiType\n): val is ClarityAbiTypeBuffer =>\n (val as ClarityAbiTypeBuffer).buffer !== undefined;\nexport const isClarityAbiStringAscii = (\n val: ClarityAbiType\n): val is ClarityAbiTypeStringAscii =>\n (val as ClarityAbiTypeStringAscii)['string-ascii'] !== undefined;\nexport const isClarityAbiStringUtf8 = (\n val: ClarityAbiType\n): val is ClarityAbiTypeStringUtf8 =>\n (val as ClarityAbiTypeStringUtf8)['string-utf8'] !== undefined;\nexport const isClarityAbiResponse = (\n val: ClarityAbiType\n): val is ClarityAbiTypeResponse =>\n (val as ClarityAbiTypeResponse).response !== undefined;\nexport const isClarityAbiOptional = (\n val: ClarityAbiType\n): val is ClarityAbiTypeOptional =>\n (val as ClarityAbiTypeOptional).optional !== undefined;\nexport const isClarityAbiTuple = (\n val: ClarityAbiType\n): val is ClarityAbiTypeTuple =>\n (val as ClarityAbiTypeTuple).tuple !== undefined;\nexport const isClarityAbiList = (\n val: ClarityAbiType\n): val is ClarityAbiTypeList => (val as ClarityAbiTypeList).list !== undefined;\nexport const isClarityAbiTraitReference = (\n val: ClarityAbiType\n): val is ClarityAbiTypeTraitReference => val === 'trait_reference';\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\nexport function parseToCV(input: CVInput, type: ClarityAbiType): ClarityValue {\n if (isClarityAbiTuple(type)) {\n if (typeof input !== 'object') {\n throw new Error('Invalid tuple input');\n }\n const tuple: Record<string, ClarityValue> = {};\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n type.tuple.forEach((key) => {\n const jsKey = findJsTupleKey(key.name, input);\n const val = input[jsKey];\n tuple[key.name] = parseToCV(val, key.type);\n });\n return tupleCV(tuple);\n }\n if (isClarityAbiList(type)) {\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n const inputs = input as any[];\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n const values = inputs.map((input) => parseToCV(input, type.list.type));\n return listCV(values);\n }\n if (isClarityAbiOptional(type)) {\n if (input === null) return noneCV();\n return someCV(parseToCV(input, type.optional));\n }\n if (isClarityAbiStringAscii(type)) {\n if (typeof input !== 'string') {\n throw new Error('Invalid string-ascii input');\n }\n return stringAsciiCV(input);\n }\n if (isClarityAbiStringUtf8(type)) {\n if (typeof input !== 'string') {\n throw new Error('Invalid string-ascii input');\n }\n return stringUtf8CV(input);\n }\n if (isClarityAbiResponse(type)) {\n if (!isResponse(input)) {\n throw new Error('Invalid response input');\n }\n if (input.isOk) {\n return responseOkCV(parseToCV(input.value, type.response.ok));\n }\n return responseErrorCV(parseToCV(input.value, type.response.error));\n }\n if (type === 'bool') {\n const inputString = typeof input === 'boolean' ? input.toString() : input;\n return _parseToCV(inputString as string, type);\n }\n if (type === 'uint128') {\n const bigi = inputToBigInt(input);\n return uintCV(bigi.toString());\n }\n if (type === 'int128') {\n const bigi = inputToBigInt(input);\n return intCV(bigi.toString());\n }\n if (type === 'trait_reference') {\n if (typeof input !== 'string')\n throw new Error('Invalid input for trait_reference');\n const [addr, name] = input.split('.');\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n return contractPrincipalCV(addr!, name!);\n }\n if (isClarityAbiBuffer(type)) {\n return bufferCV(input as Uint8Array);\n }\n return _parseToCV(input as string, type as MSClarityAbiType);\n}\n\nexport type CvToStringOptions = {\n encoding?: 'tryAscii' | 'hex';\n indent?: number;\n depth?: number;\n};\nexport function cvToString(\n val: ClarityValue,\n options?: CvToStringOptions | 'tryAscii' | 'hex'\n): string;\nexport function cvToString(\n val: ClarityValue,\n optionsOrEncoding?: 'tryAscii' | 'hex' | CvToStringOptions\n): string {\n const options: CvToStringOptions =\n typeof optionsOrEncoding === 'object'\n ? optionsOrEncoding\n : {\n encoding: optionsOrEncoding,\n indent: undefined,\n depth: undefined,\n };\n const encoding = options.encoding ?? 'hex';\n const indent = options.indent;\n const depth = options.depth ?? 0;\n\n // biome-ignore lint/style/useDefaultSwitchClause: ignored using `--suppress`\n switch (val.type) {\n case ClarityType.BoolTrue:\n return 'true';\n case ClarityType.BoolFalse:\n return 'false';\n case ClarityType.Int:\n return val.value.toString();\n case ClarityType.UInt:\n return `u${val.value.toString()}`;\n case ClarityType.Buffer:\n if (encoding === 'tryAscii') {\n const str = bytesToAscii(hexToBytes(val.value));\n // biome-ignore lint/performance/useTopLevelRegex: ignored using `--suppress`\n if (/[ -~]/.test(str)) {\n return JSON.stringify(str);\n }\n }\n return `0x${val.value}`;\n case ClarityType.OptionalNone:\n return 'none';\n case ClarityType.OptionalSome:\n return `(some ${cvToString(val.value, options)})`;\n case ClarityType.ResponseErr:\n return `(err ${cvToString(val.value, options)})`;\n case ClarityType.ResponseOk:\n return `(ok ${cvToString(val.value, options)})`;\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return `'${principalToString(val)}`;\n case ClarityType.List:\n return `(list ${val.value.map((v) => cvToString(v, options)).join(' ')})`;\n case ClarityType.Tuple: {\n const keys = Object.keys(val.value);\n if (indent === undefined || keys.length === 0) {\n return `{ ${keys\n .map(\n (key) =>\n `${key}: ${\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n cvToString(val.value[key]!, options)\n }`\n )\n .join(', ')} }`;\n }\n const padding = ' '.repeat((depth + 1) * indent);\n const outerPadding = ' '.repeat(depth * indent);\n const lines = keys.map(\n (key) =>\n `${padding}${key}: ${\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n cvToString(val.value[key]!, {\n ...options,\n depth: depth + 1,\n })\n }`\n );\n return `{\\n${lines.join(',\\n')}\\n${outerPadding}}`;\n }\n case ClarityType.StringASCII:\n return `\"${val.value}\"`;\n case ClarityType.StringUTF8:\n return `u\"${val.value}\"`;\n }\n}\n\n/**\n * Convert a Clarity value to valid JSON. This does this same thing as\n * `cvToValue`, except that integers are returned as strings, and buffers\n * are returned as hex-encoded strings.\n *\n * @param val - ClarityValue\n */\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function cvToJSON<T = any>(\n val: ClarityValue,\n returnResponse = false\n): T {\n // biome-ignore lint/style/useDefaultSwitchClause: ignored using `--suppress`\n switch (val.type) {\n case ClarityType.BoolTrue:\n return true as unknown as T;\n case ClarityType.BoolFalse:\n return false as unknown as T;\n case ClarityType.Int:\n case ClarityType.UInt:\n return `${val.value}` as unknown as T;\n case ClarityType.Buffer:\n return val.value as unknown as T;\n case ClarityType.OptionalNone:\n return null as unknown as T;\n case ClarityType.OptionalSome:\n return cvToJSON(val.value);\n case ClarityType.ResponseErr:\n if (returnResponse) return err(cvToJSON(val.value)) as unknown as T;\n return cvToJSON(val.value);\n case ClarityType.ResponseOk:\n if (returnResponse) return ok(cvToJSON(val.value)) as unknown as T;\n return cvToJSON(val.value);\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return principalToString(val) as unknown as T;\n case ClarityType.List:\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return val.value.map((v) => cvToJSON(v)) as unknown as T;\n case ClarityType.Tuple: {\n const tupleReduced = Object.entries(val.value).reduce(\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n (acc, [key, val]) => {\n const keyFixed = toCamelCase(key);\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: ignored using `--suppress`\n ...acc,\n [keyFixed]: cvToJSON(val),\n };\n },\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n {} as Record<string, any>\n );\n return tupleReduced as unknown as T;\n }\n case ClarityType.StringASCII:\n return val.value as unknown as T;\n case ClarityType.StringUTF8:\n return val.value as unknown as T;\n }\n}\n\nexport function transformObjectArgs(\n func: ClarityAbiFunction,\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n args: Record<string, any>\n) {\n return func.args.map((abiArg) => {\n const key = findJsTupleKey(abiArg.name, args);\n const val = args[key];\n return parseToCV(val, abiArg.type);\n });\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function transformArgsArray(func: ClarityAbiFunction, args: any[]) {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n return args.map((arg, index) => parseToCV(arg, func.args[index]!.type));\n}\n\nexport function transformArgsToCV(\n func: ClarityAbiFunction,\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n args: any[] | [Record<string, any>]\n) {\n if (args.length === 0) return [];\n const [firstArg] = args;\n if (args.length === 1 && func.args.length !== 1) {\n return transformObjectArgs(func, firstArg);\n }\n if (\n typeof firstArg === 'object' &&\n !Array.isArray(firstArg) &&\n firstArg !== null\n ) {\n try {\n let hasAllArgs = true;\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n func.args.forEach((a) => {\n try {\n findJsTupleKey(a.name, firstArg);\n } catch (_error) {\n hasAllArgs = false;\n }\n });\n if (hasAllArgs) {\n return transformObjectArgs(func, firstArg);\n }\n } catch (_error) {\n // console.log('error transforming args:', _error);\n //\n }\n }\n return transformArgsArray(func, args);\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function findJsTupleKey(key: string, input: Record<string, any>) {\n const found = Object.keys(input).find((k) => {\n const camelEq = key === k;\n const kebabEq = key === toKebabCase(k);\n return camelEq || kebabEq;\n });\n if (!found) {\n throw new Error(`Error encoding JS tuple: ${key} not found in input.`);\n }\n return found;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function expectOk<Ok>(response: Response<Ok, any>): Ok {\n if (response.isOk) {\n return response.value;\n }\n throw new Error(`Expected OK, received error: ${String(response.value)}`);\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function expectErr<Err>(response: Response<any, Err>): Err {\n if (!response.isOk) {\n return response.value;\n }\n throw new Error(`Expected Err, received ok: ${String(response.value)}`);\n}\n\nexport type AbiPrimitiveTo<T extends ClarityAbiTypePrimitive> =\n T extends ClarityAbiTypeInt128\n ? bigint\n : T extends ClarityAbiTypeUInt128\n ? bigint\n : T extends ClarityAbiTypeBool\n ? boolean\n : T extends ClarityAbiTypePrincipal\n ? string\n : T extends ClarityAbiTypeTraitReference\n ? string\n : T extends ClarityAbiTypeNone\n ? never\n : T;\n\nexport type ReadonlyTuple = {\n readonly tuple: Readonly<ClarityAbiTypeTuple['tuple']>;\n};\n\ntype TupleTypeUnion<T> =\n T extends Readonly<ClarityAbiTypeTuple['tuple'][number]>\n ? { -readonly [Z in T['name']]: AbiTypeTo<T['type']> }\n : never;\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never;\ntype Compact<T> = { [K in keyof T]: T[K] };\n\nexport type AbiTupleTo<T extends ReadonlyTuple> = Compact<\n UnionToIntersection<TupleTypeUnion<T['tuple'][number]>>\n>;\n\nexport type AbiTypeTo<T extends ClarityAbiType | ReadonlyTuple> =\n T extends ClarityAbiTypePrimitive\n ? AbiPrimitiveTo<T>\n : T extends ClarityAbiTypeBuffer\n ? Uint8Array\n : T extends ClarityAbiTypeStringAscii\n ? string\n : T extends ClarityAbiTypeStringUtf8\n ? string\n : T extends ClarityAbiTypeList\n ? AbiTypeTo<T['list']['type']>[]\n : T extends ClarityAbiTypeOptional\n ? AbiTypeTo<T['optional']> | null\n : T extends ClarityAbiTypeResponse\n ? Response<\n AbiTypeTo<T['response']['ok']>,\n AbiTypeTo<T['response']['error']>\n >\n : T extends ReadonlyTuple\n ? AbiTupleTo<T>\n : never;\n\n// Helper type for inferring the return type of a function. Like `ReturnType`,\n// but for Clarigen types\nexport type FunctionReturnType<T> =\n T extends TypedAbiFunction<TypedAbiArg<unknown, string>[], infer R>\n ? R\n : never;\n\nexport type Jsonize<T> = T extends bigint\n ? string\n : T extends Uint8Array\n ? string\n : T extends (infer V)[]\n ? Jsonize<V>[]\n : T extends Record<keyof T, unknown>\n ? {\n [K in keyof T as K]: Jsonize<T[K]>;\n }\n : T;\n\nexport function getTypeString(val: ClarityAbiType): string {\n if (isClarityAbiPrimitive(val)) {\n if (val === 'int128') {\n return 'int';\n }\n if (val === 'uint128') {\n return 'uint';\n }\n return val;\n }\n if (isClarityAbiBuffer(val)) {\n return `(buff ${val.buffer.length})`;\n }\n if (isClarityAbiStringAscii(val)) {\n return `(string-ascii ${val['string-ascii'].length})`;\n }\n if (isClarityAbiStringUtf8(val)) {\n return `(string-utf8 ${val['string-utf8'].length})`;\n }\n if (isClarityAbiResponse(val)) {\n return `(response ${getTypeString(val.response.ok)} ${getTypeString(val.response.error)})`;\n }\n if (isClarityAbiOptional(val)) {\n return `(optional ${getTypeString(val.optional)})`;\n }\n if (isClarityAbiTuple(val)) {\n return `{ ${val.tuple.map((t) => `${t.name}: ${getTypeString(t.type)}`).join(', ')} }`;\n }\n if (isClarityAbiList(val)) {\n return `(list ${val.list.length} ${getTypeString(val.list.type)})`;\n }\n throw new Error(\n `Type string unsupported for Clarity type: ${JSON.stringify(val)}`\n );\n}\n","import type { ClarityValue } from '@stacks/transactions';\nimport type { TypedAbi, TypedAbiMap } from '../src/abi-types';\nimport {\n type Batch,\n type DeploymentPlan,\n getContractTxs,\n getDeploymentTxPath,\n getIdentifierForDeploymentTx,\n type DeploymentTransaction,\n} from './deployment';\nimport { type CVInput, parseToCV, transformArgsToCV } from './clarity-types';\nimport { toCamelCase } from './utils';\nimport type {\n AllContracts,\n ContractFactory,\n FunctionsToContractCalls,\n FnToContractCall,\n FullContract,\n} from './factory-types';\n\nexport const DEPLOYMENT_NETWORKS = [\n 'devnet',\n 'simnet',\n 'testnet',\n 'mainnet',\n] as const;\nexport type DeploymentNetwork = (typeof DEPLOYMENT_NETWORKS)[number];\n\nexport type DeploymentsForContracts<C extends AllContracts> = {\n [K in keyof C]: ContractDeployments;\n};\n\nexport type ContractDeployments = {\n [key in DeploymentNetwork]: string | null;\n};\n\nexport type Project<\n C extends AllContracts,\n D extends DeploymentsForContracts<C>,\n> = {\n contracts: C;\n deployments: D;\n};\n\nexport type FullContractWithIdentifier<\n C extends TypedAbi,\n Id extends string,\n> = FullContract<C> & {\n identifier: Id;\n};\n\ntype IsDeploymentNetwork<T> = T extends DeploymentNetwork\n ? DeploymentNetwork extends T\n ? true\n : false\n : never;\n\nexport type ProjectFactory<\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n P extends Project<any, any>,\n N extends DeploymentNetwork,\n> = {\n [ContractName in keyof P['contracts']]: FullContractWithIdentifier<\n P['contracts'][ContractName],\n IsDeploymentNetwork<N> extends true\n ? ''\n : NonNullable<P['deployments'][ContractName][N]>\n >;\n // [ContractName in keyof P['contracts']]: P['deployments'][ContractName][N] extends string\n // ? FullContractWithIdentifier<P['contracts'][ContractName], P['deployments'][ContractName][N]>\n // : FullContractWithIdentifier<P['contracts'][ContractName], ''> | undefined;\n};\n\nexport function projectFactory<\n P extends Project<C, D>,\n N extends DeploymentNetwork,\n C extends AllContracts,\n D extends DeploymentsForContracts<C>,\n>(project: P, network: N): ProjectFactory<P, N> {\n const e: [keyof C, FullContract<TypedAbi>][] = [];\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n Object.entries(project.contracts).forEach(([contractName, contract]) => {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const id = project.deployments[contractName]![network];\n if (id) {\n e.push([contractName, contractFactory(contract, id)]);\n }\n return false;\n });\n return Object.fromEntries(e) as ProjectFactory<P, N>;\n}\n\nexport function contractsFactory<T extends AllContracts>(\n contracts: T,\n deployer: string\n): ContractFactory<T> {\n return Object.fromEntries(\n Object.entries(contracts).map(([contractName, contract]) => {\n const identifier = `${deployer}.${contract.contractName}`;\n return [contractName, contractFactory(contract, identifier)];\n })\n ) as ContractFactory<T>;\n}\n\nexport function functionsFactory<T extends TypedAbi>(\n abi: T,\n identifier: string\n): FunctionsToContractCalls<T> {\n return Object.fromEntries(\n Object.entries(abi.functions).map(([fnName, foundFunction]) => {\n const fn: FnToContractCall<typeof foundFunction> = Object.assign(\n (...args: unknown[] | [Record<string, unknown>]) => {\n const functionArgs = transformArgsToCV(foundFunction, args);\n const [contractAddress, contractName] = identifier.split('.');\n return {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n functionArgs: functionArgs!,\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n contractAddress: contractAddress!,\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n contractName: contractName!,\n function: foundFunction,\n functionName: foundFunction.name,\n nativeArgs: args,\n contractAbi: abi,\n };\n },\n { abi: foundFunction }\n );\n return [fnName, fn];\n })\n ) as FunctionsToContractCalls<T>;\n}\n\n/**\n * Provide a contract's types and it's contract identifier to generate\n * a full contract object with all functions available.\n *\n * @param abi - The Clarigen-generated contract types\n * @param identifier - The contract's identifier, like `SP000000000000000000002Q6VF78.bns`\n * @returns\n */\nexport function contractFactory<T extends TypedAbi, Id extends string>(\n abi: T,\n identifier: Id\n): FullContractWithIdentifier<T, Id> {\n const full = { ...abi } as FullContract<T>;\n return {\n ...functionsFactory(abi, identifier),\n ...full,\n identifier,\n };\n}\n\nexport function deploymentFactory<T extends AllContracts>(\n contracts: T,\n deployer: DeploymentPlan\n): ContractFactory<T> {\n const result = {} as Partial<ContractFactory<T>>;\n const txs = getContractTxs(\n deployer.plan.batches as Batch<DeploymentTransaction>[]\n );\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n txs.forEach((tx) => {\n const id = getIdentifierForDeploymentTx(tx);\n const [contractAddress, contractFileName] = id.split('.');\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const contractName = toCamelCase(contractFileName!) as keyof T;\n const def = contracts[contractName] as TypedAbi;\n const final = contracts[contractName] as FullContract<T[keyof T]>;\n if (typeof final === 'undefined') {\n throw new Error(\n `Clarigen error: mismatch for contract '${contractName as string}'`\n );\n }\n result[contractName] = final;\n final.contractFile = getDeploymentTxPath(tx);\n final.identifier = id;\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n Object.keys(contracts[contractName]!.functions).forEach((_fnName) => {\n const fnName: keyof (typeof def)['functions'] = _fnName;\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n const fn = ((...args: any[]) => {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const foundFunction = def.functions[fnName]!;\n const functionArgs = transformArgsToCV(foundFunction, args);\n return {\n functionArgs,\n contractAddress,\n contractName: final.contractName,\n function: foundFunction,\n nativeArgs: args,\n };\n }) as FnToContractCall<(typeof def)['functions']>;\n final[fnName as keyof (typeof result)[typeof contractName]] = fn;\n });\n });\n return result as ContractFactory<T>;\n}\n\nexport type MapFactory<M extends TypedAbiMap<K, V>, K, V> = {\n key: K;\n _v?: V;\n keyCV: ClarityValue;\n map: M;\n};\n\nexport function mapFactory<Key, Val>(map: TypedAbiMap<Key, Val>, key: Key) {\n const keyCV = parseToCV(key as CVInput, map.key);\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n const mapFactory: MapFactory<typeof map, Key, Val> = {\n key,\n keyCV,\n map,\n };\n return mapFactory;\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport {\n SmartContractsApi,\n Configuration,\n TransactionsApi,\n} from '@stacks/blockchain-api-client';\nimport { isNumber } from '../utils';\n\nexport function getHeaders(\n apiKey?: string,\n headersOverride: Record<string, string> = {}\n) {\n const headers: Record<string, string> = {\n ...headersOverride,\n };\n if (apiKey) {\n headers['x-api-key'] = apiKey;\n }\n return headers;\n}\n\nexport function smartContractsApi(\n url: string,\n apiKey?: string,\n headersOverride?: Record<string, string>\n) {\n const headers = getHeaders(apiKey, headersOverride);\n return new SmartContractsApi(\n new Configuration({\n basePath: url,\n headers,\n })\n );\n}\n\nexport function transactionsApi(\n url: string,\n apiKey?: string,\n headersOverride?: Record<string, string>\n) {\n return new TransactionsApi(\n new Configuration({\n basePath: url,\n headers: getHeaders(apiKey, headersOverride),\n })\n );\n}\n\nexport function v2Endpoint(url: string) {\n return `${url}/v2`;\n}\n\nexport const generateUrl = (\n baseUrl: string,\n params: { [key: string]: string[] | string | number | boolean | undefined }\n): string => {\n try {\n const url = new URL(baseUrl);\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n Object.keys(params).forEach((key) => {\n const value = params[key];\n if (!value) return;\n if (Array.isArray(value)) {\n if (value.length === 0) return;\n return url.searchParams.set(\n `${key}[]`,\n generateQueryStringFromArray<string>(key, value)\n );\n }\n if (typeof value === 'boolean' || isNumber(value)) {\n return url.searchParams.set(key, String(value));\n }\n url.searchParams.set(key, value);\n });\n return url.toString();\n } catch (e) {\n console.error('generateUrl');\n console.error(e);\n return baseUrl;\n }\n};\n\nexport const generateQueryStringFromArray = <T>(key: string, values?: T[]) => {\n if (values?.length) {\n return `${values\n .map(\n (value, index) =>\n `${index > 0 ? encodeURIComponent(`${key}[]`) : ''}=${encodeURIComponent(\n value as unknown as string\n )}`\n )\n .join('&')}`;\n }\n return '';\n};\n","import {\n type ClarityValue,\n type ReadOnlyFunctionResponse,\n cvToHex,\n hexToCV,\n} from '@stacks/transactions';\nimport { smartContractsApi } from './api-helpers';\n\nexport type ReadOnlyOptions = {\n contractAddress: string;\n contractName: string;\n functionName: string;\n functionArgs: (string | ClarityValue)[];\n /** address of the sender (can be left blank, will default to contract address) */\n senderAddress?: string;\n /** the network that the contract which contains the function is deployed to */\n // network?: StacksNetwork;\n url: string;\n tip?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n};\n\n/**\n * Converts the response of a read-only function call into its Clarity Value\n * @param response - {@link ReadOnlyFunctionResponse}\n */\nexport function parseReadOnlyResponse<T extends ClarityValue>(\n response: ReadOnlyFunctionResponse\n): T {\n if (response.okay) {\n return hexToCV(response.result) as T;\n }\n throw new Error(response.cause);\n}\n\n/**\n * Calls a read only function from a contract interface\n *\n * @param options - the options object\n *\n * Returns an ClarityValue\n *\n */\nexport async function callReadOnlyFunction<T extends ClarityValue>(\n options: ReadOnlyOptions\n): Promise<T> {\n const {\n contractAddress,\n functionArgs,\n senderAddress = contractAddress,\n url,\n } = options;\n\n const apiResponse = await smartContractsApi(\n url,\n options.apiKey,\n options.headers\n ).callReadOnlyFunction({\n ...options,\n readOnlyFunctionArgs: {\n sender: senderAddress,\n arguments: functionArgs.map((arg) =>\n typeof arg === 'string' ? arg : cvToHex(arg)\n ),\n },\n });\n\n const cv = parseReadOnlyResponse<T>(apiResponse as ReadOnlyFunctionResponse);\n return cv;\n}\n","import {\n type ClarityValue,\n responseOkCV,\n responseErrorCV,\n} from '@stacks/transactions';\nimport {\n type ClarityAbiType,\n type ClarityAbiArg,\n parseToCV,\n isClarityAbiOptional,\n isClarityAbiBuffer,\n isClarityAbiTuple,\n isClarityAbiList,\n isClarityAbiResponse,\n isClarityAbiPrimitive,\n} from '../clarity-types';\nimport { hexToBytes } from '../utils';\n\nexport type OptionalFormValue = { isNone: boolean; value: unknown };\nexport type ResponseFormValue = {\n isOk: boolean;\n value?: unknown;\n ok?: unknown;\n err?: unknown;\n};\n\nexport function isOptionalFormValue(\n value: unknown\n): value is OptionalFormValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'isNone' in value &&\n typeof (value as OptionalFormValue).isNone === 'boolean'\n );\n}\n\nexport function isResponseFormValue(\n value: unknown\n): value is ResponseFormValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'isOk' in value &&\n typeof (value as ResponseFormValue).isOk === 'boolean'\n );\n}\n\n/**\n * Converts a form value to the format expected by parseToCV.\n * Handles differences between form representation and parseToCV expectations:\n * - Optionals use { isNone, value } in forms but null for none in parseToCV\n * - Buffers are hex strings in forms but Uint8Array in parseToCV\n */\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\nexport function formValueToParseable(\n value: unknown,\n type: ClarityAbiType\n): unknown {\n if (isClarityAbiOptional(type)) {\n if (isOptionalFormValue(value)) {\n if (value.isNone) {\n return null;\n }\n return formValueToParseable(value.value, type.optional);\n }\n // Already in parseable format (null or direct value)\n return value;\n }\n\n if (isClarityAbiBuffer(type)) {\n if (typeof value === 'string') {\n const hex = value.startsWith('0x') ? value.slice(2) : value;\n return hexToBytes(hex);\n }\n return value;\n }\n\n if (isClarityAbiTuple(type)) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const result: Record<string, unknown> = {};\n for (const member of type.tuple) {\n const memberValue = (value as Record<string, unknown>)[member.name];\n result[member.name] = formValueToParseable(memberValue, member.type);\n }\n return result;\n }\n\n if (isClarityAbiList(type)) {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map((item) => formValueToParseable(item, type.list.type));\n }\n\n return value;\n}\n\n/**\n * Converts a single form value to a ClarityValue using the ABI type.\n */\nexport function formValueToCV(\n value: unknown,\n type: ClarityAbiType\n): ClarityValue {\n // Handle response types directly since parseToCV doesn't support them\n if (isClarityAbiResponse(type)) {\n if (!isResponseFormValue(value)) {\n throw new Error(\n 'Response type requires { isOk: boolean, value: unknown } form value'\n );\n }\n const innerType = value.isOk ? type.response.ok : type.response.error;\n const innerValue = value.isOk\n ? (value.ok ?? value.value)\n : (value.err ?? value.value);\n const innerCV = formValueToCV(innerValue, innerType);\n return value.isOk ? responseOkCV(innerCV) : responseErrorCV(innerCV);\n }\n\n const parseable = formValueToParseable(value, type);\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n return parseToCV(parseable as any, type);\n}\n\n/**\n * Parses a raw string value from a URL query parameter into a \"form value\"\n * based on the Clarity ABI type. This intermediate form value can then\n * be converted to a ClarityValue using `formValueToCV`.\n */\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\nexport function parseQueryValue(\n value: string | undefined,\n type: ClarityAbiType\n): unknown {\n if (value === undefined || value === '') {\n if (isClarityAbiOptional(type)) return { isNone: true, value: null };\n if (isClarityAbiList(type)) return [];\n if (isClarityAbiTuple(type)) return {}; // Will be filled with defaults by downstream logic if needed\n if (isClarityAbiPrimitive(type) && type === 'bool') return false;\n return '';\n }\n\n // If it's a principal and starts with ', strip it\n if (type === 'principal' && value.startsWith(\"'\")) {\n return value.slice(1);\n }\n\n if (\n isClarityAbiOptional(type) ||\n isClarityAbiList(type) ||\n isClarityAbiTuple(type) ||\n isClarityAbiResponse(type)\n ) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n\n if (isClarityAbiPrimitive(type) && type === 'bool') {\n return value === 'true';\n }\n\n return value;\n}\n\n/**\n * Converts all query parameters to an array of ClarityValues based on the function's ABI args.\n */\nexport function queryToFunctionArgs(\n query: Record<string, string | string[] | undefined>,\n args: ClarityAbiArg[]\n): ClarityValue[] {\n return args.map((arg) => {\n const rawValue = query[arg.name];\n const value = Array.isArray(rawValue) ? rawValue[0] : rawValue;\n const formValue = parseQueryValue(value, arg.type);\n return formValueToCV(formValue, arg.type);\n });\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\n// biome-ignore lint/style/noExportedImports: ignored using `--suppress`\nimport { cvToHex, hexToCV } from '@stacks/transactions';\nexport { cvToHex, hexToCV };\nimport {\n type StacksTransactionWire,\n broadcastTransaction,\n} from '@stacks/transactions';\nimport {\n cvToJSON,\n cvToValue,\n expectErr,\n expectOk,\n type Jsonize,\n} from '../clarity-types';\nimport type { Response, TypedAbiMap } from '../abi-types';\nimport type { ContractCall } from '../factory-types';\nimport { mapFactory } from '../factory';\n// biome-ignore lint/performance/noBarrelFile: ignored using `--suppress`\nexport * from './call-read-only';\nimport { callReadOnlyFunction } from './call-read-only';\nimport { generateUrl, getHeaders, v2Endpoint } from './api-helpers';\nimport {\n type StacksNetwork,\n type StacksNetworkName,\n networkFrom,\n} from '@stacks/network';\n\nexport type ApiOptionsUrl = {\n url: string;\n network?: undefined;\n};\n\nexport type Network = StacksNetwork | StacksNetworkName;\n\nexport type ApiOptionsNetwork = {\n network: StacksNetworkName | StacksNetwork;\n url?: undefined;\n};\n\nexport type ApiOptionsBase = {\n network: StacksNetwork | StacksNetworkName;\n tip?: string;\n latest?: boolean;\n apiKey?: string;\n headers?: Record<string, string>;\n};\n\nexport type ApiOptionsJsonize = ApiOptionsBase & {\n json: true;\n};\n\nexport type ApiOptionsNoJson = ApiOptionsBase & {\n json?: false | undefined;\n};\n\nexport type ApiOptions = ApiOptionsBase & {\n json?: boolean;\n};\n\nexport type JsonIfOption<O extends ApiOptions, R> = O extends ApiOptionsJsonize\n ? Jsonize<R>\n : R;\n\n// export type ApiOptions = ApiOptionsJsonize | ApiOptionsNoJson;\n\nfunction getTip(options: ApiOptions): string | undefined {\n if (options.latest === false) return;\n if (options.latest) return 'latest';\n if (typeof options.tip === 'undefined') return 'latest';\n return options.tip;\n}\n\n// export async function ro<O, T>(tx: ContractCall<T>, options: ApiOptionsJsonize): Promise<Jsonize<T>>;\n// export async function ro<O, T>(tx: ContractCall<T>, options: ApiOptionsNoJson): Promise<T>;\nexport async function ro<O extends ApiOptions, T>(\n tx: ContractCall<T>,\n options: O\n): Promise<JsonIfOption<O, T>> {\n const tip = getTip(options);\n const cv = await callReadOnlyFunction({\n contractAddress: tx.contractAddress,\n contractName: tx.contractName,\n functionName: tx.functionName,\n functionArgs: tx.functionArgs,\n tip,\n url: getApiUrl(options),\n apiKey: options.apiKey,\n headers: options.headers,\n });\n if (options.json) {\n return cvToJSON(cv);\n }\n return cvToValue(cv, true);\n}\n\nexport async function roOk<O extends ApiOptions, Ok>(\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n tx: ContractCall<Response<Ok, any>>,\n options: O\n): Promise<JsonIfOption<O, Ok>> {\n const result = await ro(tx, options);\n return expectOk(result) as JsonIfOption<O, Ok>;\n}\n\nexport async function roErr<O extends ApiOptions, Err>(\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n tx: ContractCall<Response<any, Err>>,\n options: O\n): Promise<JsonIfOption<O, Err>> {\n const result = await ro(tx, options);\n return expectErr(result) as JsonIfOption<O, Err>;\n}\n\nexport function getApiUrl(opts: ApiOptions) {\n return networkFrom(opts.network).client.baseUrl;\n}\n\nexport async function fetchMapGet<Key, Val>(\n contractId: string,\n map: TypedAbiMap<Key, Val>,\n key: Key,\n options: ApiOptions\n): Promise<Val | null> {\n const payload = mapFactory(map, key);\n const lookupKey = JSON.stringify(cvToHex(payload.keyCV));\n const [addr, id] = contractId.split('.');\n const path = generateUrl(\n `${v2Endpoint(getApiUrl(options))}/map_entry/${addr}/${id}/${payload.map.name}`,\n {\n proof: 0,\n tip: getTip(options),\n }\n );\n const res = await fetch(path, {\n method: 'POST',\n body: lookupKey,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...getHeaders(options.apiKey, options.headers),\n },\n });\n const data = (await res.json()) as { data: string };\n const valueCV = hexToCV(data.data);\n return cvToValue<Val | null>(valueCV, true);\n}\n\nexport async function broadcast(\n transaction: StacksTransactionWire,\n options: ApiOptions\n) {\n const network = options.network;\n const result = await broadcastTransaction({\n transaction,\n network,\n });\n if ('error' in result) {\n throw new Error(\n `Error broadcasting tx: ${result.error} - ${result.reason} - ${JSON.stringify(\n 'reason_data' in result ? result.reason_data : undefined\n )}`\n );\n }\n return {\n txId: result.txid,\n stacksTransaction: transaction,\n };\n}\n\ntype ClientOptions = Omit<ApiOptions, 'network'>;\n\ntype JsonIf<O extends ClientOptions, T> = JsonIfOption<O & ApiOptions, T>;\n\nexport class ClarigenClient {\n // biome-ignore lint/style/useConsistentMemberAccessibility: ignored using `--suppress`\n public network: StacksNetwork | StacksNetworkName;\n\n constructor(\n networkOrUrl: StacksNetwork | StacksNetworkName,\n // biome-ignore lint/style/useConsistentMemberAccessibility: ignored using `--suppress`\n // biome-ignore lint/style/noParameterProperties: ignored using `--suppress`\n public apiKey?: string,\n // biome-ignore lint/style/useConsistentMemberAccessibility: ignored using `--suppress`\n // biome-ignore lint/style/noParameterProperties: ignored using `--suppress`\n public headers?: Record<string, string>\n ) {\n this.network = networkOrUrl;\n }\n\n private roOptions(options: ClientOptions): ApiOptions {\n return {\n network: this.network,\n apiKey: this.apiKey,\n headers: this.headers,\n ...options,\n };\n }\n\n ro<T, O extends ClientOptions>(\n tx: ContractCall<T>,\n options?: O\n ): Promise<JsonIf<O, T>> {\n return ro(tx, this.roOptions(options || {})) as Promise<JsonIf<O, T>>;\n }\n\n roOk<T, O extends ClientOptions>(\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n tx: ContractCall<Response<T, any>>,\n options?: O\n ): Promise<JsonIf<O, T>> {\n return roOk(tx, this.roOptions(options || {})) as Promise<JsonIf<O, T>>;\n }\n\n roErr<T, O extends ClientOptions>(\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n tx: ContractCall<Response<any, T>>,\n options?: O\n ): Promise<JsonIf<O, T>> {\n return roErr(tx, this.roOptions(options || {})) as Promise<JsonIf<O, T>>;\n }\n}\n\nexport * from './url-parsing';\n","import type {\n NonFungiblePostCondition,\n FungiblePostCondition,\n} from '@stacks/transactions';\nimport type { ClarityAbiType, TypedAbi } from './abi-types';\nimport {\n type AbiTypeTo,\n type CVInput,\n parseToCV,\n type ReadonlyTuple,\n} from './clarity-types';\nimport type { FullContract } from './factory-types';\n\ntype AbiWithAssets = Pick<\n FullContract<TypedAbi>,\n 'non_fungible_tokens' | 'fungible_tokens' | 'identifier'\n>;\n\nexport type AssetNames<T extends AbiWithAssets> =\n | T['non_fungible_tokens'][number]['name']\n | T['fungible_tokens'][number]['name'];\n\nexport function createAssetInfo<T extends AbiWithAssets>(\n contract: T,\n asset: AssetNames<T>\n): `${string}.${string}::${string}` {\n const [addr, name] = contract.identifier.split('.');\n if (!('identifier' in contract)) {\n throw new Error('Invalid contract');\n }\n for (const nft of contract.non_fungible_tokens) {\n if (nft.name === asset) {\n return `${addr}.${name}::${nft.name}`;\n }\n }\n for (const ft of contract.fungible_tokens) {\n if (ft.name === asset) {\n return `${addr}.${name}::${ft.name}`;\n }\n }\n throw new Error(`Invalid asset: \"${asset}\" is not an asset in contract.`);\n}\n\nexport type NftAssetType<T extends AbiWithAssets> =\n T['non_fungible_tokens'][0] extends {\n type: infer Type;\n }\n ? Type extends ClarityAbiType | ReadonlyTuple\n ? AbiTypeTo<Type>\n : never\n : never;\n\nexport function makeNonFungiblePostCondition<T extends AbiWithAssets>(\n contract: T,\n sender: string,\n condition: 'sent' | 'not-sent',\n value: NftAssetType<T>\n): NonFungiblePostCondition {\n const [nftType] = contract.non_fungible_tokens;\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const asset = createAssetInfo(contract, nftType!.name);\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const abiType = nftType!.type;\n const cv = parseToCV(value as CVInput, abiType);\n return {\n type: 'nft-postcondition',\n address: sender,\n condition,\n asset,\n assetId: cv,\n };\n}\n\nexport function makeFungiblePostCondition<T extends AbiWithAssets>(\n contract: T,\n sender: string,\n condition: 'eq' | 'gt' | 'gte' | 'lt' | 'lte',\n amount: number | bigint | string\n): FungiblePostCondition {\n const [_addr, _name] = sender.split('.');\n const [ftType] = contract.fungible_tokens;\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n const asset = createAssetInfo(contract, ftType!.name);\n return {\n type: 'ft-postcondition',\n address: sender,\n condition,\n asset,\n amount,\n };\n}\n","/** biome-ignore-all lint/style/useTrimStartEnd: suppressed */\nimport { hexToBytes } from './utils';\nimport type {\n ClarityAbiType,\n ClarityAbiTypePrimitive,\n TypedAbiFunction,\n} from './abi-types';\nimport {\n isClarityAbiOptional,\n isClarityAbiBuffer,\n isClarityAbiList,\n isClarityAbiResponse,\n isClarityAbiStringAscii,\n isClarityAbiStringUtf8,\n isClarityAbiTuple,\n type AbiPrimitiveTo,\n ok,\n err,\n} from './clarity-types';\nimport { toCamelCase } from './utils';\nimport type { UnknownArgs } from './factory-types';\n\nfunction unwrap(input: string, prefix = '') {\n return input.slice(prefix.length + 2, -1);\n}\n\nexport type RawClarityTypeTo<\n T extends ClarityAbiType,\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n A = any,\n> = T extends ClarityAbiTypePrimitive ? AbiPrimitiveTo<T> : A;\n\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport type ResponseType<F extends TypedAbiFunction<UnknownArgs, any>> =\n // biome-ignore lint/correctness/noUnusedVariables: ignored using `--suppress`\n F extends TypedAbiFunction<infer A, infer R> ? R : never;\n\n// export function rawClarityToValue<AbiType extends ClarityAbiType>(\n// input: string,\n// type: AbiType\n// ): RawClarityTypeTo<AbiType>;\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function rawClarityToValue<T = any>(\n input: string,\n type: ClarityAbiType\n): T;\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\n// biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\nexport function rawClarityToValue<T = any>(\n input: string,\n type: ClarityAbiType\n): T {\n if (isClarityAbiTuple(type)) {\n const decoded = expectTuple(input);\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n const tuple: Record<string, any> = {};\n const tupleReduced = Object.entries(decoded).reduce(\n (acc, [key, val]) => {\n const keyFixed = key.trim();\n return {\n // biome-ignore lint/performance/noAccumulatingSpread: ignored using `--suppress`\n ...acc,\n [keyFixed]: val.trim(),\n };\n },\n // biome-ignore lint/suspicious/noExplicitAny: ignored using `--suppress`\n {} as Record<string, any>\n );\n // biome-ignore lint/complexity/noForEach: ignored using `--suppress`\n type.tuple.forEach(({ name, type: _type }) => {\n const camelName = toCamelCase(name);\n tuple[camelName] = rawClarityToValue(tupleReduced[name], _type);\n });\n return tuple as unknown as T;\n // throw new Error(\"Unable to parse tuple yet.\");\n }\n if (isClarityAbiList(type)) {\n const elements: string[] = expectList(input);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return elements.map((e) =>\n rawClarityToValue(e, type.list.type)\n ) as unknown as T;\n // throw new Error(\"Unable to parse list\");\n }\n if (isClarityAbiOptional(type)) {\n if (input === 'none') return null as unknown as T;\n return rawClarityToValue(unwrap(input, 'some'), type.optional);\n }\n if (isClarityAbiStringAscii(type)) {\n return input.slice(1, -1) as unknown as T;\n }\n if (isClarityAbiStringUtf8(type)) {\n return input.slice(2, -1) as unknown as T;\n }\n if (type === 'bool') {\n return (input === 'true') as unknown as T;\n }\n if (type === 'uint128') {\n return BigInt(input.slice(1)) as unknown as T;\n }\n if (type === 'int128') {\n return BigInt(input) as unknown as T;\n }\n if (type === 'trait_reference') {\n // biome-ignore lint/performance/useTopLevelRegex: ignored using `--suppress`\n return input.replace(/^'/, '') as unknown as T;\n }\n if (type === 'principal') {\n // biome-ignore lint/performance/useTopLevelRegex: ignored using `--suppress`\n return input.replace(/^'/, '') as unknown as T;\n }\n if (type === 'none') {\n return null as unknown as T;\n }\n if (isClarityAbiBuffer(type)) {\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n const buff = hexToBytes(input.slice(2));\n return buff as unknown as T;\n }\n if (isClarityAbiResponse(type)) {\n if (input.startsWith('(ok')) {\n const inner = unwrap(input, 'ok');\n return ok(rawClarityToValue(inner, type.response.ok)) as unknown as T;\n }\n const inner = unwrap(input, 'err');\n return err(rawClarityToValue(inner, type.response.error)) as unknown as T;\n }\n throw new Error(\n `Unable to parse cv string to value: ${input} ${JSON.stringify(type, null, 2)}`\n );\n}\n\nfunction consume(src: string, expectation: string, wrapped: boolean) {\n let dst = ` ${src}`.slice(1);\n let size = expectation.length;\n if (!wrapped && src !== expectation) {\n throw new Error(`Expected ${expectation.toString()}, got ${src}`);\n }\n if (wrapped) {\n size += 2;\n }\n if (dst.length < size) {\n throw new Error(`Expected ${expectation.toString()}, got ${src}`);\n }\n if (wrapped) {\n dst = dst.substring(1, dst.length - 1);\n }\n const res = dst.slice(0, expectation.length);\n if (res !== expectation) {\n throw new Error(`Expected ${expectation.toString()}, got ${src}`);\n }\n let leftPad = 0;\n if (dst.charAt(expectation.length) === ' ') {\n leftPad = 1;\n }\n const remainder = dst.substring(expectation.length + leftPad);\n return remainder;\n}\n\nfunction _expectOk(input: string) {\n return consume(input, 'ok', true);\n}\n\nfunction _expectErr(input: string) {\n return consume(input, 'err', true);\n}\n\nfunction _expectSome(input: string) {\n return consume(input, 'some', true);\n}\n\nfunction _expectNone(input: string) {\n return consume(input, 'none', false);\n}\n\nfunction _expectBool(input: string, value: boolean) {\n consume(input, `${String(value)}`, false);\n return value;\n}\n\nfunction _expectUint(input: string, value: number | bigint): bigint {\n consume(input, `u${value}`, false);\n return BigInt(value);\n}\n\nfunction _expectInt(input: string, value: number | bigint): bigint {\n consume(input, `${value}`, false);\n return BigInt(value);\n}\n\nconst byteToHexCache: string[] = new Array(0xff);\n\nfor (let n = 0; n <= 0xff; ++n) {\n byteToHexCache[n] = n.toString(16).padStart(2, '0');\n}\n\nfunction buff(val: Uint8Array | string) {\n // biome-ignore lint/nursery/noShadow: ignored using `--suppress`\n const buff =\n typeof val === 'string'\n ? new TextEncoder().encode(val)\n : new Uint8Array(val);\n\n const hexOctets = new Array(buff.length);\n\n for (let i = 0; i < buff.length; ++i) {\n // biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`\n hexOctets[i] = byteToHexCache[buff[i]!];\n }\n\n return `0x${hexOctets.join('')}`;\n}\n\nfunction _expectBuff(input: string, value: Uint8Array) {\n const buffer = buff(value);\n if (input !== buffer) {\n throw new Error(`Expected ${buffer}, gt ${input}`);\n }\n return value;\n}\n\nfunction _expectAscii(input: string, value: string) {\n consume(input, `\"${value}\"`, false);\n return value;\n}\n\nfunction _expectUtf8(input: string, value: string) {\n consume(input, `u\"${value}\"`, false);\n return value;\n}\n\nfunction _expectPrincipal(input: string, value: string) {\n consume(input, `${value}`, false);\n return value;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\nfunction expectList(input: string): string[] {\n if (input.charAt(0) !== '[' || input.at(-1) !== ']') {\n throw new Error(`Expected (list ..), got ${input.toString()}`);\n }\n\n // biome-ignore lint/suspicious/noEvolvingTypes: ignored using `--suppress`\n const stack = [];\n const elements: string[] = [];\n let start = 1;\n for (let i = 0; i < input.length; i++) {\n if (input.charAt(i) === ',' && stack.length === 1) {\n elements.push(input.substring(start, i));\n start = i + 2;\n }\n if (['(', '[', '{'].includes(input.charAt(i))) {\n stack.push(input.charAt(i));\n }\n if (input.charAt(i) === ')' && stack.at(-1) === '(') {\n stack.pop();\n }\n if (input.charAt(i) === '}' && stack.at(-1) === '{') {\n stack.pop();\n }\n if (input.charAt(i) === ']' && stack.at(-1) === '[') {\n stack.pop();\n }\n }\n const remainder = input.substring(start, input.length - 1);\n if (remainder.length > 0) {\n elements.push(remainder);\n }\n return elements;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: ignored using `--suppress`\nfunction expectTuple(input: string) {\n if (input.charAt(0) !== '{' || input.at(-1) !== '}') {\n throw new Error(`Expected '(tuple ..)', got ${input.toString()}`);\n }\n\n let start = 1;\n // biome-ignore lint/suspicious/noEvolvingTypes: ignored using `--suppress`\n const stack = [];\n // biome-ignore lint/suspicious/noEvolvingTypes: ignored using `--suppress`\n const elements = [];\n for (let i = 0; i < input.length; i++) {\n if (input.charAt(i) === ',' && stack.length === 1) {\n elements.push(input.substring(start, i));\n start = i + 2;\n }\n if (['(', '[', '{'].includes(input.charAt(i))) {\n stack.push(input.charAt(i));\n }\n if (input.charAt(i) === ')' && stack.at(-1) === '(') {\n stack.pop();\n }\n if (input.charAt(i) === '}' && stack.at(-1) === '{') {\n stack.pop();\n }\n if (input.charAt(i) === ']' && stack.at(-1) === '[') {\n stack.pop();\n }\n }\n const remainder = input.substring(start, input.length - 1);\n if (remainder.length > 0) {\n elements.push(remainder);\n }\n\n const tuple: Record<string, string> = {};\n for (const element of elements) {\n for (let i = 0; i < element.length; i++) {\n if (element.charAt(i) === ':') {\n const key: string = element.substring(0, i);\n const value: string = element.substring(i + 2, element.length);\n tuple[key] = value;\n break;\n }\n }\n }\n\n return tuple;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.1.3",
2
+ "version": "4.1.5",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.cts",
5
5
  "main": "./dist/index.cjs",
@@ -1 +0,0 @@
1
- function e(e){let t=[];return e.forEach(e=>t.push(...e.transactions)),t}function t(t){return e(t).filter(a)}function n(t,n){let r=e(n.plan.batches);for(let e of r)if(a(e)){if(`requirement-publish`in e){let[n,r]=e[`requirement-publish`][`contract-id`].split(`.`);if(r===t)return e}else if(`emulated-contract-publish`in e){if(e[`emulated-contract-publish`][`contract-name`]===t)return e}else if(`contract-publish`in e&&e[`contract-publish`][`contract-name`]===t)return e}throw Error(`Unable to find deployment tx for contract '${t}'`)}function r(e){if(!a(e))throw Error(`Unable to get path for tx type.`);if(`requirement-publish`in e)return e[`requirement-publish`].path;if(`emulated-contract-publish`in e)return e[`emulated-contract-publish`].path;if(`contract-publish`in e)return e[`contract-publish`].path;throw Error(`Couldnt get path for deployment tx.`)}function i(e){if(!a(e))throw Error(`Unable to get ID for tx type.`);if(`requirement-publish`in e){let t=e[`requirement-publish`],[n,r]=t[`contract-id`].split(`.`);return`${t[`remap-sender`]}.${r}`}if(`emulated-contract-publish`in e){let t=e[`emulated-contract-publish`];return`${t[`emulated-sender`]}.${t[`contract-name`]}`}if(`contract-publish`in e){let t=e[`contract-publish`];return`${t[`expected-sender`]}.${t[`contract-name`]}`}throw Error(`Unable to find ID for contract.`)}function a(e){return!(`contract-call`in e||`btc-transfer`in e||`emulated-contract-call`in e)}export{i as a,r as i,t as n,a as o,n as r,e as t};
@@ -1 +0,0 @@
1
- function e(e){let t=[];return e.forEach(e=>t.push(...e.transactions)),t}function t(t){return e(t).filter(a)}function n(t,n){let r=e(n.plan.batches);for(let e of r)if(a(e)){if(`requirement-publish`in e){let[n,r]=e[`requirement-publish`][`contract-id`].split(`.`);if(r===t)return e}else if(`emulated-contract-publish`in e){if(e[`emulated-contract-publish`][`contract-name`]===t)return e}else if(`contract-publish`in e&&e[`contract-publish`][`contract-name`]===t)return e}throw Error(`Unable to find deployment tx for contract '${t}'`)}function r(e){if(!a(e))throw Error(`Unable to get path for tx type.`);if(`requirement-publish`in e)return e[`requirement-publish`].path;if(`emulated-contract-publish`in e)return e[`emulated-contract-publish`].path;if(`contract-publish`in e)return e[`contract-publish`].path;throw Error(`Couldnt get path for deployment tx.`)}function i(e){if(!a(e))throw Error(`Unable to get ID for tx type.`);if(`requirement-publish`in e){let t=e[`requirement-publish`],[n,r]=t[`contract-id`].split(`.`);return`${t[`remap-sender`]}.${r}`}if(`emulated-contract-publish`in e){let t=e[`emulated-contract-publish`];return`${t[`emulated-sender`]}.${t[`contract-name`]}`}if(`contract-publish`in e){let t=e[`contract-publish`];return`${t[`expected-sender`]}.${t[`contract-name`]}`}throw Error(`Unable to find ID for contract.`)}function a(e){return!(`contract-call`in e||`btc-transfer`in e||`emulated-contract-call`in e)}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});