@secondlayer/stacks 2.9.1 → 2.11.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-wyxj879g.cjs → stacks-18jv9aen.js} +83 -4
- package/dist/shared/stacks-18jv9aen.js.map +13 -0
- package/dist/shared/{stacks-0zysn74p.js → stacks-2mm20wqf.js} +3 -3
- package/dist/shared/{stacks-1qmx9kt8.js → stacks-3kmj5yre.js} +4 -4
- package/dist/shared/{stacks-ttbq8emk.js → stacks-502j0efj.js} +3 -3
- package/dist/shared/{stacks-nqae5amn.cjs → stacks-5nskdw7w.cjs} +19 -2
- package/dist/shared/stacks-5nskdw7w.cjs.map +10 -0
- package/dist/shared/{stacks-8mj5jw77.js → stacks-63xbc6cj.js} +63 -7
- package/dist/shared/stacks-63xbc6cj.js.map +10 -0
- package/dist/shared/{stacks-g7ffp8aj.js → stacks-6xt8py97.cjs} +59 -30
- package/dist/shared/stacks-6xt8py97.cjs.map +13 -0
- package/dist/shared/{stacks-53bjdb6p.js → stacks-7nvbv61d.js} +8 -8
- package/dist/shared/stacks-azp00pve.js +70 -0
- package/dist/shared/stacks-azp00pve.js.map +11 -0
- package/dist/shared/{stacks-vk8fwz0t.cjs → stacks-b9904rc2.cjs} +3 -2
- package/dist/shared/{stacks-vk8fwz0t.cjs.map → stacks-b9904rc2.cjs.map} +2 -2
- package/dist/shared/{stacks-3y058qda.cjs → stacks-fhzwsn5d.cjs} +16 -2
- package/dist/shared/{stacks-3y058qda.cjs.map → stacks-fhzwsn5d.cjs.map} +5 -4
- package/dist/shared/{stacks-wqgepfab.js → stacks-g11v9a35.js} +22 -5
- package/dist/shared/stacks-g11v9a35.js.map +10 -0
- package/dist/shared/{stacks-6xmk24yw.js → stacks-gfm3r397.cjs} +20 -7
- package/dist/shared/stacks-gfm3r397.cjs.map +11 -0
- package/dist/shared/{stacks-43cxvnr7.js → stacks-jbmcwky5.js} +3 -3
- package/dist/shared/{stacks-q1mjkt15.js → stacks-msmgyerb.js} +4 -4
- package/dist/shared/{stacks-2h8d2y27.js → stacks-qs5fzts5.js} +17 -3
- package/dist/shared/{stacks-2h8d2y27.js.map → stacks-qs5fzts5.js.map} +5 -4
- package/dist/shared/{stacks-vdfag81a.cjs → stacks-shn9zw99.cjs} +49 -3
- package/dist/shared/stacks-shn9zw99.cjs.map +10 -0
- package/dist/shared/{stacks-4trgpb5a.js → stacks-ssndnbbd.js} +48 -13
- package/dist/shared/stacks-ssndnbbd.js.map +15 -0
- package/dist/shared/{stacks-z1j5d6fd.js → stacks-v150hffx.js} +6 -6
- package/dist/shared/{stacks-ertyhttt.cjs → stacks-wamwv8q8.cjs} +41 -4
- package/dist/shared/stacks-wamwv8q8.cjs.map +15 -0
- package/dist/shared/{stacks-a36n7sjz.js → stacks-x94a1d6s.js} +3 -3
- package/dist/src/accounts/index.js +3 -5
- package/dist/src/accounts/index.js.map +2 -2
- package/dist/src/actions/index.d.cts +91 -10
- package/dist/src/actions/index.d.ts +91 -10
- package/dist/src/actions/index.js +13 -15
- package/dist/src/actions/index.js.map +1 -1
- package/dist/src/bitcoin/index.cjs +25 -19
- package/dist/src/bitcoin/index.cjs.map +3 -3
- package/dist/src/bitcoin/index.js +32 -29
- package/dist/src/bitcoin/index.js.map +3 -3
- package/dist/src/bns/index.cjs +4 -16
- package/dist/src/bns/index.cjs.map +3 -3
- package/dist/src/bns/index.js +17 -30
- package/dist/src/bns/index.js.map +3 -3
- package/dist/src/clarity/index.d.cts +50 -1
- package/dist/src/clarity/index.d.ts +50 -1
- package/dist/src/clarity/index.js +8 -7
- package/dist/src/clarity/index.js.map +1 -1
- package/dist/src/index.d.cts +32 -2
- package/dist/src/index.d.ts +32 -2
- package/dist/src/index.js +12 -15
- package/dist/src/index.js.map +2 -2
- package/dist/src/postconditions/index.d.cts +14 -2
- package/dist/src/postconditions/index.d.ts +14 -2
- package/dist/src/postconditions/index.js +3 -3
- package/dist/src/pox/index.cjs +2 -6
- package/dist/src/pox/index.cjs.map +3 -3
- package/dist/src/pox/index.js +14 -19
- package/dist/src/pox/index.js.map +3 -3
- package/dist/src/sbtc/index.cjs +2 -6
- package/dist/src/sbtc/index.cjs.map +3 -3
- package/dist/src/sbtc/index.js +13 -18
- package/dist/src/sbtc/index.js.map +3 -3
- package/dist/src/stackingdao/index.js +11 -13
- package/dist/src/stackingdao/index.js.map +2 -2
- package/dist/src/tools/index.cjs +199 -57
- package/dist/src/tools/index.cjs.map +13 -13
- package/dist/src/tools/index.js +199 -57
- package/dist/src/tools/index.js.map +13 -13
- package/dist/src/transactions/index.cjs +2 -1
- package/dist/src/transactions/index.cjs.map +1 -1
- package/dist/src/transactions/index.d.cts +35 -3
- package/dist/src/transactions/index.d.ts +35 -3
- package/dist/src/transactions/index.js +8 -7
- package/dist/src/transactions/index.js.map +1 -1
- package/dist/src/utils/index.cjs +2 -1
- package/dist/src/utils/index.cjs.map +2 -2
- package/dist/src/utils/index.d.cts +5 -1
- package/dist/src/utils/index.d.ts +5 -1
- package/dist/src/utils/index.js +12 -14
- package/dist/src/utils/index.js.map +2 -2
- package/dist/src/x402/index.d.cts +19 -1
- package/dist/src/x402/index.d.ts +19 -1
- package/dist/src/x402/index.js +9 -10
- package/dist/src/x402/index.js.map +2 -2
- package/package.json +4 -2
- package/dist/shared/stacks-4trgpb5a.js.map +0 -15
- package/dist/shared/stacks-6xmk24yw.js.map +0 -10
- package/dist/shared/stacks-8mj5jw77.js.map +0 -10
- package/dist/shared/stacks-9g0jhab3.cjs +0 -40
- package/dist/shared/stacks-9g0jhab3.cjs.map +0 -10
- package/dist/shared/stacks-ertyhttt.cjs.map +0 -15
- package/dist/shared/stacks-fcaefc5b.cjs +0 -16
- package/dist/shared/stacks-fcaefc5b.cjs.map +0 -10
- package/dist/shared/stacks-g7ffp8aj.js.map +0 -13
- package/dist/shared/stacks-nqae5amn.cjs.map +0 -10
- package/dist/shared/stacks-v9jqcpd4.js +0 -18
- package/dist/shared/stacks-v9jqcpd4.js.map +0 -10
- package/dist/shared/stacks-vdfag81a.cjs.map +0 -10
- package/dist/shared/stacks-wqgepfab.js.map +0 -10
- package/dist/shared/stacks-wyxj879g.cjs.map +0 -13
- package/dist/shared/stacks-xxn5ma6g.js +0 -22
- package/dist/shared/stacks-xxn5ma6g.js.map +0 -10
- package/dist/shared/stacks-ya3x01yd.cjs +0 -16
- package/dist/shared/stacks-ya3x01yd.cjs.map +0 -10
- /package/dist/shared/{stacks-0zysn74p.js.map → stacks-2mm20wqf.js.map} +0 -0
- /package/dist/shared/{stacks-1qmx9kt8.js.map → stacks-3kmj5yre.js.map} +0 -0
- /package/dist/shared/{stacks-ttbq8emk.js.map → stacks-502j0efj.js.map} +0 -0
- /package/dist/shared/{stacks-53bjdb6p.js.map → stacks-7nvbv61d.js.map} +0 -0
- /package/dist/shared/{stacks-43cxvnr7.js.map → stacks-jbmcwky5.js.map} +0 -0
- /package/dist/shared/{stacks-q1mjkt15.js.map → stacks-msmgyerb.js.map} +0 -0
- /package/dist/shared/{stacks-z1j5d6fd.js.map → stacks-v150hffx.js.map} +0 -0
- /package/dist/shared/{stacks-a36n7sjz.js.map → stacks-x94a1d6s.js.map} +0 -0
package/dist/src/sbtc/index.js
CHANGED
|
@@ -3,22 +3,21 @@ import {
|
|
|
3
3
|
bech32m
|
|
4
4
|
} from "../../shared/stacks-5nmz5ad9.js";
|
|
5
5
|
import {
|
|
6
|
-
getContract
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import"../../shared/stacks-
|
|
10
|
-
import"../../shared/stacks-
|
|
6
|
+
getContract,
|
|
7
|
+
resolveNetworkContract
|
|
8
|
+
} from "../../shared/stacks-63xbc6cj.js";
|
|
9
|
+
import"../../shared/stacks-v150hffx.js";
|
|
10
|
+
import"../../shared/stacks-msmgyerb.js";
|
|
11
|
+
import"../../shared/stacks-502j0efj.js";
|
|
11
12
|
import"../../shared/stacks-709tra19.js";
|
|
12
|
-
import"../../shared/stacks-
|
|
13
|
-
import"../../shared/stacks-
|
|
14
|
-
import"../../shared/stacks-
|
|
15
|
-
import"../../shared/stacks-
|
|
16
|
-
import"../../shared/stacks-xxn5ma6g.js";
|
|
17
|
-
import"../../shared/stacks-6xmk24yw.js";
|
|
13
|
+
import"../../shared/stacks-18jv9aen.js";
|
|
14
|
+
import"../../shared/stacks-ssndnbbd.js";
|
|
15
|
+
import"../../shared/stacks-2mm20wqf.js";
|
|
16
|
+
import"../../shared/stacks-azp00pve.js";
|
|
18
17
|
import {
|
|
19
18
|
bytesToHex,
|
|
20
19
|
hexToBytes
|
|
21
|
-
} from "../../shared/stacks-
|
|
20
|
+
} from "../../shared/stacks-qs5fzts5.js";
|
|
22
21
|
import"../../shared/stacks-cfazrteq.js";
|
|
23
22
|
|
|
24
23
|
// src/sbtc/abi.ts
|
|
@@ -115,11 +114,7 @@ function sbtcContractId(network, contract) {
|
|
|
115
114
|
|
|
116
115
|
// src/sbtc/actions.ts
|
|
117
116
|
function getTokenContract(client) {
|
|
118
|
-
|
|
119
|
-
throw new Error("Client must have a chain configured");
|
|
120
|
-
}
|
|
121
|
-
const network = client.chain.network;
|
|
122
|
-
const contract = network === "mainnet" ? SBTC_CONTRACTS.mainnet : SBTC_CONTRACTS.testnet;
|
|
117
|
+
const contract = resolveNetworkContract(client, SBTC_CONTRACTS);
|
|
123
118
|
return getContract({
|
|
124
119
|
client,
|
|
125
120
|
address: contract.address,
|
|
@@ -285,5 +280,5 @@ export {
|
|
|
285
280
|
SBTC_ASSET_IDENTIFIER_MAINNET
|
|
286
281
|
};
|
|
287
282
|
|
|
288
|
-
//# debugId=
|
|
283
|
+
//# debugId=3BB7C491F3B78E4F64756E2164756E21
|
|
289
284
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type { AbiContract } from \"../clarity/abi/contract.ts\";\n\n/**\n * Minimal read-only ABI for `sbtc-token`.\n *\n * Only covers the SIP-010 fungible-token getters needed for supply / balance\n * queries. Public mutating functions are intentionally omitted; the data plane\n * doesn't sign sBTC token transfers itself, and the dataset captures\n * mutation effects through SIP-005 token events on the indexer side.\n */\nexport const SBTC_TOKEN_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\tname: \"get-name\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: { ok: { \"string-ascii\": { length: 32 } }, error: \"none\" },\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-symbol\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: { ok: { \"string-ascii\": { length: 10 } }, error: \"none\" },\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get-decimals\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"none\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-total-supply\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"none\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-balance\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [{ name: \"owner\", type: \"principal\" }],\n\t\t\toutputs: { response: { ok: \"uint128\", error: \"none\" } },\n\t\t},\n\t\t{\n\t\t\tname: \"get-token-uri\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: { optional: { \"string-utf8\": { length: 256 } } },\n\t\t\t\t\terror: \"none\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
|
|
6
6
|
"/**\n * sBTC mainnet contract identifiers.\n *\n * The protocol uses three contracts:\n * - `sbtc-token` — SIP-010 fungible token with mint/burn/transfer SIP-005 events.\n * - `sbtc-deposit` — entry point for deposit completion calls (no print events).\n * - `sbtc-registry` — emits all protocol-state print events (deposits, withdrawals,\n * signer-set rotations, governance).\n *\n * Verified against the deployed mainnet contracts via Hiro's\n * `/v2/contracts/source/...` endpoint.\n */\nexport const SBTC_CONTRACTS = {\n\tmainnet: {\n\t\taddress: \"SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4\",\n\t\ttoken: \"sbtc-token\",\n\t\tdeposit: \"sbtc-deposit\",\n\t\tregistry: \"sbtc-registry\",\n\t},\n\ttestnet: {\n\t\taddress: \"SN3R84XZYA63QS28932XQF3G1J8R9PC3W76P9CSQS\",\n\t\ttoken: \"sbtc-token\",\n\t\tdeposit: \"sbtc-deposit\",\n\t\tregistry: \"sbtc-registry\",\n\t},\n} as const;\n\nexport type SbtcNetwork = keyof typeof SBTC_CONTRACTS;\n\n/** Asset identifier for `sbtc-token` (mainnet). */\nexport const SBTC_ASSET_IDENTIFIER_MAINNET: string = `${SBTC_CONTRACTS.mainnet.address}.${SBTC_CONTRACTS.mainnet.token}::sbtc-token`;\n\n/** Asset identifier for `sbtc-token` (testnet). */\nexport const SBTC_ASSET_IDENTIFIER_TESTNET: string = `${SBTC_CONTRACTS.testnet.address}.${SBTC_CONTRACTS.testnet.token}::sbtc-token`;\n\n/** All print-event topic strings emitted by `sbtc-registry`. */\nexport const SBTC_EVENT_TOPICS = [\n\t\"completed-deposit\",\n\t\"withdrawal-create\",\n\t\"withdrawal-accept\",\n\t\"withdrawal-reject\",\n\t\"key-rotation\",\n\t\"update-protocol-contract\",\n] as const;\n\nexport type SbtcEventTopic = (typeof SBTC_EVENT_TOPICS)[number];\n\n/** Bitcoin address version bytes used in BTC recipient tuples. Same byte map as PoX. */\nexport const SBTC_BTC_ADDRESS_VERSION = {\n\tp2pkh: 0x00,\n\tp2sh: 0x01,\n\tp2sh_p2wpkh: 0x02,\n\tp2sh_p2wsh: 0x03,\n\tp2wpkh: 0x04,\n\tp2wsh: 0x05,\n\tp2tr: 0x06,\n} as const;\n\n/** Number of decimal places in the sBTC fungible token (matches BTC). */\nexport const SBTC_DECIMALS = 8;\n\n/** Smallest unit of sBTC, denominated in satoshis. */\nexport const SBTC_UNIT_NAME = \"satoshis\" as const;\n\n/**\n * Resolve the qualified contract identifier for a given protocol contract.\n *\n * @example\n * sbtcContractId(\"mainnet\", \"registry\")\n * // => \"SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-registry\"\n */\nexport function sbtcContractId(\n\tnetwork: SbtcNetwork,\n\tcontract: \"token\" | \"deposit\" | \"registry\",\n): string {\n\tconst cfg = SBTC_CONTRACTS[network];\n\treturn `${cfg.address}.${cfg[contract]}`;\n}\n",
|
|
7
|
-
"import { getContract } from \"../actions/getContract.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport { SBTC_TOKEN_ABI } from \"./abi.ts\";\nimport { SBTC_CONTRACTS } from \"./constants.ts\";\n\nfunction getTokenContract(client: Client) {\n\
|
|
7
|
+
"import { getContract, resolveNetworkContract } from \"../actions/getContract.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport { SBTC_TOKEN_ABI } from \"./abi.ts\";\nimport { SBTC_CONTRACTS } from \"./constants.ts\";\n\nfunction getTokenContract(client: Client) {\n\tconst contract = resolveNetworkContract(client, SBTC_CONTRACTS);\n\treturn getContract({\n\t\tclient,\n\t\taddress: contract.address,\n\t\tname: contract.token,\n\t\tabi: SBTC_TOKEN_ABI,\n\t});\n}\n\n/** Total sBTC supply, in satoshis. */\nexport async function getTotalSupply(client: Client): Promise<bigint> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getTotalSupply({})) as bigint;\n}\n\n/** sBTC balance of a Stacks principal, in satoshis. */\nexport async function getBalance(\n\tclient: Client,\n\towner: string,\n): Promise<bigint> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getBalance({ owner })) as bigint;\n}\n\n/** Token name (`sBTC` for the canonical mainnet token). */\nexport async function getName(client: Client): Promise<string> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getName({})) as string;\n}\n\n/** Token symbol. */\nexport async function getSymbol(client: Client): Promise<string> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getSymbol({})) as string;\n}\n\n/** Number of decimals reported by `sbtc-token` (8 — matches BTC). */\nexport async function getDecimals(client: Client): Promise<bigint> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getDecimals({})) as bigint;\n}\n\n/** Optional metadata URI returned by the token contract. */\nexport async function getTokenUri(client: Client): Promise<string | null> {\n\tconst token = getTokenContract(client);\n\treturn (await token.read.getTokenUri({})) as string | null;\n}\n",
|
|
8
8
|
"import { bech32, bech32m } from \"@scure/base\";\n\nimport { bytesToHex, hexToBytes } from \"../utils/encoding.ts\";\nimport { SBTC_BTC_ADDRESS_VERSION } from \"./constants.ts\";\nimport type { SbtcBtcRecipient } from \"./types.ts\";\n\nconst BASE58_ALPHABET =\n\t\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\n\nfunction base58Encode(bytes: Uint8Array): string {\n\tlet num = 0n;\n\tfor (const byte of bytes) num = num * 256n + BigInt(byte);\n\n\tlet str = \"\";\n\twhile (num > 0n) {\n\t\tconst r = num % 58n;\n\t\tstr = BASE58_ALPHABET[Number(r)] + str;\n\t\tnum /= 58n;\n\t}\n\tfor (const byte of bytes) {\n\t\tif (byte === 0) str = `1${str}`;\n\t\telse break;\n\t}\n\treturn str;\n}\n\nfunction sha256(bytes: Uint8Array): Uint8Array {\n\tconst hasher = new Bun.CryptoHasher(\"sha256\");\n\thasher.update(bytes);\n\treturn hasher.digest() as Uint8Array;\n}\n\nfunction doubleSha256(bytes: Uint8Array): Uint8Array {\n\treturn sha256(sha256(bytes));\n}\n\nfunction base58CheckEncode(version: number, hashbytes: Uint8Array): string {\n\tconst payload = new Uint8Array(1 + hashbytes.length);\n\tpayload[0] = version;\n\tpayload.set(hashbytes, 1);\n\tconst checksum = doubleSha256(payload).slice(0, 4);\n\tconst full = new Uint8Array(payload.length + 4);\n\tfull.set(payload, 0);\n\tfull.set(checksum, payload.length);\n\treturn base58Encode(full);\n}\n\n/**\n * Format a `(buff 1) + (buff 32)` BTC recipient tuple into a canonical\n * mainnet Bitcoin address string.\n *\n * Used to decode the `recipient` field of `withdrawal-create` events\n * into a human-readable address. Mirrors the reverse direction of the\n * `parseBtcAddress` helper in `pox/utils.ts`.\n */\nexport function formatBtcAddress(recipient: SbtcBtcRecipient): string {\n\tconst { version, hashbytes } = recipient;\n\tswitch (version) {\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2pkh:\n\t\t\treturn base58CheckEncode(0x00, hashbytes);\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2sh:\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2sh_p2wpkh:\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2sh_p2wsh:\n\t\t\treturn base58CheckEncode(0x05, hashbytes);\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2wpkh:\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2wsh: {\n\t\t\tconst words = bech32.toWords(hashbytes);\n\t\t\treturn bech32.encode(\"bc\", [0, ...words]);\n\t\t}\n\t\tcase SBTC_BTC_ADDRESS_VERSION.p2tr: {\n\t\t\tconst words = bech32m.toWords(hashbytes);\n\t\t\treturn bech32m.encode(\"bc\", [1, ...words]);\n\t\t}\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown BTC address version: ${version}`);\n\t}\n}\n\n/**\n * Validate that a buffer is a 32-byte Bitcoin transaction id.\n * Throws if the buffer is the wrong length.\n */\nexport function validateBitcoinTxid(buf: Uint8Array): void {\n\tif (buf.length !== 32) {\n\t\tthrow new Error(`Bitcoin txid must be 32 bytes, got ${buf.length}`);\n\t}\n}\n\n/**\n * Hex-encode a Bitcoin txid for storage / display. Throws if the input is\n * not 32 bytes.\n */\nexport function bitcoinTxidToHex(buf: Uint8Array): string {\n\tvalidateBitcoinTxid(buf);\n\treturn bytesToHex(buf);\n}\n\n/**\n * Parse a hex string back into a 32-byte txid. Mirrors `bitcoinTxidToHex`.\n */\nexport function bitcoinTxidFromHex(hex: string): Uint8Array {\n\tconst buf = hexToBytes(hex);\n\tvalidateBitcoinTxid(buf);\n\treturn buf;\n}\n\n/**\n * Convert satoshis (BigInt) to a decimal-string sBTC amount.\n *\n * sBTC has 8 decimals (matching BTC). 100_000_000 sats = 1 sBTC.\n */\nexport function satsToSbtc(sats: bigint): string {\n\tconst sign = sats < 0n ? \"-\" : \"\";\n\tconst abs = sats < 0n ? -sats : sats;\n\tconst whole = abs / 100_000_000n;\n\tconst frac = abs % 100_000_000n;\n\tif (frac === 0n) return `${sign}${whole}`;\n\tconst fracStr = frac.toString().padStart(8, \"0\").replace(/0+$/, \"\");\n\treturn `${sign}${whole}.${fracStr}`;\n}\n\n/**\n * Parse a decimal-string sBTC amount into satoshis. Inverse of\n * {@link satsToSbtc}.\n */\nexport function sbtcToSats(amount: string): bigint {\n\tconst trimmed = amount.trim();\n\tif (!/^-?\\d+(?:\\.\\d+)?$/.test(trimmed)) {\n\t\tthrow new Error(`Invalid sBTC amount: ${amount}`);\n\t}\n\tconst negative = trimmed.startsWith(\"-\");\n\tconst body = negative ? trimmed.slice(1) : trimmed;\n\tconst dotIndex = body.indexOf(\".\");\n\tconst whole = dotIndex < 0 ? body : body.slice(0, dotIndex);\n\tconst frac = dotIndex < 0 ? \"\" : body.slice(dotIndex + 1);\n\tif (frac.length > 8) {\n\t\tthrow new Error(`sBTC amount has more than 8 decimal places: ${amount}`);\n\t}\n\tconst padded = frac.padEnd(8, \"0\");\n\tconst sats = BigInt(whole) * 100_000_000n + BigInt(padded);\n\treturn negative ? -sats : sats;\n}\n",
|
|
9
9
|
"import type { Client } from \"../clients/types.ts\";\nimport {\n\tgetBalance,\n\tgetDecimals,\n\tgetName,\n\tgetSymbol,\n\tgetTokenUri,\n\tgetTotalSupply,\n} from \"./actions.ts\";\n\nexport type {\n\tCompletedDepositEvent,\n\tKeyRotationEvent,\n\tSbtcBtcRecipient,\n\tSbtcEventByTopic,\n\tSbtcRegistryEvent,\n\tSbtcTokenBurnEvent,\n\tSbtcTokenEvent,\n\tSbtcTokenMintEvent,\n\tSbtcTokenTransferEvent,\n\tUpdateProtocolContractEvent,\n\tWithdrawalAcceptEvent,\n\tWithdrawalCreateEvent,\n\tWithdrawalRejectEvent,\n} from \"./types.ts\";\n\nexport {\n\tSBTC_ASSET_IDENTIFIER_MAINNET,\n\tSBTC_ASSET_IDENTIFIER_TESTNET,\n\tSBTC_BTC_ADDRESS_VERSION,\n\tSBTC_CONTRACTS,\n\tSBTC_DECIMALS,\n\tSBTC_EVENT_TOPICS,\n\tSBTC_UNIT_NAME,\n\tsbtcContractId,\n} from \"./constants.ts\";\nexport type { SbtcEventTopic, SbtcNetwork } from \"./constants.ts\";\nexport {\n\tbitcoinTxidFromHex,\n\tbitcoinTxidToHex,\n\tformatBtcAddress,\n\tsatsToSbtc,\n\tsbtcToSats,\n\tvalidateBitcoinTxid,\n} from \"./utils.ts\";\nexport { SBTC_TOKEN_ABI } from \"./abi.ts\";\n\n/** Actions provided by the sBTC extension. */\nexport type SbtcActions = {\n\tsbtc: {\n\t\tgetTotalSupply: () => Promise<bigint>;\n\t\tgetBalance: (owner: string) => Promise<bigint>;\n\t\tgetName: () => Promise<string>;\n\t\tgetSymbol: () => Promise<string>;\n\t\tgetDecimals: () => Promise<bigint>;\n\t\tgetTokenUri: () => Promise<string | null>;\n\t};\n};\n\n/**\n * sBTC extension for the Stacks client.\n *\n * @example\n * import { createWalletClient, http, mainnet } from \"stacks\";\n * import { sbtc } from \"stacks/sbtc\";\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: http(),\n * }).extend(sbtc());\n *\n * const supply = await client.sbtc.getTotalSupply();\n * const balance = await client.sbtc.getBalance(\"SP1...\");\n */\nexport function sbtc(): (client: Client) => SbtcActions {\n\treturn (client: Client) => ({\n\t\tsbtc: {\n\t\t\tgetTotalSupply: () => getTotalSupply(client),\n\t\t\tgetBalance: (owner: string) => getBalance(client, owner),\n\t\t\tgetName: () => getName(client),\n\t\t\tgetSymbol: () => getSymbol(client),\n\t\t\tgetDecimals: () => getDecimals(client),\n\t\t\tgetTokenUri: () => getTokenUri(client),\n\t\t},\n\t});\n}\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "3BB7C491F3B78E4F64756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
|
@@ -3,22 +3,20 @@ import {
|
|
|
3
3
|
} from "../../shared/stacks-kg1npstf.js";
|
|
4
4
|
import {
|
|
5
5
|
getContract
|
|
6
|
-
} from "../../shared/stacks-
|
|
7
|
-
import"../../shared/stacks-
|
|
8
|
-
import"../../shared/stacks-
|
|
9
|
-
import"../../shared/stacks-
|
|
6
|
+
} from "../../shared/stacks-63xbc6cj.js";
|
|
7
|
+
import"../../shared/stacks-v150hffx.js";
|
|
8
|
+
import"../../shared/stacks-msmgyerb.js";
|
|
9
|
+
import"../../shared/stacks-502j0efj.js";
|
|
10
10
|
import"../../shared/stacks-709tra19.js";
|
|
11
|
-
import"../../shared/stacks-
|
|
11
|
+
import"../../shared/stacks-18jv9aen.js";
|
|
12
12
|
import"../../shared/stacks-z53fwfcm.js";
|
|
13
13
|
import {
|
|
14
14
|
Pc
|
|
15
|
-
} from "../../shared/stacks-
|
|
16
|
-
import"../../shared/stacks-
|
|
17
|
-
import"../../shared/stacks-
|
|
18
|
-
import"../../shared/stacks-
|
|
19
|
-
import"../../shared/stacks-
|
|
20
|
-
import"../../shared/stacks-6xmk24yw.js";
|
|
21
|
-
import"../../shared/stacks-2h8d2y27.js";
|
|
15
|
+
} from "../../shared/stacks-x94a1d6s.js";
|
|
16
|
+
import"../../shared/stacks-ssndnbbd.js";
|
|
17
|
+
import"../../shared/stacks-2mm20wqf.js";
|
|
18
|
+
import"../../shared/stacks-azp00pve.js";
|
|
19
|
+
import"../../shared/stacks-qs5fzts5.js";
|
|
22
20
|
import"../../shared/stacks-cfazrteq.js";
|
|
23
21
|
|
|
24
22
|
// src/stackingdao/abi.ts
|
|
@@ -340,5 +338,5 @@ export {
|
|
|
340
338
|
STACKINGDAO_CONTRACTS
|
|
341
339
|
};
|
|
342
340
|
|
|
343
|
-
//# debugId=
|
|
341
|
+
//# debugId=E241BAB0EAD8275364756E2164756E21
|
|
344
342
|
//# sourceMappingURL=index.js.map
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"import { getContract } from \"../actions/getContract.ts\";\nimport { SIP010_ABI } from \"../clarity/abi/standards.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport { Pc } from \"../postconditions/index.ts\";\nimport {\n\tDATA_CORE_V1_ABI,\n\tDATA_CORE_V3_ABI,\n\tRESERVE_V1_ABI,\n\tSTACKING_DAO_CORE_ABI,\n} from \"./abi.ts\";\nimport { STACKINGDAO_CONTRACTS, TRAIT_CONTRACTS } from \"./constants.ts\";\nimport type {\n\tDepositParams,\n\tExchangeRateInfo,\n\tFeeInfo,\n\tInitWithdrawParams,\n\tWithdrawIdleParams,\n\tWithdrawParams,\n\tWithdrawalInfo,\n} from \"./types.ts\";\n\nfunction assertMainnet(client: Client) {\n\tif (!client.chain) {\n\t\tthrow new Error(\"Client must have a chain configured\");\n\t}\n\tif (client.chain.network !== \"mainnet\") {\n\t\tthrow new Error(\"StackingDAO is only available on mainnet\");\n\t}\n}\n\nfunction getCoreContract(client: Client) {\n\tassertMainnet(client);\n\tconst c = STACKINGDAO_CONTRACTS.core;\n\treturn getContract({\n\t\tclient,\n\t\taddress: c.address,\n\t\tname: c.name,\n\t\tabi: STACKING_DAO_CORE_ABI,\n\t});\n}\n\nfunction getStstxToken(client: Client) {\n\tassertMainnet(client);\n\tconst c = STACKINGDAO_CONTRACTS.ststxToken;\n\treturn getContract({\n\t\tclient,\n\t\taddress: c.address,\n\t\tname: c.name,\n\t\tabi: SIP010_ABI,\n\t});\n}\n\nfunction getDataCoreV1(client: Client) {\n\tassertMainnet(client);\n\tconst c = STACKINGDAO_CONTRACTS.dataCoreV1;\n\treturn getContract({\n\t\tclient,\n\t\taddress: c.address,\n\t\tname: c.name,\n\t\tabi: DATA_CORE_V1_ABI,\n\t});\n}\n\nfunction getDataCoreV3(client: Client) {\n\tassertMainnet(client);\n\tconst c = STACKINGDAO_CONTRACTS.dataCore;\n\treturn getContract({\n\t\tclient,\n\t\taddress: c.address,\n\t\tname: c.name,\n\t\tabi: DATA_CORE_V3_ABI,\n\t});\n}\n\nfunction getReserveContract(client: Client) {\n\tassertMainnet(client);\n\tconst c = STACKINGDAO_CONTRACTS.reserve;\n\treturn getContract({\n\t\tclient,\n\t\taddress: c.address,\n\t\tname: c.name,\n\t\tabi: RESERVE_V1_ABI,\n\t});\n}\n\nconst traits = {\n\treserve: TRAIT_CONTRACTS.reserve,\n\tcommissionContract: TRAIT_CONTRACTS.commission,\n\tstakingContract: TRAIT_CONTRACTS.staking,\n\tdirectHelpers: TRAIT_CONTRACTS.directHelpers,\n};\n\n// ── User Actions ──\n\nexport async function deposit(\n\tclient: Client,\n\tparams: DepositParams,\n): Promise<string> {\n\tconst core = getCoreContract(client);\n\treturn core.call.deposit(\n\t\t{\n\t\t\t...traits,\n\t\t\tstxAmount: params.amount,\n\t\t\treferrer: params.referrer ?? null,\n\t\t\tpool: params.pool ?? null,\n\t\t},\n\t\t{\n\t\t\tpostConditions: client.account?.address\n\t\t\t\t? [\n\t\t\t\t\t\tPc.principal(client.account.address)\n\t\t\t\t\t\t\t.willSendEq(params.amount)\n\t\t\t\t\t\t\t.ustx(),\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t\t},\n\t);\n}\n\nexport async function initWithdraw(\n\tclient: Client,\n\tparams: InitWithdrawParams,\n): Promise<string> {\n\tconst core = getCoreContract(client);\n\tconst ststx = STACKINGDAO_CONTRACTS.ststxToken;\n\treturn core.call.initWithdraw(\n\t\t{\n\t\t\treserve: traits.reserve,\n\t\t\tdirectHelpers: traits.directHelpers,\n\t\t\tststxAmount: params.ststxAmount,\n\t\t},\n\t\t{\n\t\t\tpostConditions: client.account?.address\n\t\t\t\t? [\n\t\t\t\t\t\tPc.principal(client.account.address)\n\t\t\t\t\t\t\t.willSendEq(params.ststxAmount)\n\t\t\t\t\t\t\t.ft(`${ststx.address}.${ststx.name}`, \"ststx\"),\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t\t},\n\t);\n}\n\nexport async function withdraw(\n\tclient: Client,\n\tparams: WithdrawParams,\n): Promise<string> {\n\tconst core = getCoreContract(client);\n\treturn core.call.withdraw({\n\t\treserve: traits.reserve,\n\t\tcommissionContract: traits.commissionContract,\n\t\tstakingContract: traits.stakingContract,\n\t\tnftId: params.nftId,\n\t});\n}\n\nexport async function withdrawIdle(\n\tclient: Client,\n\tparams: WithdrawIdleParams,\n): Promise<string> {\n\tconst core = getCoreContract(client);\n\tconst ststx = STACKINGDAO_CONTRACTS.ststxToken;\n\treturn core.call.withdrawIdle(\n\t\t{\n\t\t\treserve: traits.reserve,\n\t\t\tdirectHelpers: traits.directHelpers,\n\t\t\tcommissionContract: traits.commissionContract,\n\t\t\tstakingContract: traits.stakingContract,\n\t\t\tststxAmount: params.ststxAmount,\n\t\t},\n\t\t{\n\t\t\tpostConditions: client.account?.address\n\t\t\t\t? [\n\t\t\t\t\t\tPc.principal(client.account.address)\n\t\t\t\t\t\t\t.willSendEq(params.ststxAmount)\n\t\t\t\t\t\t\t.ft(`${ststx.address}.${ststx.name}`, \"ststx\"),\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t\t},\n\t);\n}\n\n// ── Read-only Queries ──\n\nexport async function getStSTXBalance(\n\tclient: Client,\n\taddress: string,\n): Promise<bigint> {\n\tconst token = getStstxToken(client);\n\treturn (await token.read.getBalance({ account: address })) as bigint;\n}\n\nexport async function getExchangeRate(\n\tclient: Client,\n): Promise<ExchangeRateInfo> {\n\tconst reserve = getReserveContract(client);\n\tconst dataV3 = getDataCoreV3(client);\n\n\tconst [totalStx, ststxSupply] = await Promise.all([\n\t\treserve.read.getTotalStx({}) as Promise<bigint>,\n\t\tgetTotalSupply(client),\n\t]);\n\n\tconst stxPerStstx = (await dataV3.read.getStxPerStstxHelper({\n\t\tstxAmount: totalStx,\n\t})) as bigint;\n\n\treturn { stxPerStstx, ststxSupply, totalStx };\n}\n\nexport async function getTotalSupply(client: Client): Promise<bigint> {\n\tconst token = getStstxToken(client);\n\treturn (await token.read.getTotalSupply({})) as bigint;\n}\n\nexport async function getWithdrawalInfo(\n\tclient: Client,\n\tnftId: bigint,\n): Promise<WithdrawalInfo> {\n\tconst dataV1 = getDataCoreV1(client);\n\treturn (await dataV1.read.getWithdrawalsByNft({\n\t\tnftId,\n\t})) as WithdrawalInfo;\n}\n\nexport async function getFees(client: Client): Promise<FeeInfo> {\n\tconst core = getCoreContract(client);\n\tconst [stackFee, unstackFee, withdrawIdleFee] = await Promise.all([\n\t\tcore.read.getStackFee({}) as Promise<bigint>,\n\t\tcore.read.getUnstackFee({}) as Promise<bigint>,\n\t\tcore.read.getWithdrawIdleFee({}) as Promise<bigint>,\n\t]);\n\treturn { stackFee, unstackFee, withdrawIdleFee };\n}\n\nexport async function getReserveBalance(client: Client): Promise<bigint> {\n\tconst reserve = getReserveContract(client);\n\treturn (await reserve.read.getTotalStx({})) as bigint;\n}\n\nexport async function getShutdownDeposits(client: Client): Promise<boolean> {\n\tconst core = getCoreContract(client);\n\treturn (await core.read.getShutdownDeposits({})) as boolean;\n}\n",
|
|
8
8
|
"import type { Client } from \"../clients/types.ts\";\nimport {\n\tdeposit,\n\tgetExchangeRate,\n\tgetFees,\n\tgetReserveBalance,\n\tgetShutdownDeposits,\n\tgetStSTXBalance,\n\tgetTotalSupply,\n\tgetWithdrawalInfo,\n\tinitWithdraw,\n\twithdraw,\n\twithdrawIdle,\n} from \"./actions.ts\";\nimport type {\n\tDepositParams,\n\tExchangeRateInfo,\n\tFeeInfo,\n\tInitWithdrawParams,\n\tWithdrawIdleParams,\n\tWithdrawParams,\n\tWithdrawalInfo,\n} from \"./types.ts\";\n\nexport type {\n\tDepositParams,\n\tInitWithdrawParams,\n\tWithdrawParams,\n\tWithdrawIdleParams,\n\tExchangeRateInfo,\n\tWithdrawalInfo,\n\tFeeInfo,\n};\n/** Actions provided by the StackingDAO extension. */\nexport type StackingDaoActions = {\n\tstackingDao: {\n\t\tdeposit: (params: DepositParams) => Promise<string>;\n\t\tinitWithdraw: (params: InitWithdrawParams) => Promise<string>;\n\t\twithdraw: (params: WithdrawParams) => Promise<string>;\n\t\twithdrawIdle: (params: WithdrawIdleParams) => Promise<string>;\n\t\tgetStSTXBalance: (address: string) => Promise<bigint>;\n\t\tgetExchangeRate: () => Promise<ExchangeRateInfo>;\n\t\tgetTotalSupply: () => Promise<bigint>;\n\t\tgetWithdrawalInfo: (nftId: bigint) => Promise<WithdrawalInfo>;\n\t\tgetFees: () => Promise<FeeInfo>;\n\t\tgetReserveBalance: () => Promise<bigint>;\n\t\tgetShutdownDeposits: () => Promise<boolean>;\n\t};\n};\n\nexport { STACKINGDAO_CONTRACTS, TRAIT_CONTRACTS } from \"./constants.ts\";\n\n/**\n * StackingDAO liquid staking extension.\n * Deposit STX → receive stSTX. Auto-compounding stacking rewards.\n *\n * @example\n * import { createWalletClient, http, mainnet } from \"stacks\";\n * import { stackingDao } from \"stacks/stackingdao\";\n *\n * const client = createWalletClient({ ... }).extend(stackingDao());\n *\n * // Deposit STX for stSTX\n * await client.stackingDao.deposit({ amount: 100_000_000_000n });\n *\n * // Check exchange rate\n * const rate = await client.stackingDao.getExchangeRate();\n */\nexport function stackingDao(): (client: Client) => StackingDaoActions {\n\treturn (client: Client) => ({\n\t\tstackingDao: {\n\t\t\t/** Deposit STX, receive stSTX. */\n\t\t\tdeposit: (params: DepositParams) => deposit(client, params),\n\n\t\t\t/** Initiate withdrawal — burns stSTX, mints NFT receipt. */\n\t\t\tinitWithdraw: (params: InitWithdrawParams) =>\n\t\t\t\tinitWithdraw(client, params),\n\n\t\t\t/** Finalize withdrawal — burns NFT, receive STX. */\n\t\t\twithdraw: (params: WithdrawParams) => withdraw(client, params),\n\n\t\t\t/** Withdraw idle STX instantly (burns stSTX). */\n\t\t\twithdrawIdle: (params: WithdrawIdleParams) =>\n\t\t\t\twithdrawIdle(client, params),\n\n\t\t\t/** Get stSTX balance for an address. */\n\t\t\tgetStSTXBalance: (address: string) => getStSTXBalance(client, address),\n\n\t\t\t/** Get current STX/stSTX exchange rate info. */\n\t\t\tgetExchangeRate: () => getExchangeRate(client),\n\n\t\t\t/** Get total stSTX supply. */\n\t\t\tgetTotalSupply: () => getTotalSupply(client),\n\n\t\t\t/** Get withdrawal NFT info by ID. Returns tuple with amounts and unlock height. */\n\t\t\tgetWithdrawalInfo: (nftId: bigint) => getWithdrawalInfo(client, nftId),\n\n\t\t\t/** Get current fee rates. */\n\t\t\tgetFees: () => getFees(client),\n\n\t\t\t/** Get total STX in reserve. */\n\t\t\tgetReserveBalance: () => getReserveBalance(client),\n\n\t\t\t/** Check if deposits are shut down. */\n\t\t\tgetShutdownDeposits: () => getShutdownDeposits(client),\n\t\t},\n\t});\n}\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "E241BAB0EAD8275364756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
package/dist/src/tools/index.cjs
CHANGED
|
@@ -452,6 +452,11 @@ var NonFungibleConditionCode = {
|
|
|
452
452
|
Sends: 16,
|
|
453
453
|
DoesNotSend: 17
|
|
454
454
|
};
|
|
455
|
+
var PoxConditionCode = {
|
|
456
|
+
WillNotPerform: 48,
|
|
457
|
+
MayPerform: 49,
|
|
458
|
+
WillPerform: 50
|
|
459
|
+
};
|
|
455
460
|
var PostConditionPrincipalId = {
|
|
456
461
|
Origin: 1,
|
|
457
462
|
Standard: 2,
|
|
@@ -460,7 +465,9 @@ var PostConditionPrincipalId = {
|
|
|
460
465
|
var AssetType = {
|
|
461
466
|
STX: 0,
|
|
462
467
|
Fungible: 1,
|
|
463
|
-
NonFungible: 2
|
|
468
|
+
NonFungible: 2,
|
|
469
|
+
Staking: 3,
|
|
470
|
+
Pox: 4
|
|
464
471
|
};
|
|
465
472
|
var RECOVERABLE_ECDSA_SIG_LENGTH_BYTES = 65;
|
|
466
473
|
var MEMO_MAX_LENGTH_BYTES = 34;
|
|
@@ -557,6 +564,17 @@ function serializePostCondition(pc) {
|
|
|
557
564
|
parts.push(serializeCVBytes(pc.assetId));
|
|
558
565
|
parts.push(writeUInt8(pc.conditionCode));
|
|
559
566
|
break;
|
|
567
|
+
case "staking":
|
|
568
|
+
parts.push(writeUInt8(AssetType.Staking));
|
|
569
|
+
parts.push(serializePrincipal(pc.principal));
|
|
570
|
+
parts.push(writeUInt8(pc.conditionCode));
|
|
571
|
+
parts.push(intToBytes(pc.amount, 8));
|
|
572
|
+
break;
|
|
573
|
+
case "pox":
|
|
574
|
+
parts.push(writeUInt8(AssetType.Pox));
|
|
575
|
+
parts.push(serializePrincipal(pc.principal));
|
|
576
|
+
parts.push(writeUInt8(pc.conditionCode));
|
|
577
|
+
break;
|
|
560
578
|
}
|
|
561
579
|
return concatBytes(...parts);
|
|
562
580
|
}
|
|
@@ -730,7 +748,37 @@ class BytesReader {
|
|
|
730
748
|
}
|
|
731
749
|
}
|
|
732
750
|
|
|
751
|
+
// src/utils/constants.ts
|
|
752
|
+
var MAX_U128 = (1n << 128n) - 1n;
|
|
753
|
+
var MAX_I128 = (1n << 127n) - 1n;
|
|
754
|
+
var MIN_I128 = -(1n << 127n);
|
|
755
|
+
var AddressVersion = {
|
|
756
|
+
MainnetSingleSig: 22,
|
|
757
|
+
MainnetMultiSig: 20,
|
|
758
|
+
TestnetSingleSig: 26,
|
|
759
|
+
TestnetMultiSig: 21
|
|
760
|
+
};
|
|
761
|
+
|
|
762
|
+
// src/utils/hash.ts
|
|
763
|
+
var import_legacy = require("@noble/hashes/legacy.js");
|
|
764
|
+
var import_sha22 = require("@noble/hashes/sha2.js");
|
|
765
|
+
var import_sha23 = require("@noble/hashes/sha2.js");
|
|
766
|
+
function hash160(input) {
|
|
767
|
+
return import_legacy.ripemd160(import_sha22.sha256(input));
|
|
768
|
+
}
|
|
769
|
+
function txidFromBytes(data) {
|
|
770
|
+
return bytesToHex(import_sha23.sha512_256(data));
|
|
771
|
+
}
|
|
772
|
+
function hashP2PKH(input) {
|
|
773
|
+
return bytesToHex(hash160(input));
|
|
774
|
+
}
|
|
775
|
+
|
|
733
776
|
// src/utils/address.ts
|
|
777
|
+
function publicKeyToAddress(publicKey, network = "mainnet") {
|
|
778
|
+
const bytes = typeof publicKey === "string" ? hexToBytes(without0x(publicKey)) : publicKey;
|
|
779
|
+
const version = network === "mainnet" ? AddressVersion.MainnetSingleSig : AddressVersion.TestnetSingleSig;
|
|
780
|
+
return c32address(version, bytesToHex(hash160(bytes)));
|
|
781
|
+
}
|
|
734
782
|
function parseContractId(contractId) {
|
|
735
783
|
const [address, name] = contractId.split(".");
|
|
736
784
|
if (!address || !name)
|
|
@@ -743,9 +791,9 @@ function isClarityName(name) {
|
|
|
743
791
|
}
|
|
744
792
|
|
|
745
793
|
// src/clarity/values.ts
|
|
746
|
-
var
|
|
747
|
-
var
|
|
748
|
-
var
|
|
794
|
+
var MAX_U1282 = BigInt("0xffffffffffffffffffffffffffffffff");
|
|
795
|
+
var MIN_I1282 = BigInt("-170141183460469231731687303715884105728");
|
|
796
|
+
var MAX_I1282 = BigInt("0x7fffffffffffffffffffffffffffffff");
|
|
749
797
|
function intCV(value) {
|
|
750
798
|
let v = value;
|
|
751
799
|
if (typeof v === "string" && v.toLowerCase().startsWith("0x")) {
|
|
@@ -754,18 +802,18 @@ function intCV(value) {
|
|
|
754
802
|
if (v instanceof Uint8Array)
|
|
755
803
|
v = bytesToTwosBigInt(v);
|
|
756
804
|
const n = intToBigInt(v);
|
|
757
|
-
if (n >
|
|
758
|
-
throw new RangeError(`Int exceeds max i128: ${
|
|
759
|
-
if (n <
|
|
760
|
-
throw new RangeError(`Int below min i128: ${
|
|
805
|
+
if (n > MAX_I1282)
|
|
806
|
+
throw new RangeError(`Int exceeds max i128: ${MAX_I1282}`);
|
|
807
|
+
if (n < MIN_I1282)
|
|
808
|
+
throw new RangeError(`Int below min i128: ${MIN_I1282}`);
|
|
761
809
|
return { type: "int", value: n };
|
|
762
810
|
}
|
|
763
811
|
function uintCV(value) {
|
|
764
812
|
const n = intToBigInt(value);
|
|
765
813
|
if (n < 0n)
|
|
766
814
|
throw new RangeError("Cannot construct unsigned int from negative value");
|
|
767
|
-
if (n >
|
|
768
|
-
throw new RangeError(`UInt exceeds max u128: ${
|
|
815
|
+
if (n > MAX_U1282)
|
|
816
|
+
throw new RangeError(`UInt exceeds max u128: ${MAX_U1282}`);
|
|
769
817
|
return { type: "uint", value: n };
|
|
770
818
|
}
|
|
771
819
|
var trueCV = () => ({ type: "true" });
|
|
@@ -778,13 +826,13 @@ function bufferCV(buffer) {
|
|
|
778
826
|
return { type: "buffer", value: bytesToHex(buffer) };
|
|
779
827
|
}
|
|
780
828
|
function standardPrincipalCV(address) {
|
|
781
|
-
const [version,
|
|
782
|
-
const normalized = c32address(version,
|
|
829
|
+
const [version, hash1602] = c32addressDecode(address);
|
|
830
|
+
const normalized = c32address(version, hash1602);
|
|
783
831
|
return { type: "address", value: normalized };
|
|
784
832
|
}
|
|
785
833
|
function contractPrincipalCV(address, contractName) {
|
|
786
|
-
const [version,
|
|
787
|
-
const normalized = c32address(version,
|
|
834
|
+
const [version, hash1602] = c32addressDecode(address);
|
|
835
|
+
const normalized = c32address(version, hash1602);
|
|
788
836
|
if (utf8ToBytes(contractName).byteLength >= 128) {
|
|
789
837
|
throw new Error("Contract name must be less than 128 bytes");
|
|
790
838
|
}
|
|
@@ -855,8 +903,8 @@ var Cl = {
|
|
|
855
903
|
// src/clarity/deserialize.ts
|
|
856
904
|
function readAddress(reader) {
|
|
857
905
|
const version = reader.readUInt8();
|
|
858
|
-
const
|
|
859
|
-
return c32address(version,
|
|
906
|
+
const hash1602 = bytesToHex(reader.readBytes(20));
|
|
907
|
+
return c32address(version, hash1602);
|
|
860
908
|
}
|
|
861
909
|
function readLPString(reader, prefixBytes = 1) {
|
|
862
910
|
let length = 0;
|
|
@@ -953,11 +1001,6 @@ function toCamelCase(str) {
|
|
|
953
1001
|
return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase()).replace(/-([A-Z])/g, (_, letter) => letter).replace(/-(\d)/g, (_, digit) => digit).replace(/-/g, "").replace(/^\d/, "_$&");
|
|
954
1002
|
}
|
|
955
1003
|
|
|
956
|
-
// src/utils/constants.ts
|
|
957
|
-
var MAX_U1282 = (1n << 128n) - 1n;
|
|
958
|
-
var MAX_I1282 = (1n << 127n) - 1n;
|
|
959
|
-
var MIN_I1282 = -(1n << 127n);
|
|
960
|
-
|
|
961
1004
|
// src/clarity/abi/guards.ts
|
|
962
1005
|
function isAbiList(type) {
|
|
963
1006
|
return typeof type === "object" && type !== null && "list" in type;
|
|
@@ -982,7 +1025,64 @@ function isAbiStringUtf8(type) {
|
|
|
982
1025
|
}
|
|
983
1026
|
|
|
984
1027
|
// src/clarity/bridge.ts
|
|
1028
|
+
var CV_TYPE_TAGS = new Set([
|
|
1029
|
+
"int",
|
|
1030
|
+
"uint",
|
|
1031
|
+
"true",
|
|
1032
|
+
"false",
|
|
1033
|
+
"address",
|
|
1034
|
+
"contract",
|
|
1035
|
+
"ascii",
|
|
1036
|
+
"utf8",
|
|
1037
|
+
"buffer",
|
|
1038
|
+
"list",
|
|
1039
|
+
"tuple",
|
|
1040
|
+
"none",
|
|
1041
|
+
"some",
|
|
1042
|
+
"ok",
|
|
1043
|
+
"err"
|
|
1044
|
+
]);
|
|
1045
|
+
function isClarityValue(value) {
|
|
1046
|
+
if (typeof value !== "object" || value === null)
|
|
1047
|
+
return false;
|
|
1048
|
+
const type = value.type;
|
|
1049
|
+
if (typeof type !== "string" || !CV_TYPE_TAGS.has(type))
|
|
1050
|
+
return false;
|
|
1051
|
+
if (type === "true" || type === "false" || type === "none")
|
|
1052
|
+
return true;
|
|
1053
|
+
return "value" in value;
|
|
1054
|
+
}
|
|
1055
|
+
var HEX_PAIRS_REGEX = /^(?:[0-9a-fA-F]{2})+$/;
|
|
1056
|
+
function coerceBuffer(value) {
|
|
1057
|
+
if (value instanceof Uint8Array)
|
|
1058
|
+
return bufferCV(value);
|
|
1059
|
+
if (typeof value === "object" && value !== null && "type" in value) {
|
|
1060
|
+
const tagged = value;
|
|
1061
|
+
if (tagged.type === "buffer" && isClarityValue(value))
|
|
1062
|
+
return value;
|
|
1063
|
+
if (typeof tagged.value === "string") {
|
|
1064
|
+
if (tagged.type === "ascii")
|
|
1065
|
+
return Cl.bufferFromAscii(tagged.value);
|
|
1066
|
+
if (tagged.type === "utf8")
|
|
1067
|
+
return Cl.bufferFromUtf8(tagged.value);
|
|
1068
|
+
if (tagged.type === "hex")
|
|
1069
|
+
return Cl.bufferFromHex(tagged.value);
|
|
1070
|
+
}
|
|
1071
|
+
throw new Error(`Unsupported buffer input: ${JSON.stringify(value)}`);
|
|
1072
|
+
}
|
|
1073
|
+
if (typeof value === "string") {
|
|
1074
|
+
const hex = value.startsWith("0x") ? value.slice(2) : value;
|
|
1075
|
+
if (HEX_PAIRS_REGEX.test(hex))
|
|
1076
|
+
return Cl.bufferFromHex(hex);
|
|
1077
|
+
return Cl.bufferFromUtf8(value);
|
|
1078
|
+
}
|
|
1079
|
+
throw new Error("buffer arg expects Uint8Array, hex string, { type, value }, or BufferCV");
|
|
1080
|
+
}
|
|
985
1081
|
function jsToClarityValue(abiType, value) {
|
|
1082
|
+
if (isAbiBuffer(abiType))
|
|
1083
|
+
return coerceBuffer(value);
|
|
1084
|
+
if (isClarityValue(value))
|
|
1085
|
+
return value;
|
|
986
1086
|
if (abiType === "uint128")
|
|
987
1087
|
return uintCV(value);
|
|
988
1088
|
if (abiType === "int128")
|
|
@@ -995,8 +1095,6 @@ function jsToClarityValue(abiType, value) {
|
|
|
995
1095
|
return stringAsciiCV(value);
|
|
996
1096
|
if (isAbiStringUtf8(abiType))
|
|
997
1097
|
return stringUtf8CV(value);
|
|
998
|
-
if (isAbiBuffer(abiType))
|
|
999
|
-
return bufferCV(value);
|
|
1000
1098
|
if (isAbiList(abiType)) {
|
|
1001
1099
|
const arr = value;
|
|
1002
1100
|
return listCV(arr.map((item) => jsToClarityValue(abiType.list.type, item)));
|
|
@@ -1102,37 +1200,10 @@ function clarityValueToJSInner(abiType, cv) {
|
|
|
1102
1200
|
throw new Error(`Unknown ABI type: ${JSON.stringify(abiType)}`);
|
|
1103
1201
|
}
|
|
1104
1202
|
|
|
1105
|
-
// src/actions/public/getMapEntry.ts
|
|
1106
|
-
async function getMapEntry(client, params) {
|
|
1107
|
-
const [address, name] = parseContractId(params.contract);
|
|
1108
|
-
const serializedKey = with0x(bytesToHex(serializeCVBytes(params.key)));
|
|
1109
|
-
const data = await client.request(`/v2/map_entry/${address}/${name}/${params.mapName}`, {
|
|
1110
|
-
method: "POST",
|
|
1111
|
-
body: serializedKey
|
|
1112
|
-
});
|
|
1113
|
-
return deserializeCVBytes(data.data);
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
1203
|
// src/transactions/authorization.ts
|
|
1117
1204
|
var import_hmac = require("@noble/hashes/hmac.js");
|
|
1118
1205
|
var import_sha24 = require("@noble/hashes/sha2.js");
|
|
1119
1206
|
var import_secp256k1 = require("@noble/secp256k1");
|
|
1120
|
-
|
|
1121
|
-
// src/utils/hash.ts
|
|
1122
|
-
var import_legacy = require("@noble/hashes/legacy.js");
|
|
1123
|
-
var import_sha22 = require("@noble/hashes/sha2.js");
|
|
1124
|
-
var import_sha23 = require("@noble/hashes/sha2.js");
|
|
1125
|
-
function hash160(input) {
|
|
1126
|
-
return import_legacy.ripemd160(import_sha22.sha256(input));
|
|
1127
|
-
}
|
|
1128
|
-
function txidFromBytes(data) {
|
|
1129
|
-
return bytesToHex(import_sha23.sha512_256(data));
|
|
1130
|
-
}
|
|
1131
|
-
function hashP2PKH(input) {
|
|
1132
|
-
return bytesToHex(hash160(input));
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
// src/transactions/authorization.ts
|
|
1136
1207
|
import_secp256k1.etc.hmacSha256Sync = (key, ...msgs) => {
|
|
1137
1208
|
const h = import_hmac.hmac.create(import_sha24.sha256, key);
|
|
1138
1209
|
for (const msg of msgs)
|
|
@@ -1284,8 +1355,26 @@ function convertPostCondition(pc) {
|
|
|
1284
1355
|
assetId: pc.assetId
|
|
1285
1356
|
};
|
|
1286
1357
|
}
|
|
1358
|
+
case "staking-postcondition":
|
|
1359
|
+
return {
|
|
1360
|
+
type: "staking",
|
|
1361
|
+
principal: resolvePrincipal(pc.address),
|
|
1362
|
+
conditionCode: FUNGIBLE_CODE_MAP[pc.condition],
|
|
1363
|
+
amount: intToBigInt(pc.amount)
|
|
1364
|
+
};
|
|
1365
|
+
case "pox-postcondition":
|
|
1366
|
+
return {
|
|
1367
|
+
type: "pox",
|
|
1368
|
+
principal: resolvePrincipal(pc.address),
|
|
1369
|
+
conditionCode: POX_CODE_MAP[pc.condition]
|
|
1370
|
+
};
|
|
1287
1371
|
}
|
|
1288
1372
|
}
|
|
1373
|
+
var POX_CODE_MAP = {
|
|
1374
|
+
"will-not-perform": PoxConditionCode.WillNotPerform,
|
|
1375
|
+
"may-perform": PoxConditionCode.MayPerform,
|
|
1376
|
+
"will-perform": PoxConditionCode.WillPerform
|
|
1377
|
+
};
|
|
1289
1378
|
function resolveSpendingCondition(opts, nonce, fee) {
|
|
1290
1379
|
if (opts.publicKeys) {
|
|
1291
1380
|
return createMultiSigSpendingCondition(opts.publicKeys, opts.signaturesRequired, nonce, fee, opts.hashMode);
|
|
@@ -1326,6 +1415,17 @@ function buildContractCall(options) {
|
|
|
1326
1415
|
return tx;
|
|
1327
1416
|
}
|
|
1328
1417
|
|
|
1418
|
+
// src/actions/public/getMapEntry.ts
|
|
1419
|
+
async function getMapEntry(client, params) {
|
|
1420
|
+
const [address, name] = parseContractId(params.contract);
|
|
1421
|
+
const serializedKey = with0x(bytesToHex(serializeCVBytes(params.key)));
|
|
1422
|
+
const data = await client.request(`/v2/map_entry/${address}/${name}/${params.mapName}`, {
|
|
1423
|
+
method: "POST",
|
|
1424
|
+
body: serializedKey
|
|
1425
|
+
});
|
|
1426
|
+
return deserializeCVBytes(data.data);
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1329
1429
|
// src/transactions/signer.ts
|
|
1330
1430
|
function txid(tx) {
|
|
1331
1431
|
return txidFromBytes(serializeTransaction(tx));
|
|
@@ -1564,6 +1664,46 @@ function getContract(params) {
|
|
|
1564
1664
|
};
|
|
1565
1665
|
}
|
|
1566
1666
|
});
|
|
1667
|
+
const buildCall = new Proxy({}, {
|
|
1668
|
+
get(_target, prop) {
|
|
1669
|
+
const fnName = camelToKebab.get(prop) ?? prop;
|
|
1670
|
+
const fn = fnByName.get(fnName);
|
|
1671
|
+
if (!fn || fn.access !== "public")
|
|
1672
|
+
return;
|
|
1673
|
+
return async (args, options) => {
|
|
1674
|
+
const publicKey = options?.publicKey ?? client.account?.publicKey;
|
|
1675
|
+
if (!publicKey) {
|
|
1676
|
+
throw new Error("buildCall requires a publicKey (pass options.publicKey or configure a client account)");
|
|
1677
|
+
}
|
|
1678
|
+
const functionArgs = buildFunctionArgs(fn, args);
|
|
1679
|
+
const network = client.chain?.network ?? "mainnet";
|
|
1680
|
+
const nonce = options?.nonce ?? await resolveNonce(client, publicKeyToAddress(publicKey, network));
|
|
1681
|
+
const unsigned = buildContractCall({
|
|
1682
|
+
contractAddress: address,
|
|
1683
|
+
contractName,
|
|
1684
|
+
functionName: fn.name,
|
|
1685
|
+
functionArgs,
|
|
1686
|
+
fee: options?.fee ?? 0n,
|
|
1687
|
+
nonce,
|
|
1688
|
+
publicKey,
|
|
1689
|
+
chain: client.chain,
|
|
1690
|
+
postConditionMode: options?.postConditionMode,
|
|
1691
|
+
postConditions: options?.postConditions,
|
|
1692
|
+
sponsored: options?.sponsored
|
|
1693
|
+
});
|
|
1694
|
+
if (options?.fee === undefined) {
|
|
1695
|
+
const estimates = await estimateFee(client, {
|
|
1696
|
+
transaction: unsigned
|
|
1697
|
+
});
|
|
1698
|
+
const mid = estimates[1] ?? estimates[0];
|
|
1699
|
+
if (mid) {
|
|
1700
|
+
unsigned.auth.spendingCondition.fee = BigInt(mid.fee);
|
|
1701
|
+
}
|
|
1702
|
+
}
|
|
1703
|
+
return unsigned;
|
|
1704
|
+
};
|
|
1705
|
+
}
|
|
1706
|
+
});
|
|
1567
1707
|
const maps = new Proxy({}, {
|
|
1568
1708
|
get(_target, prop) {
|
|
1569
1709
|
const mapName = camelToKebab.get(prop) ?? prop;
|
|
@@ -1586,7 +1726,13 @@ function getContract(params) {
|
|
|
1586
1726
|
};
|
|
1587
1727
|
}
|
|
1588
1728
|
});
|
|
1589
|
-
return { read, call, maps };
|
|
1729
|
+
return { read, call, buildCall, maps };
|
|
1730
|
+
}
|
|
1731
|
+
function resolveNetworkContract(client, contracts) {
|
|
1732
|
+
if (!client.chain) {
|
|
1733
|
+
throw new Error("Client must have a chain configured");
|
|
1734
|
+
}
|
|
1735
|
+
return contracts[client.chain.network];
|
|
1590
1736
|
}
|
|
1591
1737
|
function buildFunctionArgs(fn, args) {
|
|
1592
1738
|
return fn.args.map((arg) => {
|
|
@@ -2108,11 +2254,7 @@ function validateFQN(fqn) {
|
|
|
2108
2254
|
|
|
2109
2255
|
// src/bns/actions.ts
|
|
2110
2256
|
function getBnsContract(client) {
|
|
2111
|
-
|
|
2112
|
-
throw new Error("Client must have a chain configured");
|
|
2113
|
-
}
|
|
2114
|
-
const network = client.chain.network;
|
|
2115
|
-
const contract = network === "mainnet" ? BNS_CONTRACTS.mainnet : BNS_CONTRACTS.testnet;
|
|
2257
|
+
const contract = resolveNetworkContract(client, BNS_CONTRACTS);
|
|
2116
2258
|
return getContract({
|
|
2117
2259
|
client,
|
|
2118
2260
|
address: contract.address,
|
|
@@ -2754,5 +2896,5 @@ var getNftHoldings = import_ai.tool({
|
|
|
2754
2896
|
execute: ({ principal, limit }) => nftHoldings(getDefaultPublicClient(), principal, limit)
|
|
2755
2897
|
});
|
|
2756
2898
|
|
|
2757
|
-
//# debugId=
|
|
2899
|
+
//# debugId=47021AD178AA414364756E2164756E21
|
|
2758
2900
|
//# sourceMappingURL=index.cjs.map
|