@secondlayer/stacks 0.2.2 → 1.0.0-alpha.0

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.
Files changed (159) hide show
  1. package/dist/shared/stacks-02actsrx.cjs.map +2 -2
  2. package/dist/shared/{stacks-xp9n3r0t.js → stacks-09wa7ewe.js} +108 -108
  3. package/dist/shared/stacks-09wa7ewe.js.map +15 -0
  4. package/dist/shared/{stacks-ky14tdf6.cjs → stacks-0nfexv24.cjs} +20 -8
  5. package/dist/shared/stacks-0nfexv24.cjs.map +14 -0
  6. package/dist/shared/{stacks-an5k8n4t.cjs → stacks-14pgpkrr.cjs} +82 -73
  7. package/dist/shared/stacks-14pgpkrr.cjs.map +23 -0
  8. package/dist/shared/{stacks-v6ja2eh7.cjs → stacks-17sdtaxg.cjs} +106 -102
  9. package/dist/shared/stacks-17sdtaxg.cjs.map +15 -0
  10. package/dist/shared/{stacks-96gaxfcf.js → stacks-1s5w4ncf.js} +44 -32
  11. package/dist/shared/stacks-1s5w4ncf.js.map +17 -0
  12. package/dist/shared/stacks-24h5k94q.cjs.map +3 -3
  13. package/dist/shared/{stacks-evnzth1q.cjs → stacks-4vzmhw3q.cjs} +3 -3
  14. package/dist/shared/stacks-4vzmhw3q.cjs.map +10 -0
  15. package/dist/shared/{stacks-k9p8m3wf.js → stacks-4x2bcc2k.js} +87 -78
  16. package/dist/shared/stacks-4x2bcc2k.js.map +23 -0
  17. package/dist/shared/stacks-5tprhns9.cjs.map +3 -3
  18. package/dist/shared/stacks-709tra19.js.map +2 -2
  19. package/dist/shared/{stacks-q79dx28x.js → stacks-70p84bgg.js} +3 -3
  20. package/dist/shared/stacks-70p84bgg.js.map +10 -0
  21. package/dist/shared/{stacks-k2p5tv6x.js → stacks-913a2rx7.js} +3 -3
  22. package/dist/shared/stacks-913a2rx7.js.map +10 -0
  23. package/dist/shared/{stacks-jrnmh4kc.js → stacks-96d6m1zy.js} +15 -6
  24. package/dist/shared/stacks-96d6m1zy.js.map +11 -0
  25. package/dist/shared/stacks-9g0jhab3.cjs.map +2 -2
  26. package/dist/shared/stacks-dr5en54r.cjs.map +2 -2
  27. package/dist/shared/stacks-fcaefc5b.cjs.map +2 -2
  28. package/dist/shared/stacks-gck1sq7h.cjs.map +2 -2
  29. package/dist/shared/stacks-je937aas.js.map +2 -2
  30. package/dist/shared/{stacks-k58k970n.js → stacks-kg1npstf.js} +5 -3
  31. package/dist/shared/stacks-kg1npstf.js.map +10 -0
  32. package/dist/shared/{stacks-qvg7c24g.cjs → stacks-n98w7g57.cjs} +5 -3
  33. package/dist/shared/stacks-n98w7g57.cjs.map +10 -0
  34. package/dist/shared/{stacks-6m1z4j07.js → stacks-nqae5amn.cjs} +74 -160
  35. package/dist/shared/stacks-nqae5amn.cjs.map +10 -0
  36. package/dist/shared/stacks-qcae5852.js.map +2 -2
  37. package/dist/shared/stacks-qt8ehebn.js.map +3 -3
  38. package/dist/shared/stacks-ra02bpny.cjs.map +3 -3
  39. package/dist/shared/stacks-rwfgts3s.js.map +2 -2
  40. package/dist/shared/stacks-s10yb9gz.js.map +2 -2
  41. package/dist/shared/{stacks-etf219gs.cjs → stacks-s30kkvm8.js} +101 -118
  42. package/dist/shared/stacks-s30kkvm8.js.map +10 -0
  43. package/dist/shared/stacks-s7z5q8be.js.map +3 -3
  44. package/dist/shared/stacks-v9jqcpd4.js.map +2 -2
  45. package/dist/shared/stacks-vdfag81a.cjs.map +2 -2
  46. package/dist/shared/{stacks-rg1g0fja.js → stacks-wjem3xw9.js} +21 -9
  47. package/dist/shared/stacks-wjem3xw9.js.map +14 -0
  48. package/dist/shared/{stacks-k08tgzyp.cjs → stacks-wyxj879g.cjs} +3 -3
  49. package/dist/shared/stacks-wyxj879g.cjs.map +13 -0
  50. package/dist/shared/stacks-y3dh7hv1.js.map +3 -3
  51. package/dist/shared/{stacks-2ar4prfz.cjs → stacks-y5262j0z.cjs} +14 -5
  52. package/dist/shared/stacks-y5262j0z.cjs.map +11 -0
  53. package/dist/shared/stacks-ya3x01yd.cjs.map +2 -2
  54. package/dist/shared/{stacks-p93g814f.js → stacks-zf7rbpzp.js} +4 -4
  55. package/dist/shared/stacks-zf7rbpzp.js.map +13 -0
  56. package/dist/shared/{stacks-61rvzkz1.cjs → stacks-znrb59ce.cjs} +41 -29
  57. package/dist/shared/stacks-znrb59ce.cjs.map +17 -0
  58. package/dist/src/accounts/index.cjs +2 -2
  59. package/dist/src/accounts/index.cjs.map +5 -5
  60. package/dist/src/accounts/index.js +2 -6
  61. package/dist/src/accounts/index.js.map +5 -5
  62. package/dist/src/actions/index.d.cts +29 -29
  63. package/dist/src/actions/index.d.ts +29 -29
  64. package/dist/src/actions/index.js +7 -7
  65. package/dist/src/bns/index.cjs +55 -43
  66. package/dist/src/bns/index.cjs.map +9 -9
  67. package/dist/src/bns/index.d.cts +29 -29
  68. package/dist/src/bns/index.d.ts +29 -29
  69. package/dist/src/bns/index.js +62 -50
  70. package/dist/src/bns/index.js.map +9 -9
  71. package/dist/src/clarity/index.js +4 -4
  72. package/dist/src/connect/index.cjs +114 -112
  73. package/dist/src/connect/index.cjs.map +13 -13
  74. package/dist/src/connect/index.js +114 -112
  75. package/dist/src/connect/index.js.map +13 -13
  76. package/dist/src/connect/walletconnect/index.cjs +3 -3
  77. package/dist/src/connect/walletconnect/index.cjs.map +10 -10
  78. package/dist/src/connect/walletconnect/index.js +3 -3
  79. package/dist/src/connect/walletconnect/index.js.map +10 -10
  80. package/dist/src/index.cjs +108 -2
  81. package/dist/src/index.cjs.map +19 -15
  82. package/dist/src/index.d.cts +291 -112
  83. package/dist/src/index.d.ts +291 -112
  84. package/dist/src/index.js +122 -9
  85. package/dist/src/index.js.map +19 -15
  86. package/dist/src/pox/index.cjs.map +6 -6
  87. package/dist/src/pox/index.d.cts +29 -29
  88. package/dist/src/pox/index.d.ts +29 -29
  89. package/dist/src/pox/index.js +5 -5
  90. package/dist/src/pox/index.js.map +6 -6
  91. package/dist/src/stackingdao/index.cjs +31 -6
  92. package/dist/src/stackingdao/index.cjs.map +6 -6
  93. package/dist/src/stackingdao/index.d.cts +29 -29
  94. package/dist/src/stackingdao/index.d.ts +29 -29
  95. package/dist/src/stackingdao/index.js +37 -12
  96. package/dist/src/stackingdao/index.js.map +6 -6
  97. package/dist/src/subscriptions/index.d.cts +29 -29
  98. package/dist/src/subscriptions/index.d.ts +29 -29
  99. package/dist/src/tools/btc/index.cjs +130 -0
  100. package/dist/src/tools/btc/index.cjs.map +10 -0
  101. package/dist/src/tools/btc/index.d.cts +8 -0
  102. package/dist/src/tools/btc/index.d.ts +8 -0
  103. package/dist/src/tools/btc/index.js +89 -0
  104. package/dist/src/tools/btc/index.js.map +10 -0
  105. package/dist/src/tools/index.cjs +2470 -0
  106. package/dist/src/tools/index.cjs.map +61 -0
  107. package/dist/src/tools/index.d.cts +144 -0
  108. package/dist/src/tools/index.d.ts +144 -0
  109. package/dist/src/tools/index.js +2435 -0
  110. package/dist/src/tools/index.js.map +61 -0
  111. package/dist/src/transactions/index.js +3 -3
  112. package/dist/src/triggers/index.cjs +66 -0
  113. package/dist/src/triggers/index.cjs.map +10 -0
  114. package/dist/src/triggers/index.d.cts +120 -0
  115. package/dist/src/triggers/index.d.ts +120 -0
  116. package/dist/src/triggers/index.js +25 -0
  117. package/dist/src/triggers/index.js.map +10 -0
  118. package/dist/src/tx/index.cjs +65 -0
  119. package/dist/src/tx/index.cjs.map +10 -0
  120. package/dist/src/tx/index.d.cts +42 -0
  121. package/dist/src/tx/index.d.ts +42 -0
  122. package/dist/src/tx/index.js +22 -0
  123. package/dist/src/tx/index.js.map +10 -0
  124. package/dist/src/ui/index.cjs +431 -0
  125. package/dist/src/ui/index.cjs.map +27 -0
  126. package/dist/src/ui/index.d.cts +107 -0
  127. package/dist/src/ui/index.d.ts +107 -0
  128. package/dist/src/ui/index.js +391 -0
  129. package/dist/src/ui/index.js.map +27 -0
  130. package/dist/src/ui/schemas.cjs +134 -0
  131. package/dist/src/ui/schemas.cjs.map +18 -0
  132. package/dist/src/ui/schemas.d.cts +83 -0
  133. package/dist/src/ui/schemas.d.ts +83 -0
  134. package/dist/src/ui/schemas.js +91 -0
  135. package/dist/src/ui/schemas.js.map +18 -0
  136. package/dist/src/utils/index.cjs +3 -3
  137. package/dist/src/utils/index.cjs.map +4 -4
  138. package/dist/src/utils/index.js +4 -4
  139. package/dist/src/utils/index.js.map +4 -4
  140. package/package.json +156 -105
  141. package/dist/shared/stacks-2ar4prfz.cjs.map +0 -11
  142. package/dist/shared/stacks-61rvzkz1.cjs.map +0 -17
  143. package/dist/shared/stacks-6m1z4j07.js.map +0 -10
  144. package/dist/shared/stacks-96gaxfcf.js.map +0 -17
  145. package/dist/shared/stacks-an5k8n4t.cjs.map +0 -23
  146. package/dist/shared/stacks-etf219gs.cjs.map +0 -10
  147. package/dist/shared/stacks-evnzth1q.cjs.map +0 -10
  148. package/dist/shared/stacks-jrnmh4kc.js.map +0 -11
  149. package/dist/shared/stacks-k08tgzyp.cjs.map +0 -13
  150. package/dist/shared/stacks-k2p5tv6x.js.map +0 -10
  151. package/dist/shared/stacks-k58k970n.js.map +0 -10
  152. package/dist/shared/stacks-k9p8m3wf.js.map +0 -23
  153. package/dist/shared/stacks-ky14tdf6.cjs.map +0 -13
  154. package/dist/shared/stacks-p93g814f.js.map +0 -13
  155. package/dist/shared/stacks-q79dx28x.js.map +0 -10
  156. package/dist/shared/stacks-qvg7c24g.cjs.map +0 -10
  157. package/dist/shared/stacks-rg1g0fja.js.map +0 -13
  158. package/dist/shared/stacks-v6ja2eh7.cjs.map +0 -15
  159. package/dist/shared/stacks-xp9n3r0t.js.map +0 -15
