@secondlayer/stacks 0.3.0 → 1.0.0-beta.1
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/src/index.cjs +1 -84
- package/dist/src/index.cjs.map +3 -6
- package/dist/src/index.d.cts +32 -179
- package/dist/src/index.d.ts +32 -179
- package/dist/src/index.js +1 -84
- package/dist/src/index.js.map +3 -6
- package/dist/src/tools/btc/index.cjs.map +2 -2
- package/dist/src/tools/btc/index.js.map +2 -2
- package/dist/src/tools/index.cjs.map +2 -2
- package/dist/src/tools/index.js.map +2 -2
- package/dist/src/triggers/index.cjs.map +2 -2
- package/dist/src/triggers/index.d.cts +5 -1
- package/dist/src/triggers/index.d.ts +5 -1
- package/dist/src/triggers/index.js.map +2 -2
- package/package.json +3 -37
- package/dist/src/tx/index.cjs +0 -65
- package/dist/src/tx/index.cjs.map +0 -10
- package/dist/src/tx/index.d.cts +0 -42
- package/dist/src/tx/index.d.ts +0 -42
- package/dist/src/tx/index.js +0 -22
- package/dist/src/tx/index.js.map +0 -10
- package/dist/src/ui/index.cjs +0 -431
- package/dist/src/ui/index.cjs.map +0 -27
- package/dist/src/ui/index.d.cts +0 -107
- package/dist/src/ui/index.d.ts +0 -107
- package/dist/src/ui/index.js +0 -391
- package/dist/src/ui/index.js.map +0 -27
- package/dist/src/ui/schemas.cjs +0 -134
- package/dist/src/ui/schemas.cjs.map +0 -18
- package/dist/src/ui/schemas.d.cts +0 -83
- package/dist/src/ui/schemas.d.ts +0 -83
- package/dist/src/ui/schemas.js +0 -91
- package/dist/src/ui/schemas.js.map +0 -18
package/dist/src/index.cjs
CHANGED
|
@@ -3,7 +3,6 @@ var exports_src = {};
|
|
|
3
3
|
__export(exports_src, {
|
|
4
4
|
webSocket: () => webSocket,
|
|
5
5
|
walletActions: () => walletActions,
|
|
6
|
-
tx: () => tx,
|
|
7
6
|
testnet: () => testnet,
|
|
8
7
|
publicActions: () => publicActions,
|
|
9
8
|
providerToAccount: () => providerToAccount,
|
|
@@ -24,13 +23,8 @@ __export(exports_src, {
|
|
|
24
23
|
createPublicClient: () => createPublicClient,
|
|
25
24
|
createMultiSigClient: () => createMultiSigClient,
|
|
26
25
|
createClient: () => createClient,
|
|
27
|
-
broadcastContext: () => broadcastContext,
|
|
28
|
-
broadcast: () => broadcast,
|
|
29
26
|
ZERO_ADDRESS: () => ZERO_ADDRESS,
|
|
30
27
|
WebSocketError: () => WebSocketError,
|
|
31
|
-
TxTimeoutError: () => TxTimeoutError,
|
|
32
|
-
TxSignerRefusedError: () => TxSignerRefusedError,
|
|
33
|
-
TxRejectedError: () => TxRejectedError,
|
|
34
28
|
TransactionError: () => TransactionError,
|
|
35
29
|
TESTNET_ZERO_ADDRESS: () => TESTNET_ZERO_ADDRESS,
|
|
36
30
|
SimulationError: () => SimulationError,
|
|
@@ -45,83 +39,6 @@ __export(exports_src, {
|
|
|
45
39
|
});
|
|
46
40
|
module.exports = __toCommonJS(exports_src);
|
|
47
41
|
|
|
48
|
-
// src/broadcast.ts
|
|
49
|
-
var import_node_async_hooks = require("node:async_hooks");
|
|
50
|
-
var broadcastContext = new import_node_async_hooks.AsyncLocalStorage;
|
|
51
|
-
async function broadcast(intent, opts) {
|
|
52
|
-
const runtime = broadcastContext.getStore();
|
|
53
|
-
if (!runtime) {
|
|
54
|
-
throw new Error("broadcast() called outside a workflow runner context. " + "Only call `broadcast` inside a workflow handler (directly or inside `step.run`).");
|
|
55
|
-
}
|
|
56
|
-
if (opts.maxMicroStx != null && opts.maxMicroStx <= 0n) {
|
|
57
|
-
throw new Error("maxMicroStx must be positive when set");
|
|
58
|
-
}
|
|
59
|
-
if (opts.maxFee != null && opts.maxFee <= 0n) {
|
|
60
|
-
throw new Error("maxFee must be positive when set");
|
|
61
|
-
}
|
|
62
|
-
return runtime.broadcast(intent, opts);
|
|
63
|
-
}
|
|
64
|
-
// src/errors.ts
|
|
65
|
-
class TxRejectedError extends Error {
|
|
66
|
-
reason;
|
|
67
|
-
txId;
|
|
68
|
-
name = "TxRejectedError";
|
|
69
|
-
constructor(message, reason, txId) {
|
|
70
|
-
super(message);
|
|
71
|
-
this.reason = reason;
|
|
72
|
-
this.txId = txId;
|
|
73
|
-
}
|
|
74
|
-
get isRetryable() {
|
|
75
|
-
switch (this.reason) {
|
|
76
|
-
case "abort_by_post_condition":
|
|
77
|
-
case "abort_by_response":
|
|
78
|
-
case "signature_invalid":
|
|
79
|
-
return false;
|
|
80
|
-
default:
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
class TxTimeoutError extends Error {
|
|
87
|
-
txId;
|
|
88
|
-
timeoutMs;
|
|
89
|
-
name = "TxTimeoutError";
|
|
90
|
-
isRetryable = true;
|
|
91
|
-
constructor(message, txId, timeoutMs) {
|
|
92
|
-
super(message);
|
|
93
|
-
this.txId = txId;
|
|
94
|
-
this.timeoutMs = timeoutMs;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
class TxSignerRefusedError extends Error {
|
|
99
|
-
signerName;
|
|
100
|
-
reason;
|
|
101
|
-
name = "TxSignerRefusedError";
|
|
102
|
-
isRetryable = false;
|
|
103
|
-
constructor(message, signerName, reason) {
|
|
104
|
-
super(message);
|
|
105
|
-
this.signerName = signerName;
|
|
106
|
-
this.reason = reason;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// src/tx/builders.ts
|
|
110
|
-
var tx = {
|
|
111
|
-
transfer: (opts) => ({
|
|
112
|
-
kind: "transfer",
|
|
113
|
-
...opts
|
|
114
|
-
}),
|
|
115
|
-
contractCall: (opts) => ({ kind: "contract-call", ...opts }),
|
|
116
|
-
deploy: (opts) => ({
|
|
117
|
-
kind: "deploy",
|
|
118
|
-
...opts
|
|
119
|
-
}),
|
|
120
|
-
multisend: (opts) => ({
|
|
121
|
-
kind: "multisend",
|
|
122
|
-
...opts
|
|
123
|
-
})
|
|
124
|
-
};
|
|
125
42
|
// src/clients/createClient.ts
|
|
126
43
|
var BASE_KEYS = new Set([
|
|
127
44
|
"chain",
|
|
@@ -652,5 +569,5 @@ class ReadOnlyCallError extends BaseError {
|
|
|
652
569
|
name = "ReadOnlyCallError";
|
|
653
570
|
}
|
|
654
571
|
|
|
655
|
-
//# debugId=
|
|
572
|
+
//# debugId=5653DB57F28E623864756E2164756E21
|
|
656
573
|
//# sourceMappingURL=index.cjs.map
|
package/dist/src/index.cjs.map
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/
|
|
3
|
+
"sources": ["../src/clients/createClient.ts", "../src/clients/decorators/public.ts", "../src/clients/createPublicClient.ts", "../src/clients/decorators/wallet.ts", "../src/clients/createWalletClient.ts", "../src/clients/decorators/multisig.ts", "../src/clients/createMultiSigClient.ts", "../src/transports/createTransport.ts", "../src/transports/http.ts", "../src/transports/custom.ts", "../src/transports/fallback.ts", "../src/transports/webSocket.ts", "../src/errors/contract.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { TxIntent } from \"./tx/builders.ts\";\n\n/**\n * Submit a transaction intent to the Stacks network via a workflow-declared\n * signer. The Secondlayer runner intercepts this call to:\n *\n * 1. Resolve `signer` to a `RemoteSignerConfig` (endpoint + publicKey +\n * hmacRef) declared on the workflow.\n * 2. Fetch the HMAC secret from the runtime secret store.\n * 3. Enforce safety caps (`maxMicroStx`, `maxFee`).\n * 4. POST the unsigned tx breakdown to the customer's signer endpoint.\n * 5. Submit the returned signed tx to the Stacks node.\n *\n * Returns the txId immediately. Confirmation polling lands in Sprint 5 via\n * `awaitConfirmation: true` (no-op today — subgraph-backed path forthcoming).\n *\n * Throws `TxRejectedError`, `TxTimeoutError`, or `TxSignerRefusedError` from\n * `@secondlayer/stacks/errors` on failure.\n *\n * Must be called inside a workflow handler (directly or inside `step.run`).\n * Calls outside a runtime-bound context throw immediately.\n */\nexport interface BroadcastOptions {\n\t/** Name of a signer declared in `WorkflowDefinition.signers`. */\n\tsigner: string;\n\t/**\n\t * If `true`, wait for the tx to be confirmed on-chain before returning.\n\t * Sprint 4 ships this flag as a no-op — Sprint 5 adds subgraph-backed\n\t * confirmation polling.\n\t */\n\tawaitConfirmation?: boolean;\n\t/** Minimum confirmations before returning. Only meaningful when `awaitConfirmation: true`. */\n\tminConfirmations?: number;\n\t/**\n\t * Hard cap on micro-STX that can be spent. Required when the tx amount is\n\t * derived from an AI step (the deploy-time AST check enforces this).\n\t */\n\tmaxMicroStx?: bigint;\n\t/** Hard cap on fee in micro-STX. */\n\tmaxFee?: bigint;\n}\n\nexport interface BroadcastResult {\n\ttxId: string;\n\t/** `false` for Sprint 4; `true` once `awaitConfirmation` lands in Sprint 5. */\n\tconfirmed: boolean;\n}\n\n/**\n * Runtime contract implemented by `@secondlayer/workflow-runner`. The stacks\n * package is a pure library — it holds no keys, no DB, and no network —\n * so actual broadcasting is delegated to whatever runtime bound the context.\n */\nexport interface BroadcastRuntime {\n\tbroadcast(intent: TxIntent, opts: BroadcastOptions): Promise<BroadcastResult>;\n}\n\n/**\n * Per-run `AsyncLocalStorage` binding. The runner calls\n * `broadcastContext.run(runtime, async () => handler(ctx))` so concurrent\n * workflow runs see isolated runtime bindings — no module-level global state\n * is mutated.\n */\nexport const broadcastContext: AsyncLocalStorage<BroadcastRuntime> =\n\tnew AsyncLocalStorage<BroadcastRuntime>();\n\nexport async function broadcast(\n\tintent: TxIntent,\n\topts: BroadcastOptions,\n): Promise<BroadcastResult> {\n\tconst runtime = broadcastContext.getStore();\n\tif (!runtime) {\n\t\tthrow new Error(\n\t\t\t\"broadcast() called outside a workflow runner context. \" +\n\t\t\t\t\"Only call `broadcast` inside a workflow handler (directly or inside `step.run`).\",\n\t\t);\n\t}\n\tif (opts.maxMicroStx != null && opts.maxMicroStx <= 0n) {\n\t\tthrow new Error(\"maxMicroStx must be positive when set\");\n\t}\n\tif (opts.maxFee != null && opts.maxFee <= 0n) {\n\t\tthrow new Error(\"maxFee must be positive when set\");\n\t}\n\treturn runtime.broadcast(intent, opts);\n}\n",
|
|
6
|
-
"/**\n * Structured error classes thrown by `broadcast()` and the workflow runner's\n * broadcast step. The runner's retry policy consults `reason` (for\n * `TxRejectedError`) to decide whether to re-attempt — abort-by-post-condition\n * is non-retryable, timeouts retry with a fee bump, etc.\n */\n\nexport type TxRejectionReason =\n\t| \"abort_by_post_condition\"\n\t| \"abort_by_response\"\n\t| \"runtime_error\"\n\t| \"out_of_gas\"\n\t| \"nonce_conflict\"\n\t| \"signature_invalid\"\n\t| \"unknown\";\n\n/**\n * Thrown when a transaction submitted to the Stacks node is rejected\n * (mempool or on-chain). Each `reason` maps to different retry semantics.\n */\nexport class TxRejectedError extends Error {\n\toverride readonly name = \"TxRejectedError\";\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly reason: TxRejectionReason,\n\t\treadonly txId?: string,\n\t) {\n\t\tsuper(message);\n\t}\n\n\t/**\n\t * Heuristic: is retrying the same tx likely to succeed?\n\t * `abort_by_post_condition` / `abort_by_response` reflect on-chain state\n\t * or explicit rejection — same tx will fail again.\n\t */\n\tget isRetryable(): boolean {\n\t\tswitch (this.reason) {\n\t\t\tcase \"abort_by_post_condition\":\n\t\t\tcase \"abort_by_response\":\n\t\t\tcase \"signature_invalid\":\n\t\t\t\treturn false;\n\t\t\tdefault:\n\t\t\t\treturn true;\n\t\t}\n\t}\n}\n\n/**\n * Thrown when a broadcast was submitted (mempool accepted) but never mined\n * within the configured `confirmationTimeout`. Retryable with fee bump.\n */\nexport class TxTimeoutError extends Error {\n\toverride readonly name = \"TxTimeoutError\";\n\treadonly isRetryable = true;\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly txId: string,\n\t\treadonly timeoutMs: number,\n\t) {\n\t\tsuper(message);\n\t}\n}\n\n/**\n * Thrown when the remote signer refused to sign (policy denied, quota hit,\n * bad request). Non-retryable — customer policy won't change on retry.\n */\nexport class TxSignerRefusedError extends Error {\n\toverride readonly name = \"TxSignerRefusedError\";\n\treadonly isRetryable = false;\n\tconstructor(\n\t\tmessage: string,\n\t\treadonly signerName: string,\n\t\treadonly reason: string,\n\t) {\n\t\tsuper(message);\n\t}\n}\n",
|
|
7
|
-
"/**\n * Unsigned transaction intents for workflow use.\n *\n * import { tx } from \"@secondlayer/stacks/tx\"\n * await step.run(\"pay\", () => broadcast(\n * tx.transfer({ recipient: \"SP…\", amount: 1_000_000n, memo: \"DCA\" }),\n * { signer: \"treasury\" },\n * ))\n *\n * These helpers return plain \"intent\" objects — a description of *what*\n * should be broadcast, without fee, nonce, signer, or signature. The\n * `broadcast()` step (see Sprint 4) hydrates those at submit time using the\n * configured signer.\n *\n * Keeping intents separate from the existing `buildTokenTransfer` /\n * `buildContractCall` / `buildContractDeploy` in `@secondlayer/stacks/transactions`\n * means workflow authors don't have to manage fee/nonce and a single\n * `broadcast()` path can enforce budget caps + safety layers uniformly.\n */\n\nimport type { ClarityValue, PostCondition } from \"@stacks/transactions\";\n\nexport interface TransferIntent {\n\tkind: \"transfer\";\n\trecipient: string;\n\tamount: bigint;\n\tmemo?: string;\n\tpostConditions?: PostCondition[];\n}\n\nexport interface ContractCallIntent {\n\tkind: \"contract-call\";\n\t/** Fully-qualified contract id, e.g. `\"SP000000000000000000002Q6VF78.bns\"`. */\n\tcontract: string;\n\tfn: string;\n\targs: ClarityValue[];\n\tpostConditions?: PostCondition[];\n}\n\nexport interface DeployIntent {\n\tkind: \"deploy\";\n\tname: string;\n\tsource: string;\n\tclarityVersion?: 1 | 2 | 3;\n}\n\nexport interface MultiSendIntent {\n\tkind: \"multisend\";\n\tpayments: Array<{ recipient: string; amount: bigint; memo?: string }>;\n}\n\nexport type TxIntent =\n\t| TransferIntent\n\t| ContractCallIntent\n\t| DeployIntent\n\t| MultiSendIntent;\n\n/**\n * Lightweight factory functions for building tx intents. Identity-shaped\n * with a `kind` tag so the broadcast step can discriminate at runtime.\n */\nexport const tx = {\n\ttransfer: (opts: Omit<TransferIntent, \"kind\">): TransferIntent => ({\n\t\tkind: \"transfer\",\n\t\t...opts,\n\t}),\n\tcontractCall: (\n\t\topts: Omit<ContractCallIntent, \"kind\">,\n\t): ContractCallIntent => ({ kind: \"contract-call\", ...opts }),\n\tdeploy: (opts: Omit<DeployIntent, \"kind\">): DeployIntent => ({\n\t\tkind: \"deploy\",\n\t\t...opts,\n\t}),\n\tmultisend: (opts: Omit<MultiSendIntent, \"kind\">): MultiSendIntent => ({\n\t\tkind: \"multisend\",\n\t\t...opts,\n\t}),\n} as const;\n",
|
|
8
5
|
"import type { Client, ClientConfig } from \"./types.ts\";\n\nconst BASE_KEYS = new Set([\n\t\"chain\",\n\t\"account\",\n\t\"transport\",\n\t\"request\",\n\t\"extend\",\n]);\n\nfunction bindExtend(base: Client): Client[\"extend\"] {\n\treturn ((fn: any) => {\n\t\tconst extensions = fn(base);\n\t\tconst next = { ...base };\n\t\tfor (const [key, value] of Object.entries(extensions)) {\n\t\t\tif (BASE_KEYS.has(key)) continue;\n\t\t\t(next as any)[key] = value;\n\t\t}\n\t\tnext.extend = bindExtend(next);\n\t\treturn next as any;\n\t}) as Client[\"extend\"];\n}\n\n/**\n * Create a base client with transport and optional chain/account.\n * Use `.extend()` to compose action decorators (public, wallet, multisig).\n */\nexport function createClient<\n\tTExtended extends Record<string, unknown> = Record<string, unknown>,\n>(config: ClientConfig): Client<TExtended> {\n\tconst transport = config.transport({ chain: config.chain });\n\n\tconst client: Client = {\n\t\tchain: config.chain,\n\t\taccount: config.account,\n\t\ttransport,\n\t\trequest: transport.request,\n\t\textend: null as any,\n\t};\n\n\tclient.extend = bindExtend(client);\n\n\treturn client as Client<TExtended>;\n}\n",
|
|
9
6
|
"import {\n\ttype EstimateFeeParams,\n\ttype FeeEstimation,\n\testimateFee,\n} from \"../../actions/public/estimateFee.ts\";\nimport {\n\ttype AccountInfo,\n\ttype GetAccountInfoParams,\n\tgetAccountInfo,\n} from \"../../actions/public/getAccountInfo.ts\";\nimport {\n\ttype GetBalanceParams,\n\tgetBalance,\n} from \"../../actions/public/getBalance.ts\";\nimport {\n\ttype GetBlockParams,\n\tgetBlock,\n} from \"../../actions/public/getBlock.ts\";\nimport { getBlockHeight } from \"../../actions/public/getBlockHeight.ts\";\nimport {\n\ttype GetContractAbiParams,\n\tgetContractAbi,\n} from \"../../actions/public/getContractAbi.ts\";\nimport {\n\ttype GetMapEntryParams,\n\tgetMapEntry,\n} from \"../../actions/public/getMapEntry.ts\";\nimport {\n\ttype GetNonceParams,\n\tgetNonce,\n} from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype MulticallParams,\n\ttype MulticallResult,\n\tmulticall,\n} from \"../../actions/public/multicall.ts\";\nimport {\n\ttype ReadContractParams,\n\treadContract,\n} from \"../../actions/public/readContract.ts\";\nimport {\n\ttype SimulateCallParams,\n\ttype SimulateCallResult,\n\tsimulateCall,\n} from \"../../actions/public/simulateCall.ts\";\nimport {\n\ttype SimulateTransactionParams,\n\ttype SimulateTransactionResult,\n\tsimulateTransaction,\n} from \"../../actions/public/simulateTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport {\n\ttype WatchAddressBalanceParams,\n\ttype WatchAddressParams,\n\ttype WatchBlocksParams,\n\ttype WatchMempoolParams,\n\ttype WatchNftEventParams,\n\ttype WatchTransactionParams,\n\twatchAddress,\n\twatchAddressBalance,\n\twatchBlocks,\n\twatchMempool,\n\twatchNftEvent,\n\twatchTransaction,\n} from \"../../subscriptions/actions.ts\";\nimport type { Subscription } from \"../../subscriptions/types.ts\";\nimport type { Client } from \"../types.ts\";\n\n/** Read-only actions: balance queries, contract reads, block data, and event subscriptions. */\nexport type PublicActions = {\n\tgetNonce: (params: GetNonceParams) => Promise<bigint>;\n\tgetBalance: (params: GetBalanceParams) => Promise<bigint>;\n\tgetAccountInfo: (params: GetAccountInfoParams) => Promise<AccountInfo>;\n\tgetBlock: (params: GetBlockParams) => Promise<any>;\n\tgetBlockHeight: () => Promise<number>;\n\treadContract: (params: ReadContractParams) => Promise<ClarityValue>;\n\tgetContractAbi: (params: GetContractAbiParams) => Promise<any>;\n\tgetMapEntry: (params: GetMapEntryParams) => Promise<ClarityValue>;\n\testimateFee: (params: EstimateFeeParams) => Promise<FeeEstimation[]>;\n\tmulticall: <T extends boolean = true>(\n\t\tparams: MulticallParams<T>,\n\t) => Promise<MulticallResult<T>>;\n\tsimulateCall: (params: SimulateCallParams) => Promise<SimulateCallResult>;\n\tsimulateTransaction: (\n\t\tparams: SimulateTransactionParams,\n\t) => Promise<SimulateTransactionResult>;\n\twatchBlocks: (params: WatchBlocksParams) => Promise<Subscription>;\n\twatchMempool: (params: WatchMempoolParams) => Promise<Subscription>;\n\twatchTransaction: (params: WatchTransactionParams) => Promise<Subscription>;\n\twatchAddress: (params: WatchAddressParams) => Promise<Subscription>;\n\twatchAddressBalance: (\n\t\tparams: WatchAddressBalanceParams,\n\t) => Promise<Subscription>;\n\twatchNftEvent: (params: WatchNftEventParams) => Promise<Subscription>;\n};\n\n/** Decorator that binds {@link PublicActions} to a client instance. */\nexport function publicActions(client: Client): PublicActions {\n\treturn {\n\t\tgetNonce: (params) => getNonce(client, params),\n\t\tgetBalance: (params) => getBalance(client, params),\n\t\tgetAccountInfo: (params) => getAccountInfo(client, params),\n\t\tgetBlock: (params) => getBlock(client, params),\n\t\tgetBlockHeight: () => getBlockHeight(client),\n\t\treadContract: (params) => readContract(client, params),\n\t\tgetContractAbi: (params) => getContractAbi(client, params),\n\t\tgetMapEntry: (params) => getMapEntry(client, params),\n\t\testimateFee: (params) => estimateFee(client, params),\n\t\tmulticall: (params) => multicall(client, params),\n\t\tsimulateCall: (params) => simulateCall(client, params),\n\t\tsimulateTransaction: (params) => simulateTransaction(client, params),\n\t\twatchBlocks: (params) => watchBlocks(client, params),\n\t\twatchMempool: (params) => watchMempool(client, params),\n\t\twatchTransaction: (params) => watchTransaction(client, params),\n\t\twatchAddress: (params) => watchAddress(client, params),\n\t\twatchAddressBalance: (params) => watchAddressBalance(client, params),\n\t\twatchNftEvent: (params) => watchNftEvent(client, params),\n\t};\n}\n",
|
|
10
7
|
"import { createClient } from \"./createClient.ts\";\nimport { type PublicActions, publicActions } from \"./decorators/public.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createPublicClient} (no account needed). */\nexport type PublicClientConfig = Omit<ClientConfig, \"account\">;\n\n/**\n * Create a read-only client pre-extended with {@link PublicActions}.\n * Use for queries, contract reads, and event subscriptions.\n */\nexport function createPublicClient(\n\tconfig: PublicClientConfig,\n): Client<PublicActions> & PublicActions {\n\treturn createClient(config).extend(publicActions);\n}\n",
|
|
@@ -19,7 +16,7 @@
|
|
|
19
16
|
"import { WebSocketError } from \"../errors/websocket.ts\";\nimport type {\n\tSubscription,\n\tWsSubscribeParams,\n} from \"../subscriptions/types.ts\";\nimport { buildRequestFn } from \"./createTransport.ts\";\nimport type { Transport, TransportConfig, TransportFactory } from \"./types.ts\";\n\n/** Configuration for the WebSocket transport, extending base {@link TransportConfig}. */\nexport type WebSocketTransportConfig = TransportConfig & {\n\t/** WebSocket URL (resolved from chain if omitted) */\n\turl?: string;\n\t/** Enable auto-reconnect (default: true) */\n\treconnect?: boolean;\n\t/** Max reconnect attempts (default: 10) */\n\treconnectMaxAttempts?: number;\n\t/** Base delay in ms for exponential backoff (default: 1000) */\n\treconnectBaseDelay?: number;\n};\n\n/** Transport with WebSocket subscription capabilities and auto-reconnect. */\nexport type WebSocketTransport = Transport & {\n\ttype: \"webSocket\";\n\tsubscribe: (\n\t\tparams: WsSubscribeParams,\n\t\tcallback: (data: any) => void,\n\t) => Promise<Subscription>;\n\tdestroy: () => void;\n};\n\ntype JsonRpcRequest = {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tmethod: string;\n\tparams: Record<string, unknown>;\n};\n\ntype JsonRpcResponse = {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tresult?: unknown;\n\terror?: { code: number; message: string };\n};\n\ntype JsonRpcNotification = {\n\tjsonrpc: \"2.0\";\n\tmethod: string;\n\tparams: unknown;\n};\n\ntype SubEntry = {\n\tparams: WsSubscribeParams;\n\tcallbacks: Set<(data: any) => void>;\n};\n\nfunction subKey(params: WsSubscribeParams): string {\n\tconst parts: string[] = [params.event];\n\tif (params.tx_id) parts.push(`tx_id:${params.tx_id}`);\n\tif (params.address) parts.push(`address:${params.address}`);\n\tif (params.asset_identifier) parts.push(`asset:${params.asset_identifier}`);\n\tif (params.value) parts.push(`value:${params.value}`);\n\treturn parts.join(\"|\");\n}\n\nexport class WebSocketChannel {\n\tprivate ws: WebSocket | null = null;\n\tprivate url: string;\n\tprivate nextId = 1;\n\tprivate pending = new Map<\n\t\tnumber,\n\t\t{ resolve: (v: unknown) => void; reject: (e: Error) => void }\n\t>();\n\tprivate subs = new Map<string, SubEntry>();\n\tprivate destroyed = false;\n\tprivate reconnecting = false;\n\tprivate reconnectAttempt = 0;\n\tprivate reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n\n\tprivate reconnect: boolean;\n\tprivate reconnectMaxAttempts: number;\n\tprivate reconnectBaseDelay: number;\n\n\tconstructor(url: string, config?: WebSocketTransportConfig) {\n\t\tthis.url = url;\n\t\tthis.reconnect = config?.reconnect ?? true;\n\t\tthis.reconnectMaxAttempts = config?.reconnectMaxAttempts ?? 10;\n\t\tthis.reconnectBaseDelay = config?.reconnectBaseDelay ?? 1000;\n\t}\n\n\tprivate connect(): Promise<void> {\n\t\tif (this.ws?.readyState === WebSocket.OPEN) return Promise.resolve();\n\t\tif (this.ws?.readyState === WebSocket.CONNECTING) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst onOpen = () => {\n\t\t\t\t\tthis.ws?.removeEventListener(\"error\", onError);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tconst onError = (e: Event) => {\n\t\t\t\t\tthis.ws?.removeEventListener(\"open\", onOpen);\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew WebSocketError(\"WebSocket connection failed\", {\n\t\t\t\t\t\t\tdetails: String(e),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\tthis.ws!.addEventListener(\"open\", onOpen, { once: true });\n\t\t\t\tthis.ws!.addEventListener(\"error\", onError, { once: true });\n\t\t\t});\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.ws = new WebSocket(this.url);\n\n\t\t\tthis.ws.addEventListener(\n\t\t\t\t\"open\",\n\t\t\t\t() => {\n\t\t\t\t\tthis.reconnectAttempt = 0;\n\t\t\t\t\tthis.reconnecting = false;\n\t\t\t\t\tresolve();\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\n\t\t\tthis.ws.addEventListener(\n\t\t\t\t\"error\",\n\t\t\t\t(e) => {\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew WebSocketError(\"WebSocket connection failed\", {\n\t\t\t\t\t\t\tdetails: String(e),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\n\t\t\tthis.ws.addEventListener(\"message\", (event) => {\n\t\t\t\tthis.handleMessage(event.data);\n\t\t\t});\n\n\t\t\tthis.ws.addEventListener(\"close\", () => {\n\t\t\t\tif (!this.destroyed) this.handleDisconnect();\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate handleMessage(raw: string | ArrayBuffer | Blob) {\n\t\tconst data =\n\t\t\ttypeof raw === \"string\"\n\t\t\t\t? raw\n\t\t\t\t: new TextDecoder().decode(raw as ArrayBuffer);\n\n\t\tlet msg: JsonRpcResponse | JsonRpcNotification;\n\t\ttry {\n\t\t\tmsg = JSON.parse(data);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\t// RPC response\n\t\tif (\"id\" in msg && msg.id != null) {\n\t\t\tconst rpc = msg as JsonRpcResponse;\n\t\t\tconst p = this.pending.get(rpc.id);\n\t\t\tif (!p) return;\n\t\t\tthis.pending.delete(rpc.id);\n\t\t\tif (rpc.error) {\n\t\t\t\tp.reject(\n\t\t\t\t\tnew WebSocketError(rpc.error.message, {\n\t\t\t\t\t\tdetails: `JSON-RPC error ${rpc.error.code}`,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tp.resolve(rpc.result);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Notification\n\t\tconst notif = msg as JsonRpcNotification;\n\t\tif (!notif.method) return;\n\n\t\tfor (const [, entry] of this.subs) {\n\t\t\tif (entry.params.event === notif.method) {\n\t\t\t\tfor (const cb of entry.callbacks) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcb(notif.params);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// subscriber error — don't crash channel\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleDisconnect() {\n\t\tthis.ws = null;\n\n\t\t// reject pending RPCs\n\t\tfor (const [, p] of this.pending) {\n\t\t\tp.reject(new WebSocketError(\"WebSocket disconnected\"));\n\t\t}\n\t\tthis.pending.clear();\n\n\t\tif (\n\t\t\tthis.reconnect &&\n\t\t\tthis.subs.size > 0 &&\n\t\t\tthis.reconnectAttempt < this.reconnectMaxAttempts\n\t\t) {\n\t\t\tthis.scheduleReconnect();\n\t\t}\n\t}\n\n\tprivate scheduleReconnect() {\n\t\tif (this.destroyed || this.reconnecting) return;\n\t\tthis.reconnecting = true;\n\t\tconst delay = this.reconnectBaseDelay * 2 ** this.reconnectAttempt;\n\t\tthis.reconnectAttempt++;\n\n\t\tthis.reconnectTimer = setTimeout(async () => {\n\t\t\tthis.reconnecting = false;\n\t\t\ttry {\n\t\t\t\tawait this.connect();\n\t\t\t\tawait this.resubscribeAll();\n\t\t\t} catch {\n\t\t\t\tif (!this.destroyed && this.subs.size > 0) {\n\t\t\t\t\tthis.handleDisconnect();\n\t\t\t\t}\n\t\t\t}\n\t\t}, delay);\n\t}\n\n\tprivate async resubscribeAll() {\n\t\tfor (const [, entry] of this.subs) {\n\t\t\tawait this.sendRpc(\"subscribe\", entry.params);\n\t\t}\n\t}\n\n\tprivate sendRpc(\n\t\tmethod: string,\n\t\tparams: Record<string, unknown>,\n\t): Promise<unknown> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n\t\t\t\treturn reject(new WebSocketError(\"WebSocket not connected\"));\n\t\t\t}\n\n\t\t\tconst id = this.nextId++;\n\t\t\tconst msg: JsonRpcRequest = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tmethod,\n\t\t\t\tparams,\n\t\t\t};\n\n\t\t\tthis.pending.set(id, { resolve, reject });\n\t\t\tthis.ws.send(JSON.stringify(msg));\n\t\t});\n\t}\n\n\tasync subscribe(\n\t\tparams: WsSubscribeParams,\n\t\tcallback: (data: any) => void,\n\t): Promise<Subscription> {\n\t\tif (this.destroyed) {\n\t\t\tthrow new WebSocketError(\"WebSocket channel has been destroyed\");\n\t\t}\n\n\t\tawait this.connect();\n\n\t\tconst key = subKey(params);\n\t\tlet entry = this.subs.get(key);\n\n\t\tif (entry) {\n\t\t\t// Dedup: reuse existing WS subscription\n\t\t\tentry.callbacks.add(callback);\n\t\t} else {\n\t\t\t// New WS subscription\n\t\t\tentry = { params, callbacks: new Set([callback]) };\n\t\t\tthis.subs.set(key, entry);\n\t\t\tawait this.sendRpc(\"subscribe\", params);\n\t\t}\n\n\t\treturn {\n\t\t\tunsubscribe: () => {\n\t\t\t\tconst e = this.subs.get(key);\n\t\t\t\tif (!e) return;\n\t\t\t\te.callbacks.delete(callback);\n\t\t\t\tif (e.callbacks.size === 0) {\n\t\t\t\t\tthis.subs.delete(key);\n\t\t\t\t\t// Best-effort unsubscribe RPC\n\t\t\t\t\tif (this.ws?.readyState === WebSocket.OPEN) {\n\t\t\t\t\t\tthis.sendRpc(\"unsubscribe\", params).catch(() => {});\n\t\t\t\t\t}\n\t\t\t\t\t// Auto-close when no subscribers remain\n\t\t\t\t\tif (this.subs.size === 0) this.closeQuietly();\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate closeQuietly() {\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\t}\n\n\tdestroy(): void {\n\t\tthis.destroyed = true;\n\t\tif (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n\n\t\tfor (const [, p] of this.pending) {\n\t\t\tp.reject(new WebSocketError(\"WebSocket channel destroyed\"));\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.subs.clear();\n\n\t\tif (this.ws) {\n\t\t\tthis.ws.close();\n\t\t\tthis.ws = null;\n\t\t}\n\t}\n}\n\nfunction deriveWsUrl(httpUrl: string): string {\n\treturn httpUrl.replace(/^http/, \"ws\").replace(/\\/$/, \"\") + \"/extended/v1/ws\";\n}\n\n/**\n * Create a WebSocket transport for real-time Stacks event subscriptions.\n * HTTP requests use the resolved RPC URL; subscriptions use the WS endpoint.\n */\nexport function webSocket(\n\turl?: string,\n\tconfig?: WebSocketTransportConfig,\n): TransportFactory {\n\treturn (params) => {\n\t\tconst httpUrl =\n\t\t\tconfig?.url ??\n\t\t\tparams?.chain?.rpcUrls.default.http[0] ??\n\t\t\t\"http://localhost:3999\";\n\n\t\tconst wsUrl =\n\t\t\turl ?? params?.chain?.rpcUrls.default.ws?.[0] ?? deriveWsUrl(httpUrl);\n\n\t\tconst resolvedHttpConfig: TransportConfig = {\n\t\t\t...config,\n\t\t\turl: httpUrl,\n\t\t};\n\n\t\tconst channel = new WebSocketChannel(wsUrl, config);\n\n\t\tconst transport: WebSocketTransport = {\n\t\t\ttype: \"webSocket\",\n\t\t\trequest: buildRequestFn(httpUrl, resolvedHttpConfig),\n\t\t\tconfig: resolvedHttpConfig,\n\t\t\tsubscribe: (subParams, callback) =>\n\t\t\t\tchannel.subscribe(subParams, callback),\n\t\t\tdestroy: () => channel.destroy(),\n\t\t};\n\n\t\treturn transport;\n\t};\n}\n",
|
|
20
17
|
"import { BaseError } from \"./base.ts\";\n\nexport class ContractCallError extends BaseError {\n\toverride name = \"ContractCallError\";\n}\n\nexport class ReadOnlyCallError extends BaseError {\n\toverride name = \"ReadOnlyCallError\";\n}\n"
|
|
21
18
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
19
|
+
"mappings": "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",
|
|
20
|
+
"debugId": "5653DB57F28E623864756E2164756E21",
|
|
24
21
|
"names": []
|
|
25
22
|
}
|
package/dist/src/index.d.cts
CHANGED
|
@@ -1,150 +1,3 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
import { ClarityValue, PostCondition } from "@stacks/transactions";
|
|
3
|
-
interface TransferIntent {
|
|
4
|
-
kind: "transfer";
|
|
5
|
-
recipient: string;
|
|
6
|
-
amount: bigint;
|
|
7
|
-
memo?: string;
|
|
8
|
-
postConditions?: PostCondition[];
|
|
9
|
-
}
|
|
10
|
-
interface ContractCallIntent {
|
|
11
|
-
kind: "contract-call";
|
|
12
|
-
/** Fully-qualified contract id, e.g. `"SP000000000000000000002Q6VF78.bns"`. */
|
|
13
|
-
contract: string;
|
|
14
|
-
fn: string;
|
|
15
|
-
args: ClarityValue[];
|
|
16
|
-
postConditions?: PostCondition[];
|
|
17
|
-
}
|
|
18
|
-
interface DeployIntent {
|
|
19
|
-
kind: "deploy";
|
|
20
|
-
name: string;
|
|
21
|
-
source: string;
|
|
22
|
-
clarityVersion?: 1 | 2 | 3;
|
|
23
|
-
}
|
|
24
|
-
interface MultiSendIntent {
|
|
25
|
-
kind: "multisend";
|
|
26
|
-
payments: Array<{
|
|
27
|
-
recipient: string
|
|
28
|
-
amount: bigint
|
|
29
|
-
memo?: string
|
|
30
|
-
}>;
|
|
31
|
-
}
|
|
32
|
-
type TxIntent = TransferIntent | ContractCallIntent | DeployIntent | MultiSendIntent;
|
|
33
|
-
/**
|
|
34
|
-
* Lightweight factory functions for building tx intents. Identity-shaped
|
|
35
|
-
* with a `kind` tag so the broadcast step can discriminate at runtime.
|
|
36
|
-
*/
|
|
37
|
-
declare const tx: {
|
|
38
|
-
readonly transfer: (opts: Omit<TransferIntent, "kind">) => TransferIntent
|
|
39
|
-
readonly contractCall: (opts: Omit<ContractCallIntent, "kind">) => ContractCallIntent
|
|
40
|
-
readonly deploy: (opts: Omit<DeployIntent, "kind">) => DeployIntent
|
|
41
|
-
readonly multisend: (opts: Omit<MultiSendIntent, "kind">) => MultiSendIntent
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Submit a transaction intent to the Stacks network via a workflow-declared
|
|
45
|
-
* signer. The Secondlayer runner intercepts this call to:
|
|
46
|
-
*
|
|
47
|
-
* 1. Resolve `signer` to a `RemoteSignerConfig` (endpoint + publicKey +
|
|
48
|
-
* hmacRef) declared on the workflow.
|
|
49
|
-
* 2. Fetch the HMAC secret from the runtime secret store.
|
|
50
|
-
* 3. Enforce safety caps (`maxMicroStx`, `maxFee`).
|
|
51
|
-
* 4. POST the unsigned tx breakdown to the customer's signer endpoint.
|
|
52
|
-
* 5. Submit the returned signed tx to the Stacks node.
|
|
53
|
-
*
|
|
54
|
-
* Returns the txId immediately. Confirmation polling lands in Sprint 5 via
|
|
55
|
-
* `awaitConfirmation: true` (no-op today — subgraph-backed path forthcoming).
|
|
56
|
-
*
|
|
57
|
-
* Throws `TxRejectedError`, `TxTimeoutError`, or `TxSignerRefusedError` from
|
|
58
|
-
* `@secondlayer/stacks/errors` on failure.
|
|
59
|
-
*
|
|
60
|
-
* Must be called inside a workflow handler (directly or inside `step.run`).
|
|
61
|
-
* Calls outside a runtime-bound context throw immediately.
|
|
62
|
-
*/
|
|
63
|
-
interface BroadcastOptions {
|
|
64
|
-
/** Name of a signer declared in `WorkflowDefinition.signers`. */
|
|
65
|
-
signer: string;
|
|
66
|
-
/**
|
|
67
|
-
* If `true`, wait for the tx to be confirmed on-chain before returning.
|
|
68
|
-
* Sprint 4 ships this flag as a no-op — Sprint 5 adds subgraph-backed
|
|
69
|
-
* confirmation polling.
|
|
70
|
-
*/
|
|
71
|
-
awaitConfirmation?: boolean;
|
|
72
|
-
/** Minimum confirmations before returning. Only meaningful when `awaitConfirmation: true`. */
|
|
73
|
-
minConfirmations?: number;
|
|
74
|
-
/**
|
|
75
|
-
* Hard cap on micro-STX that can be spent. Required when the tx amount is
|
|
76
|
-
* derived from an AI step (the deploy-time AST check enforces this).
|
|
77
|
-
*/
|
|
78
|
-
maxMicroStx?: bigint;
|
|
79
|
-
/** Hard cap on fee in micro-STX. */
|
|
80
|
-
maxFee?: bigint;
|
|
81
|
-
}
|
|
82
|
-
interface BroadcastResult {
|
|
83
|
-
txId: string;
|
|
84
|
-
/** `false` for Sprint 4; `true` once `awaitConfirmation` lands in Sprint 5. */
|
|
85
|
-
confirmed: boolean;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Runtime contract implemented by `@secondlayer/workflow-runner`. The stacks
|
|
89
|
-
* package is a pure library — it holds no keys, no DB, and no network —
|
|
90
|
-
* so actual broadcasting is delegated to whatever runtime bound the context.
|
|
91
|
-
*/
|
|
92
|
-
interface BroadcastRuntime {
|
|
93
|
-
broadcast(intent: TxIntent, opts: BroadcastOptions): Promise<BroadcastResult>;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Per-run `AsyncLocalStorage` binding. The runner calls
|
|
97
|
-
* `broadcastContext.run(runtime, async () => handler(ctx))` so concurrent
|
|
98
|
-
* workflow runs see isolated runtime bindings — no module-level global state
|
|
99
|
-
* is mutated.
|
|
100
|
-
*/
|
|
101
|
-
declare const broadcastContext: AsyncLocalStorage<BroadcastRuntime>;
|
|
102
|
-
declare function broadcast(intent: TxIntent, opts: BroadcastOptions): Promise<BroadcastResult>;
|
|
103
|
-
/**
|
|
104
|
-
* Structured error classes thrown by `broadcast()` and the workflow runner's
|
|
105
|
-
* broadcast step. The runner's retry policy consults `reason` (for
|
|
106
|
-
* `TxRejectedError`) to decide whether to re-attempt — abort-by-post-condition
|
|
107
|
-
* is non-retryable, timeouts retry with a fee bump, etc.
|
|
108
|
-
*/
|
|
109
|
-
type TxRejectionReason = "abort_by_post_condition" | "abort_by_response" | "runtime_error" | "out_of_gas" | "nonce_conflict" | "signature_invalid" | "unknown";
|
|
110
|
-
/**
|
|
111
|
-
* Thrown when a transaction submitted to the Stacks node is rejected
|
|
112
|
-
* (mempool or on-chain). Each `reason` maps to different retry semantics.
|
|
113
|
-
*/
|
|
114
|
-
declare class TxRejectedError extends Error {
|
|
115
|
-
readonly reason: TxRejectionReason;
|
|
116
|
-
readonly txId?: string;
|
|
117
|
-
readonly name = "TxRejectedError";
|
|
118
|
-
constructor(message: string, reason: TxRejectionReason, txId?: string);
|
|
119
|
-
/**
|
|
120
|
-
* Heuristic: is retrying the same tx likely to succeed?
|
|
121
|
-
* `abort_by_post_condition` / `abort_by_response` reflect on-chain state
|
|
122
|
-
* or explicit rejection — same tx will fail again.
|
|
123
|
-
*/
|
|
124
|
-
get isRetryable(): boolean;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Thrown when a broadcast was submitted (mempool accepted) but never mined
|
|
128
|
-
* within the configured `confirmationTimeout`. Retryable with fee bump.
|
|
129
|
-
*/
|
|
130
|
-
declare class TxTimeoutError extends Error {
|
|
131
|
-
readonly txId: string;
|
|
132
|
-
readonly timeoutMs: number;
|
|
133
|
-
readonly name = "TxTimeoutError";
|
|
134
|
-
readonly isRetryable: true;
|
|
135
|
-
constructor(message: string, txId: string, timeoutMs: number);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Thrown when the remote signer refused to sign (policy denied, quota hit,
|
|
139
|
-
* bad request). Non-retryable — customer policy won't change on retry.
|
|
140
|
-
*/
|
|
141
|
-
declare class TxSignerRefusedError extends Error {
|
|
142
|
-
readonly signerName: string;
|
|
143
|
-
readonly reason: string;
|
|
144
|
-
readonly name = "TxSignerRefusedError";
|
|
145
|
-
readonly isRetryable: false;
|
|
146
|
-
constructor(message: string, signerName: string, reason: string);
|
|
147
|
-
}
|
|
148
1
|
/** Account derived from a local private key (mnemonic or raw key). */
|
|
149
2
|
type LocalAccount = {
|
|
150
3
|
type: "local"
|
|
@@ -298,15 +151,15 @@ type NoneCV = {
|
|
|
298
151
|
};
|
|
299
152
|
type SomeCV = {
|
|
300
153
|
readonly type: "some"
|
|
301
|
-
readonly value:
|
|
154
|
+
readonly value: ClarityValue
|
|
302
155
|
};
|
|
303
156
|
type ResponseOkCV = {
|
|
304
157
|
readonly type: "ok"
|
|
305
|
-
readonly value:
|
|
158
|
+
readonly value: ClarityValue
|
|
306
159
|
};
|
|
307
160
|
type ResponseErrorCV = {
|
|
308
161
|
readonly type: "err"
|
|
309
|
-
readonly value:
|
|
162
|
+
readonly value: ClarityValue
|
|
310
163
|
};
|
|
311
164
|
type StandardPrincipalCV = {
|
|
312
165
|
readonly type: "address"
|
|
@@ -318,10 +171,10 @@ type ContractPrincipalCV = {
|
|
|
318
171
|
};
|
|
319
172
|
type ListCV = {
|
|
320
173
|
type: "list"
|
|
321
|
-
value:
|
|
174
|
+
value: ClarityValue[]
|
|
322
175
|
};
|
|
323
176
|
type TupleData = {
|
|
324
|
-
[key: string]:
|
|
177
|
+
[key: string]: ClarityValue
|
|
325
178
|
};
|
|
326
179
|
type TupleCV = {
|
|
327
180
|
type: "tuple"
|
|
@@ -335,7 +188,7 @@ type StringUtf8CV = {
|
|
|
335
188
|
readonly type: "utf8"
|
|
336
189
|
readonly value: string
|
|
337
190
|
};
|
|
338
|
-
type
|
|
191
|
+
type ClarityValue = IntCV | UIntCV | BooleanCV | BufferCV | NoneCV | SomeCV | ResponseOkCV | ResponseErrorCV | StandardPrincipalCV | ContractPrincipalCV | ListCV | TupleCV | StringAsciiCV | StringUtf8CV;
|
|
339
192
|
declare const AuthType: {
|
|
340
193
|
readonly Standard: 0x04
|
|
341
194
|
readonly Sponsored: 0x05
|
|
@@ -398,7 +251,7 @@ declare const TenureChangeCause: {
|
|
|
398
251
|
type TenureChangeCause = (typeof TenureChangeCause)[keyof typeof TenureChangeCause];
|
|
399
252
|
type TokenTransferPayload = {
|
|
400
253
|
payloadType: typeof PayloadType.TokenTransfer
|
|
401
|
-
recipient:
|
|
254
|
+
recipient: ClarityValue
|
|
402
255
|
amount: bigint
|
|
403
256
|
memo: string
|
|
404
257
|
};
|
|
@@ -407,7 +260,7 @@ type ContractCallPayload = {
|
|
|
407
260
|
contractAddress: string
|
|
408
261
|
contractName: string
|
|
409
262
|
functionName: string
|
|
410
|
-
functionArgs:
|
|
263
|
+
functionArgs: ClarityValue[]
|
|
411
264
|
};
|
|
412
265
|
type SmartContractPayload = {
|
|
413
266
|
payloadType: typeof PayloadType.SmartContract | typeof PayloadType.VersionedSmartContract
|
|
@@ -422,7 +275,7 @@ type CoinbasePayload = {
|
|
|
422
275
|
type CoinbaseToAltRecipientPayload = {
|
|
423
276
|
payloadType: typeof PayloadType.CoinbaseToAltRecipient
|
|
424
277
|
coinbaseBuffer: string
|
|
425
|
-
recipient:
|
|
278
|
+
recipient: ClarityValue
|
|
426
279
|
};
|
|
427
280
|
type PoisonMicroblockPayload = {
|
|
428
281
|
payloadType: typeof PayloadType.PoisonMicroblock
|
|
@@ -442,7 +295,7 @@ type TenureChangePayload = {
|
|
|
442
295
|
type NakamotoCoinbasePayload = {
|
|
443
296
|
payloadType: typeof PayloadType.NakamotoCoinbase
|
|
444
297
|
coinbaseBuffer: string
|
|
445
|
-
recipient:
|
|
298
|
+
recipient: ClarityValue | null
|
|
446
299
|
vrfProof: string
|
|
447
300
|
};
|
|
448
301
|
type TransactionPayload = TokenTransferPayload | ContractCallPayload | SmartContractPayload | CoinbasePayload | CoinbaseToAltRecipientPayload | PoisonMicroblockPayload | TenureChangePayload | NakamotoCoinbasePayload;
|
|
@@ -507,7 +360,7 @@ type NftPostConditionWire = {
|
|
|
507
360
|
principal: PostConditionPrincipalWire
|
|
508
361
|
asset: AssetInfoWire
|
|
509
362
|
conditionCode: number
|
|
510
|
-
assetId:
|
|
363
|
+
assetId: ClarityValue
|
|
511
364
|
};
|
|
512
365
|
type PostConditionPrincipalWire = {
|
|
513
366
|
type: "origin"
|
|
@@ -553,7 +406,7 @@ type GetContractAbiParams = {
|
|
|
553
406
|
type GetMapEntryParams = {
|
|
554
407
|
contract: string
|
|
555
408
|
mapName: string
|
|
556
|
-
key:
|
|
409
|
+
key: ClarityValue
|
|
557
410
|
};
|
|
558
411
|
type GetNonceParams = {
|
|
559
412
|
address: string
|
|
@@ -561,7 +414,7 @@ type GetNonceParams = {
|
|
|
561
414
|
type MulticallCall = {
|
|
562
415
|
contract: string
|
|
563
416
|
functionName: string
|
|
564
|
-
args?:
|
|
417
|
+
args?: ClarityValue[]
|
|
565
418
|
sender?: string
|
|
566
419
|
};
|
|
567
420
|
type MulticallParams<TAllowFailure extends boolean = true> = {
|
|
@@ -570,17 +423,17 @@ type MulticallParams<TAllowFailure extends boolean = true> = {
|
|
|
570
423
|
};
|
|
571
424
|
type MulticallSuccessResult = {
|
|
572
425
|
status: "success"
|
|
573
|
-
result:
|
|
426
|
+
result: ClarityValue
|
|
574
427
|
};
|
|
575
428
|
type MulticallFailureResult = {
|
|
576
429
|
status: "failure"
|
|
577
430
|
error: Error
|
|
578
431
|
};
|
|
579
|
-
type MulticallResult<T extends boolean> = T extends true ? (MulticallSuccessResult | MulticallFailureResult)[] :
|
|
432
|
+
type MulticallResult<T extends boolean> = T extends true ? (MulticallSuccessResult | MulticallFailureResult)[] : ClarityValue[];
|
|
580
433
|
type ReadContractParams = {
|
|
581
434
|
contract: string
|
|
582
435
|
functionName: string
|
|
583
|
-
args?:
|
|
436
|
+
args?: ClarityValue[]
|
|
584
437
|
sender?: string
|
|
585
438
|
};
|
|
586
439
|
declare class BaseError extends Error {
|
|
@@ -610,13 +463,13 @@ declare class SimulationError extends BaseError {
|
|
|
610
463
|
type SimulateCallParams = {
|
|
611
464
|
contract: string
|
|
612
465
|
functionName: string
|
|
613
|
-
args?:
|
|
466
|
+
args?: ClarityValue[]
|
|
614
467
|
sender?: string
|
|
615
468
|
tip?: string
|
|
616
469
|
};
|
|
617
470
|
type SimulateCallSuccess = {
|
|
618
471
|
success: true
|
|
619
|
-
result:
|
|
472
|
+
result: ClarityValue
|
|
620
473
|
};
|
|
621
474
|
type SimulateCallFailure = {
|
|
622
475
|
success: false
|
|
@@ -784,9 +637,9 @@ type PublicActions = {
|
|
|
784
637
|
getAccountInfo: (params: GetAccountInfoParams) => Promise<AccountInfo>
|
|
785
638
|
getBlock: (params: GetBlockParams) => Promise<any>
|
|
786
639
|
getBlockHeight: () => Promise<number>
|
|
787
|
-
readContract: (params: ReadContractParams) => Promise<
|
|
640
|
+
readContract: (params: ReadContractParams) => Promise<ClarityValue>
|
|
788
641
|
getContractAbi: (params: GetContractAbiParams) => Promise<any>
|
|
789
|
-
getMapEntry: (params: GetMapEntryParams) => Promise<
|
|
642
|
+
getMapEntry: (params: GetMapEntryParams) => Promise<ClarityValue>
|
|
790
643
|
estimateFee: (params: EstimateFeeParams) => Promise<FeeEstimation[]>
|
|
791
644
|
multicall: <T extends boolean = true>(params: MulticallParams<T>) => Promise<MulticallResult<T>>
|
|
792
645
|
simulateCall: (params: SimulateCallParams) => Promise<SimulateCallResult>
|
|
@@ -827,18 +680,18 @@ type NftPostCondition = {
|
|
|
827
680
|
address: string
|
|
828
681
|
condition: NonFungibleComparator
|
|
829
682
|
asset: string
|
|
830
|
-
assetId:
|
|
683
|
+
assetId: ClarityValue
|
|
831
684
|
};
|
|
832
|
-
type
|
|
685
|
+
type PostCondition = StxPostCondition | FtPostCondition | NftPostCondition;
|
|
833
686
|
type IntegerType = number | string | bigint | Uint8Array;
|
|
834
687
|
type CallContractParams = {
|
|
835
688
|
contract: string
|
|
836
689
|
functionName: string
|
|
837
|
-
functionArgs?:
|
|
690
|
+
functionArgs?: ClarityValue[]
|
|
838
691
|
fee?: IntegerType
|
|
839
692
|
nonce?: IntegerType
|
|
840
693
|
postConditionMode?: "allow" | "deny"
|
|
841
|
-
postConditions?:
|
|
694
|
+
postConditions?: PostCondition[]
|
|
842
695
|
};
|
|
843
696
|
type DeployContractParams = {
|
|
844
697
|
contractName: string
|
|
@@ -847,7 +700,7 @@ type DeployContractParams = {
|
|
|
847
700
|
fee?: IntegerType
|
|
848
701
|
nonce?: IntegerType
|
|
849
702
|
postConditionMode?: "allow" | "deny"
|
|
850
|
-
postConditions?:
|
|
703
|
+
postConditions?: PostCondition[]
|
|
851
704
|
};
|
|
852
705
|
type SendTransactionParams = {
|
|
853
706
|
transaction: StacksTransaction
|
|
@@ -857,7 +710,7 @@ type SendTransactionResult = {
|
|
|
857
710
|
txid: string
|
|
858
711
|
};
|
|
859
712
|
type SignMessageParams = {
|
|
860
|
-
message: string |
|
|
713
|
+
message: string | ClarityValue
|
|
861
714
|
domain?: {
|
|
862
715
|
name: string
|
|
863
716
|
version: string
|
|
@@ -881,7 +734,7 @@ type TransferStxParams = {
|
|
|
881
734
|
fee?: IntegerType
|
|
882
735
|
nonce?: IntegerType
|
|
883
736
|
postConditionMode?: "allow" | "deny"
|
|
884
|
-
postConditions?:
|
|
737
|
+
postConditions?: PostCondition[]
|
|
885
738
|
};
|
|
886
739
|
/** Signing actions: send transactions, transfer STX, call/deploy contracts, sign messages. */
|
|
887
740
|
type WalletActions = {
|
|
@@ -912,16 +765,16 @@ type MultiSigTransferStxParams = {
|
|
|
912
765
|
fee?: IntegerType
|
|
913
766
|
nonce?: IntegerType
|
|
914
767
|
postConditionMode?: "allow" | "deny"
|
|
915
|
-
postConditions?:
|
|
768
|
+
postConditions?: PostCondition[]
|
|
916
769
|
};
|
|
917
770
|
type MultiSigCallContractParams = {
|
|
918
771
|
contract: string
|
|
919
772
|
functionName: string
|
|
920
|
-
functionArgs?:
|
|
773
|
+
functionArgs?: ClarityValue[]
|
|
921
774
|
fee?: IntegerType
|
|
922
775
|
nonce?: IntegerType
|
|
923
776
|
postConditionMode?: "allow" | "deny"
|
|
924
|
-
postConditions?:
|
|
777
|
+
postConditions?: PostCondition[]
|
|
925
778
|
};
|
|
926
779
|
type MultiSigDeployContractParams = {
|
|
927
780
|
contractName: string
|
|
@@ -930,7 +783,7 @@ type MultiSigDeployContractParams = {
|
|
|
930
783
|
fee?: IntegerType
|
|
931
784
|
nonce?: IntegerType
|
|
932
785
|
postConditionMode?: "allow" | "deny"
|
|
933
|
-
postConditions?:
|
|
786
|
+
postConditions?: PostCondition[]
|
|
934
787
|
};
|
|
935
788
|
type MultiSigSendTransactionParams = {
|
|
936
789
|
transaction: StacksTransaction
|
|
@@ -1071,4 +924,4 @@ declare class WebSocketError extends BaseError {
|
|
|
1071
924
|
details?: string
|
|
1072
925
|
});
|
|
1073
926
|
}
|
|
1074
|
-
export { webSocket, walletActions,
|
|
927
|
+
export { webSocket, walletActions, testnet, publicActions, providerToAccount, parseStx, multisigActions, mocknet, mainnet, isValidAddress, isAddressEqual, http, getContractAddress, formatStx, fallback, devnet, defineChain, custom, createWalletClient, createPublicClient, createMultiSigClient, createClient, ZERO_ADDRESS, WebSocketTransportConfig, WebSocketTransport, WebSocketError, WalletClientConfig, WalletClient, WalletActions, TransportFactory, TransportConfig, Transport, TransactionError, TESTNET_ZERO_ADDRESS, Subscription, StacksProvider, StacksChain, SimulationError, SigningError, SerializationError, RequestOptions, RequestFn, ReadOnlyCallError, PublicClientConfig, PublicClient, PublicActions, ProviderAccount, MultiSigClientConfig, MultiSigClient, MultiSigActions, MICROSTX_PER_STX, LocalAccount, CustomAccount, ContractCallError, ClientConfig, Client, BroadcastError, BaseError, AddressVersion, Account };
|