@secondlayer/stacks 0.2.1 → 0.3.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.
- package/dist/shared/stacks-02actsrx.cjs.map +2 -2
- package/dist/shared/{stacks-vyb9rx8q.js → stacks-09wa7ewe.js} +125 -115
- package/dist/shared/stacks-09wa7ewe.js.map +15 -0
- package/dist/shared/{stacks-ky14tdf6.cjs → stacks-0nfexv24.cjs} +20 -8
- package/dist/shared/stacks-0nfexv24.cjs.map +14 -0
- package/dist/shared/{stacks-an5k8n4t.cjs → stacks-14pgpkrr.cjs} +82 -73
- package/dist/shared/stacks-14pgpkrr.cjs.map +23 -0
- package/dist/shared/{stacks-vbke9mqw.cjs → stacks-17sdtaxg.cjs} +120 -106
- package/dist/shared/stacks-17sdtaxg.cjs.map +15 -0
- package/dist/shared/{stacks-wrb1es85.js → stacks-1s5w4ncf.js} +46 -34
- package/dist/shared/stacks-1s5w4ncf.js.map +17 -0
- package/dist/shared/stacks-24h5k94q.cjs.map +3 -3
- package/dist/shared/{stacks-evnzth1q.cjs → stacks-4vzmhw3q.cjs} +3 -3
- package/dist/shared/stacks-4vzmhw3q.cjs.map +10 -0
- package/dist/shared/{stacks-vd9jcp0b.js → stacks-4x2bcc2k.js} +89 -80
- package/dist/shared/stacks-4x2bcc2k.js.map +23 -0
- package/dist/shared/stacks-5tprhns9.cjs.map +3 -3
- package/dist/shared/stacks-709tra19.js.map +2 -2
- package/dist/shared/{stacks-qcx67vqa.js → stacks-70p84bgg.js} +3 -3
- package/dist/shared/stacks-70p84bgg.js.map +10 -0
- package/dist/shared/{stacks-k2p5tv6x.js → stacks-913a2rx7.js} +3 -3
- package/dist/shared/stacks-913a2rx7.js.map +10 -0
- package/dist/shared/{stacks-qyt8m5v0.js → stacks-96d6m1zy.js} +16 -7
- package/dist/shared/stacks-96d6m1zy.js.map +11 -0
- package/dist/shared/stacks-9g0jhab3.cjs.map +2 -2
- package/dist/shared/stacks-dr5en54r.cjs.map +2 -2
- package/dist/shared/stacks-fcaefc5b.cjs.map +2 -2
- package/dist/shared/stacks-gck1sq7h.cjs.map +2 -2
- package/dist/shared/{stacks-yfveb68e.js → stacks-je937aas.js} +3 -3
- package/dist/shared/stacks-je937aas.js.map +10 -0
- package/dist/shared/{stacks-k58k970n.js → stacks-kg1npstf.js} +5 -3
- package/dist/shared/stacks-kg1npstf.js.map +10 -0
- package/dist/shared/{stacks-qvg7c24g.cjs → stacks-n98w7g57.cjs} +5 -3
- package/dist/shared/stacks-n98w7g57.cjs.map +10 -0
- package/dist/shared/{stacks-9mdk86wp.js → stacks-nqae5amn.cjs} +77 -159
- package/dist/shared/stacks-nqae5amn.cjs.map +10 -0
- package/dist/shared/stacks-qcae5852.js.map +2 -2
- package/dist/shared/stacks-qt8ehebn.js.map +3 -3
- package/dist/shared/{stacks-r1t6g3c3.cjs → stacks-ra02bpny.cjs} +8 -3
- package/dist/shared/stacks-ra02bpny.cjs.map +11 -0
- package/dist/shared/{stacks-bycy6t9k.js → stacks-rwfgts3s.js} +2 -2
- package/dist/shared/{stacks-bycy6t9k.js.map → stacks-rwfgts3s.js.map} +2 -2
- package/dist/shared/{stacks-gjvbq6w7.js → stacks-s10yb9gz.js} +2 -2
- package/dist/shared/stacks-s10yb9gz.js.map +10 -0
- package/dist/shared/{stacks-v3zy6zds.cjs → stacks-s30kkvm8.js} +104 -117
- package/dist/shared/stacks-s30kkvm8.js.map +10 -0
- package/dist/shared/{stacks-nqytwfcc.js → stacks-s7z5q8be.js} +8 -3
- package/dist/shared/stacks-s7z5q8be.js.map +11 -0
- package/dist/shared/stacks-v9jqcpd4.js.map +2 -2
- package/dist/shared/stacks-vdfag81a.cjs.map +2 -2
- package/dist/shared/{stacks-fedzr2ka.js → stacks-wjem3xw9.js} +23 -11
- package/dist/shared/stacks-wjem3xw9.js.map +14 -0
- package/dist/shared/{stacks-k08tgzyp.cjs → stacks-wyxj879g.cjs} +3 -3
- package/dist/shared/stacks-wyxj879g.cjs.map +13 -0
- package/dist/shared/stacks-y3dh7hv1.js.map +3 -3
- package/dist/shared/{stacks-2ar4prfz.cjs → stacks-y5262j0z.cjs} +14 -5
- package/dist/shared/stacks-y5262j0z.cjs.map +11 -0
- package/dist/shared/stacks-ya3x01yd.cjs.map +2 -2
- package/dist/shared/{stacks-9avax1yf.js → stacks-zf7rbpzp.js} +5 -5
- package/dist/shared/stacks-zf7rbpzp.js.map +13 -0
- package/dist/shared/{stacks-61rvzkz1.cjs → stacks-znrb59ce.cjs} +41 -29
- package/dist/shared/stacks-znrb59ce.cjs.map +17 -0
- package/dist/src/accounts/index.cjs +2 -2
- package/dist/src/accounts/index.cjs.map +5 -5
- package/dist/src/accounts/index.js +4 -8
- package/dist/src/accounts/index.js.map +5 -5
- package/dist/src/actions/index.d.cts +36 -29
- package/dist/src/actions/index.d.ts +36 -29
- package/dist/src/actions/index.js +10 -10
- package/dist/src/bns/index.cjs +55 -43
- package/dist/src/bns/index.cjs.map +9 -9
- package/dist/src/bns/index.d.cts +29 -29
- package/dist/src/bns/index.d.ts +29 -29
- package/dist/src/bns/index.js +66 -54
- package/dist/src/bns/index.js.map +9 -9
- package/dist/src/clarity/index.js +6 -6
- package/dist/src/connect/index.cjs +114 -112
- package/dist/src/connect/index.cjs.map +13 -13
- package/dist/src/connect/index.js +114 -112
- package/dist/src/connect/index.js.map +13 -13
- package/dist/src/connect/walletconnect/index.cjs +3 -3
- package/dist/src/connect/walletconnect/index.cjs.map +10 -10
- package/dist/src/connect/walletconnect/index.js +3 -3
- package/dist/src/connect/walletconnect/index.js.map +10 -10
- package/dist/src/index.cjs +108 -2
- package/dist/src/index.cjs.map +19 -15
- package/dist/src/index.d.cts +298 -112
- package/dist/src/index.d.ts +298 -112
- package/dist/src/index.js +125 -12
- package/dist/src/index.js.map +19 -15
- package/dist/src/postconditions/index.js +3 -3
- package/dist/src/pox/index.cjs.map +6 -6
- package/dist/src/pox/index.d.cts +29 -29
- package/dist/src/pox/index.d.ts +29 -29
- package/dist/src/pox/index.js +9 -9
- package/dist/src/pox/index.js.map +6 -6
- package/dist/src/stackingdao/index.cjs +31 -6
- package/dist/src/stackingdao/index.cjs.map +6 -6
- package/dist/src/stackingdao/index.d.cts +29 -29
- package/dist/src/stackingdao/index.d.ts +29 -29
- package/dist/src/stackingdao/index.js +41 -16
- package/dist/src/stackingdao/index.js.map +6 -6
- package/dist/src/subscriptions/index.d.cts +29 -29
- package/dist/src/subscriptions/index.d.ts +29 -29
- package/dist/src/tools/btc/index.cjs +130 -0
- package/dist/src/tools/btc/index.cjs.map +10 -0
- package/dist/src/tools/btc/index.d.cts +8 -0
- package/dist/src/tools/btc/index.d.ts +8 -0
- package/dist/src/tools/btc/index.js +89 -0
- package/dist/src/tools/btc/index.js.map +10 -0
- package/dist/src/tools/index.cjs +2470 -0
- package/dist/src/tools/index.cjs.map +61 -0
- package/dist/src/tools/index.d.cts +144 -0
- package/dist/src/tools/index.d.ts +144 -0
- package/dist/src/tools/index.js +2435 -0
- package/dist/src/tools/index.js.map +61 -0
- package/dist/src/transactions/index.d.cts +7 -0
- package/dist/src/transactions/index.d.ts +7 -0
- package/dist/src/transactions/index.js +6 -6
- package/dist/src/triggers/index.cjs +66 -0
- package/dist/src/triggers/index.cjs.map +10 -0
- package/dist/src/triggers/index.d.cts +116 -0
- package/dist/src/triggers/index.d.ts +116 -0
- package/dist/src/triggers/index.js +25 -0
- package/dist/src/triggers/index.js.map +10 -0
- package/dist/src/tx/index.cjs +65 -0
- package/dist/src/tx/index.cjs.map +10 -0
- package/dist/src/tx/index.d.cts +42 -0
- package/dist/src/tx/index.d.ts +42 -0
- package/dist/src/tx/index.js +22 -0
- package/dist/src/tx/index.js.map +10 -0
- package/dist/src/ui/index.cjs +431 -0
- package/dist/src/ui/index.cjs.map +27 -0
- package/dist/src/ui/index.d.cts +107 -0
- package/dist/src/ui/index.d.ts +107 -0
- package/dist/src/ui/index.js +391 -0
- package/dist/src/ui/index.js.map +27 -0
- package/dist/src/ui/schemas.cjs +134 -0
- package/dist/src/ui/schemas.cjs.map +18 -0
- package/dist/src/ui/schemas.d.cts +83 -0
- package/dist/src/ui/schemas.d.ts +83 -0
- package/dist/src/ui/schemas.js +91 -0
- package/dist/src/ui/schemas.js.map +18 -0
- package/dist/src/utils/index.cjs +3 -3
- package/dist/src/utils/index.cjs.map +4 -4
- package/dist/src/utils/index.js +7 -7
- package/dist/src/utils/index.js.map +4 -4
- package/package.json +157 -105
- package/dist/shared/stacks-2ar4prfz.cjs.map +0 -11
- package/dist/shared/stacks-61rvzkz1.cjs.map +0 -17
- package/dist/shared/stacks-9avax1yf.js.map +0 -13
- package/dist/shared/stacks-9mdk86wp.js.map +0 -10
- package/dist/shared/stacks-an5k8n4t.cjs.map +0 -23
- package/dist/shared/stacks-evnzth1q.cjs.map +0 -10
- package/dist/shared/stacks-fedzr2ka.js.map +0 -13
- package/dist/shared/stacks-gjvbq6w7.js.map +0 -10
- package/dist/shared/stacks-k08tgzyp.cjs.map +0 -13
- package/dist/shared/stacks-k2p5tv6x.js.map +0 -10
- package/dist/shared/stacks-k58k970n.js.map +0 -10
- package/dist/shared/stacks-ky14tdf6.cjs.map +0 -13
- package/dist/shared/stacks-nqytwfcc.js.map +0 -11
- package/dist/shared/stacks-qcx67vqa.js.map +0 -10
- package/dist/shared/stacks-qvg7c24g.cjs.map +0 -10
- package/dist/shared/stacks-qyt8m5v0.js.map +0 -11
- package/dist/shared/stacks-r1t6g3c3.cjs.map +0 -11
- package/dist/shared/stacks-v3zy6zds.cjs.map +0 -10
- package/dist/shared/stacks-vbke9mqw.cjs.map +0 -15
- package/dist/shared/stacks-vd9jcp0b.js.map +0 -23
- package/dist/shared/stacks-vyb9rx8q.js.map +0 -15
- package/dist/shared/stacks-wrb1es85.js.map +0 -17
- package/dist/shared/stacks-yfveb68e.js.map +0 -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": "611DF286E29AA1A764756E2164756E21",
|
|
22
|
-
"names": []
|
|
23
|
-
}
|
|
@@ -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,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": "E7F2F7102FA4D24C64756E2164756E21",
|
|
12
|
-
"names": []
|
|
13
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/utils/address.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { c32address, c32addressDecode } from \"./c32.ts\";\n\nexport { c32address, c32addressDecode };\n\nexport function validateStacksAddress(address: string): boolean {\n try {\n c32addressDecode(address);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Alias for validateStacksAddress — matches future.md naming. */\nexport const isValidAddress: (address: string) => boolean = validateStacksAddress;\n\nexport function parseContractId(contractId: string): [string, string] {\n const [address, name] = contractId.split(\".\");\n if (!address || !name)\n throw new Error(`Invalid contract identifier: ${contractId}`);\n return [address, name];\n}\n\nexport function isClarityName(name: string): boolean {\n const regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n return regex.test(name) && name.length < 128;\n}\n\n/**\n * Compare two Stacks addresses for equality (case-insensitive, version-aware).\n * Throws if either address is invalid.\n */\nexport function isAddressEqual(a: string, b: string): boolean {\n const [versionA, hashA] = c32addressDecode(a);\n const [versionB, hashB] = c32addressDecode(b);\n return versionA === versionB && hashA.toLowerCase() === hashB.toLowerCase();\n}\n\n/** Extract the version byte from a Stacks address (22, 20, 26, or 21). */\nexport function addressToVersion(address: string): number {\n return c32addressDecode(address)[0];\n}\n\n/**\n * Build a contract address from deployer + contract name.\n * Validates both parts; returns `deployer.contractName`.\n */\nexport function getContractAddress(deployer: string, contractName: string): string {\n if (!validateStacksAddress(deployer)) {\n throw new Error(`Invalid deployer address: ${deployer}`);\n }\n if (!isClarityName(contractName)) {\n throw new Error(`Invalid contract name: ${contractName}`);\n }\n return `${deployer}.${contractName}`;\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;;;;AAIO,SAAS,qBAAqB,CAAC,SAA0B;AAAA,EAC9D,IAAI;AAAA,IACF,iBAAiB,OAAO;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAKJ,IAAM,iBAA+C;AAErD,SAAS,eAAe,CAAC,YAAsC;AAAA,EACpE,OAAO,SAAS,QAAQ,WAAW,MAAM,GAAG;AAAA,EAC5C,IAAI,CAAC,WAAW,CAAC;AAAA,IACf,MAAM,IAAI,MAAM,gCAAgC,YAAY;AAAA,EAC9D,OAAO,CAAC,SAAS,IAAI;AAAA;AAGhB,SAAS,aAAa,CAAC,MAAuB;AAAA,EACnD,MAAM,QAAQ;AAAA,EACd,OAAO,MAAM,KAAK,IAAI,KAAK,KAAK,SAAS;AAAA;AAOpC,SAAS,cAAc,CAAC,GAAW,GAAoB;AAAA,EAC5D,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,UAAU,SAAS,iBAAiB,CAAC;AAAA,EAC5C,OAAO,aAAa,YAAY,MAAM,YAAY,MAAM,MAAM,YAAY;AAAA;AAIrE,SAAS,gBAAgB,CAAC,SAAyB;AAAA,EACxD,OAAO,iBAAiB,OAAO,EAAE;AAAA;AAO5B,SAAS,kBAAkB,CAAC,UAAkB,cAA8B;AAAA,EACjF,IAAI,CAAC,sBAAsB,QAAQ,GAAG;AAAA,IACpC,MAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA,EACzD;AAAA,EACA,IAAI,CAAC,cAAc,YAAY,GAAG;AAAA,IAChC,MAAM,IAAI,MAAM,0BAA0B,cAAc;AAAA,EAC1D;AAAA,EACA,OAAO,GAAG,YAAY;AAAA;",
|
|
8
|
-
"debugId": "899D2CA267B89FE364756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -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": ";AAEO,IAAM,aAAa;AAAA,EACxB,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,QAClC,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,QACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,QACvC,EAAE,MAAM,QAAQ,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;AAAA,MAC/D;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,WAAW,MAAM,YAAY,CAAC;AAAA,MAC7C,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,QACP,UAAU;AAAA,UACR,IAAI,EAAE,gBAAgB,EAAE,QAAQ,GAAG,EAAE;AAAA,UACrC,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,QACP,UAAU;AAAA,UACR,IAAI,EAAE,gBAAgB,EAAE,QAAQ,GAAG,EAAE;AAAA,UACrC,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS;AAAA,QACP,UAAU;AAAA,UACR,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,IAAI,EAAE,EAAE;AAAA,UACnD,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB,CAAC,EAAE,MAAM,QAAQ,CAAC;AACrC;AAEO,IAAM,aAAa;AAAA,EACxB,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,QAC9B,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,QACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,MACzC;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,MAAM,MAAM,UAAU,CAAC;AAAA,MACtC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,YAAY,GAAG,OAAO,UAAU,EAAE;AAAA,IAC3E;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,MAAM,MAAM,UAAU,CAAC;AAAA,MACtC,SAAS;AAAA,QACP,UAAU;AAAA,UACR,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,IAAI,EAAE,EAAE;AAAA,UACnD,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,qBAAqB,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,CAAC;AACxD;AAEO,IAAM,aAAa;AAAA,EACxB,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,QAClC,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,QACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,MACzC;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,QAClC,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,QACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,QACvC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,MACjD;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,MAAM;AAAA,cACJ,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,kBACpC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,kBAClC,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,kBACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,gBACzC;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,MAAM;AAAA,cACJ,MAAM;AAAA,gBACJ,OAAO;AAAA,kBACL,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,kBACpC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,kBAClC,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,kBACpC,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,kBACvC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,gBACjD;AAAA,cACF;AAAA,cACA,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACxD;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,WAAW,MAAM,YAAY;AAAA,MACvC;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,WAAW,MAAM,YAAY,CAAC;AAAA,MAC7C,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,MAC5C,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,MAC5C,SAAS,EAAE,UAAU,EAAE,IAAI,WAAW,OAAO,UAAU,EAAE;AAAA,IAC3D;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,CAAC,EAAE,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,MAC5C,SAAS;AAAA,QACP,UAAU;AAAA,UACR,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,IAAI,EAAE,EAAE;AAAA,UACnD,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB,qBAAqB,CAAC;AACxB;AAGO,IAAM,YAAyB;AAC/B,IAAM,YAAyB;AAC/B,IAAM,YAAyB;",
|
|
8
|
-
"debugId": "02D7F66F296B4CA864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -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,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/utils/encoding.ts", "../src/utils/c32.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"const hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nexport function bytesToHex(bytes: Uint8Array): string {\n let hex = \"\";\n for (const b of bytes) {\n hex += hexes[b];\n }\n return hex;\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n hex = without0x(hex);\n if (hex.length % 2) hex = `0${hex}`;\n\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const byte = Number.parseInt(hex.slice(j, j + 2), 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error(\"Invalid byte sequence\");\n array[i] = byte;\n }\n return array;\n}\n\nexport function with0x(value: string): string {\n return /^0x/i.test(value) ? value : `0x${value}`;\n}\n\nexport function without0x(value: string): string {\n return /^0x/i.test(value) ? value.slice(2) : value;\n}\n\nexport function utf8ToBytes(str: string): Uint8Array {\n return new TextEncoder().encode(str);\n}\n\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\nexport function asciiToBytes(str: string): Uint8Array {\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nexport function bytesToAscii(bytes: Uint8Array): string {\n return String.fromCharCode(...bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n if (arrays.length === 1) return arrays[0]!;\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n let pad = 0;\n for (const arr of arrays) {\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n\nexport type IntegerType = number | string | bigint | Uint8Array;\n\nexport function intToBigInt(value: IntegerType): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"string\") return BigInt(value);\n if (typeof value === \"number\") {\n if (!Number.isInteger(value))\n throw new RangeError(\"Values of type 'number' must be an integer.\");\n if (value > Number.MAX_SAFE_INTEGER)\n throw new RangeError(\n `Values of type 'number' must be <= ${Number.MAX_SAFE_INTEGER}. Use BigInt instead.`\n );\n return BigInt(value);\n }\n if (value instanceof Uint8Array) return BigInt(`0x${bytesToHex(value)}`);\n throw new TypeError(\"Must be a number, bigint, string, or Uint8Array.\");\n}\n\nexport function intToBytes(value: IntegerType, byteLength: number): Uint8Array {\n return bigIntToBytes(intToBigInt(value), byteLength);\n}\n\nexport function bigIntToBytes(value: bigint, length: number = 16): Uint8Array {\n const hex = value.toString(16).padStart(length * 2, \"0\");\n return hexToBytes(hex);\n}\n\nexport function intToHex(integer: IntegerType, byteLength = 8): string {\n const value = typeof integer === \"bigint\" ? integer : intToBigInt(integer);\n return value.toString(16).padStart(byteLength * 2, \"0\");\n}\n\nexport function toTwos(value: bigint, width: bigint): bigint {\n const limit = BigInt(1) << (width - BigInt(1));\n if (value < -limit || value > limit - BigInt(1)) {\n throw new Error(`Unable to represent integer in width: ${width}`);\n }\n if (value >= BigInt(0)) return value;\n return value + (BigInt(1) << width);\n}\n\nexport function fromTwos(value: bigint, width: bigint): bigint {\n if (value & (BigInt(1) << (width - BigInt(1)))) {\n return value - (BigInt(1) << width);\n }\n return value;\n}\n\nexport function bytesToTwosBigInt(bytes: Uint8Array): bigint {\n return fromTwos(BigInt(`0x${bytesToHex(bytes)}`), BigInt(bytes.byteLength * 8));\n}\n\nexport function writeUInt32BE(value: number): Uint8Array {\n const buf = new Uint8Array(4);\n buf[0] = (value >>> 24) & 0xff;\n buf[1] = (value >>> 16) & 0xff;\n buf[2] = (value >>> 8) & 0xff;\n buf[3] = value & 0xff;\n return buf;\n}\n\nexport function readUInt32BE(bytes: Uint8Array, offset = 0): number {\n return (\n ((bytes[offset]! << 24) |\n (bytes[offset + 1]! << 16) |\n (bytes[offset + 2]! << 8) |\n bytes[offset + 3]!) >>>\n 0\n );\n}\n\nexport function writeUInt16BE(value: number): Uint8Array {\n const buf = new Uint8Array(2);\n buf[0] = (value >>> 8) & 0xff;\n buf[1] = value & 0xff;\n return buf;\n}\n\nexport function readUInt16BE(bytes: Uint8Array, offset = 0): number {\n return ((bytes[offset]! << 8) | bytes[offset + 1]!) >>> 0;\n}\n\nexport function writeUInt8(value: number): Uint8Array {\n return new Uint8Array([value & 0xff]);\n}\n",
|
|
6
|
-
"import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex, hexToBytes } from \"./encoding.ts\";\n\nconst C32 = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\nconst HEX = \"0123456789abcdef\";\n\nfunction c32normalize(input: string): string {\n return input.toUpperCase().replace(/O/g, \"0\").replace(/L|I/g, \"1\");\n}\n\nfunction c32encode(inputHex: string): string {\n if (inputHex.length % 2 !== 0) inputHex = `0${inputHex}`;\n inputHex = inputHex.toLowerCase();\n\n const res: string[] = [];\n let carry = 0;\n for (let i = inputHex.length - 1; i >= 0; i--) {\n if (carry < 4) {\n const currentCode = HEX.indexOf(inputHex[i]!) >> carry;\n const nextCode = i !== 0 ? HEX.indexOf(inputHex[i - 1]!) : 0;\n const nextBits = 1 + carry;\n const nextLowBits = (nextCode % (1 << nextBits)) << (5 - nextBits);\n res.unshift(C32[currentCode + nextLowBits]!);\n carry = nextBits;\n } else {\n carry = 0;\n }\n }\n\n // Strip leading c32 zeros\n let leadingZeros = 0;\n while (leadingZeros < res.length && res[leadingZeros] === \"0\") leadingZeros++;\n const stripped = res.slice(leadingZeros);\n\n // Preserve leading zero bytes from hex\n const bytes = hexToBytes(inputHex);\n let zeroBytesCount = 0;\n while (zeroBytesCount < bytes.length && bytes[zeroBytesCount] === 0) zeroBytesCount++;\n const prefix = Array(zeroBytesCount).fill(C32[0]) as string[];\n\n return [...prefix, ...stripped].join(\"\");\n}\n\nfunction c32decode(c32input: string): string {\n c32input = c32normalize(c32input);\n if (!c32input.match(`^[${C32}]*$`)) throw new Error(\"Not a c32-encoded string\");\n\n const zeroPrefix = c32input.match(`^${C32[0]}*`);\n const numLeadingZeroBytes = zeroPrefix ? zeroPrefix[0]!.length : 0;\n\n const res: string[] = [];\n let carry = 0;\n let carryBits = 0;\n for (let i = c32input.length - 1; i >= 0; i--) {\n if (carryBits === 4) {\n res.unshift(HEX[carry]!);\n carryBits = 0;\n carry = 0;\n }\n const currentValue = (C32.indexOf(c32input[i]!) << carryBits) + carry;\n res.unshift(HEX[currentValue % 16]!);\n carryBits += 1;\n carry = currentValue >> 4;\n if (carry > 1 << carryBits) throw new Error(\"Panic error in c32 decoding\");\n }\n res.unshift(HEX[carry]!);\n\n if (res.length % 2 === 1) res.unshift(\"0\");\n\n // Strip leading hex zeros\n let hexLeadingZeros = 0;\n while (hexLeadingZeros < res.length && res[hexLeadingZeros] === \"0\") hexLeadingZeros++;\n let hexStr = res.slice(hexLeadingZeros - (hexLeadingZeros % 2)).join(\"\");\n\n for (let i = 0; i < numLeadingZeroBytes; i++) hexStr = `00${hexStr}`;\n\n return hexStr;\n}\n\nfunction c32checksum(dataHex: string): string {\n return bytesToHex(sha256(sha256(hexToBytes(dataHex))).slice(0, 4));\n}\n\nfunction c32checkEncode(version: number, data: string): string {\n if (version < 0 || version >= 32) throw new Error(\"Invalid version (must be between 0 and 31)\");\n if (!data.match(/^[0-9a-fA-F]*$/)) throw new Error(\"Invalid data (not a hex string)\");\n\n data = data.toLowerCase();\n if (data.length % 2 !== 0) data = `0${data}`;\n\n let versionHex = version.toString(16);\n if (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n const checksumHex = c32checksum(`${versionHex}${data}`);\n return `${C32[version]}${c32encode(`${data}${checksumHex}`)}`;\n}\n\nfunction c32checkDecode(c32data: string): [number, string] {\n c32data = c32normalize(c32data);\n const dataHex = c32decode(c32data.slice(1));\n const version = C32.indexOf(c32data[0]!);\n const checksum = dataHex.slice(-8);\n\n let versionHex = version.toString(16);\n if (versionHex.length === 1) versionHex = `0${versionHex}`;\n\n if (c32checksum(`${versionHex}${dataHex.substring(0, dataHex.length - 8)}`) !== checksum) {\n throw new Error(\"Invalid c32check string: checksum mismatch\");\n }\n\n return [version, dataHex.substring(0, dataHex.length - 8)];\n}\n\nexport function c32address(version: number, hash160hex: string): string {\n if (!hash160hex.match(/^[0-9a-fA-F]{40}$/)) {\n throw new Error(\"Invalid argument: not a hash160 hex string\");\n }\n return `S${c32checkEncode(version, hash160hex)}`;\n}\n\nexport function c32addressDecode(c32addr: string): [number, string] {\n if (c32addr.length <= 5) throw new Error(\"Invalid c32 address: invalid length\");\n if (c32addr[0] !== \"S\") throw new Error('Invalid c32 address: must start with \"S\"');\n return c32checkDecode(c32addr.slice(1));\n}\n"
|
|
7
|
-
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "AA001B4C9FEE084964756E2164756E21",
|
|
10
|
-
"names": []
|
|
11
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/actions/getContract.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { Client } from \"../clients/types.ts\";\nimport type {\n AbiContract,\n AbiFunction,\n AbiMap,\n AbiType,\n ExtractReadOnlyFunctions,\n ExtractPublicFunctions,\n ExtractFunctionArgs,\n ExtractFunctionOutput,\n ExtractMapNames,\n ExtractMapKey,\n ExtractMapValue,\n} from \"../clarity/abi/index.ts\";\nimport { toCamelCase, type ToCamelCase } from \"../clarity/abi/utils.ts\";\nimport { jsToClarityValue, clarityValueToJSUntyped } from \"../clarity/bridge.ts\";\nimport { readContract } from \"./public/readContract.ts\";\nimport { callContract } from \"./wallet/callContract.ts\";\nimport { getMapEntry } from \"./public/getMapEntry.ts\";\nimport type { ClarityValue } from \"../clarity/types.ts\";\nimport type { PostCondition } from \"../postconditions/types.ts\";\nimport type { IntegerType } from \"../utils/encoding.ts\";\n\n// --- Type helpers for unwrapping response types ---\n\n/** Unwrap `(response ok err)` → just the `ok` branch type */\ntype UnwrapResponse<T> = T extends { ok: infer O } | { err: any } ? O : T;\n\ntype ReadMethodReturn<\n C extends AbiContract,\n N extends ExtractReadOnlyFunctions<C>,\n> = UnwrapResponse<ExtractFunctionOutput<C, N>>;\n\n// --- Public type for the contract instance ---\n\ntype ReadMethods<C extends AbiContract> = {\n [N in ExtractReadOnlyFunctions<C> as ToCamelCase<N>]: (\n args: ExtractFunctionArgs<C, N>,\n ) => Promise<ReadMethodReturn<C, N>>;\n};\n\ntype CallMethods<C extends AbiContract> = {\n [N in ExtractPublicFunctions<C> as ToCamelCase<N>]: (\n args: ExtractFunctionArgs<C, N>,\n options?: ContractCallOptions,\n ) => Promise<string>;\n};\n\ntype MapMethods<C extends AbiContract> = {\n [N in ExtractMapNames<C> as ToCamelCase<N>]: (\n key: ExtractMapKey<C, N>,\n ) => Promise<ExtractMapValue<C, N> | null>;\n};\n\nexport type ContractCallOptions = {\n fee?: IntegerType;\n nonce?: IntegerType;\n postConditionMode?: \"allow\" | \"deny\";\n postConditions?: PostCondition[];\n};\n\nexport type ContractInstance<C extends AbiContract> = {\n read: ReadMethods<C>;\n call: CallMethods<C>;\n maps: MapMethods<C>;\n};\n\nexport type GetContractParams<C extends AbiContract> = {\n client: Client;\n address: string;\n name: string;\n abi: C;\n};\n\nexport function getContract<const TAbi extends AbiContract>(\n params: GetContractParams<TAbi>,\n): ContractInstance<TAbi> {\n const { client, address, name: contractName, abi } = params;\n const contractId = `${address}.${contractName}`;\n\n // Index functions/maps by name for fast lookup\n const fnByName = new Map<string, AbiFunction>();\n for (const fn of abi.functions) {\n fnByName.set(fn.name, fn as AbiFunction);\n }\n\n const mapByName = new Map<string, AbiMap>();\n if (abi.maps) {\n for (const m of abi.maps) {\n mapByName.set(m.name, m as AbiMap);\n }\n }\n\n // Build kebab→camel reverse map for function/map names\n const camelToKebab = new Map<string, string>();\n for (const fn of abi.functions) {\n camelToKebab.set(toCamelCase(fn.name), fn.name);\n }\n if (abi.maps) {\n for (const m of abi.maps) {\n camelToKebab.set(toCamelCase(m.name), m.name);\n }\n }\n\n const read = new Proxy({} as ReadMethods<TAbi>, {\n get(_target, prop: string) {\n const fnName = camelToKebab.get(prop) ?? prop;\n const fn = fnByName.get(fnName);\n if (!fn || fn.access !== \"read-only\") return undefined;\n\n return async (args: Record<string, unknown>) => {\n const clarityArgs = buildFunctionArgs(fn, args);\n const result = await readContract(client, {\n contract: contractId,\n functionName: fn.name,\n args: clarityArgs,\n });\n\n const jsValue = clarityValueToJSUntyped(fn.outputs as AbiType, result);\n\n // Auto-unwrap: if output is response type, unwrap ok / throw on err\n if (isResponseOutput(fn.outputs as AbiType)) {\n const resp = jsValue as { ok?: unknown; err?: unknown };\n if (\"ok\" in resp) return resp.ok;\n throw new ContractResponseError(\n `${contractId}::${fn.name} returned (err ${formatErrValue(resp.err)})`,\n resp.err,\n );\n }\n\n return jsValue;\n };\n },\n });\n\n const call = new Proxy({} as CallMethods<TAbi>, {\n get(_target, prop: string) {\n const fnName = camelToKebab.get(prop) ?? prop;\n const fn = fnByName.get(fnName);\n if (!fn || fn.access !== \"public\") return undefined;\n\n return async (\n args: Record<string, unknown>,\n options?: ContractCallOptions,\n ) => {\n const clarityArgs = buildFunctionArgs(fn, args);\n return callContract(client, {\n contract: contractId,\n functionName: fn.name,\n functionArgs: clarityArgs,\n ...options,\n });\n };\n },\n });\n\n const maps = new Proxy({} as MapMethods<TAbi>, {\n get(_target, prop: string) {\n const mapName = camelToKebab.get(prop) ?? prop;\n const map = mapByName.get(mapName);\n if (!map) return undefined;\n\n return async (key: unknown) => {\n const clarityKey = jsToClarityValue(map.key as AbiType, key);\n const result = await getMapEntry(client, {\n contract: contractId,\n mapName: map.name,\n key: clarityKey,\n });\n\n // Map entries come back as (optional ...). If none, return null.\n if (result.type === \"none\") return null;\n if (result.type === \"some\") {\n return clarityValueToJSUntyped(map.value as AbiType, result.value);\n }\n // Direct value (shouldn't normally happen, but handle gracefully)\n return clarityValueToJSUntyped(map.value as AbiType, result);\n };\n },\n });\n\n return { read, call, maps };\n}\n\n// --- Helpers ---\n\nfunction buildFunctionArgs(\n fn: AbiFunction,\n args: Record<string, unknown>,\n): ClarityValue[] {\n return fn.args.map((arg) => {\n const camelKey = toCamelCase(arg.name);\n const hasOriginal = arg.name in args;\n const hasCamel = camelKey in args;\n const value = hasOriginal ? args[arg.name] : hasCamel ? args[camelKey] : undefined;\n if (value === undefined) throw new Error(`Missing argument: ${arg.name}`);\n return jsToClarityValue(arg.type as AbiType, value);\n });\n}\n\nfunction isResponseOutput(type: AbiType): boolean {\n return typeof type === \"object\" && type !== null && \"response\" in type;\n}\n\nfunction formatErrValue(value: unknown): string {\n if (typeof value === \"bigint\") return value.toString();\n if (typeof value === \"string\") return `\"${value}\"`;\n return String(value);\n}\n\nexport class ContractResponseError extends Error {\n override name = \"ContractResponseError\";\n constructor(\n message: string,\n public readonly errorValue: unknown,\n ) {\n super(message);\n }\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "C71C39F2B8094B6864756E2164756E21",
|
|
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": "AB6C51E03AD7EE0164756E2164756E21",
|
|
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
|
-
}
|