@@ -1,23 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/actions/public/getBalance.ts", "../src/actions/public/getAccountInfo.ts", "../src/actions/public/getBlock.ts", "../src/actions/public/getBlockHeight.ts", "../src/actions/public/getContractAbi.ts", "../src/actions/public/multicall.ts", "../src/errors/simulation.ts", "../src/actions/public/simulateCall.ts", "../src/actions/public/simulateTransaction.ts", "../src/actions/wallet/signTransaction.ts", "../src/actions/wallet/transferStx.ts", "../src/actions/wallet/deployContract.ts", "../src/actions/wallet/signMessage.ts", "../src/actions/wallet/sponsorTransaction.ts"],
4
- "sourcesContent": [
5
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBalanceParams = {\n address: string;\n};\n\nexport async function getBalance(\n client: Client,\n params: GetBalanceParams\n): Promise<bigint> {\n const data = await client.request(`/v2/accounts/${params.address}`, {\n method: \"GET\",\n });\n return BigInt(data.balance);\n}\n",
6
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetAccountInfoParams = {\n address: string;\n};\n\nexport type AccountInfo = {\n balance: bigint;\n nonce: bigint;\n balanceProof: string;\n nonceProof: string;\n};\n\nexport async function getAccountInfo(\n client: Client,\n params: GetAccountInfoParams\n): Promise<AccountInfo> {\n const data = await client.request(\n `/v2/accounts/${params.address}?proof=1`,\n { method: \"GET\" }\n );\n return {\n balance: BigInt(data.balance),\n nonce: BigInt(data.nonce),\n balanceProof: data.balance_proof ?? \"\",\n nonceProof: data.nonce_proof ?? \"\",\n };\n}\n",
7
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBlockParams = {\n height?: number;\n hash?: string;\n};\n\nexport async function getBlock(client: Client, params?: GetBlockParams): Promise<any> {\n if (params?.hash) {\n return client.request(`/extended/v2/blocks/${params.hash}`, { method: \"GET\" });\n }\n if (params?.height !== undefined) {\n return client.request(`/extended/v2/blocks/${params.height}`, { method: \"GET\" });\n }\n // Latest block\n return client.request(\"/extended/v2/blocks?limit=1\", { method: \"GET\" });\n}\n",
8
- "import type { Client } from \"../../clients/types.ts\";\n\nexport async function getBlockHeight(client: Client): Promise<number> {\n const data = await client.request(\"/v2/info\", { method: \"GET\" });\n return data.stacks_tip_height;\n}\n",
9
- "import type { Client } from \"../../clients/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\n\nexport type GetContractAbiParams = {\n contract: string; // \"address.name\"\n};\n\nexport async function getContractAbi(\n client: Client,\n params: GetContractAbiParams\n): Promise<any> {\n const [address, name] = parseContractId(params.contract);\n return client.request(`/v2/contracts/interface/${address}/${name}`, {\n method: \"GET\",\n });\n}\n",
10
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { readContract } from \"./readContract.ts\";\n\nexport type MulticallCall = {\n contract: string;\n functionName: string;\n args?: ClarityValue[];\n sender?: string;\n};\n\nexport type MulticallParams<TAllowFailure extends boolean = true> = {\n calls: readonly MulticallCall[];\n allowFailure?: TAllowFailure;\n};\n\nexport type MulticallSuccessResult = { status: \"success\"; result: ClarityValue };\nexport type MulticallFailureResult = { status: \"failure\"; error: Error };\n\nexport type MulticallResult<T extends boolean> = T extends true\n ? (MulticallSuccessResult | MulticallFailureResult)[]\n : ClarityValue[];\n\nexport async function multicall<TAllowFailure extends boolean = true>(\n client: Client,\n params: MulticallParams<TAllowFailure>\n): Promise<MulticallResult<TAllowFailure>> {\n const { calls, allowFailure = true } = params;\n\n if (allowFailure) {\n const settled = await Promise.allSettled(\n calls.map((call) => readContract(client, call))\n );\n return settled.map((r) =>\n r.status === \"fulfilled\"\n ? { status: \"success\" as const, result: r.value }\n : { status: \"failure\" as const, error: r.reason instanceof Error ? r.reason : new Error(String(r.reason)) }\n ) as MulticallResult<TAllowFailure>;\n }\n\n const results = await Promise.all(\n calls.map((call) => readContract(client, call))\n );\n return results as MulticallResult<TAllowFailure>;\n}\n",
11
- "import { BaseError } from \"./base.ts\";\n\nexport class SimulationError extends BaseError {\n override name = \"SimulationError\";\n writesDetected: boolean;\n\n constructor(\n message: string,\n options: { writesDetected: boolean; details?: string }\n ) {\n super(message, { details: options.details });\n this.writesDetected = options.writesDetected;\n }\n}\n",
12
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { SimulationError } from \"../../errors/simulation.ts\";\n\nexport type SimulateCallParams = {\n contract: string;\n functionName: string;\n args?: ClarityValue[];\n sender?: string;\n tip?: string;\n};\n\nexport type SimulateCallSuccess = { success: true; result: ClarityValue };\nexport type SimulateCallFailure = { success: false; error: SimulationError };\nexport type SimulateCallResult = SimulateCallSuccess | SimulateCallFailure;\n\nexport async function simulateCall(\n client: Client,\n params: SimulateCallParams\n): Promise<SimulateCallResult> {\n const [address, name] = parseContractId(params.contract);\n const sender = params.sender ?? address;\n\n const serializedArgs = (params.args ?? []).map((arg) =>\n with0x(bytesToHex(serializeCVBytes(arg)))\n );\n\n let path = `/v2/contracts/call-read/${address}/${name}/${params.functionName}`;\n if (params.tip) {\n path += `?tip=${params.tip}`;\n }\n\n const data = await client.request(path, {\n method: \"POST\",\n body: {\n sender,\n arguments: serializedArgs,\n },\n });\n\n if (data.okay) {\n return { success: true, result: deserializeCVBytes(data.result) };\n }\n\n const cause: string = data.cause ?? \"Simulation failed\";\n const writesDetected =\n cause.includes(\"NotReadOnly\") || cause.includes(\"CostBalanceExceeded\");\n\n return {\n success: false,\n error: new SimulationError(\n writesDetected\n ? \"Function mutates state and cannot be simulated\"\n : \"Simulation failed\",\n { writesDetected, details: cause }\n ),\n };\n}\n",
13
- "import type { Client } from \"../../clients/types.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { PayloadType, AddressHashMode } from \"../../transactions/types.ts\";\nimport { c32address } from \"../../utils/address.ts\";\nimport { simulateCall, type SimulateCallResult } from \"./simulateCall.ts\";\nimport { estimateFee, type FeeEstimation } from \"./estimateFee.ts\";\n\nexport type SimulateTransactionParams = {\n transaction: StacksTransaction;\n sender?: string;\n tip?: string;\n};\n\nexport type SimulateContractCallResult = {\n type: \"contract-call\";\n execution: SimulateCallResult;\n fees: FeeEstimation[];\n};\n\nexport type SimulateTransferResult = {\n type: \"token-transfer\";\n fees: FeeEstimation[];\n};\n\nexport type SimulateDeployResult = {\n type: \"contract-deploy\";\n fees: FeeEstimation[];\n};\n\nexport type SimulateTransactionResult =\n | SimulateContractCallResult\n | SimulateTransferResult\n | SimulateDeployResult;\n\nfunction isMultiSig(hashMode: number): boolean {\n return (\n hashMode === AddressHashMode.P2SH ||\n hashMode === AddressHashMode.P2WSH ||\n hashMode === AddressHashMode.P2SH_NonSequential ||\n hashMode === AddressHashMode.P2WSH_P2SH_NonSequential\n );\n}\n\nfunction extractSender(tx: StacksTransaction, client: Client): string {\n const { hashMode, signer } = tx.auth.spendingCondition;\n const chain = client.chain;\n const version = isMultiSig(hashMode)\n ? chain?.addressVersion.multiSig ?? 20\n : chain?.addressVersion.singleSig ?? 22;\n return c32address(version, signer);\n}\n\nexport async function simulateTransaction(\n client: Client,\n params: SimulateTransactionParams,\n): Promise<SimulateTransactionResult> {\n const { transaction, tip } = params;\n const { payload } = transaction;\n\n if (payload.payloadType === PayloadType.ContractCall) {\n const sender = params.sender ?? extractSender(transaction, client);\n const contract = `${payload.contractAddress}.${payload.contractName}`;\n\n const [execution, fees] = await Promise.all([\n simulateCall(client, {\n contract,\n functionName: payload.functionName,\n args: payload.functionArgs,\n sender,\n tip,\n }),\n estimateFee(client, { transaction }),\n ]);\n\n return { type: \"contract-call\", execution, fees };\n }\n\n const fees = await estimateFee(client, { transaction });\n\n if (\n payload.payloadType === PayloadType.SmartContract ||\n payload.payloadType === PayloadType.VersionedSmartContract\n ) {\n return { type: \"contract-deploy\", fees };\n }\n\n return { type: \"token-transfer\", fees };\n}\n",
14
- "import type { Client } from \"../../clients/types.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { signMultiSigWithAccount } from \"../../transactions/multisig.ts\";\nimport { serializeTransactionHex } from \"../../transactions/wire/serialize.ts\";\nimport { deserializeTransaction } from \"../../transactions/wire/deserialize.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignTransactionParams = {\n transaction: StacksTransaction;\n /** Public keys for multi-sig signing (auto-detected from _multisig metadata if omitted) */\n signers?: string[];\n};\n\n/** Sign a transaction using the client's account */\nexport async function signTransactionAction(\n client: Client,\n params: SignTransactionParams\n): Promise<StacksTransaction> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: send hex to wallet, get signed hex back\n if (isProviderAccount(account)) {\n const hex = serializeTransactionHex(params.transaction);\n const result = await account.provider.request(\"stx_signTransaction\", {\n transaction: hex,\n });\n return deserializeTransaction(result.transaction);\n }\n\n // Multi-sig: auto-detect from fields or _multisig metadata\n const condition = params.transaction.auth.spendingCondition;\n if (\"fields\" in condition) {\n const publicKeys = params.signers ?? (params.transaction as any)._multisig?.publicKeys;\n if (!publicKeys) throw new Error(\"Multi-sig signing requires signers (publicKeys)\");\n return signMultiSigWithAccount(params.transaction, account, publicKeys);\n }\n\n // Local/Custom: sign with account\n return signTransactionWithAccount(params.transaction, account);\n}\n",
15
- "import type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { buildTokenTransfer } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type TransferStxParams = {\n to: string;\n amount: IntegerType;\n memo?: string;\n fee?: IntegerType;\n nonce?: IntegerType;\n postConditionMode?: \"allow\" | \"deny\";\n postConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast an STX transfer */\nexport async function transferStx(\n client: Client,\n params: TransferStxParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const result = await account.provider.request(\"stx_transferStx\", {\n recipient: params.to,\n amount: String(params.amount),\n memo: params.memo,\n });\n return result.txid;\n }\n\n // Local/Custom: build → sign → broadcast\n const nonce =\n params.nonce ?? await getNonce(client, { address: account.address });\n\n const unsigned = buildTokenTransfer({\n recipient: params.to,\n amount: params.amount,\n memo: params.memo,\n fee: params.fee ?? 0n,\n nonce,\n publicKey: account.publicKey,\n chain: client.chain,\n postConditionMode: params.postConditionMode,\n postConditions: params.postConditions,\n });\n\n if (params.fee === undefined) {\n const estimates = await estimateFee(client, { transaction: unsigned });\n const mid = estimates[1] ?? estimates[0];\n if (mid) {\n (unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n }\n }\n\n const signed = await signTransactionWithAccount(unsigned, account);\n const result = await sendTransaction(client, { transaction: signed });\n return result.txid;\n}\n",
16
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityVersion } from \"../../transactions/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { buildContractDeploy } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type DeployContractParams = {\n contractName: string;\n codeBody: string;\n clarityVersion?: ClarityVersion;\n fee?: IntegerType;\n nonce?: IntegerType;\n postConditionMode?: \"allow\" | \"deny\";\n postConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast a contract deploy */\nexport async function deployContract(\n client: Client,\n params: DeployContractParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const result = await account.provider.request(\"stx_deployContract\", {\n contractName: params.contractName,\n codeBody: params.codeBody,\n clarityVersion: params.clarityVersion,\n });\n return result.txid;\n }\n\n // Local/Custom: build → sign → broadcast\n const nonce =\n params.nonce ?? await getNonce(client, { address: account.address });\n\n const unsigned = buildContractDeploy({\n contractName: params.contractName,\n codeBody: params.codeBody,\n clarityVersion: params.clarityVersion,\n fee: params.fee ?? 0n,\n nonce,\n publicKey: account.publicKey,\n chain: client.chain,\n postConditionMode: params.postConditionMode,\n postConditions: params.postConditions,\n });\n\n if (params.fee === undefined) {\n const estimates = await estimateFee(client, { transaction: unsigned });\n const mid = estimates[1] ?? estimates[0];\n if (mid) {\n (unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n }\n }\n\n const signed = await signTransactionWithAccount(unsigned, account);\n const result = await sendTransaction(client, { transaction: signed });\n return result.txid;\n}\n",
17
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { Cl } from \"../../clarity/values.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport { concatBytes, bytesToHex } from \"../../utils/encoding.ts\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignMessageParams = {\n message: string | ClarityValue;\n domain?: {\n name: string;\n version: string;\n chainId: number;\n };\n};\n\nconst SIP018_PREFIX = new Uint8Array([0x53, 0x49, 0x50, 0x30, 0x31, 0x38]); // \"SIP018\"\n\n/** Sign a structured message per SIP-018 */\nexport async function signMessage(\n client: Client,\n params: SignMessageParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const method = params.domain\n ? \"stx_signStructuredMessage\"\n : \"stx_signMessage\";\n const result = await account.provider.request(method, {\n message: params.message,\n domain: params.domain,\n });\n return result.signature;\n }\n\n // Local/Custom: sign locally\n const cv =\n typeof params.message === \"string\"\n ? Cl.stringAscii(params.message)\n : params.message;\n\n const serializedMsg = serializeCVBytes(cv);\n\n let hash: Uint8Array;\n\n if (params.domain) {\n const domainCV = Cl.tuple({\n name: Cl.stringAscii(params.domain.name),\n version: Cl.stringAscii(params.domain.version),\n \"chain-id\": Cl.uint(params.domain.chainId),\n });\n const serializedDomain = serializeCVBytes(domainCV);\n hash = sha256(concatBytes(SIP018_PREFIX, serializedDomain, serializedMsg));\n } else {\n hash = sha256(serializedMsg);\n }\n\n const sigBytes = await account.sign(hash);\n return bytesToHex(sigBytes);\n}\n",
18
- "import type { Client } from \"../../clients/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { intToBigInt } from \"../../utils/encoding.ts\";\nimport {\n AuthType,\n type StacksTransaction,\n type SponsoredAuthorization,\n} from \"../../transactions/types.ts\";\nimport { createSingleSigSpendingCondition } from \"../../transactions/authorization.ts\";\nimport { signSponsorWithAccount } from \"../../transactions/signer.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SponsorTransactionParams = {\n transaction: StacksTransaction;\n fee?: IntegerType;\n nonce?: IntegerType;\n};\n\n/** Sponsor a transaction: set sponsor spending condition, sign as sponsor */\nexport async function sponsorTransaction(\n client: Client,\n params: SponsorTransactionParams\n): Promise<StacksTransaction> {\n const { transaction } = params;\n\n if (transaction.auth.authType !== AuthType.Sponsored) {\n throw new Error(\"Transaction must have sponsored authorization\");\n }\n\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n if (isProviderAccount(account)) {\n throw new Error(\"Provider accounts cannot sponsor transactions\");\n }\n\n // Resolve sponsor nonce\n const nonce = params.nonce != null\n ? intToBigInt(params.nonce)\n : await getNonce(client, { address: account.address });\n\n // Resolve sponsor fee\n let fee: bigint;\n if (params.fee != null) {\n fee = intToBigInt(params.fee);\n } else {\n const estimates = await estimateFee(client, { transaction });\n const mid = estimates[1] ?? estimates[0];\n fee = mid ? BigInt(mid.fee) : 0n;\n }\n\n // Create sponsor spending condition\n const sponsorCondition = createSingleSigSpendingCondition(\n account.publicKey,\n nonce,\n fee\n );\n\n // Set sponsor spending condition on the tx\n const auth = transaction.auth as SponsoredAuthorization;\n const sponsored: StacksTransaction = {\n ...transaction,\n auth: {\n ...auth,\n sponsorSpendingCondition: sponsorCondition,\n },\n };\n\n // Sign as sponsor\n return signSponsorWithAccount(sponsored, account);\n}\n"
19
- ],
20
- "mappings": "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",
21
- "debugId": "611DF286E29AA1A764756E2164756E21",
22
- "names": []
23
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/transactions/wire/deserialize.ts"],
4
- "sourcesContent": [
5
- "import {\n bytesToHex,\n hexToBytes,\n bytesToAscii,\n bytesToUtf8,\n without0x,\n} from \"../../utils/encoding.ts\";\nimport { c32address } from \"../../utils/c32.ts\";\nimport {\n AuthType,\n PayloadType,\n AddressHashMode,\n PostConditionPrincipalId,\n AssetType,\n RECOVERABLE_ECDSA_SIG_LENGTH_BYTES,\n MEMO_MAX_LENGTH_BYTES,\n COINBASE_BYTES_LENGTH,\n VRF_PROOF_BYTES_LENGTH,\n MICROBLOCK_HEADER_BYTES_LENGTH,\n type StacksTransaction,\n type Authorization,\n type SpendingCondition,\n type TransactionPayload,\n type PostConditionWire,\n type PostConditionPrincipalWire,\n type AssetInfoWire,\n type TransactionAuthField,\n type AnchorMode,\n type PostConditionModeWire,\n type ClarityVersion,\n type TenureChangeCause,\n} from \"../types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { clarityTypeFromByte } from \"../../clarity/types.ts\";\nimport {\n intCV,\n uintCV,\n trueCV,\n falseCV,\n bufferCV,\n noneCV,\n someCV,\n responseOkCV,\n responseErrorCV,\n standardPrincipalCV,\n contractPrincipalCV,\n listCV,\n tupleCV,\n stringAsciiCV,\n stringUtf8CV,\n} from \"../../clarity/values.ts\";\nimport { bytesToTwosBigInt } from \"../../utils/encoding.ts\";\n\nclass Reader {\n private data: Uint8Array;\n public offset = 0;\n\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n readUInt8(): number {\n return this.data[this.offset++]!;\n }\n\n readUInt16BE(): number {\n const val = ((this.data[this.offset]! << 8) | this.data[this.offset + 1]!) >>> 0;\n this.offset += 2;\n return val;\n }\n\n readUInt32BE(): number {\n const val =\n ((this.data[this.offset]! << 24) |\n (this.data[this.offset + 1]! << 16) |\n (this.data[this.offset + 2]! << 8) |\n this.data[this.offset + 3]!) >>>\n 0;\n this.offset += 4;\n return val;\n }\n\n readBytes(length: number): Uint8Array {\n if (this.offset + length > this.data.length) {\n throw new Error(`Buffer underflow: need ${length} bytes at offset ${this.offset}, have ${this.data.length}`);\n }\n const slice = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return slice;\n }\n\n readBigUInt64BE(): bigint {\n const bytes = this.readBytes(8);\n const hex = bytesToHex(bytes);\n return hex.length > 0 ? BigInt(`0x${hex}`) : 0n;\n }\n}\n\nfunction readAddress(r: Reader): string {\n const version = r.readUInt8();\n const hash160 = bytesToHex(r.readBytes(20));\n return c32address(version, hash160);\n}\n\nfunction readLPString(r: Reader, prefixBytes = 1): string {\n let length = 0;\n for (let i = 0; i < prefixBytes; i++) {\n length = (length << 8) | r.readUInt8();\n }\n return bytesToUtf8(r.readBytes(length));\n}\n\nfunction readCV(r: Reader): ClarityValue {\n const typeByte = r.readUInt8();\n const type = clarityTypeFromByte(typeByte);\n\n switch (type) {\n case \"int\":\n return intCV(bytesToTwosBigInt(r.readBytes(16)));\n case \"uint\":\n return uintCV(r.readBytes(16));\n case \"true\":\n return trueCV();\n case \"false\":\n return falseCV();\n case \"buffer\": {\n const len = r.readUInt32BE();\n return bufferCV(r.readBytes(len));\n }\n case \"none\":\n return noneCV();\n case \"some\":\n return someCV(readCV(r));\n case \"ok\":\n return responseOkCV(readCV(r));\n case \"err\":\n return responseErrorCV(readCV(r));\n case \"address\":\n return standardPrincipalCV(readAddress(r));\n case \"contract\": {\n const addr = readAddress(r);\n const name = readLPString(r);\n return contractPrincipalCV(addr, name);\n }\n case \"list\": {\n const len = r.readUInt32BE();\n const items: ClarityValue[] = [];\n for (let i = 0; i < len; i++) items.push(readCV(r));\n return listCV(items);\n }\n case \"tuple\": {\n const len = r.readUInt32BE();\n const data: Record<string, ClarityValue> = {};\n for (let i = 0; i < len; i++) {\n const key = readLPString(r);\n data[key] = readCV(r);\n }\n return tupleCV(data);\n }\n case \"ascii\": {\n const len = r.readUInt32BE();\n return stringAsciiCV(bytesToAscii(r.readBytes(len)));\n }\n case \"utf8\": {\n const len = r.readUInt32BE();\n return stringUtf8CV(bytesToUtf8(r.readBytes(len)));\n }\n default:\n throw new Error(`Unknown clarity type: ${type}`);\n }\n}\n\nfunction readSpendingCondition(r: Reader): SpendingCondition {\n const hashMode = r.readUInt8();\n const signer = bytesToHex(r.readBytes(20));\n const nonce = r.readBigUInt64BE();\n const fee = r.readBigUInt64BE();\n\n if (hashMode === AddressHashMode.P2PKH || hashMode === AddressHashMode.P2WPKH) {\n const keyEncoding = r.readUInt8();\n const signature = bytesToHex(r.readBytes(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES));\n return { hashMode, signer, nonce, fee, keyEncoding, signature } as SpendingCondition;\n }\n\n const fieldCount = r.readUInt32BE();\n const fields: TransactionAuthField[] = [];\n for (let i = 0; i < fieldCount; i++) {\n const fieldType = r.readUInt8();\n if (fieldType <= 0x01) {\n const keyLen = fieldType === 0x00 ? 33 : 65;\n fields.push({\n type: \"publicKey\",\n pubKeyEncoding: fieldType as 0x00 | 0x01,\n data: bytesToHex(r.readBytes(keyLen)),\n });\n } else {\n fields.push({\n type: \"signature\",\n pubKeyEncoding: (fieldType === 0x02 ? 0x00 : 0x01) as 0x00 | 0x01,\n data: bytesToHex(r.readBytes(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES)),\n });\n }\n }\n const signaturesRequired = r.readUInt16BE();\n\n return { hashMode, signer, nonce, fee, fields, signaturesRequired } as SpendingCondition;\n}\n\nfunction readAuthorization(r: Reader): Authorization {\n const authType = r.readUInt8();\n const spendingCondition = readSpendingCondition(r);\n\n if (authType === AuthType.Standard) {\n return { authType: AuthType.Standard, spendingCondition };\n }\n\n const sponsorSpendingCondition = readSpendingCondition(r);\n return {\n authType: AuthType.Sponsored,\n spendingCondition,\n sponsorSpendingCondition,\n };\n}\n\nfunction readAssetInfo(r: Reader): AssetInfoWire {\n return {\n address: readAddress(r),\n contractName: readLPString(r),\n assetName: readLPString(r),\n };\n}\n\nfunction readPostConditionPrincipal(r: Reader): PostConditionPrincipalWire {\n const type = r.readUInt8();\n switch (type) {\n case PostConditionPrincipalId.Origin:\n return { type: \"origin\" };\n case PostConditionPrincipalId.Standard:\n return { type: \"standard\", address: readAddress(r) };\n case PostConditionPrincipalId.Contract:\n return { type: \"contract\", address: readAddress(r), contractName: readLPString(r) };\n default:\n // Some legacy transactions may have unexpected principal types.\n // Treat as origin to allow deserialization to continue.\n return { type: \"origin\" };\n }\n}\n\nfunction readPostConditions(r: Reader): PostConditionWire[] {\n const count = r.readUInt32BE();\n const pcs: PostConditionWire[] = [];\n for (let i = 0; i < count; i++) {\n // Wire order: asset_type, then principal (per SIP-005 and stacks.js)\n const assetType = r.readUInt8();\n const principal = readPostConditionPrincipal(r);\n switch (assetType) {\n case AssetType.STX:\n pcs.push({ type: \"stx\", principal, conditionCode: r.readUInt8(), amount: r.readBigUInt64BE() });\n break;\n case AssetType.Fungible:\n pcs.push({ type: \"ft\", principal, asset: readAssetInfo(r), conditionCode: r.readUInt8(), amount: r.readBigUInt64BE() });\n break;\n case AssetType.NonFungible:\n pcs.push({ type: \"nft\", principal, asset: readAssetInfo(r), assetId: readCV(r), conditionCode: r.readUInt8() });\n break;\n }\n }\n return pcs;\n}\n\nfunction readPayload(r: Reader): TransactionPayload {\n const payloadType = r.readUInt8();\n\n switch (payloadType) {\n case PayloadType.TokenTransfer: {\n const recipient = readCV(r);\n const amount = r.readBigUInt64BE();\n // Memo is a flat 34-byte field (no length prefix) per SIP-005\n const memoBytes = r.readBytes(MEMO_MAX_LENGTH_BYTES);\n const memo = bytesToAscii(memoBytes).replace(/\\0+$/, \"\");\n return { payloadType: PayloadType.TokenTransfer, recipient, amount, memo };\n }\n case PayloadType.ContractCall: {\n const contractAddress = readAddress(r);\n const contractName = readLPString(r);\n const functionName = readLPString(r);\n const numArgs = r.readUInt32BE();\n const functionArgs: ClarityValue[] = [];\n for (let i = 0; i < numArgs; i++) functionArgs.push(readCV(r));\n return { payloadType: PayloadType.ContractCall, contractAddress, contractName, functionName, functionArgs };\n }\n case PayloadType.SmartContract: {\n const contractName = readLPString(r);\n const codeBody = readLPString(r, 4);\n return { payloadType: PayloadType.SmartContract, contractName, codeBody };\n }\n case PayloadType.VersionedSmartContract: {\n const clarityVersion = r.readUInt8() as ClarityVersion;\n const contractName = readLPString(r);\n const codeBody = readLPString(r, 4);\n return { payloadType: PayloadType.VersionedSmartContract, clarityVersion, contractName, codeBody };\n }\n case PayloadType.Coinbase: {\n const coinbaseBuffer = bytesToHex(r.readBytes(COINBASE_BYTES_LENGTH));\n return { payloadType: PayloadType.Coinbase, coinbaseBuffer };\n }\n case PayloadType.CoinbaseToAltRecipient: {\n const coinbaseBuffer = bytesToHex(r.readBytes(COINBASE_BYTES_LENGTH));\n const recipient = readCV(r);\n return { payloadType: PayloadType.CoinbaseToAltRecipient, coinbaseBuffer, recipient };\n }\n case PayloadType.PoisonMicroblock: {\n const header1 = bytesToHex(r.readBytes(MICROBLOCK_HEADER_BYTES_LENGTH));\n const header2 = bytesToHex(r.readBytes(MICROBLOCK_HEADER_BYTES_LENGTH));\n return { payloadType: PayloadType.PoisonMicroblock, header1, header2 };\n }\n case PayloadType.TenureChange: {\n const tenureConsensusHash = bytesToHex(r.readBytes(20));\n const prevTenureConsensusHash = bytesToHex(r.readBytes(20));\n const burnViewConsensusHash = bytesToHex(r.readBytes(20));\n const previousTenureEnd = bytesToHex(r.readBytes(32));\n const previousTenureBlocks = r.readUInt32BE();\n const cause = r.readUInt8() as TenureChangeCause;\n const pubkeyHash = bytesToHex(r.readBytes(20));\n return {\n payloadType: PayloadType.TenureChange,\n tenureConsensusHash,\n prevTenureConsensusHash,\n burnViewConsensusHash,\n previousTenureEnd,\n previousTenureBlocks,\n cause,\n pubkeyHash,\n };\n }\n case PayloadType.NakamotoCoinbase: {\n const coinbaseBuffer = bytesToHex(r.readBytes(COINBASE_BYTES_LENGTH));\n const optionalCV = readCV(r);\n const recipient = optionalCV.type === \"none\" ? null : optionalCV.type === \"some\" ? optionalCV.value : optionalCV;\n const vrfProof = bytesToHex(r.readBytes(VRF_PROOF_BYTES_LENGTH));\n return { payloadType: PayloadType.NakamotoCoinbase, coinbaseBuffer, recipient, vrfProof };\n }\n default:\n throw new Error(`Unknown payload type: ${payloadType}`);\n }\n}\n\nexport function deserializeTransaction(input: string | Uint8Array): StacksTransaction {\n const bytes = typeof input === \"string\" ? hexToBytes(without0x(input)) : input;\n const r = new Reader(bytes);\n\n return {\n version: r.readUInt8(),\n chainId: r.readUInt32BE(),\n auth: readAuthorization(r),\n anchorMode: r.readUInt8() as AnchorMode,\n postConditionMode: r.readUInt8() as PostConditionModeWire,\n postConditions: readPostConditions(r),\n payload: readPayload(r),\n };\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "876770F5E21209F964756E2164756E21",
9
- "names": []
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/units.ts"],
4
- "sourcesContent": [
5
- "/**\n * Format a bigint value with decimal places.\n * @example formatUnits(1000000n, 6) → \"1.0\"\n * @example formatUnits(1500000n, 6) → \"1.5\"\n */\nexport function formatUnits(value: bigint | number | string, decimals: number): string {\n let v = BigInt(value);\n\n const negative = v < 0n;\n if (negative) v = -v;\n\n const divisor = 10n ** BigInt(decimals);\n let integer = (v / divisor).toString();\n let fraction = (v % divisor).toString().padStart(decimals, \"0\");\n\n // Trim trailing zeros, but keep at least one decimal\n fraction = fraction.replace(/0+$/, \"\") || \"0\";\n\n const result = `${integer}.${fraction}`;\n return negative ? `-${result}` : result;\n}\n\n/**\n * Parse a decimal string into a bigint with the given number of decimals.\n * @example parseUnits(\"1.5\", 6) → 1500000n\n * @example parseUnits(\"1\", 6) → 1000000n\n */\nexport function parseUnits(value: string | number, decimals: number): bigint {\n let str = typeof value === \"number\" ? value.toString() : value;\n\n const negative = str.startsWith(\"-\");\n if (negative) str = str.slice(1);\n\n const [integer = \"\", fraction = \"\"] = str.split(\".\");\n\n if (fraction.length > decimals) {\n throw new Error(\n `Too many decimal places: \"${value}\" has ${fraction.length} decimals, max is ${decimals}`\n );\n }\n\n const padded = fraction.padEnd(decimals, \"0\");\n const result = BigInt(integer + padded);\n return negative ? -result : result;\n}\n\n/**\n * Format microSTX to STX string (6 decimals).\n * @example formatStx(1000000n) → \"1.0\"\n */\nexport function formatStx(microStx: bigint | number | string): string {\n return formatUnits(microStx, 6);\n}\n\n/**\n * Parse STX string to microSTX bigint (6 decimals).\n * @example parseStx(\"1.5\") → 1500000n\n */\nexport function parseStx(stx: string | number): bigint {\n return parseUnits(stx, 6);\n}\n"
6
- ],
7
- "mappings": ";AAKO,SAAS,WAAW,CAAC,OAAiC,UAA0B;AAAA,EACrF,IAAI,IAAI,OAAO,KAAK;AAAA,EAEpB,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI;AAAA,IAAU,IAAI,CAAC;AAAA,EAEnB,MAAM,UAAU,OAAO,OAAO,QAAQ;AAAA,EACtC,IAAI,WAAW,IAAI,SAAS,SAAS;AAAA,EACrC,IAAI,YAAY,IAAI,SAAS,SAAS,EAAE,SAAS,UAAU,GAAG;AAAA,EAG9D,WAAW,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,EAE1C,MAAM,SAAS,GAAG,WAAW;AAAA,EAC7B,OAAO,WAAW,IAAI,WAAW;AAAA;AAQ5B,SAAS,UAAU,CAAC,OAAwB,UAA0B;AAAA,EAC3E,IAAI,MAAM,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI;AAAA,EAEzD,MAAM,WAAW,IAAI,WAAW,GAAG;AAAA,EACnC,IAAI;AAAA,IAAU,MAAM,IAAI,MAAM,CAAC;AAAA,EAE/B,OAAO,UAAU,IAAI,WAAW,MAAM,IAAI,MAAM,GAAG;AAAA,EAEnD,IAAI,SAAS,SAAS,UAAU;AAAA,IAC9B,MAAM,IAAI,MACR,6BAA6B,cAAc,SAAS,2BAA2B,UACjF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAAS,OAAO,UAAU,GAAG;AAAA,EAC5C,MAAM,SAAS,OAAO,UAAU,MAAM;AAAA,EACtC,OAAO,WAAW,CAAC,SAAS;AAAA;AAOvB,SAAS,SAAS,CAAC,UAA4C;AAAA,EACpE,OAAO,YAAY,UAAU,CAAC;AAAA;AAOzB,SAAS,QAAQ,CAAC,KAA8B;AAAA,EACrD,OAAO,WAAW,KAAK,CAAC;AAAA;",
8
- "debugId": "1526CC87E34EA2D064756E2164756E21",
9
- "names": []
10
- }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/clarity/prettyPrint.ts", "../src/clarity/abi/converters.ts"],
4
- "sourcesContent": [
5
- "import { hexToBytes, bytesToAscii, asciiToBytes, utf8ToBytes } from \"../utils/encoding.ts\";\nimport type { ClarityValue } from \"./types.ts\";\n\nexport function prettyPrint(val: ClarityValue, encoding: \"tryAscii\" | \"hex\" = \"hex\"): string | undefined {\n switch (val.type) {\n case \"true\":\n return \"true\";\n case \"false\":\n return \"false\";\n case \"int\":\n return val.value.toString();\n case \"uint\":\n return `u${val.value.toString()}`;\n case \"buffer\":\n if (encoding === \"tryAscii\") {\n const str = bytesToAscii(hexToBytes(val.value));\n if (/^[ -~]*$/.test(str)) return JSON.stringify(str);\n }\n return `0x${val.value}`;\n case \"none\":\n return \"none\";\n case \"some\":\n return `(some ${prettyPrint(val.value, encoding)})`;\n case \"ok\":\n return `(ok ${prettyPrint(val.value, encoding)})`;\n case \"err\":\n return `(err ${prettyPrint(val.value, encoding)})`;\n case \"address\":\n case \"contract\":\n return val.value;\n case \"list\":\n return `(list ${val.value.map((v) => prettyPrint(v, encoding)).join(\" \")})`;\n case \"tuple\":\n return `(tuple ${Object.keys(val.value)\n .map((key) => `(${key} ${prettyPrint(val.value[key]!, encoding)})`)\n .join(\" \")})`;\n case \"ascii\":\n return `\"${val.value}\"`;\n case \"utf8\":\n return `u\"${val.value}\"`;\n }\n}\n\nexport function cvToJSON(val: ClarityValue): any {\n switch (val.type) {\n case \"true\":\n return { type: \"bool\", value: true };\n case \"false\":\n return { type: \"bool\", value: false };\n case \"int\":\n return { type: \"int\", value: val.value.toString() };\n case \"uint\":\n return { type: \"uint\", value: val.value.toString() };\n case \"buffer\":\n return { type: `(buff ${Math.ceil(val.value.length / 2)})`, value: `0x${val.value}` };\n case \"none\":\n return { type: \"(optional none)\", value: null };\n case \"some\":\n return { type: `(optional)`, value: cvToJSON(val.value) };\n case \"ok\":\n return { type: \"(response)\", value: cvToJSON(val.value), success: true };\n case \"err\":\n return { type: \"(response)\", value: cvToJSON(val.value), success: false };\n case \"address\":\n case \"contract\":\n return { type: \"principal\", value: val.value };\n case \"list\":\n return { type: \"(list)\", value: val.value.map(cvToJSON) };\n case \"tuple\": {\n const result: Record<string, any> = {};\n for (const key of Object.keys(val.value)) {\n result[key] = cvToJSON(val.value[key]!);\n }\n return { type: \"(tuple)\", value: result };\n }\n case \"ascii\":\n return { type: `(string-ascii ${asciiToBytes(val.value).length})`, value: val.value };\n case \"utf8\":\n return { type: `(string-utf8 ${utf8ToBytes(val.value).length})`, value: val.value };\n }\n}\n\nexport function cvToValue(val: ClarityValue): any {\n switch (val.type) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n case \"int\":\n case \"uint\":\n return val.value;\n case \"buffer\":\n return `0x${val.value}`;\n case \"none\":\n return null;\n case \"some\":\n return cvToValue(val.value);\n case \"ok\":\n case \"err\":\n return cvToValue(val.value);\n case \"address\":\n case \"contract\":\n return val.value;\n case \"list\":\n return val.value.map(cvToValue);\n case \"tuple\": {\n const result: Record<string, any> = {};\n for (const key of Object.keys(val.value)) {\n result[key] = cvToValue(val.value[key]!);\n }\n return result;\n }\n case \"ascii\":\n case \"utf8\":\n return val.value;\n }\n}\n",
6
- "import type { AbiType } from \"./types.ts\";\nimport type { AbiFunction } from \"./contract.ts\";\nimport {\n isUint128,\n isInt128,\n isBool,\n isPrincipal,\n isString,\n isUint8Array,\n isAbiList,\n isAbiTuple,\n isAbiOptional,\n isAbiResponse,\n isAbiBuffer,\n isAbiStringAscii,\n isAbiStringUtf8,\n} from \"./guards.ts\";\nimport { toCamelCase } from \"./utils.ts\";\n\nexport class ClarityConversionError extends Error {\n constructor(\n message: string,\n public readonly type: AbiType,\n public readonly value: unknown,\n ) {\n super(message);\n this.name = \"ClarityConversionError\";\n }\n}\n\nexport function jsToClarity(type: AbiType, value: unknown): unknown {\n if (type === \"none\") return null;\n\n if (type === \"uint128\") {\n if (!isUint128(value))\n throw new ClarityConversionError(\"Invalid uint128 value\", type, value);\n return value;\n }\n\n if (type === \"int128\") {\n if (!isInt128(value))\n throw new ClarityConversionError(\"Invalid int128 value\", type, value);\n return value;\n }\n\n if (type === \"bool\") {\n if (!isBool(value))\n throw new ClarityConversionError(\"Invalid bool value\", type, value);\n return value;\n }\n\n if (type === \"principal\") {\n if (!isPrincipal(value))\n throw new ClarityConversionError(\"Invalid principal value\", type, value);\n return value;\n }\n\n if (type === \"trait_reference\") {\n if (!isPrincipal(value))\n throw new ClarityConversionError(\n \"Invalid trait_reference value\",\n type,\n value,\n );\n return value;\n }\n\n if (isAbiStringAscii(type)) {\n if (!isString(value))\n throw new ClarityConversionError(\n \"Invalid string-ascii value\",\n type,\n value,\n );\n const str = value as string;\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) > 127) {\n throw new ClarityConversionError(\n `Non-ASCII character at position ${i}: '${str[i]}' (code ${str.charCodeAt(i)})`,\n type,\n value,\n );\n }\n }\n if (str.length > type[\"string-ascii\"].length) {\n throw new ClarityConversionError(\n `String length ${str.length} exceeds max ${type[\"string-ascii\"].length}`,\n type,\n value,\n );\n }\n return value;\n }\n\n if (isAbiStringUtf8(type)) {\n if (!isString(value))\n throw new ClarityConversionError(\n \"Invalid string-utf8 value\",\n type,\n value,\n );\n const str = value as string;\n const byteLength = new TextEncoder().encode(str).length;\n if (byteLength > type[\"string-utf8\"].length) {\n throw new ClarityConversionError(\n `String byte length ${byteLength} exceeds max ${type[\"string-utf8\"].length}`,\n type,\n value,\n );\n }\n return value;\n }\n\n if (isAbiBuffer(type)) {\n if (!isUint8Array(value))\n throw new ClarityConversionError(\"Invalid buffer value\", type, value);\n const buff = value as Uint8Array;\n if (buff.length > type.buff.length) {\n throw new ClarityConversionError(\n `Buffer length ${buff.length} exceeds max ${type.buff.length}`,\n type,\n value,\n );\n }\n return value;\n }\n\n if (isAbiList(type)) {\n if (!Array.isArray(value))\n throw new ClarityConversionError(\n \"Expected array for list type\",\n type,\n value,\n );\n if (value.length > type.list.length) {\n throw new ClarityConversionError(\n `List length ${value.length} exceeds max ${type.list.length}`,\n type,\n value,\n );\n }\n return value.map((item) => jsToClarity(type.list.type, item));\n }\n\n if (isAbiTuple(type)) {\n if (typeof value !== \"object\" || value === null)\n throw new ClarityConversionError(\n \"Expected object for tuple type\",\n type,\n value,\n );\n const result: Record<string, unknown> = {};\n for (const field of type.tuple) {\n const camelKey = toCamelCase(field.name);\n const hasOriginal = field.name in (value as object);\n const hasCamel = camelKey in (value as object);\n if (!hasOriginal && !hasCamel) {\n throw new ClarityConversionError(\n `Missing tuple field: ${field.name}`,\n type,\n value,\n );\n }\n const fieldValue = hasOriginal\n ? (value as Record<string, unknown>)[field.name]\n : (value as Record<string, unknown>)[camelKey];\n result[field.name] = jsToClarity(field.type, fieldValue);\n }\n return result;\n }\n\n if (isAbiOptional(type)) {\n if (value === null || value === undefined) return null;\n return jsToClarity(type.optional, value);\n }\n\n if (isAbiResponse(type)) {\n if (typeof value !== \"object\" || value === null)\n throw new ClarityConversionError(\n \"Expected object for response type\",\n type,\n value,\n );\n const hasOk = \"ok\" in value;\n const hasErr = \"err\" in value;\n if (hasOk && !hasErr) {\n return {\n ok: jsToClarity(type.response.ok, (value as { ok: unknown }).ok),\n };\n }\n if (hasErr && !hasOk) {\n return {\n err: jsToClarity(\n type.response.error,\n (value as { err: unknown }).err,\n ),\n };\n }\n throw new ClarityConversionError(\n \"Response must have exactly 'ok' or 'err' property\",\n type,\n value,\n );\n }\n\n throw new ClarityConversionError(`Unknown Clarity type`, type, value);\n}\n\nexport function prepareArgs<F extends AbiFunction>(\n func: F,\n args: Record<string, unknown>,\n): unknown[] {\n return func.args.map((arg) => {\n if (!(arg.name in args)) {\n throw new ClarityConversionError(\n `Missing argument: ${arg.name}`,\n arg.type,\n undefined,\n );\n }\n return jsToClarity(arg.type, args[arg.name]);\n });\n}\n\nexport function validateArgs<F extends AbiFunction>(\n func: F,\n args: Record<string, unknown>,\n): void {\n for (const arg of func.args) {\n if (!(arg.name in args)) {\n throw new ClarityConversionError(\n `Missing argument: ${arg.name}`,\n arg.type,\n undefined,\n );\n }\n jsToClarity(arg.type, args[arg.name]);\n }\n}\n\nexport function validateArgsArray<F extends AbiFunction>(\n func: F,\n args: unknown[],\n): void {\n if (args.length !== func.args.length) {\n throw new ClarityConversionError(\n `Expected ${func.args.length} arguments, got ${args.length}`,\n func.args[0]?.type ?? \"bool\",\n args,\n );\n }\n func.args.forEach((arg, i) => {\n jsToClarity(arg.type, args[i]);\n });\n}\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "DAD8B8065D272C2164756E2164756E21",
10
- "names": []
11
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/clarity/abi/types.ts", "../src/clarity/abi/guards.ts", "../src/clarity/abi/utils.ts", "../src/clarity/bridge.ts"],
4
- "sourcesContent": [
5
- "import { MAX_U128, MAX_I128, MIN_I128 } from \"../../utils/constants.ts\";\n\nexport { MAX_U128, MAX_I128, MIN_I128 };\n\nexport const CONTRACT_NAME_REGEX: RegExp = /^[a-zA-Z][a-zA-Z0-9\\-]{0,127}$/;\n\n// Primitive types\n\nexport type AbiUInt128 = \"uint128\";\nexport type AbiInt128 = \"int128\";\nexport type AbiBool = \"bool\";\nexport type AbiPrincipal = \"principal\";\nexport type AbiTraitReference = \"trait_reference\";\nexport type AbiNone = \"none\";\n\nexport type AbiStringAscii<L extends number = number> = {\n \"string-ascii\": { length: L };\n};\n\nexport type AbiStringUtf8<L extends number = number> = {\n \"string-utf8\": { length: L };\n};\n\nexport type AbiBuffer<L extends number = number> = {\n buff: { length: L };\n};\n\nexport type AbiPrimitiveType =\n | AbiUInt128\n | AbiInt128\n | AbiBool\n | AbiPrincipal\n | AbiTraitReference\n | AbiNone\n | AbiStringAscii\n | AbiStringUtf8\n | AbiBuffer;\n\n// Composite types (interfaces for recursion)\n\nexport interface AbiListType {\n list: { type: AbiType; length: number };\n}\n\nexport interface AbiTupleType {\n tuple: ReadonlyArray<{ name: string; type: AbiType }>;\n}\n\nexport interface AbiOptionalType {\n optional: AbiType;\n}\n\nexport interface AbiResponseType {\n response: { ok: AbiType; error: AbiType };\n}\n\n/** Discriminated union of all Clarity value types (primitives, buffers, lists, tuples, optionals, responses). */\nexport type AbiType =\n | AbiPrimitiveType\n | AbiListType\n | AbiTupleType\n | AbiOptionalType\n | AbiResponseType;\n\n// Generic versions for better type inference\n\nexport type AbiList<\n T extends AbiType = AbiType,\n L extends number = number,\n> = {\n list: { type: T; length: L };\n};\n\nexport type AbiTuple<\n T extends ReadonlyArray<{ name: string; type: AbiType }>,\n> = {\n tuple: T;\n};\n\nexport type AbiOptional<T extends AbiType = AbiType> = {\n optional: T;\n};\n\nexport type AbiResponse<\n O extends AbiType = AbiType,\n E extends AbiType = AbiType,\n> = {\n response: { ok: O; error: E };\n};\n",
6
- "import { validateStacksAddress } from \"../../utils/address.ts\";\nimport { MAX_U128, MIN_I128, MAX_I128, CONTRACT_NAME_REGEX } from \"./types.ts\";\nimport type { ResponseOk, ResponseErr } from \"./mappings.ts\";\nimport type {\n AbiType,\n AbiListType,\n AbiTupleType,\n AbiOptionalType,\n AbiResponseType,\n AbiBuffer,\n AbiStringAscii,\n AbiStringUtf8,\n AbiTraitReference,\n} from \"./types.ts\";\n\n// Value guards\n\nexport function isUint128(value: unknown): value is bigint {\n return typeof value === \"bigint\" && value >= 0n && value <= MAX_U128;\n}\n\nexport function isInt128(value: unknown): value is bigint {\n return typeof value === \"bigint\" && value >= MIN_I128 && value <= MAX_I128;\n}\n\nexport function isBool(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n const parts = value.split(\".\");\n const address = parts[0]!;\n const contractName = parts[1];\n if (!validateStacksAddress(address)) return false;\n if (contractName !== undefined) {\n return CONTRACT_NAME_REGEX.test(contractName);\n }\n return true;\n}\n\nexport function isStandardPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n if (value.includes(\".\")) return false;\n return validateStacksAddress(value);\n}\n\nexport function isContractPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n if (!value.includes(\".\")) return false;\n const parts = value.split(\".\");\n const address = parts[0]!;\n const contractName = parts[1]!;\n if (!validateStacksAddress(address)) return false;\n return CONTRACT_NAME_REGEX.test(contractName);\n}\n\nexport function isTraitReference(value: unknown): value is string {\n return isContractPrincipal(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nexport function isUint8Array(value: unknown): value is Uint8Array {\n return value instanceof Uint8Array;\n}\n\nexport function isArray<T>(\n value: unknown,\n itemGuard: (item: unknown) => item is T,\n): value is T[] {\n return Array.isArray(value) && value.every(itemGuard);\n}\n\nexport function isOptional<T>(\n value: unknown,\n guard: (val: unknown) => val is T,\n): value is T | null {\n return value === null || guard(value);\n}\n\nexport function isOkResponse<T>(\n response: { ok: T } | { err: any },\n): response is ResponseOk<T> {\n return \"ok\" in response && !(\"err\" in response);\n}\n\nexport function isErrResponse<E>(\n response: { ok: any } | { err: E },\n): response is ResponseErr<E> {\n return \"err\" in response && !(\"ok\" in response);\n}\n\nexport function isResponse<T, E>(\n value: unknown,\n okGuard: (val: unknown) => val is T,\n errGuard: (val: unknown) => val is E,\n): value is ResponseOk<T> | ResponseErr<E> {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n if (\"ok\" in value && !(\"err\" in value)) return okGuard(obj.ok);\n if (\"err\" in value && !(\"ok\" in value)) return errGuard(obj.err);\n return false;\n}\n\n// ABI type definition guards\n\nexport function isAbiList(type: AbiType): type is AbiListType {\n return typeof type === \"object\" && type !== null && \"list\" in type;\n}\n\nexport function isAbiTuple(type: AbiType): type is AbiTupleType {\n return typeof type === \"object\" && type !== null && \"tuple\" in type;\n}\n\nexport function isAbiOptional(type: AbiType): type is AbiOptionalType {\n return typeof type === \"object\" && type !== null && \"optional\" in type;\n}\n\nexport function isAbiResponse(type: AbiType): type is AbiResponseType {\n return typeof type === \"object\" && type !== null && \"response\" in type;\n}\n\nexport function isAbiBuffer(type: AbiType): type is AbiBuffer {\n return typeof type === \"object\" && type !== null && \"buff\" in type;\n}\n\nexport function isAbiStringAscii(type: AbiType): type is AbiStringAscii {\n return typeof type === \"object\" && type !== null && \"string-ascii\" in type;\n}\n\nexport function isAbiStringUtf8(type: AbiType): type is AbiStringUtf8 {\n return typeof type === \"object\" && type !== null && \"string-utf8\" in type;\n}\n\nexport function isAbiTraitReference(type: AbiType): type is AbiTraitReference {\n return type === \"trait_reference\";\n}\n",
7
- "type CamelCaseInner<S extends string> =\n S extends `${infer P1}-${infer P2}${infer P3}`\n ? `${P1}${Capitalize<CamelCaseInner<`${P2}${P3}`>>}`\n : S;\n\nexport type ToCamelCase<S extends string> =\n CamelCaseInner<S> extends `${number}${string}`\n ? `_${CamelCaseInner<S>}`\n : CamelCaseInner<S>;\n\nexport function toCamelCase(str: string): string {\n return str\n .replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())\n .replace(/-([A-Z])/g, (_, letter) => letter)\n .replace(/-(\\d)/g, (_, digit) => digit)\n .replace(/-/g, \"\")\n .replace(/^\\d/, \"_$&\");\n}\n",
8
- "import type { AbiType } from \"./abi/types.ts\";\nimport type { AbiToTS } from \"./abi/mappings.ts\";\nimport {\n isAbiList,\n isAbiTuple,\n isAbiOptional,\n isAbiResponse,\n isAbiBuffer,\n isAbiStringAscii,\n isAbiStringUtf8,\n} from \"./abi/guards.ts\";\nimport { toCamelCase } from \"./abi/utils.ts\";\nimport type { ClarityValue } from \"./types.ts\";\nimport {\n intCV,\n uintCV,\n boolCV,\n bufferCV,\n noneCV,\n someCV,\n responseOkCV,\n responseErrorCV,\n listCV,\n tupleCV,\n stringAsciiCV,\n stringUtf8CV,\n} from \"./values.ts\";\nimport { Cl } from \"./values.ts\";\n\n/**\n * Convert a JS value to a ClarityValue using ABI type information.\n */\nexport function jsToClarityValue(abiType: AbiType, value: unknown): ClarityValue {\n if (abiType === \"uint128\") return uintCV(value as bigint | number);\n if (abiType === \"int128\") return intCV(value as bigint | number);\n if (abiType === \"bool\") return boolCV(value as boolean);\n if (abiType === \"principal\" || abiType === \"trait_reference\")\n return Cl.principal(value as string);\n\n if (isAbiStringAscii(abiType)) return stringAsciiCV(value as string);\n if (isAbiStringUtf8(abiType)) return stringUtf8CV(value as string);\n if (isAbiBuffer(abiType)) return bufferCV(value as Uint8Array);\n\n if (isAbiList(abiType)) {\n const arr = value as unknown[];\n return listCV(arr.map((item) => jsToClarityValue(abiType.list.type, item)));\n }\n\n if (isAbiTuple(abiType)) {\n const obj = value as Record<string, unknown>;\n const data: Record<string, ClarityValue> = {};\n for (const field of abiType.tuple) {\n const camelKey = toCamelCase(field.name);\n const hasOriginal = field.name in obj;\n const hasCamel = camelKey in obj;\n const fieldValue = hasOriginal ? obj[field.name] : hasCamel ? obj[camelKey] : undefined;\n if (fieldValue === undefined && !isAbiOptional(field.type)) {\n throw new Error(`Missing tuple field: ${field.name}`);\n }\n data[field.name] = jsToClarityValue(field.type, fieldValue);\n }\n return tupleCV(data);\n }\n\n if (isAbiOptional(abiType)) {\n if (value === null || value === undefined) return noneCV();\n return someCV(jsToClarityValue(abiType.optional, value));\n }\n\n if (isAbiResponse(abiType)) {\n const obj = value as Record<string, unknown>;\n if (\"ok\" in obj && !(\"err\" in obj))\n return responseOkCV(jsToClarityValue(abiType.response.ok, obj.ok));\n if (\"err\" in obj && !(\"ok\" in obj))\n return responseErrorCV(jsToClarityValue(abiType.response.error, obj.err));\n throw new Error(\"Response must have exactly 'ok' or 'err' property\");\n }\n\n throw new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n\n/**\n * Convert a ClarityValue back to a typed JS value using ABI type information.\n */\nexport function clarityValueToJS<T extends AbiType>(\n abiType: T,\n cv: ClarityValue,\n): AbiToTS<T> {\n return clarityValueToJSInner(abiType, cv) as AbiToTS<T>;\n}\n\n/** Non-generic version for internal use — avoids deep type instantiation. */\nexport function clarityValueToJSUntyped(abiType: AbiType, cv: ClarityValue): unknown {\n return clarityValueToJSInner(abiType, cv);\n}\n\nfunction clarityValueToJSInner(abiType: AbiType, cv: ClarityValue): unknown {\n if (abiType === \"uint128\" || abiType === \"int128\") {\n if (cv.type !== \"int\" && cv.type !== \"uint\")\n throw new Error(`Expected int/uint CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (abiType === \"bool\") {\n if (cv.type === \"true\") return true;\n if (cv.type === \"false\") return false;\n throw new Error(`Expected bool CV, got ${cv.type}`);\n }\n\n if (abiType === \"principal\" || abiType === \"trait_reference\") {\n if (cv.type !== \"address\" && cv.type !== \"contract\")\n throw new Error(`Expected principal CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (isAbiStringAscii(abiType) || isAbiStringUtf8(abiType)) {\n if (cv.type !== \"ascii\" && cv.type !== \"utf8\")\n throw new Error(`Expected string CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (isAbiBuffer(abiType)) {\n if (cv.type !== \"buffer\") throw new Error(`Expected buffer CV, got ${cv.type}`);\n // BufferCV stores hex string; convert back to Uint8Array\n const hex = cv.value;\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n if (isAbiList(abiType)) {\n if (cv.type !== \"list\") throw new Error(`Expected list CV, got ${cv.type}`);\n return cv.value.map((item) => clarityValueToJSInner(abiType.list.type, item));\n }\n\n if (isAbiTuple(abiType)) {\n if (cv.type !== \"tuple\") throw new Error(`Expected tuple CV, got ${cv.type}`);\n const result: Record<string, unknown> = {};\n for (const field of abiType.tuple) {\n const fieldCV = cv.value[field.name];\n if (!fieldCV) throw new Error(`Missing tuple field in CV: ${field.name}`);\n const camelKey = toCamelCase(field.name);\n result[camelKey] = clarityValueToJSInner(field.type, fieldCV);\n }\n return result;\n }\n\n if (isAbiOptional(abiType)) {\n if (cv.type === \"none\") return null;\n if (cv.type === \"some\") return clarityValueToJSInner(abiType.optional, cv.value);\n throw new Error(`Expected optional CV, got ${cv.type}`);\n }\n\n if (isAbiResponse(abiType)) {\n if (cv.type === \"ok\") return { ok: clarityValueToJSInner(abiType.response.ok, cv.value) };\n if (cv.type === \"err\") return { err: clarityValueToJSInner(abiType.response.error, cv.value) };\n throw new Error(`Expected response CV, got ${cv.type}`);\n }\n\n throw new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n"
9
- ],
10
- "mappings": "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",
11
- "debugId": "A537BB6AB9ED2AAB64756E2164756E21",
12
- "names": []
13
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/units.ts"],
4
- "sourcesContent": [
5
- "/**\n * Format a bigint value with decimal places.\n * @example formatUnits(1000000n, 6) → \"1.0\"\n * @example formatUnits(1500000n, 6) → \"1.5\"\n */\nexport function formatUnits(value: bigint | number | string, decimals: number): string {\n let v = BigInt(value);\n\n const negative = v < 0n;\n if (negative) v = -v;\n\n const divisor = 10n ** BigInt(decimals);\n let integer = (v / divisor).toString();\n let fraction = (v % divisor).toString().padStart(decimals, \"0\");\n\n // Trim trailing zeros, but keep at least one decimal\n fraction = fraction.replace(/0+$/, \"\") || \"0\";\n\n const result = `${integer}.${fraction}`;\n return negative ? `-${result}` : result;\n}\n\n/**\n * Parse a decimal string into a bigint with the given number of decimals.\n * @example parseUnits(\"1.5\", 6) → 1500000n\n * @example parseUnits(\"1\", 6) → 1000000n\n */\nexport function parseUnits(value: string | number, decimals: number): bigint {\n let str = typeof value === \"number\" ? value.toString() : value;\n\n const negative = str.startsWith(\"-\");\n if (negative) str = str.slice(1);\n\n const [integer = \"\", fraction = \"\"] = str.split(\".\");\n\n if (fraction.length > decimals) {\n throw new Error(\n `Too many decimal places: \"${value}\" has ${fraction.length} decimals, max is ${decimals}`\n );\n }\n\n const padded = fraction.padEnd(decimals, \"0\");\n const result = BigInt(integer + padded);\n return negative ? -result : result;\n}\n\n/**\n * Format microSTX to STX string (6 decimals).\n * @example formatStx(1000000n) → \"1.0\"\n */\nexport function formatStx(microStx: bigint | number | string): string {\n return formatUnits(microStx, 6);\n}\n\n/**\n * Parse STX string to microSTX bigint (6 decimals).\n * @example parseStx(\"1.5\") → 1500000n\n */\nexport function parseStx(stx: string | number): bigint {\n return parseUnits(stx, 6);\n}\n"
6
- ],
7
- "mappings": ";AAKO,SAAS,WAAW,CAAC,OAAiC,UAA0B;AAAA,EACrF,IAAI,IAAI,OAAO,KAAK;AAAA,EAEpB,MAAM,WAAW,IAAI;AAAA,EACrB,IAAI;AAAA,IAAU,IAAI,CAAC;AAAA,EAEnB,MAAM,UAAU,OAAO,OAAO,QAAQ;AAAA,EACtC,IAAI,WAAW,IAAI,SAAS,SAAS;AAAA,EACrC,IAAI,YAAY,IAAI,SAAS,SAAS,EAAE,SAAS,UAAU,GAAG;AAAA,EAG9D,WAAW,SAAS,QAAQ,OAAO,EAAE,KAAK;AAAA,EAE1C,MAAM,SAAS,GAAG,WAAW;AAAA,EAC7B,OAAO,WAAW,IAAI,WAAW;AAAA;AAQ5B,SAAS,UAAU,CAAC,OAAwB,UAA0B;AAAA,EAC3E,IAAI,MAAM,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI;AAAA,EAEzD,MAAM,WAAW,IAAI,WAAW,GAAG;AAAA,EACnC,IAAI;AAAA,IAAU,MAAM,IAAI,MAAM,CAAC;AAAA,EAE/B,OAAO,UAAU,IAAI,WAAW,MAAM,IAAI,MAAM,GAAG;AAAA,EAEnD,IAAI,SAAS,SAAS,UAAU;AAAA,IAC9B,MAAM,IAAI,MACR,6BAA6B,cAAc,SAAS,2BAA2B,UACjF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,SAAS,OAAO,UAAU,GAAG;AAAA,EAC5C,MAAM,SAAS,OAAO,UAAU,MAAM;AAAA,EACtC,OAAO,WAAW,CAAC,SAAS;AAAA;AAOvB,SAAS,SAAS,CAAC,UAA4C;AAAA,EACpE,OAAO,YAAY,UAAU,CAAC;AAAA;AAOzB,SAAS,QAAQ,CAAC,KAA8B;AAAA,EACrD,OAAO,WAAW,KAAK,CAAC;AAAA;",
8
- "debugId": "AA4D0A95E82916EE64756E2164756E21",
9
- "names": []
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/clarity/abi/standards.ts"],
4
- "sourcesContent": [
5
- "import type { AbiContract } from \"./contract.ts\";\n\nexport const SIP010_ABI = {\n functions: [\n {\n name: \"transfer\",\n access: \"public\",\n args: [\n { name: \"amount\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n { name: \"memo\", type: { optional: { buff: { length: 34 } } } },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"get-balance\",\n access: \"read-only\",\n args: [{ name: \"account\", type: \"principal\" }],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-total-supply\",\n access: \"read-only\",\n args: [],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-name\",\n access: \"read-only\",\n args: [],\n outputs: {\n response: {\n ok: { \"string-ascii\": { length: 32 } },\n error: \"uint128\",\n },\n },\n },\n {\n name: \"get-symbol\",\n access: \"read-only\",\n args: [],\n outputs: {\n response: {\n ok: { \"string-ascii\": { length: 10 } },\n error: \"uint128\",\n },\n },\n },\n {\n name: \"get-decimals\",\n access: \"read-only\",\n args: [],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-token-uri\",\n access: \"read-only\",\n args: [],\n outputs: {\n response: {\n ok: { optional: { \"string-utf8\": { length: 256 } } },\n error: \"uint128\",\n },\n },\n },\n ],\n fungible_tokens: [{ name: \"token\" }],\n} as const satisfies AbiContract;\n\nexport const SIP009_ABI = {\n functions: [\n {\n name: \"transfer\",\n access: \"public\",\n args: [\n { name: \"id\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"get-owner\",\n access: \"read-only\",\n args: [{ name: \"id\", type: \"uint128\" }],\n outputs: { response: { ok: { optional: \"principal\" }, error: \"uint128\" } },\n },\n {\n name: \"get-last-token-id\",\n access: \"read-only\",\n args: [],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-token-uri\",\n access: \"read-only\",\n args: [{ name: \"id\", type: \"uint128\" }],\n outputs: {\n response: {\n ok: { optional: { \"string-utf8\": { length: 256 } } },\n error: \"uint128\",\n },\n },\n },\n ],\n non_fungible_tokens: [{ name: \"nft\", type: \"uint128\" }],\n} as const satisfies AbiContract;\n\nexport const SIP013_ABI = {\n functions: [\n {\n name: \"transfer\",\n access: \"public\",\n args: [\n { name: \"token-id\", type: \"uint128\" },\n { name: \"amount\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"transfer-memo\",\n access: \"public\",\n args: [\n { name: \"token-id\", type: \"uint128\" },\n { name: \"amount\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n { name: \"memo\", type: { buff: { length: 34 } } },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"transfer-many\",\n access: \"public\",\n args: [\n {\n name: \"transfers\",\n type: {\n list: {\n type: {\n tuple: [\n { name: \"token-id\", type: \"uint128\" },\n { name: \"amount\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n ],\n },\n length: 200,\n },\n },\n },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"transfer-many-memo\",\n access: \"public\",\n args: [\n {\n name: \"transfers\",\n type: {\n list: {\n type: {\n tuple: [\n { name: \"token-id\", type: \"uint128\" },\n { name: \"amount\", type: \"uint128\" },\n { name: \"sender\", type: \"principal\" },\n { name: \"recipient\", type: \"principal\" },\n { name: \"memo\", type: { buff: { length: 34 } } },\n ],\n },\n length: 200,\n },\n },\n },\n ],\n outputs: { response: { ok: \"bool\", error: \"uint128\" } },\n },\n {\n name: \"get-balance\",\n access: \"read-only\",\n args: [\n { name: \"token-id\", type: \"uint128\" },\n { name: \"account\", type: \"principal\" },\n ],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-overall-balance\",\n access: \"read-only\",\n args: [{ name: \"account\", type: \"principal\" }],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-total-supply\",\n access: \"read-only\",\n args: [{ name: \"token-id\", type: \"uint128\" }],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-overall-supply\",\n access: \"read-only\",\n args: [],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-decimals\",\n access: \"read-only\",\n args: [{ name: \"token-id\", type: \"uint128\" }],\n outputs: { response: { ok: \"uint128\", error: \"uint128\" } },\n },\n {\n name: \"get-token-uri\",\n access: \"read-only\",\n args: [{ name: \"token-id\", type: \"uint128\" }],\n outputs: {\n response: {\n ok: { optional: { \"string-utf8\": { length: 256 } } },\n error: \"uint128\",\n },\n },\n },\n ],\n fungible_tokens: [],\n non_fungible_tokens: [],\n} as const satisfies AbiContract;\n\n// Camel-case aliases for better DX\nexport const sip010Abi: AbiContract = SIP010_ABI;\nexport const sip009Abi: AbiContract = SIP009_ABI;\nexport const sip013Abi: AbiContract = SIP013_ABI;\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "02D7F66F296B4CA864756E2164756E21",
9
- "names": []
10
- }
@@ -1,23 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/actions/public/getBalance.ts", "../src/actions/public/getAccountInfo.ts", "../src/actions/public/getBlock.ts", "../src/actions/public/getBlockHeight.ts", "../src/actions/public/getContractAbi.ts", "../src/actions/public/multicall.ts", "../src/errors/simulation.ts", "../src/actions/public/simulateCall.ts", "../src/actions/public/simulateTransaction.ts", "../src/actions/wallet/signTransaction.ts", "../src/actions/wallet/transferStx.ts", "../src/actions/wallet/deployContract.ts", "../src/actions/wallet/signMessage.ts", "../src/actions/wallet/sponsorTransaction.ts"],
4
- "sourcesContent": [
5
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBalanceParams = {\n address: string;\n};\n\nexport async function getBalance(\n client: Client,\n params: GetBalanceParams\n): Promise<bigint> {\n const data = await client.request(`/v2/accounts/${params.address}`, {\n method: \"GET\",\n });\n return BigInt(data.balance);\n}\n",
6
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetAccountInfoParams = {\n address: string;\n};\n\nexport type AccountInfo = {\n balance: bigint;\n nonce: bigint;\n balanceProof: string;\n nonceProof: string;\n};\n\nexport async function getAccountInfo(\n client: Client,\n params: GetAccountInfoParams\n): Promise<AccountInfo> {\n const data = await client.request(\n `/v2/accounts/${params.address}?proof=1`,\n { method: \"GET\" }\n );\n return {\n balance: BigInt(data.balance),\n nonce: BigInt(data.nonce),\n balanceProof: data.balance_proof ?? \"\",\n nonceProof: data.nonce_proof ?? \"\",\n };\n}\n",
7
- "import type { Client } from \"../../clients/types.ts\";\n\nexport type GetBlockParams = {\n height?: number;\n hash?: string;\n};\n\nexport async function getBlock(client: Client, params?: GetBlockParams): Promise<any> {\n if (params?.hash) {\n return client.request(`/extended/v2/blocks/${params.hash}`, { method: \"GET\" });\n }\n if (params?.height !== undefined) {\n return client.request(`/extended/v2/blocks/${params.height}`, { method: \"GET\" });\n }\n // Latest block\n return client.request(\"/extended/v2/blocks?limit=1\", { method: \"GET\" });\n}\n",
8
- "import type { Client } from \"../../clients/types.ts\";\n\nexport async function getBlockHeight(client: Client): Promise<number> {\n const data = await client.request(\"/v2/info\", { method: \"GET\" });\n return data.stacks_tip_height;\n}\n",
9
- "import type { Client } from \"../../clients/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\n\nexport type GetContractAbiParams = {\n contract: string; // \"address.name\"\n};\n\nexport async function getContractAbi(\n client: Client,\n params: GetContractAbiParams\n): Promise<any> {\n const [address, name] = parseContractId(params.contract);\n return client.request(`/v2/contracts/interface/${address}/${name}`, {\n method: \"GET\",\n });\n}\n",
10
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { readContract } from \"./readContract.ts\";\n\nexport type MulticallCall = {\n contract: string;\n functionName: string;\n args?: ClarityValue[];\n sender?: string;\n};\n\nexport type MulticallParams<TAllowFailure extends boolean = true> = {\n calls: readonly MulticallCall[];\n allowFailure?: TAllowFailure;\n};\n\nexport type MulticallSuccessResult = { status: \"success\"; result: ClarityValue };\nexport type MulticallFailureResult = { status: \"failure\"; error: Error };\n\nexport type MulticallResult<T extends boolean> = T extends true\n ? (MulticallSuccessResult | MulticallFailureResult)[]\n : ClarityValue[];\n\nexport async function multicall<TAllowFailure extends boolean = true>(\n client: Client,\n params: MulticallParams<TAllowFailure>\n): Promise<MulticallResult<TAllowFailure>> {\n const { calls, allowFailure = true } = params;\n\n if (allowFailure) {\n const settled = await Promise.allSettled(\n calls.map((call) => readContract(client, call))\n );\n return settled.map((r) =>\n r.status === \"fulfilled\"\n ? { status: \"success\" as const, result: r.value }\n : { status: \"failure\" as const, error: r.reason instanceof Error ? r.reason : new Error(String(r.reason)) }\n ) as MulticallResult<TAllowFailure>;\n }\n\n const results = await Promise.all(\n calls.map((call) => readContract(client, call))\n );\n return results as MulticallResult<TAllowFailure>;\n}\n",
11
- "import { BaseError } from \"./base.ts\";\n\nexport class SimulationError extends BaseError {\n override name = \"SimulationError\";\n writesDetected: boolean;\n\n constructor(\n message: string,\n options: { writesDetected: boolean; details?: string }\n ) {\n super(message, { details: options.details });\n this.writesDetected = options.writesDetected;\n }\n}\n",
12
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport { deserializeCVBytes } from \"../../clarity/deserialize.ts\";\nimport { bytesToHex, with0x } from \"../../utils/encoding.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport { SimulationError } from \"../../errors/simulation.ts\";\n\nexport type SimulateCallParams = {\n contract: string;\n functionName: string;\n args?: ClarityValue[];\n sender?: string;\n tip?: string;\n};\n\nexport type SimulateCallSuccess = { success: true; result: ClarityValue };\nexport type SimulateCallFailure = { success: false; error: SimulationError };\nexport type SimulateCallResult = SimulateCallSuccess | SimulateCallFailure;\n\nexport async function simulateCall(\n client: Client,\n params: SimulateCallParams\n): Promise<SimulateCallResult> {\n const [address, name] = parseContractId(params.contract);\n const sender = params.sender ?? address;\n\n const serializedArgs = (params.args ?? []).map((arg) =>\n with0x(bytesToHex(serializeCVBytes(arg)))\n );\n\n let path = `/v2/contracts/call-read/${address}/${name}/${params.functionName}`;\n if (params.tip) {\n path += `?tip=${params.tip}`;\n }\n\n const data = await client.request(path, {\n method: \"POST\",\n body: {\n sender,\n arguments: serializedArgs,\n },\n });\n\n if (data.okay) {\n return { success: true, result: deserializeCVBytes(data.result) };\n }\n\n const cause: string = data.cause ?? \"Simulation failed\";\n const writesDetected =\n cause.includes(\"NotReadOnly\") || cause.includes(\"CostBalanceExceeded\");\n\n return {\n success: false,\n error: new SimulationError(\n writesDetected\n ? \"Function mutates state and cannot be simulated\"\n : \"Simulation failed\",\n { writesDetected, details: cause }\n ),\n };\n}\n",
13
- "import type { Client } from \"../../clients/types.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { PayloadType, AddressHashMode } from \"../../transactions/types.ts\";\nimport { c32address } from \"../../utils/address.ts\";\nimport { simulateCall, type SimulateCallResult } from \"./simulateCall.ts\";\nimport { estimateFee, type FeeEstimation } from \"./estimateFee.ts\";\n\nexport type SimulateTransactionParams = {\n transaction: StacksTransaction;\n sender?: string;\n tip?: string;\n};\n\nexport type SimulateContractCallResult = {\n type: \"contract-call\";\n execution: SimulateCallResult;\n fees: FeeEstimation[];\n};\n\nexport type SimulateTransferResult = {\n type: \"token-transfer\";\n fees: FeeEstimation[];\n};\n\nexport type SimulateDeployResult = {\n type: \"contract-deploy\";\n fees: FeeEstimation[];\n};\n\nexport type SimulateTransactionResult =\n | SimulateContractCallResult\n | SimulateTransferResult\n | SimulateDeployResult;\n\nfunction isMultiSig(hashMode: number): boolean {\n return (\n hashMode === AddressHashMode.P2SH ||\n hashMode === AddressHashMode.P2WSH ||\n hashMode === AddressHashMode.P2SH_NonSequential ||\n hashMode === AddressHashMode.P2WSH_P2SH_NonSequential\n );\n}\n\nfunction extractSender(tx: StacksTransaction, client: Client): string {\n const { hashMode, signer } = tx.auth.spendingCondition;\n const chain = client.chain;\n const version = isMultiSig(hashMode)\n ? chain?.addressVersion.multiSig ?? 20\n : chain?.addressVersion.singleSig ?? 22;\n return c32address(version, signer);\n}\n\nexport async function simulateTransaction(\n client: Client,\n params: SimulateTransactionParams,\n): Promise<SimulateTransactionResult> {\n const { transaction, tip } = params;\n const { payload } = transaction;\n\n if (payload.payloadType === PayloadType.ContractCall) {\n const sender = params.sender ?? extractSender(transaction, client);\n const contract = `${payload.contractAddress}.${payload.contractName}`;\n\n const [execution, fees] = await Promise.all([\n simulateCall(client, {\n contract,\n functionName: payload.functionName,\n args: payload.functionArgs,\n sender,\n tip,\n }),\n estimateFee(client, { transaction }),\n ]);\n\n return { type: \"contract-call\", execution, fees };\n }\n\n const fees = await estimateFee(client, { transaction });\n\n if (\n payload.payloadType === PayloadType.SmartContract ||\n payload.payloadType === PayloadType.VersionedSmartContract\n ) {\n return { type: \"contract-deploy\", fees };\n }\n\n return { type: \"token-transfer\", fees };\n}\n",
14
- "import type { Client } from \"../../clients/types.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { signMultiSigWithAccount } from \"../../transactions/multisig.ts\";\nimport { serializeTransactionHex } from \"../../transactions/wire/serialize.ts\";\nimport { deserializeTransaction } from \"../../transactions/wire/deserialize.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignTransactionParams = {\n transaction: StacksTransaction;\n /** Public keys for multi-sig signing (auto-detected from _multisig metadata if omitted) */\n signers?: string[];\n};\n\n/** Sign a transaction using the client's account */\nexport async function signTransactionAction(\n client: Client,\n params: SignTransactionParams\n): Promise<StacksTransaction> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: send hex to wallet, get signed hex back\n if (isProviderAccount(account)) {\n const hex = serializeTransactionHex(params.transaction);\n const result = await account.provider.request(\"stx_signTransaction\", {\n transaction: hex,\n });\n return deserializeTransaction(result.transaction);\n }\n\n // Multi-sig: auto-detect from fields or _multisig metadata\n const condition = params.transaction.auth.spendingCondition;\n if (\"fields\" in condition) {\n const publicKeys = params.signers ?? (params.transaction as any)._multisig?.publicKeys;\n if (!publicKeys) throw new Error(\"Multi-sig signing requires signers (publicKeys)\");\n return signMultiSigWithAccount(params.transaction, account, publicKeys);\n }\n\n // Local/Custom: sign with account\n return signTransactionWithAccount(params.transaction, account);\n}\n",
15
- "import type { Client } from \"../../clients/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { buildTokenTransfer } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type TransferStxParams = {\n to: string;\n amount: IntegerType;\n memo?: string;\n fee?: IntegerType;\n nonce?: IntegerType;\n postConditionMode?: \"allow\" | \"deny\";\n postConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast an STX transfer */\nexport async function transferStx(\n client: Client,\n params: TransferStxParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const result = await account.provider.request(\"stx_transferStx\", {\n recipient: params.to,\n amount: String(params.amount),\n memo: params.memo,\n });\n return result.txid;\n }\n\n // Local/Custom: build → sign → broadcast\n const nonce =\n params.nonce ?? await getNonce(client, { address: account.address });\n\n const unsigned = buildTokenTransfer({\n recipient: params.to,\n amount: params.amount,\n memo: params.memo,\n fee: params.fee ?? 0n,\n nonce,\n publicKey: account.publicKey,\n chain: client.chain,\n postConditionMode: params.postConditionMode,\n postConditions: params.postConditions,\n });\n\n if (params.fee === undefined) {\n const estimates = await estimateFee(client, { transaction: unsigned });\n const mid = estimates[1] ?? estimates[0];\n if (mid) {\n (unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n }\n }\n\n const signed = await signTransactionWithAccount(unsigned, account);\n const result = await sendTransaction(client, { transaction: signed });\n return result.txid;\n}\n",
16
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityVersion } from \"../../transactions/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { buildContractDeploy } from \"../../transactions/build.ts\";\nimport { signTransactionWithAccount } from \"../../transactions/signer.ts\";\nimport { sendTransaction } from \"./sendTransaction.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type DeployContractParams = {\n contractName: string;\n codeBody: string;\n clarityVersion?: ClarityVersion;\n fee?: IntegerType;\n nonce?: IntegerType;\n postConditionMode?: \"allow\" | \"deny\";\n postConditions?: PostCondition[];\n};\n\n/** Build, sign, and broadcast a contract deploy */\nexport async function deployContract(\n client: Client,\n params: DeployContractParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const result = await account.provider.request(\"stx_deployContract\", {\n contractName: params.contractName,\n codeBody: params.codeBody,\n clarityVersion: params.clarityVersion,\n });\n return result.txid;\n }\n\n // Local/Custom: build → sign → broadcast\n const nonce =\n params.nonce ?? await getNonce(client, { address: account.address });\n\n const unsigned = buildContractDeploy({\n contractName: params.contractName,\n codeBody: params.codeBody,\n clarityVersion: params.clarityVersion,\n fee: params.fee ?? 0n,\n nonce,\n publicKey: account.publicKey,\n chain: client.chain,\n postConditionMode: params.postConditionMode,\n postConditions: params.postConditions,\n });\n\n if (params.fee === undefined) {\n const estimates = await estimateFee(client, { transaction: unsigned });\n const mid = estimates[1] ?? estimates[0];\n if (mid) {\n (unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n }\n }\n\n const signed = await signTransactionWithAccount(unsigned, account);\n const result = await sendTransaction(client, { transaction: signed });\n return result.txid;\n}\n",
17
- "import type { Client } from \"../../clients/types.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport { Cl } from \"../../clarity/values.ts\";\nimport { serializeCVBytes } from \"../../clarity/serialize.ts\";\nimport { concatBytes, bytesToHex } from \"../../utils/encoding.ts\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SignMessageParams = {\n message: string | ClarityValue;\n domain?: {\n name: string;\n version: string;\n chainId: number;\n };\n};\n\nconst SIP018_PREFIX = new Uint8Array([0x53, 0x49, 0x50, 0x30, 0x31, 0x38]); // \"SIP018\"\n\n/** Sign a structured message per SIP-018 */\nexport async function signMessage(\n client: Client,\n params: SignMessageParams\n): Promise<string> {\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n\n // Provider: delegate to wallet\n if (isProviderAccount(account)) {\n const method = params.domain\n ? \"stx_signStructuredMessage\"\n : \"stx_signMessage\";\n const result = await account.provider.request(method, {\n message: params.message,\n domain: params.domain,\n });\n return result.signature;\n }\n\n // Local/Custom: sign locally\n const cv =\n typeof params.message === \"string\"\n ? Cl.stringAscii(params.message)\n : params.message;\n\n const serializedMsg = serializeCVBytes(cv);\n\n let hash: Uint8Array;\n\n if (params.domain) {\n const domainCV = Cl.tuple({\n name: Cl.stringAscii(params.domain.name),\n version: Cl.stringAscii(params.domain.version),\n \"chain-id\": Cl.uint(params.domain.chainId),\n });\n const serializedDomain = serializeCVBytes(domainCV);\n hash = sha256(concatBytes(SIP018_PREFIX, serializedDomain, serializedMsg));\n } else {\n hash = sha256(serializedMsg);\n }\n\n const sigBytes = await account.sign(hash);\n return bytesToHex(sigBytes);\n}\n",
18
- "import type { Client } from \"../../clients/types.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport { intToBigInt } from \"../../utils/encoding.ts\";\nimport {\n AuthType,\n type StacksTransaction,\n type SponsoredAuthorization,\n} from \"../../transactions/types.ts\";\nimport { createSingleSigSpendingCondition } from \"../../transactions/authorization.ts\";\nimport { signSponsorWithAccount } from \"../../transactions/signer.ts\";\nimport { getNonce } from \"../public/getNonce.ts\";\nimport { estimateFee } from \"../public/estimateFee.ts\";\nimport { isProviderAccount } from \"./utils.ts\";\n\nexport type SponsorTransactionParams = {\n transaction: StacksTransaction;\n fee?: IntegerType;\n nonce?: IntegerType;\n};\n\n/** Sponsor a transaction: set sponsor spending condition, sign as sponsor */\nexport async function sponsorTransaction(\n client: Client,\n params: SponsorTransactionParams\n): Promise<StacksTransaction> {\n const { transaction } = params;\n\n if (transaction.auth.authType !== AuthType.Sponsored) {\n throw new Error(\"Transaction must have sponsored authorization\");\n }\n\n const account = client.account;\n if (!account) throw new Error(\"Account required\");\n if (isProviderAccount(account)) {\n throw new Error(\"Provider accounts cannot sponsor transactions\");\n }\n\n // Resolve sponsor nonce\n const nonce = params.nonce != null\n ? intToBigInt(params.nonce)\n : await getNonce(client, { address: account.address });\n\n // Resolve sponsor fee\n let fee: bigint;\n if (params.fee != null) {\n fee = intToBigInt(params.fee);\n } else {\n const estimates = await estimateFee(client, { transaction });\n const mid = estimates[1] ?? estimates[0];\n fee = mid ? BigInt(mid.fee) : 0n;\n }\n\n // Create sponsor spending condition\n const sponsorCondition = createSingleSigSpendingCondition(\n account.publicKey,\n nonce,\n fee\n );\n\n // Set sponsor spending condition on the tx\n const auth = transaction.auth as SponsoredAuthorization;\n const sponsored: StacksTransaction = {\n ...transaction,\n auth: {\n ...auth,\n sponsorSpendingCondition: sponsorCondition,\n },\n };\n\n // Sign as sponsor\n return signSponsorWithAccount(sponsored, account);\n}\n"
19
- ],
20
- "mappings": "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",
21
- "debugId": "EB1C10EEB8BA72D364756E2164756E21",
22
- "names": []
23
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/clarity/types.ts", "../src/clarity/serialize.ts", "../src/clarity/deserialize.ts", "../src/clarity/values.ts"],
4
- "sourcesContent": [
5
- "export type ClarityType =\n | \"int\"\n | \"uint\"\n | \"buffer\"\n | \"true\"\n | \"false\"\n | \"address\"\n | \"contract\"\n | \"ok\"\n | \"err\"\n | \"none\"\n | \"some\"\n | \"list\"\n | \"tuple\"\n | \"ascii\"\n | \"utf8\";\n\n/** Wire type IDs matching the Stacks binary format (SIP-005) */\nexport const ClarityWireType = {\n int: 0x00,\n uint: 0x01,\n buffer: 0x02,\n true: 0x03,\n false: 0x04,\n address: 0x05,\n contract: 0x06,\n ok: 0x07,\n err: 0x08,\n none: 0x09,\n some: 0x0a,\n list: 0x0b,\n tuple: 0x0c,\n ascii: 0x0d,\n utf8: 0x0e,\n} as const satisfies Record<ClarityType, number>;\n\n/** Reverse lookup: wire byte → ClarityType string */\nconst wireTypeToClarity = Object.fromEntries(\n Object.entries(ClarityWireType).map(([k, v]) => [v, k])\n) as Record<number, ClarityType>;\n\nexport function clarityTypeFromByte(byte: number): ClarityType {\n const type = wireTypeToClarity[byte];\n if (!type) throw new Error(`Unknown clarity wire type: ${byte}`);\n return type;\n}\n\n// CV types\n\nexport type IntCV = { readonly type: \"int\"; readonly value: bigint };\nexport type UIntCV = { readonly type: \"uint\"; readonly value: bigint };\nexport type BooleanCV = TrueCV | FalseCV;\nexport type TrueCV = { readonly type: \"true\" };\nexport type FalseCV = { readonly type: \"false\" };\nexport type BufferCV = { readonly type: \"buffer\"; readonly value: string }; // hex\nexport type NoneCV = { readonly type: \"none\" };\nexport type SomeCV = {\n readonly type: \"some\";\n readonly value: ClarityValue;\n};\nexport type OptionalCV = NoneCV | SomeCV;\nexport type ResponseOkCV = {\n readonly type: \"ok\";\n readonly value: ClarityValue;\n};\nexport type ResponseErrorCV = {\n readonly type: \"err\";\n readonly value: ClarityValue;\n};\nexport type ResponseCV = ResponseOkCV | ResponseErrorCV;\nexport type StandardPrincipalCV = {\n readonly type: \"address\";\n readonly value: string;\n};\nexport type ContractPrincipalCV = {\n readonly type: \"contract\";\n readonly value: string; // \"address.name\"\n};\nexport type PrincipalCV = StandardPrincipalCV | ContractPrincipalCV;\nexport type ListCV = {\n type: \"list\";\n value: ClarityValue[];\n};\nexport type TupleData = {\n [key: string]: ClarityValue;\n};\nexport type TupleCV = {\n type: \"tuple\";\n value: TupleData;\n};\nexport type StringAsciiCV = {\n readonly type: \"ascii\";\n readonly value: string;\n};\nexport type StringUtf8CV = {\n readonly type: \"utf8\";\n readonly value: string;\n};\n\nexport type ClarityValue =\n | IntCV\n | UIntCV\n | BooleanCV\n | BufferCV\n | NoneCV\n | SomeCV\n | ResponseOkCV\n | ResponseErrorCV\n | StandardPrincipalCV\n | ContractPrincipalCV\n | ListCV\n | TupleCV\n | StringAsciiCV\n | StringUtf8CV;\n",
6
- "import {\n bytesToHex,\n hexToBytes,\n concatBytes,\n bigIntToBytes,\n toTwos,\n asciiToBytes,\n utf8ToBytes,\n writeUInt32BE,\n intToHex,\n} from \"../utils/encoding.ts\";\nimport { c32addressDecode } from \"../utils/c32.ts\";\nimport { ClarityWireType, type ClarityValue, type ClarityType } from \"./types.ts\";\n\nconst CLARITY_INT_SIZE = 128n;\nconst CLARITY_INT_BYTE_SIZE = 16;\n\nfunction typeIdByte(type: ClarityType): number {\n return ClarityWireType[type];\n}\n\nfunction withTypeId(type: ClarityType, bytes: Uint8Array): Uint8Array {\n return concatBytes(new Uint8Array([typeIdByte(type)]), bytes);\n}\n\nfunction serializeAddress(c32Address: string): Uint8Array {\n const [version, hash160] = c32addressDecode(c32Address);\n return concatBytes(new Uint8Array([version]), hexToBytes(hash160));\n}\n\nfunction serializeLPString(str: string, prefixBytes = 1): Uint8Array {\n const content = utf8ToBytes(str);\n const lengthPrefix = hexToBytes(intToHex(content.byteLength, prefixBytes));\n return concatBytes(lengthPrefix, content);\n}\n\nexport function serializeCVBytes(value: ClarityValue): Uint8Array {\n switch (value.type) {\n case \"true\":\n case \"false\":\n return new Uint8Array([typeIdByte(value.type)]);\n\n case \"int\": {\n const bytes = bigIntToBytes(\n toTwos(BigInt(value.value), CLARITY_INT_SIZE),\n CLARITY_INT_BYTE_SIZE\n );\n return withTypeId(value.type, bytes);\n }\n\n case \"uint\": {\n const bytes = bigIntToBytes(BigInt(value.value), CLARITY_INT_BYTE_SIZE);\n return withTypeId(value.type, bytes);\n }\n\n case \"buffer\": {\n const bufBytes = hexToBytes(value.value);\n return withTypeId(\n value.type,\n concatBytes(writeUInt32BE(bufBytes.length), bufBytes)\n );\n }\n\n case \"none\":\n return new Uint8Array([typeIdByte(value.type)]);\n\n case \"some\":\n return withTypeId(value.type, serializeCVBytes(value.value));\n\n case \"ok\":\n case \"err\":\n return withTypeId(value.type, serializeCVBytes(value.value));\n\n case \"address\":\n return withTypeId(value.type, serializeAddress(value.value));\n\n case \"contract\": {\n const [addr, name] = value.value.split(\".\");\n if (!addr || !name) throw new Error(`Invalid contract principal: ${value.value}`);\n return withTypeId(\n value.type,\n concatBytes(serializeAddress(addr), serializeLPString(name))\n );\n }\n\n case \"list\": {\n const parts: Uint8Array[] = [writeUInt32BE(value.value.length)];\n for (const item of value.value) {\n parts.push(serializeCVBytes(item));\n }\n return withTypeId(value.type, concatBytes(...parts));\n }\n\n case \"tuple\": {\n const keys = Object.keys(value.value).sort((a, b) => a.localeCompare(b));\n const parts: Uint8Array[] = [writeUInt32BE(keys.length)];\n for (const key of keys) {\n parts.push(serializeLPString(key));\n parts.push(serializeCVBytes(value.value[key]!));\n }\n return withTypeId(value.type, concatBytes(...parts));\n }\n\n case \"ascii\": {\n const strBytes = asciiToBytes(value.value);\n return withTypeId(\n value.type,\n concatBytes(writeUInt32BE(strBytes.length), strBytes)\n );\n }\n\n case \"utf8\": {\n const strBytes = utf8ToBytes(value.value);\n return withTypeId(\n value.type,\n concatBytes(writeUInt32BE(strBytes.length), strBytes)\n );\n }\n\n default:\n throw new Error(`Cannot serialize unknown clarity type`);\n }\n}\n\nexport function serializeCV(value: ClarityValue): string {\n return bytesToHex(serializeCVBytes(value));\n}\n",
7
- "import {\n hexToBytes,\n bytesToHex,\n bytesToAscii,\n bytesToUtf8,\n bytesToTwosBigInt,\n without0x,\n} from \"../utils/encoding.ts\";\nimport { c32address } from \"../utils/c32.ts\";\nimport {\n clarityTypeFromByte,\n type ClarityValue,\n} from \"./types.ts\";\nimport {\n intCV,\n uintCV,\n trueCV,\n falseCV,\n bufferCV,\n noneCV,\n someCV,\n responseOkCV,\n responseErrorCV,\n standardPrincipalCV,\n contractPrincipalCV,\n listCV,\n tupleCV,\n stringAsciiCV,\n stringUtf8CV,\n} from \"./values.ts\";\n\nclass BytesReader {\n private data: Uint8Array;\n private offset = 0;\n\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n readUInt8(): number {\n const value = this.data[this.offset]!;\n this.offset += 1;\n return value;\n }\n\n readUInt32BE(): number {\n const value =\n ((this.data[this.offset]! << 24) |\n (this.data[this.offset + 1]! << 16) |\n (this.data[this.offset + 2]! << 8) |\n this.data[this.offset + 3]!) >>>\n 0;\n this.offset += 4;\n return value;\n }\n\n readBytes(length: number): Uint8Array {\n const slice = this.data.slice(this.offset, this.offset + length);\n this.offset += length;\n return slice;\n }\n}\n\nfunction readAddress(reader: BytesReader): string {\n const version = reader.readUInt8();\n const hash160 = bytesToHex(reader.readBytes(20));\n return c32address(version, hash160);\n}\n\nfunction readLPString(reader: BytesReader, prefixBytes = 1): string {\n let length = 0;\n for (let i = 0; i < prefixBytes; i++) {\n length = (length << 8) | reader.readUInt8();\n }\n return bytesToUtf8(reader.readBytes(length));\n}\n\nfunction readCV(reader: BytesReader): ClarityValue {\n const typeByte = reader.readUInt8();\n const type = clarityTypeFromByte(typeByte);\n\n switch (type) {\n case \"int\":\n return intCV(bytesToTwosBigInt(reader.readBytes(16)));\n\n case \"uint\":\n return uintCV(reader.readBytes(16));\n\n case \"true\":\n return trueCV();\n\n case \"false\":\n return falseCV();\n\n case \"buffer\": {\n const len = reader.readUInt32BE();\n return bufferCV(reader.readBytes(len));\n }\n\n case \"none\":\n return noneCV();\n\n case \"some\":\n return someCV(readCV(reader));\n\n case \"ok\":\n return responseOkCV(readCV(reader));\n\n case \"err\":\n return responseErrorCV(readCV(reader));\n\n case \"address\":\n return standardPrincipalCV(readAddress(reader));\n\n case \"contract\": {\n const addr = readAddress(reader);\n const name = readLPString(reader);\n return contractPrincipalCV(addr, name);\n }\n\n case \"list\": {\n const len = reader.readUInt32BE();\n const items: ClarityValue[] = [];\n for (let i = 0; i < len; i++) {\n items.push(readCV(reader));\n }\n return listCV(items);\n }\n\n case \"tuple\": {\n const len = reader.readUInt32BE();\n const data: Record<string, ClarityValue> = {};\n for (let i = 0; i < len; i++) {\n const key = readLPString(reader);\n data[key] = readCV(reader);\n }\n return tupleCV(data);\n }\n\n case \"ascii\": {\n const len = reader.readUInt32BE();\n return stringAsciiCV(bytesToAscii(reader.readBytes(len)));\n }\n\n case \"utf8\": {\n const len = reader.readUInt32BE();\n return stringUtf8CV(bytesToUtf8(reader.readBytes(len)));\n }\n\n default:\n throw new Error(`Cannot deserialize unknown clarity type: ${type}`);\n }\n}\n\nexport function deserializeCVBytes<T extends ClarityValue = ClarityValue>(\n input: Uint8Array | string\n): T {\n const bytes =\n typeof input === \"string\" ? hexToBytes(without0x(input)) : input;\n return readCV(new BytesReader(bytes)) as T;\n}\n\nexport function deserializeCV<T extends ClarityValue = ClarityValue>(\n input: Uint8Array | string\n): T {\n return deserializeCVBytes(input);\n}\n",
8
- "import { c32address, c32addressDecode } from \"../utils/c32.ts\";\nimport {\n bytesToHex,\n hexToBytes,\n asciiToBytes,\n utf8ToBytes,\n intToBigInt,\n bytesToTwosBigInt,\n type IntegerType,\n} from \"../utils/encoding.ts\";\nimport { isClarityName } from \"../utils/address.ts\";\nimport type {\n IntCV,\n UIntCV,\n BooleanCV,\n TrueCV,\n FalseCV,\n BufferCV,\n NoneCV,\n SomeCV,\n ResponseOkCV,\n ResponseErrorCV,\n StandardPrincipalCV,\n ContractPrincipalCV,\n ListCV,\n TupleCV,\n TupleData,\n StringAsciiCV,\n StringUtf8CV,\n ClarityValue,\n} from \"./types.ts\";\nimport { serializeCVBytes } from \"./serialize.ts\";\nimport { deserializeCVBytes } from \"./deserialize.ts\";\n\nconst MAX_U128 = BigInt(\"0xffffffffffffffffffffffffffffffff\");\nconst MIN_I128 = BigInt(\"-170141183460469231731687303715884105728\");\nconst MAX_I128 = BigInt(\"0x7fffffffffffffffffffffffffffffff\");\n\n// Primitives\n\nexport function intCV(value: IntegerType): IntCV {\n if (typeof value === \"string\" && value.toLowerCase().startsWith(\"0x\")) {\n value = bytesToTwosBigInt(hexToBytes(value));\n }\n if (value instanceof Uint8Array) value = bytesToTwosBigInt(value);\n const n = intToBigInt(value);\n if (n > MAX_I128) throw new RangeError(`Int exceeds max i128: ${MAX_I128}`);\n if (n < MIN_I128) throw new RangeError(`Int below min i128: ${MIN_I128}`);\n return { type: \"int\", value: n };\n}\n\nexport function uintCV(value: IntegerType): UIntCV {\n const n = intToBigInt(value);\n if (n < 0n) throw new RangeError(\"Cannot construct unsigned int from negative value\");\n if (n > MAX_U128) throw new RangeError(`UInt exceeds max u128: ${MAX_U128}`);\n return { type: \"uint\", value: n };\n}\n\nexport const trueCV = (): TrueCV => ({ type: \"true\" });\nexport const falseCV = (): FalseCV => ({ type: \"false\" });\nexport const boolCV = (v: boolean): BooleanCV => (v ? trueCV() : falseCV());\n\nexport function bufferCV(buffer: Uint8Array): BufferCV {\n if (buffer.byteLength > 1_048_576) {\n throw new Error(\"Buffer exceeds max size of 1MB\");\n }\n return { type: \"buffer\", value: bytesToHex(buffer) };\n}\n\nexport function standardPrincipalCV(address: string): StandardPrincipalCV {\n // Validate by decoding\n const [version, hash160] = c32addressDecode(address);\n const normalized = c32address(version, hash160);\n return { type: \"address\", value: normalized };\n}\n\nexport function contractPrincipalCV(\n address: string,\n contractName: string\n): ContractPrincipalCV {\n const [version, hash160] = c32addressDecode(address);\n const normalized = c32address(version, hash160);\n if (utf8ToBytes(contractName).byteLength >= 128) {\n throw new Error(\"Contract name must be less than 128 bytes\");\n }\n return { type: \"contract\", value: `${normalized}.${contractName}` };\n}\n\nexport function noneCV(): NoneCV {\n return { type: \"none\" };\n}\n\nexport function someCV(value: ClarityValue): SomeCV {\n return { type: \"some\", value };\n}\n\nexport function responseOkCV(value: ClarityValue): ResponseOkCV {\n return { type: \"ok\", value };\n}\n\nexport function responseErrorCV(value: ClarityValue): ResponseErrorCV {\n return { type: \"err\", value };\n}\n\nexport function listCV(values: ClarityValue[]): ListCV {\n return { type: \"list\", value: values };\n}\n\nexport function tupleCV(data: TupleData): TupleCV {\n for (const key in data) {\n if (!isClarityName(key)) {\n throw new Error(`\"${key}\" is not a valid Clarity name`);\n }\n }\n return { type: \"tuple\", value: data };\n}\n\nexport function stringAsciiCV(value: string): StringAsciiCV {\n return { type: \"ascii\", value };\n}\n\nexport function stringUtf8CV(value: string): StringUtf8CV {\n return { type: \"utf8\", value };\n}\n\n// Cl namespace — clean API\n\nexport const Cl: {\n readonly int: (value: IntegerType) => IntCV;\n readonly uint: (value: IntegerType) => UIntCV;\n readonly bool: (v: boolean) => BooleanCV;\n principal(address: string): StandardPrincipalCV | ContractPrincipalCV;\n address(address: string): StandardPrincipalCV | ContractPrincipalCV;\n readonly contractPrincipal: (address: string, contractName: string) => ContractPrincipalCV;\n readonly standardPrincipal: (address: string) => StandardPrincipalCV;\n readonly buffer: (buffer: Uint8Array) => BufferCV;\n readonly bufferFromHex: (hex: string) => BufferCV;\n readonly bufferFromAscii: (ascii: string) => BufferCV;\n readonly bufferFromUtf8: (utf8: string) => BufferCV;\n readonly none: () => NoneCV;\n readonly some: (value: ClarityValue) => SomeCV;\n readonly ok: (value: ClarityValue) => ResponseOkCV;\n readonly error: (value: ClarityValue) => ResponseErrorCV;\n readonly list: (values: ClarityValue[]) => ListCV;\n readonly tuple: (data: TupleData) => TupleCV;\n readonly stringAscii: (value: string) => StringAsciiCV;\n readonly stringUtf8: (value: string) => StringUtf8CV;\n serialize(value: ClarityValue): string;\n readonly deserialize: (bytes: Uint8Array) => ClarityValue;\n} = {\n int: intCV,\n uint: uintCV,\n bool: boolCV,\n principal(address: string): StandardPrincipalCV | ContractPrincipalCV {\n const [addr, name] = address.split(\".\");\n if (!addr) throw new Error(\"Invalid principal address\");\n return name ? contractPrincipalCV(addr, name) : standardPrincipalCV(addr);\n },\n address(address: string): StandardPrincipalCV | ContractPrincipalCV {\n return Cl.principal(address);\n },\n contractPrincipal: contractPrincipalCV,\n standardPrincipal: standardPrincipalCV,\n buffer: bufferCV,\n bufferFromHex: (hex: string): BufferCV => bufferCV(hexToBytes(hex)),\n bufferFromAscii: (ascii: string): BufferCV => bufferCV(asciiToBytes(ascii)),\n bufferFromUtf8: (utf8: string): BufferCV => bufferCV(utf8ToBytes(utf8)),\n none: noneCV,\n some: someCV,\n ok: responseOkCV,\n error: responseErrorCV,\n list: listCV,\n tuple: tupleCV,\n stringAscii: stringAsciiCV,\n stringUtf8: stringUtf8CV,\n serialize(value: ClarityValue): string {\n return bytesToHex(serializeCVBytes(value));\n },\n deserialize: deserializeCVBytes,\n} as const;\n"
9
- ],
10
- "mappings": "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",
11
- "debugId": "204FAEA7057C254064756E2164756E21",
12
- "names": []
13
- }
@@ -1,13 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/clarity/abi/types.ts", "../src/clarity/abi/guards.ts", "../src/clarity/abi/utils.ts", "../src/clarity/bridge.ts"],
4
- "sourcesContent": [
5
- "import { MAX_U128, MAX_I128, MIN_I128 } from \"../../utils/constants.ts\";\n\nexport { MAX_U128, MAX_I128, MIN_I128 };\n\nexport const CONTRACT_NAME_REGEX: RegExp = /^[a-zA-Z][a-zA-Z0-9\\-]{0,127}$/;\n\n// Primitive types\n\nexport type AbiUInt128 = \"uint128\";\nexport type AbiInt128 = \"int128\";\nexport type AbiBool = \"bool\";\nexport type AbiPrincipal = \"principal\";\nexport type AbiTraitReference = \"trait_reference\";\nexport type AbiNone = \"none\";\n\nexport type AbiStringAscii<L extends number = number> = {\n \"string-ascii\": { length: L };\n};\n\nexport type AbiStringUtf8<L extends number = number> = {\n \"string-utf8\": { length: L };\n};\n\nexport type AbiBuffer<L extends number = number> = {\n buff: { length: L };\n};\n\nexport type AbiPrimitiveType =\n | AbiUInt128\n | AbiInt128\n | AbiBool\n | AbiPrincipal\n | AbiTraitReference\n | AbiNone\n | AbiStringAscii\n | AbiStringUtf8\n | AbiBuffer;\n\n// Composite types (interfaces for recursion)\n\nexport interface AbiListType {\n list: { type: AbiType; length: number };\n}\n\nexport interface AbiTupleType {\n tuple: ReadonlyArray<{ name: string; type: AbiType }>;\n}\n\nexport interface AbiOptionalType {\n optional: AbiType;\n}\n\nexport interface AbiResponseType {\n response: { ok: AbiType; error: AbiType };\n}\n\n/** Discriminated union of all Clarity value types (primitives, buffers, lists, tuples, optionals, responses). */\nexport type AbiType =\n | AbiPrimitiveType\n | AbiListType\n | AbiTupleType\n | AbiOptionalType\n | AbiResponseType;\n\n// Generic versions for better type inference\n\nexport type AbiList<\n T extends AbiType = AbiType,\n L extends number = number,\n> = {\n list: { type: T; length: L };\n};\n\nexport type AbiTuple<\n T extends ReadonlyArray<{ name: string; type: AbiType }>,\n> = {\n tuple: T;\n};\n\nexport type AbiOptional<T extends AbiType = AbiType> = {\n optional: T;\n};\n\nexport type AbiResponse<\n O extends AbiType = AbiType,\n E extends AbiType = AbiType,\n> = {\n response: { ok: O; error: E };\n};\n",
6
- "import { validateStacksAddress } from \"../../utils/address.ts\";\nimport { MAX_U128, MIN_I128, MAX_I128, CONTRACT_NAME_REGEX } from \"./types.ts\";\nimport type { ResponseOk, ResponseErr } from \"./mappings.ts\";\nimport type {\n AbiType,\n AbiListType,\n AbiTupleType,\n AbiOptionalType,\n AbiResponseType,\n AbiBuffer,\n AbiStringAscii,\n AbiStringUtf8,\n AbiTraitReference,\n} from \"./types.ts\";\n\n// Value guards\n\nexport function isUint128(value: unknown): value is bigint {\n return typeof value === \"bigint\" && value >= 0n && value <= MAX_U128;\n}\n\nexport function isInt128(value: unknown): value is bigint {\n return typeof value === \"bigint\" && value >= MIN_I128 && value <= MAX_I128;\n}\n\nexport function isBool(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n const parts = value.split(\".\");\n const address = parts[0]!;\n const contractName = parts[1];\n if (!validateStacksAddress(address)) return false;\n if (contractName !== undefined) {\n return CONTRACT_NAME_REGEX.test(contractName);\n }\n return true;\n}\n\nexport function isStandardPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n if (value.includes(\".\")) return false;\n return validateStacksAddress(value);\n}\n\nexport function isContractPrincipal(value: unknown): value is string {\n if (typeof value !== \"string\") return false;\n if (!value.includes(\".\")) return false;\n const parts = value.split(\".\");\n const address = parts[0]!;\n const contractName = parts[1]!;\n if (!validateStacksAddress(address)) return false;\n return CONTRACT_NAME_REGEX.test(contractName);\n}\n\nexport function isTraitReference(value: unknown): value is string {\n return isContractPrincipal(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nexport function isUint8Array(value: unknown): value is Uint8Array {\n return value instanceof Uint8Array;\n}\n\nexport function isArray<T>(\n value: unknown,\n itemGuard: (item: unknown) => item is T,\n): value is T[] {\n return Array.isArray(value) && value.every(itemGuard);\n}\n\nexport function isOptional<T>(\n value: unknown,\n guard: (val: unknown) => val is T,\n): value is T | null {\n return value === null || guard(value);\n}\n\nexport function isOkResponse<T>(\n response: { ok: T } | { err: any },\n): response is ResponseOk<T> {\n return \"ok\" in response && !(\"err\" in response);\n}\n\nexport function isErrResponse<E>(\n response: { ok: any } | { err: E },\n): response is ResponseErr<E> {\n return \"err\" in response && !(\"ok\" in response);\n}\n\nexport function isResponse<T, E>(\n value: unknown,\n okGuard: (val: unknown) => val is T,\n errGuard: (val: unknown) => val is E,\n): value is ResponseOk<T> | ResponseErr<E> {\n if (typeof value !== \"object\" || value === null) return false;\n const obj = value as Record<string, unknown>;\n if (\"ok\" in value && !(\"err\" in value)) return okGuard(obj.ok);\n if (\"err\" in value && !(\"ok\" in value)) return errGuard(obj.err);\n return false;\n}\n\n// ABI type definition guards\n\nexport function isAbiList(type: AbiType): type is AbiListType {\n return typeof type === \"object\" && type !== null && \"list\" in type;\n}\n\nexport function isAbiTuple(type: AbiType): type is AbiTupleType {\n return typeof type === \"object\" && type !== null && \"tuple\" in type;\n}\n\nexport function isAbiOptional(type: AbiType): type is AbiOptionalType {\n return typeof type === \"object\" && type !== null && \"optional\" in type;\n}\n\nexport function isAbiResponse(type: AbiType): type is AbiResponseType {\n return typeof type === \"object\" && type !== null && \"response\" in type;\n}\n\nexport function isAbiBuffer(type: AbiType): type is AbiBuffer {\n return typeof type === \"object\" && type !== null && \"buff\" in type;\n}\n\nexport function isAbiStringAscii(type: AbiType): type is AbiStringAscii {\n return typeof type === \"object\" && type !== null && \"string-ascii\" in type;\n}\n\nexport function isAbiStringUtf8(type: AbiType): type is AbiStringUtf8 {\n return typeof type === \"object\" && type !== null && \"string-utf8\" in type;\n}\n\nexport function isAbiTraitReference(type: AbiType): type is AbiTraitReference {\n return type === \"trait_reference\";\n}\n",
7
- "type CamelCaseInner<S extends string> =\n S extends `${infer P1}-${infer P2}${infer P3}`\n ? `${P1}${Capitalize<CamelCaseInner<`${P2}${P3}`>>}`\n : S;\n\nexport type ToCamelCase<S extends string> =\n CamelCaseInner<S> extends `${number}${string}`\n ? `_${CamelCaseInner<S>}`\n : CamelCaseInner<S>;\n\nexport function toCamelCase(str: string): string {\n return str\n .replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())\n .replace(/-([A-Z])/g, (_, letter) => letter)\n .replace(/-(\\d)/g, (_, digit) => digit)\n .replace(/-/g, \"\")\n .replace(/^\\d/, \"_$&\");\n}\n",
8
- "import type { AbiType } from \"./abi/types.ts\";\nimport type { AbiToTS } from \"./abi/mappings.ts\";\nimport {\n isAbiList,\n isAbiTuple,\n isAbiOptional,\n isAbiResponse,\n isAbiBuffer,\n isAbiStringAscii,\n isAbiStringUtf8,\n} from \"./abi/guards.ts\";\nimport { toCamelCase } from \"./abi/utils.ts\";\nimport type { ClarityValue } from \"./types.ts\";\nimport {\n intCV,\n uintCV,\n boolCV,\n bufferCV,\n noneCV,\n someCV,\n responseOkCV,\n responseErrorCV,\n listCV,\n tupleCV,\n stringAsciiCV,\n stringUtf8CV,\n} from \"./values.ts\";\nimport { Cl } from \"./values.ts\";\n\n/**\n * Convert a JS value to a ClarityValue using ABI type information.\n */\nexport function jsToClarityValue(abiType: AbiType, value: unknown): ClarityValue {\n if (abiType === \"uint128\") return uintCV(value as bigint | number);\n if (abiType === \"int128\") return intCV(value as bigint | number);\n if (abiType === \"bool\") return boolCV(value as boolean);\n if (abiType === \"principal\" || abiType === \"trait_reference\")\n return Cl.principal(value as string);\n\n if (isAbiStringAscii(abiType)) return stringAsciiCV(value as string);\n if (isAbiStringUtf8(abiType)) return stringUtf8CV(value as string);\n if (isAbiBuffer(abiType)) return bufferCV(value as Uint8Array);\n\n if (isAbiList(abiType)) {\n const arr = value as unknown[];\n return listCV(arr.map((item) => jsToClarityValue(abiType.list.type, item)));\n }\n\n if (isAbiTuple(abiType)) {\n const obj = value as Record<string, unknown>;\n const data: Record<string, ClarityValue> = {};\n for (const field of abiType.tuple) {\n const camelKey = toCamelCase(field.name);\n const hasOriginal = field.name in obj;\n const hasCamel = camelKey in obj;\n const fieldValue = hasOriginal ? obj[field.name] : hasCamel ? obj[camelKey] : undefined;\n if (fieldValue === undefined && !isAbiOptional(field.type)) {\n throw new Error(`Missing tuple field: ${field.name}`);\n }\n data[field.name] = jsToClarityValue(field.type, fieldValue);\n }\n return tupleCV(data);\n }\n\n if (isAbiOptional(abiType)) {\n if (value === null || value === undefined) return noneCV();\n return someCV(jsToClarityValue(abiType.optional, value));\n }\n\n if (isAbiResponse(abiType)) {\n const obj = value as Record<string, unknown>;\n if (\"ok\" in obj && !(\"err\" in obj))\n return responseOkCV(jsToClarityValue(abiType.response.ok, obj.ok));\n if (\"err\" in obj && !(\"ok\" in obj))\n return responseErrorCV(jsToClarityValue(abiType.response.error, obj.err));\n throw new Error(\"Response must have exactly 'ok' or 'err' property\");\n }\n\n throw new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n\n/**\n * Convert a ClarityValue back to a typed JS value using ABI type information.\n */\nexport function clarityValueToJS<T extends AbiType>(\n abiType: T,\n cv: ClarityValue,\n): AbiToTS<T> {\n return clarityValueToJSInner(abiType, cv) as AbiToTS<T>;\n}\n\n/** Non-generic version for internal use — avoids deep type instantiation. */\nexport function clarityValueToJSUntyped(abiType: AbiType, cv: ClarityValue): unknown {\n return clarityValueToJSInner(abiType, cv);\n}\n\nfunction clarityValueToJSInner(abiType: AbiType, cv: ClarityValue): unknown {\n if (abiType === \"uint128\" || abiType === \"int128\") {\n if (cv.type !== \"int\" && cv.type !== \"uint\")\n throw new Error(`Expected int/uint CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (abiType === \"bool\") {\n if (cv.type === \"true\") return true;\n if (cv.type === \"false\") return false;\n throw new Error(`Expected bool CV, got ${cv.type}`);\n }\n\n if (abiType === \"principal\" || abiType === \"trait_reference\") {\n if (cv.type !== \"address\" && cv.type !== \"contract\")\n throw new Error(`Expected principal CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (isAbiStringAscii(abiType) || isAbiStringUtf8(abiType)) {\n if (cv.type !== \"ascii\" && cv.type !== \"utf8\")\n throw new Error(`Expected string CV, got ${cv.type}`);\n return cv.value;\n }\n\n if (isAbiBuffer(abiType)) {\n if (cv.type !== \"buffer\") throw new Error(`Expected buffer CV, got ${cv.type}`);\n // BufferCV stores hex string; convert back to Uint8Array\n const hex = cv.value;\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n }\n\n if (isAbiList(abiType)) {\n if (cv.type !== \"list\") throw new Error(`Expected list CV, got ${cv.type}`);\n return cv.value.map((item) => clarityValueToJSInner(abiType.list.type, item));\n }\n\n if (isAbiTuple(abiType)) {\n if (cv.type !== \"tuple\") throw new Error(`Expected tuple CV, got ${cv.type}`);\n const result: Record<string, unknown> = {};\n for (const field of abiType.tuple) {\n const fieldCV = cv.value[field.name];\n if (!fieldCV) throw new Error(`Missing tuple field in CV: ${field.name}`);\n const camelKey = toCamelCase(field.name);\n result[camelKey] = clarityValueToJSInner(field.type, fieldCV);\n }\n return result;\n }\n\n if (isAbiOptional(abiType)) {\n if (cv.type === \"none\") return null;\n if (cv.type === \"some\") return clarityValueToJSInner(abiType.optional, cv.value);\n throw new Error(`Expected optional CV, got ${cv.type}`);\n }\n\n if (isAbiResponse(abiType)) {\n if (cv.type === \"ok\") return { ok: clarityValueToJSInner(abiType.response.ok, cv.value) };\n if (cv.type === \"err\") return { err: clarityValueToJSInner(abiType.response.error, cv.value) };\n throw new Error(`Expected response CV, got ${cv.type}`);\n }\n\n throw new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);\n}\n"
9
- ],
10
- "mappings": "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",
11
- "debugId": "F8671962BA8FE8C064756E2164756E21",
12
- "names": []
13
- }