@secondlayer/stacks 0.0.4 → 0.1.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-vdfs3e5v.js → stacks-1ddg6mbv.js} +2 -2
- package/dist/shared/{stacks-bnvfmt7y.cjs → stacks-2gdt3aqj.cjs} +15 -2
- package/dist/shared/{stacks-8m9byk2j.js.map → stacks-2gdt3aqj.cjs.map} +1 -1
- package/dist/shared/stacks-709tra19.js.map +2 -2
- package/dist/shared/stacks-9g0jhab3.cjs.map +2 -2
- package/dist/shared/stacks-b008c3w8.cjs.map +2 -2
- package/dist/shared/stacks-gck1sq7h.cjs.map +2 -2
- package/dist/shared/stacks-gjvbq6w7.js.map +2 -2
- package/dist/shared/{stacks-74k8cxgb.cjs → stacks-hfem9dck.cjs} +46 -2
- package/dist/shared/stacks-hfem9dck.cjs.map +13 -0
- package/dist/shared/stacks-j2cy7qtt.js.map +2 -2
- package/dist/shared/stacks-k58k970n.js.map +2 -2
- package/dist/shared/{stacks-zm0b3tgy.js → stacks-m2dc5xwg.js} +7 -7
- package/dist/shared/{stacks-zm0b3tgy.js.map → stacks-m2dc5xwg.js.map} +1 -1
- package/dist/shared/{stacks-n2g56wgg.js → stacks-md6e5ta0.js} +13 -13
- package/dist/shared/{stacks-n2g56wgg.js.map → stacks-md6e5ta0.js.map} +1 -1
- package/dist/shared/stacks-njvyj3ab.js +23 -0
- package/dist/shared/{stacks-bnvfmt7y.cjs.map → stacks-njvyj3ab.js.map} +1 -1
- package/dist/shared/{stacks-dxhntr76.js → stacks-ph4a6322.js} +54 -11
- package/dist/shared/stacks-ph4a6322.js.map +10 -0
- package/dist/shared/{stacks-f7wdrzs3.js → stacks-pz73cn97.js} +17 -17
- package/dist/shared/{stacks-f7wdrzs3.js.map → stacks-pz73cn97.js.map} +1 -1
- package/dist/shared/stacks-qvg7c24g.cjs.map +2 -2
- package/dist/shared/{stacks-4py5pm0r.cjs → stacks-v3zy6zds.cjs} +42 -2
- package/dist/shared/stacks-v3zy6zds.cjs.map +10 -0
- package/dist/shared/stacks-v9jqcpd4.js.map +2 -2
- package/dist/shared/{stacks-yfgsm6ap.js → stacks-xtz0n62y.js} +58 -3
- package/dist/shared/stacks-xtz0n62y.js.map +13 -0
- package/dist/shared/stacks-ya3x01yd.cjs.map +2 -2
- package/dist/src/accounts/index.js +1 -1
- package/dist/src/actions/index.d.cts +43 -2
- package/dist/src/actions/index.d.ts +43 -2
- package/dist/src/actions/index.js +7 -7
- package/dist/src/bns/index.js +10 -10
- package/dist/src/bns/index.js.map +1 -1
- package/dist/src/chains/index.js +1 -1
- package/dist/src/clarity/index.cjs +326 -1
- package/dist/src/clarity/index.cjs.map +5 -3
- package/dist/src/clarity/index.d.cts +24 -5
- package/dist/src/clarity/index.d.ts +24 -5
- package/dist/src/clarity/index.js +264 -13
- package/dist/src/clarity/index.js.map +5 -3
- package/dist/src/connect/index.cjs.map +2 -2
- package/dist/src/connect/index.d.cts +7 -1
- package/dist/src/connect/index.d.ts +7 -1
- package/dist/src/connect/index.js.map +2 -2
- package/dist/src/connect/walletconnect/index.cjs +4 -4
- package/dist/src/connect/walletconnect/index.cjs.map +7 -7
- package/dist/src/connect/walletconnect/index.d.cts +5 -5
- package/dist/src/connect/walletconnect/index.d.ts +5 -5
- package/dist/src/connect/walletconnect/index.js +4 -4
- package/dist/src/connect/walletconnect/index.js.map +7 -7
- package/dist/src/index.cjs +1 -1
- package/dist/src/index.cjs.map +2 -2
- package/dist/src/index.d.cts +44 -3
- package/dist/src/index.d.ts +44 -3
- package/dist/src/index.js +12 -11
- package/dist/src/index.js.map +3 -3
- package/dist/src/postconditions/index.cjs +117 -1
- package/dist/src/postconditions/index.cjs.map +4 -3
- package/dist/src/postconditions/index.js +119 -6
- package/dist/src/postconditions/index.js.map +4 -3
- package/dist/src/pox/index.js +9 -9
- package/dist/src/pox/index.js.map +1 -1
- package/dist/src/stackingdao/index.cjs.map +2 -2
- package/dist/src/stackingdao/index.d.cts +18 -7
- package/dist/src/stackingdao/index.d.ts +18 -7
- package/dist/src/stackingdao/index.js +9 -9
- package/dist/src/stackingdao/index.js.map +3 -3
- package/dist/src/subscriptions/index.js +1 -1
- package/dist/src/transactions/index.cjs +5 -1
- package/dist/src/transactions/index.cjs.map +1 -1
- package/dist/src/transactions/index.d.cts +40 -2
- package/dist/src/transactions/index.d.ts +40 -2
- package/dist/src/transactions/index.js +18 -10
- package/dist/src/transactions/index.js.map +1 -1
- package/dist/src/utils/index.d.cts +4 -4
- package/dist/src/utils/index.d.ts +4 -4
- package/dist/src/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/shared/stacks-2ar4prfz.cjs +0 -328
- package/dist/shared/stacks-2ar4prfz.cjs.map +0 -11
- package/dist/shared/stacks-4py5pm0r.cjs.map +0 -10
- package/dist/shared/stacks-74k8cxgb.cjs.map +0 -13
- package/dist/shared/stacks-8m9byk2j.js +0 -7
- package/dist/shared/stacks-dr5en54r.cjs +0 -119
- package/dist/shared/stacks-dr5en54r.cjs.map +0 -10
- package/dist/shared/stacks-dxhntr76.js.map +0 -10
- package/dist/shared/stacks-f3tk2k5s.js +0 -27
- package/dist/shared/stacks-f3tk2k5s.js.map +0 -9
- package/dist/shared/stacks-g9mcjcqg.cjs +0 -3
- package/dist/shared/stacks-g9mcjcqg.cjs.map +0 -9
- package/dist/shared/stacks-tjxmrssa.js +0 -282
- package/dist/shared/stacks-tjxmrssa.js.map +0 -11
- package/dist/shared/stacks-yfgsm6ap.js.map +0 -13
- package/dist/shared/stacks-yfveb68e.js +0 -121
- package/dist/shared/stacks-yfveb68e.js.map +0 -10
- /package/dist/shared/{stacks-vdfs3e5v.js.map → stacks-1ddg6mbv.js.map} +0 -0
package/dist/src/index.d.cts
CHANGED
|
@@ -270,6 +270,11 @@ declare const PubKeyEncoding: {
|
|
|
270
270
|
readonly Uncompressed: 0x01
|
|
271
271
|
};
|
|
272
272
|
type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
|
|
273
|
+
declare const TenureChangeCause: {
|
|
274
|
+
readonly BlockFound: 0x00
|
|
275
|
+
readonly Extended: 0x01
|
|
276
|
+
};
|
|
277
|
+
type TenureChangeCause = (typeof TenureChangeCause)[keyof typeof TenureChangeCause];
|
|
273
278
|
type TokenTransferPayload = {
|
|
274
279
|
payloadType: typeof PayloadType.TokenTransfer
|
|
275
280
|
recipient: ClarityValue
|
|
@@ -289,7 +294,37 @@ type SmartContractPayload = {
|
|
|
289
294
|
contractName: string
|
|
290
295
|
codeBody: string
|
|
291
296
|
};
|
|
292
|
-
type
|
|
297
|
+
type CoinbasePayload = {
|
|
298
|
+
payloadType: typeof PayloadType.Coinbase
|
|
299
|
+
coinbaseBuffer: string
|
|
300
|
+
};
|
|
301
|
+
type CoinbaseToAltRecipientPayload = {
|
|
302
|
+
payloadType: typeof PayloadType.CoinbaseToAltRecipient
|
|
303
|
+
coinbaseBuffer: string
|
|
304
|
+
recipient: ClarityValue
|
|
305
|
+
};
|
|
306
|
+
type PoisonMicroblockPayload = {
|
|
307
|
+
payloadType: typeof PayloadType.PoisonMicroblock
|
|
308
|
+
header1: string
|
|
309
|
+
header2: string
|
|
310
|
+
};
|
|
311
|
+
type TenureChangePayload = {
|
|
312
|
+
payloadType: typeof PayloadType.TenureChange
|
|
313
|
+
tenureConsensusHash: string
|
|
314
|
+
prevTenureConsensusHash: string
|
|
315
|
+
burnViewConsensusHash: string
|
|
316
|
+
previousTenureEnd: string
|
|
317
|
+
previousTenureBlocks: number
|
|
318
|
+
cause: TenureChangeCause
|
|
319
|
+
pubkeyHash: string
|
|
320
|
+
};
|
|
321
|
+
type NakamotoCoinbasePayload = {
|
|
322
|
+
payloadType: typeof PayloadType.NakamotoCoinbase
|
|
323
|
+
coinbaseBuffer: string
|
|
324
|
+
recipient: ClarityValue | null
|
|
325
|
+
vrfProof: string
|
|
326
|
+
};
|
|
327
|
+
type TransactionPayload = TokenTransferPayload | ContractCallPayload | SmartContractPayload | CoinbasePayload | CoinbaseToAltRecipientPayload | PoisonMicroblockPayload | TenureChangePayload | NakamotoCoinbasePayload;
|
|
293
328
|
type SingleSigSpendingCondition = {
|
|
294
329
|
hashMode: typeof AddressHashMode.P2PKH | typeof AddressHashMode.P2WPKH
|
|
295
330
|
signer: string
|
|
@@ -402,7 +437,13 @@ declare class BaseError extends Error {
|
|
|
402
437
|
cause?: Error
|
|
403
438
|
details?: string
|
|
404
439
|
});
|
|
405
|
-
toJSON(): {
|
|
440
|
+
toJSON(): {
|
|
441
|
+
name: string
|
|
442
|
+
message: string
|
|
443
|
+
shortMessage: string
|
|
444
|
+
details: string | undefined
|
|
445
|
+
cause: string | undefined
|
|
446
|
+
};
|
|
406
447
|
}
|
|
407
448
|
declare class SimulationError extends BaseError {
|
|
408
449
|
name: string;
|
|
@@ -833,7 +874,7 @@ declare const TESTNET_ZERO_ADDRESS = "ST000000000000000000002AMW42H";
|
|
|
833
874
|
/** Number of microSTX per 1 STX (10^6). */
|
|
834
875
|
declare const MICROSTX_PER_STX = 1000000n;
|
|
835
876
|
/** Alias for validateStacksAddress — matches future.md naming. */
|
|
836
|
-
declare const isValidAddress:
|
|
877
|
+
declare const isValidAddress: (address: string) => boolean;
|
|
837
878
|
/**
|
|
838
879
|
* Compare two Stacks addresses for equality (case-insensitive, version-aware).
|
|
839
880
|
* Throws if either address is invalid.
|
package/dist/src/index.d.ts
CHANGED
|
@@ -270,6 +270,11 @@ declare const PubKeyEncoding: {
|
|
|
270
270
|
readonly Uncompressed: 0x01
|
|
271
271
|
};
|
|
272
272
|
type PubKeyEncoding = (typeof PubKeyEncoding)[keyof typeof PubKeyEncoding];
|
|
273
|
+
declare const TenureChangeCause: {
|
|
274
|
+
readonly BlockFound: 0x00
|
|
275
|
+
readonly Extended: 0x01
|
|
276
|
+
};
|
|
277
|
+
type TenureChangeCause = (typeof TenureChangeCause)[keyof typeof TenureChangeCause];
|
|
273
278
|
type TokenTransferPayload = {
|
|
274
279
|
payloadType: typeof PayloadType.TokenTransfer
|
|
275
280
|
recipient: ClarityValue
|
|
@@ -289,7 +294,37 @@ type SmartContractPayload = {
|
|
|
289
294
|
contractName: string
|
|
290
295
|
codeBody: string
|
|
291
296
|
};
|
|
292
|
-
type
|
|
297
|
+
type CoinbasePayload = {
|
|
298
|
+
payloadType: typeof PayloadType.Coinbase
|
|
299
|
+
coinbaseBuffer: string
|
|
300
|
+
};
|
|
301
|
+
type CoinbaseToAltRecipientPayload = {
|
|
302
|
+
payloadType: typeof PayloadType.CoinbaseToAltRecipient
|
|
303
|
+
coinbaseBuffer: string
|
|
304
|
+
recipient: ClarityValue
|
|
305
|
+
};
|
|
306
|
+
type PoisonMicroblockPayload = {
|
|
307
|
+
payloadType: typeof PayloadType.PoisonMicroblock
|
|
308
|
+
header1: string
|
|
309
|
+
header2: string
|
|
310
|
+
};
|
|
311
|
+
type TenureChangePayload = {
|
|
312
|
+
payloadType: typeof PayloadType.TenureChange
|
|
313
|
+
tenureConsensusHash: string
|
|
314
|
+
prevTenureConsensusHash: string
|
|
315
|
+
burnViewConsensusHash: string
|
|
316
|
+
previousTenureEnd: string
|
|
317
|
+
previousTenureBlocks: number
|
|
318
|
+
cause: TenureChangeCause
|
|
319
|
+
pubkeyHash: string
|
|
320
|
+
};
|
|
321
|
+
type NakamotoCoinbasePayload = {
|
|
322
|
+
payloadType: typeof PayloadType.NakamotoCoinbase
|
|
323
|
+
coinbaseBuffer: string
|
|
324
|
+
recipient: ClarityValue | null
|
|
325
|
+
vrfProof: string
|
|
326
|
+
};
|
|
327
|
+
type TransactionPayload = TokenTransferPayload | ContractCallPayload | SmartContractPayload | CoinbasePayload | CoinbaseToAltRecipientPayload | PoisonMicroblockPayload | TenureChangePayload | NakamotoCoinbasePayload;
|
|
293
328
|
type SingleSigSpendingCondition = {
|
|
294
329
|
hashMode: typeof AddressHashMode.P2PKH | typeof AddressHashMode.P2WPKH
|
|
295
330
|
signer: string
|
|
@@ -402,7 +437,13 @@ declare class BaseError extends Error {
|
|
|
402
437
|
cause?: Error
|
|
403
438
|
details?: string
|
|
404
439
|
});
|
|
405
|
-
toJSON(): {
|
|
440
|
+
toJSON(): {
|
|
441
|
+
name: string
|
|
442
|
+
message: string
|
|
443
|
+
shortMessage: string
|
|
444
|
+
details: string | undefined
|
|
445
|
+
cause: string | undefined
|
|
446
|
+
};
|
|
406
447
|
}
|
|
407
448
|
declare class SimulationError extends BaseError {
|
|
408
449
|
name: string;
|
|
@@ -833,7 +874,7 @@ declare const TESTNET_ZERO_ADDRESS = "ST000000000000000000002AMW42H";
|
|
|
833
874
|
/** Number of microSTX per 1 STX (10^6). */
|
|
834
875
|
declare const MICROSTX_PER_STX = 1000000n;
|
|
835
876
|
/** Alias for validateStacksAddress — matches future.md naming. */
|
|
836
|
-
declare const isValidAddress:
|
|
877
|
+
declare const isValidAddress: (address: string) => boolean;
|
|
837
878
|
/**
|
|
838
879
|
* Compare two Stacks addresses for equality (case-insensitive, version-aware).
|
|
839
880
|
* Throws if either address is invalid.
|
package/dist/src/index.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
simulateTransaction,
|
|
23
23
|
sponsorTransaction,
|
|
24
24
|
transferStx
|
|
25
|
-
} from "../shared/stacks-
|
|
25
|
+
} from "../shared/stacks-md6e5ta0.js";
|
|
26
26
|
import {
|
|
27
27
|
callContract,
|
|
28
28
|
estimateFee,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
getNonce,
|
|
31
31
|
readContract,
|
|
32
32
|
sendTransaction
|
|
33
|
-
} from "../shared/stacks-
|
|
33
|
+
} from "../shared/stacks-m2dc5xwg.js";
|
|
34
34
|
import {
|
|
35
35
|
WebSocketError,
|
|
36
36
|
watchAddress,
|
|
@@ -41,15 +41,12 @@ import {
|
|
|
41
41
|
watchTransaction
|
|
42
42
|
} from "../shared/stacks-y3dh7hv1.js";
|
|
43
43
|
import"../shared/stacks-709tra19.js";
|
|
44
|
-
import"../shared/stacks-
|
|
44
|
+
import"../shared/stacks-ph4a6322.js";
|
|
45
45
|
import {
|
|
46
46
|
buildContractCall,
|
|
47
47
|
buildContractDeploy,
|
|
48
48
|
buildTokenTransfer
|
|
49
|
-
} from "../shared/stacks-
|
|
50
|
-
import {
|
|
51
|
-
finalizeMultiSig
|
|
52
|
-
} from "../shared/stacks-yfgsm6ap.js";
|
|
49
|
+
} from "../shared/stacks-pz73cn97.js";
|
|
53
50
|
import"../shared/stacks-j2cy7qtt.js";
|
|
54
51
|
import"../shared/stacks-8yykgdww.js";
|
|
55
52
|
import {
|
|
@@ -71,8 +68,12 @@ import {
|
|
|
71
68
|
} from "../shared/stacks-gjvbq6w7.js";
|
|
72
69
|
import"../shared/stacks-nqytwfcc.js";
|
|
73
70
|
import {
|
|
74
|
-
__require
|
|
75
|
-
|
|
71
|
+
__require,
|
|
72
|
+
__toESM
|
|
73
|
+
} from "../shared/stacks-njvyj3ab.js";
|
|
74
|
+
import {
|
|
75
|
+
finalizeMultiSig
|
|
76
|
+
} from "../shared/stacks-xtz0n62y.js";
|
|
76
77
|
|
|
77
78
|
// src/clients/createClient.ts
|
|
78
79
|
var BASE_KEYS = new Set(["chain", "account", "transport", "request", "extend"]);
|
|
@@ -155,7 +156,7 @@ function multisigActions(client) {
|
|
|
155
156
|
async function resolveNonce(nonce) {
|
|
156
157
|
if (nonce !== undefined)
|
|
157
158
|
return nonce;
|
|
158
|
-
const { makeMultiSigAddress } = await import("../shared/stacks-
|
|
159
|
+
const { makeMultiSigAddress } = await import("../shared/stacks-xtz0n62y.js");
|
|
159
160
|
const address = makeMultiSigAddress(signers, requiredSignatures, client.chain);
|
|
160
161
|
return getNonce(client, { address });
|
|
161
162
|
}
|
|
@@ -619,5 +620,5 @@ export {
|
|
|
619
620
|
AddressVersion
|
|
620
621
|
};
|
|
621
622
|
|
|
622
|
-
//# debugId=
|
|
623
|
+
//# debugId=2C73D96B89AABA6B64756E2164756E21
|
|
623
624
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"import type { StacksChain } from \"../chains/types.ts\";\nimport type { TransportConfig, TransportFactory } from \"./types.ts\";\nimport { buildRequestFn, createTransport } from \"./createTransport.ts\";\n\n/**\n * Create an HTTP transport for Stacks node RPC calls.\n * Falls back to the chain's default RPC URL, then `localhost:3999`.\n */\nexport function http(url?: string, config?: TransportConfig): TransportFactory {\n return (params) => {\n const resolvedUrl =\n url ?? params?.chain?.rpcUrls.default.http[0] ?? \"http://localhost:3999\";\n\n const mergedConfig: TransportConfig = {\n ...config,\n url: resolvedUrl,\n };\n\n return createTransport(\"http\", {\n ...mergedConfig,\n request: buildRequestFn(resolvedUrl, mergedConfig),\n });\n };\n}\n",
|
|
14
14
|
"import type { RequestFn, TransportFactory } from \"./types.ts\";\nimport { createTransport } from \"./createTransport.ts\";\n\n/** Create a transport backed by a user-provided request function. */\nexport function custom(params: { request: RequestFn }): TransportFactory {\n return () => createTransport(\"custom\", { request: params.request });\n}\n",
|
|
15
15
|
"import type { TransportFactory } from \"./types.ts\";\nimport { createTransport } from \"./createTransport.ts\";\n\n/** Create a transport that tries each transport in order until one succeeds. */\nexport function fallback(transports: TransportFactory[]): TransportFactory {\n return (params) => {\n const resolved = transports.map((t) => t(params));\n\n return createTransport(\"fallback\", {\n request: async (path, options) => {\n let lastError: Error | undefined;\n for (const transport of resolved) {\n try {\n return await transport.request(path, options);\n } catch (error) {\n lastError =\n error instanceof Error ? error : new Error(String(error));\n }\n }\n throw lastError ?? new Error(\"All transports failed\");\n },\n });\n };\n}\n",
|
|
16
|
-
"import type { StacksChain } from \"../chains/types.ts\";\nimport type { Transport, TransportConfig, TransportFactory } from \"./types.ts\";\nimport type { Subscription, WsSubscribeParams } from \"../subscriptions/types.ts\";\nimport { buildRequestFn } from \"./createTransport.ts\";\nimport { WebSocketError } from \"../errors/websocket.ts\";\n\n/** Configuration for the WebSocket transport, extending base {@link TransportConfig}. */\nexport type WebSocketTransportConfig = TransportConfig & {\n /** WebSocket URL (resolved from chain if omitted) */\n url?: string;\n /** Enable auto-reconnect (default: true) */\n reconnect?: boolean;\n /** Max reconnect attempts (default: 10) */\n reconnectMaxAttempts?: number;\n /** Base delay in ms for exponential backoff (default: 1000) */\n reconnectBaseDelay?: number;\n};\n\n/** Transport with WebSocket subscription capabilities and auto-reconnect. */\nexport type WebSocketTransport = Transport & {\n type: \"webSocket\";\n subscribe: (\n params: WsSubscribeParams,\n callback: (data: any) => void\n ) => Promise<Subscription>;\n destroy: () => void;\n};\n\ntype JsonRpcRequest = {\n jsonrpc: \"2.0\";\n id: number;\n method: string;\n params: Record<string, unknown>;\n};\n\ntype JsonRpcResponse = {\n jsonrpc: \"2.0\";\n id: number;\n result?: unknown;\n error?: { code: number; message: string };\n};\n\ntype JsonRpcNotification = {\n jsonrpc: \"2.0\";\n method: string;\n params: unknown;\n};\n\ntype SubEntry = {\n params: WsSubscribeParams;\n callbacks: Set<(data: any) => void>;\n};\n\nfunction subKey(params: WsSubscribeParams): string {\n const parts: string[] = [params.event];\n if (params.tx_id) parts.push(`tx_id:${params.tx_id}`);\n if (params.address) parts.push(`address:${params.address}`);\n if (params.asset_identifier)\n parts.push(`asset:${params.asset_identifier}`);\n if (params.value) parts.push(`value:${params.value}`);\n return parts.join(\"|\");\n}\n\nexport class WebSocketChannel {\n private ws: WebSocket | null = null;\n private url: string;\n private nextId = 1;\n private pending = new Map<\n number,\n { resolve: (v: unknown) => void; reject: (e: Error) => void }\n >();\n private subs = new Map<string, SubEntry>();\n private destroyed = false;\n private reconnecting = false;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n\n private reconnect: boolean;\n private reconnectMaxAttempts: number;\n private reconnectBaseDelay: number;\n\n constructor(url: string, config?: WebSocketTransportConfig) {\n this.url = url;\n this.reconnect = config?.reconnect ?? true;\n this.reconnectMaxAttempts = config?.reconnectMaxAttempts ?? 10;\n this.reconnectBaseDelay = config?.reconnectBaseDelay ?? 1000;\n }\n\n private connect(): Promise<void> {\n if (this.ws?.readyState === WebSocket.OPEN) return Promise.resolve();\n if (this.ws?.readyState === WebSocket.CONNECTING) {\n return new Promise((resolve, reject) => {\n const onOpen = () => {\n this.ws?.removeEventListener(\"error\", onError);\n resolve();\n };\n const onError = (e: Event) => {\n this.ws?.removeEventListener(\"open\", onOpen);\n reject(\n new WebSocketError(\"WebSocket connection failed\", {\n details: String(e),\n })\n );\n };\n this.ws!.addEventListener(\"open\", onOpen, { once: true });\n this.ws!.addEventListener(\"error\", onError, { once: true });\n });\n }\n\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.addEventListener(\n \"open\",\n () => {\n this.reconnectAttempt = 0;\n this.reconnecting = false;\n resolve();\n },\n { once: true }\n );\n\n this.ws.addEventListener(\n \"error\",\n (e) => {\n reject(\n new WebSocketError(\"WebSocket connection failed\", {\n details: String(e),\n })\n );\n },\n { once: true }\n );\n\n this.ws.addEventListener(\"message\", (event) => {\n this.handleMessage(event.data);\n });\n\n this.ws.addEventListener(\"close\", () => {\n if (!this.destroyed) this.handleDisconnect();\n });\n });\n }\n\n private handleMessage(raw: string | ArrayBuffer | Blob) {\n const data =\n typeof raw === \"string\" ? raw : new TextDecoder().decode(raw as ArrayBuffer);\n\n let msg: JsonRpcResponse | JsonRpcNotification;\n try {\n msg = JSON.parse(data);\n } catch {\n return;\n }\n\n // RPC response\n if (\"id\" in msg && msg.id != null) {\n const rpc = msg as JsonRpcResponse;\n const p = this.pending.get(rpc.id);\n if (!p) return;\n this.pending.delete(rpc.id);\n if (rpc.error) {\n p.reject(\n new WebSocketError(rpc.error.message, {\n details: `JSON-RPC error ${rpc.error.code}`,\n })\n );\n } else {\n p.resolve(rpc.result);\n }\n return;\n }\n\n // Notification\n const notif = msg as JsonRpcNotification;\n if (!notif.method) return;\n\n for (const [, entry] of this.subs) {\n if (entry.params.event === notif.method) {\n for (const cb of entry.callbacks) {\n try {\n cb(notif.params);\n } catch {\n // subscriber error — don't crash channel\n }\n }\n }\n }\n }\n\n private handleDisconnect() {\n this.ws = null;\n\n // reject pending RPCs\n for (const [, p] of this.pending) {\n p.reject(new WebSocketError(\"WebSocket disconnected\"));\n }\n this.pending.clear();\n\n if (\n this.reconnect &&\n this.subs.size > 0 &&\n this.reconnectAttempt < this.reconnectMaxAttempts\n ) {\n this.scheduleReconnect();\n }\n }\n\n private scheduleReconnect() {\n if (this.destroyed || this.reconnecting) return;\n this.reconnecting = true;\n const delay = this.reconnectBaseDelay * 2 ** this.reconnectAttempt;\n this.reconnectAttempt++;\n\n this.reconnectTimer = setTimeout(async () => {\n this.reconnecting = false;\n try {\n await this.connect();\n await this.resubscribeAll();\n } catch {\n if (!this.destroyed && this.subs.size > 0) {\n this.handleDisconnect();\n }\n }\n }, delay);\n }\n\n private async resubscribeAll() {\n for (const [, entry] of this.subs) {\n await this.sendRpc(\"subscribe\", entry.params);\n }\n }\n\n private sendRpc(method: string, params: Record<string, unknown>): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n return reject(new WebSocketError(\"WebSocket not connected\"));\n }\n\n const id = this.nextId++;\n const msg: JsonRpcRequest = {\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n };\n\n this.pending.set(id, { resolve, reject });\n this.ws.send(JSON.stringify(msg));\n });\n }\n\n async subscribe(\n params: WsSubscribeParams,\n callback: (data: any) => void\n ): Promise<Subscription> {\n if (this.destroyed) {\n throw new WebSocketError(\"WebSocket channel has been destroyed\");\n }\n\n await this.connect();\n\n const key = subKey(params);\n let entry = this.subs.get(key);\n\n if (entry) {\n // Dedup: reuse existing WS subscription\n entry.callbacks.add(callback);\n } else {\n // New WS subscription\n entry = { params, callbacks: new Set([callback]) };\n this.subs.set(key, entry);\n await this.sendRpc(\"subscribe\", params);\n }\n\n return {\n unsubscribe: () => {\n const e = this.subs.get(key);\n if (!e) return;\n e.callbacks.delete(callback);\n if (e.callbacks.size === 0) {\n this.subs.delete(key);\n // Best-effort unsubscribe RPC\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.sendRpc(\"unsubscribe\", params).catch(() => {});\n }\n // Auto-close when no subscribers remain\n if (this.subs.size === 0) this.closeQuietly();\n }\n },\n };\n }\n\n private closeQuietly() {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n destroy() {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n\n for (const [, p] of this.pending) {\n p.reject(new WebSocketError(\"WebSocket channel destroyed\"));\n }\n this.pending.clear();\n this.subs.clear();\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n}\n\nfunction deriveWsUrl(httpUrl: string): string {\n return 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 url?: string,\n config?: WebSocketTransportConfig\n): TransportFactory {\n return (params) => {\n const httpUrl =\n config?.url ??\n params?.chain?.rpcUrls.default.http[0] ??\n \"http://localhost:3999\";\n\n const wsUrl =\n url ??\n params?.chain?.rpcUrls.default.ws?.[0] ??\n deriveWsUrl(httpUrl);\n\n const resolvedHttpConfig: TransportConfig = {\n ...config,\n url: httpUrl,\n };\n\n const channel = new WebSocketChannel(wsUrl, config);\n\n const transport: WebSocketTransport = {\n type: \"webSocket\",\n request: buildRequestFn(httpUrl, resolvedHttpConfig),\n config: resolvedHttpConfig,\n subscribe: (subParams, callback) =>\n channel.subscribe(subParams, callback),\n destroy: () => channel.destroy(),\n };\n\n return transport;\n };\n}\n"
|
|
16
|
+
"import type { StacksChain } from \"../chains/types.ts\";\nimport type { Transport, TransportConfig, TransportFactory } from \"./types.ts\";\nimport type { Subscription, WsSubscribeParams } from \"../subscriptions/types.ts\";\nimport { buildRequestFn } from \"./createTransport.ts\";\nimport { WebSocketError } from \"../errors/websocket.ts\";\n\n/** Configuration for the WebSocket transport, extending base {@link TransportConfig}. */\nexport type WebSocketTransportConfig = TransportConfig & {\n /** WebSocket URL (resolved from chain if omitted) */\n url?: string;\n /** Enable auto-reconnect (default: true) */\n reconnect?: boolean;\n /** Max reconnect attempts (default: 10) */\n reconnectMaxAttempts?: number;\n /** Base delay in ms for exponential backoff (default: 1000) */\n reconnectBaseDelay?: number;\n};\n\n/** Transport with WebSocket subscription capabilities and auto-reconnect. */\nexport type WebSocketTransport = Transport & {\n type: \"webSocket\";\n subscribe: (\n params: WsSubscribeParams,\n callback: (data: any) => void\n ) => Promise<Subscription>;\n destroy: () => void;\n};\n\ntype JsonRpcRequest = {\n jsonrpc: \"2.0\";\n id: number;\n method: string;\n params: Record<string, unknown>;\n};\n\ntype JsonRpcResponse = {\n jsonrpc: \"2.0\";\n id: number;\n result?: unknown;\n error?: { code: number; message: string };\n};\n\ntype JsonRpcNotification = {\n jsonrpc: \"2.0\";\n method: string;\n params: unknown;\n};\n\ntype SubEntry = {\n params: WsSubscribeParams;\n callbacks: Set<(data: any) => void>;\n};\n\nfunction subKey(params: WsSubscribeParams): string {\n const parts: string[] = [params.event];\n if (params.tx_id) parts.push(`tx_id:${params.tx_id}`);\n if (params.address) parts.push(`address:${params.address}`);\n if (params.asset_identifier)\n parts.push(`asset:${params.asset_identifier}`);\n if (params.value) parts.push(`value:${params.value}`);\n return parts.join(\"|\");\n}\n\nexport class WebSocketChannel {\n private ws: WebSocket | null = null;\n private url: string;\n private nextId = 1;\n private pending = new Map<\n number,\n { resolve: (v: unknown) => void; reject: (e: Error) => void }\n >();\n private subs = new Map<string, SubEntry>();\n private destroyed = false;\n private reconnecting = false;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n\n private reconnect: boolean;\n private reconnectMaxAttempts: number;\n private reconnectBaseDelay: number;\n\n constructor(url: string, config?: WebSocketTransportConfig) {\n this.url = url;\n this.reconnect = config?.reconnect ?? true;\n this.reconnectMaxAttempts = config?.reconnectMaxAttempts ?? 10;\n this.reconnectBaseDelay = config?.reconnectBaseDelay ?? 1000;\n }\n\n private connect(): Promise<void> {\n if (this.ws?.readyState === WebSocket.OPEN) return Promise.resolve();\n if (this.ws?.readyState === WebSocket.CONNECTING) {\n return new Promise((resolve, reject) => {\n const onOpen = () => {\n this.ws?.removeEventListener(\"error\", onError);\n resolve();\n };\n const onError = (e: Event) => {\n this.ws?.removeEventListener(\"open\", onOpen);\n reject(\n new WebSocketError(\"WebSocket connection failed\", {\n details: String(e),\n })\n );\n };\n this.ws!.addEventListener(\"open\", onOpen, { once: true });\n this.ws!.addEventListener(\"error\", onError, { once: true });\n });\n }\n\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.addEventListener(\n \"open\",\n () => {\n this.reconnectAttempt = 0;\n this.reconnecting = false;\n resolve();\n },\n { once: true }\n );\n\n this.ws.addEventListener(\n \"error\",\n (e) => {\n reject(\n new WebSocketError(\"WebSocket connection failed\", {\n details: String(e),\n })\n );\n },\n { once: true }\n );\n\n this.ws.addEventListener(\"message\", (event) => {\n this.handleMessage(event.data);\n });\n\n this.ws.addEventListener(\"close\", () => {\n if (!this.destroyed) this.handleDisconnect();\n });\n });\n }\n\n private handleMessage(raw: string | ArrayBuffer | Blob) {\n const data =\n typeof raw === \"string\" ? raw : new TextDecoder().decode(raw as ArrayBuffer);\n\n let msg: JsonRpcResponse | JsonRpcNotification;\n try {\n msg = JSON.parse(data);\n } catch {\n return;\n }\n\n // RPC response\n if (\"id\" in msg && msg.id != null) {\n const rpc = msg as JsonRpcResponse;\n const p = this.pending.get(rpc.id);\n if (!p) return;\n this.pending.delete(rpc.id);\n if (rpc.error) {\n p.reject(\n new WebSocketError(rpc.error.message, {\n details: `JSON-RPC error ${rpc.error.code}`,\n })\n );\n } else {\n p.resolve(rpc.result);\n }\n return;\n }\n\n // Notification\n const notif = msg as JsonRpcNotification;\n if (!notif.method) return;\n\n for (const [, entry] of this.subs) {\n if (entry.params.event === notif.method) {\n for (const cb of entry.callbacks) {\n try {\n cb(notif.params);\n } catch {\n // subscriber error — don't crash channel\n }\n }\n }\n }\n }\n\n private handleDisconnect() {\n this.ws = null;\n\n // reject pending RPCs\n for (const [, p] of this.pending) {\n p.reject(new WebSocketError(\"WebSocket disconnected\"));\n }\n this.pending.clear();\n\n if (\n this.reconnect &&\n this.subs.size > 0 &&\n this.reconnectAttempt < this.reconnectMaxAttempts\n ) {\n this.scheduleReconnect();\n }\n }\n\n private scheduleReconnect() {\n if (this.destroyed || this.reconnecting) return;\n this.reconnecting = true;\n const delay = this.reconnectBaseDelay * 2 ** this.reconnectAttempt;\n this.reconnectAttempt++;\n\n this.reconnectTimer = setTimeout(async () => {\n this.reconnecting = false;\n try {\n await this.connect();\n await this.resubscribeAll();\n } catch {\n if (!this.destroyed && this.subs.size > 0) {\n this.handleDisconnect();\n }\n }\n }, delay);\n }\n\n private async resubscribeAll() {\n for (const [, entry] of this.subs) {\n await this.sendRpc(\"subscribe\", entry.params);\n }\n }\n\n private sendRpc(method: string, params: Record<string, unknown>): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n return reject(new WebSocketError(\"WebSocket not connected\"));\n }\n\n const id = this.nextId++;\n const msg: JsonRpcRequest = {\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n };\n\n this.pending.set(id, { resolve, reject });\n this.ws.send(JSON.stringify(msg));\n });\n }\n\n async subscribe(\n params: WsSubscribeParams,\n callback: (data: any) => void\n ): Promise<Subscription> {\n if (this.destroyed) {\n throw new WebSocketError(\"WebSocket channel has been destroyed\");\n }\n\n await this.connect();\n\n const key = subKey(params);\n let entry = this.subs.get(key);\n\n if (entry) {\n // Dedup: reuse existing WS subscription\n entry.callbacks.add(callback);\n } else {\n // New WS subscription\n entry = { params, callbacks: new Set([callback]) };\n this.subs.set(key, entry);\n await this.sendRpc(\"subscribe\", params);\n }\n\n return {\n unsubscribe: () => {\n const e = this.subs.get(key);\n if (!e) return;\n e.callbacks.delete(callback);\n if (e.callbacks.size === 0) {\n this.subs.delete(key);\n // Best-effort unsubscribe RPC\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.sendRpc(\"unsubscribe\", params).catch(() => {});\n }\n // Auto-close when no subscribers remain\n if (this.subs.size === 0) this.closeQuietly();\n }\n },\n };\n }\n\n private closeQuietly() {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n destroy(): void {\n this.destroyed = true;\n if (this.reconnectTimer) clearTimeout(this.reconnectTimer);\n\n for (const [, p] of this.pending) {\n p.reject(new WebSocketError(\"WebSocket channel destroyed\"));\n }\n this.pending.clear();\n this.subs.clear();\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n}\n\nfunction deriveWsUrl(httpUrl: string): string {\n return 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 url?: string,\n config?: WebSocketTransportConfig\n): TransportFactory {\n return (params) => {\n const httpUrl =\n config?.url ??\n params?.chain?.rpcUrls.default.http[0] ??\n \"http://localhost:3999\";\n\n const wsUrl =\n url ??\n params?.chain?.rpcUrls.default.ws?.[0] ??\n deriveWsUrl(httpUrl);\n\n const resolvedHttpConfig: TransportConfig = {\n ...config,\n url: httpUrl,\n };\n\n const channel = new WebSocketChannel(wsUrl, config);\n\n const transport: WebSocketTransport = {\n type: \"webSocket\",\n request: buildRequestFn(httpUrl, resolvedHttpConfig),\n config: resolvedHttpConfig,\n subscribe: (subParams, callback) =>\n channel.subscribe(subParams, callback),\n destroy: () => channel.destroy(),\n };\n\n return transport;\n };\n}\n"
|
|
17
17
|
],
|
|
18
|
-
"mappings": "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",
|
|
19
|
-
"debugId": "
|
|
18
|
+
"mappings": "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",
|
|
19
|
+
"debugId": "2C73D96B89AABA6B64756E2164756E21",
|
|
20
20
|
"names": []
|
|
21
21
|
}
|
|
@@ -1,3 +1,119 @@
|
|
|
1
|
+
// src/postconditions/index.ts
|
|
2
|
+
var exports_postconditions = {};
|
|
3
|
+
__export(exports_postconditions, {
|
|
4
|
+
Pc: () => Pc
|
|
5
|
+
});
|
|
6
|
+
module.exports = __toCommonJS(exports_postconditions);
|
|
1
7
|
|
|
2
|
-
|
|
8
|
+
// src/postconditions/builder.ts
|
|
9
|
+
class PartialPcWithPrincipal {
|
|
10
|
+
address;
|
|
11
|
+
constructor(address) {
|
|
12
|
+
this.address = address;
|
|
13
|
+
}
|
|
14
|
+
willSendEq(amount) {
|
|
15
|
+
return new PartialPcFtWithCode(this.address, amount, "eq");
|
|
16
|
+
}
|
|
17
|
+
willSendGte(amount) {
|
|
18
|
+
return new PartialPcFtWithCode(this.address, amount, "gte");
|
|
19
|
+
}
|
|
20
|
+
willSendGt(amount) {
|
|
21
|
+
return new PartialPcFtWithCode(this.address, amount, "gt");
|
|
22
|
+
}
|
|
23
|
+
willSendLte(amount) {
|
|
24
|
+
return new PartialPcFtWithCode(this.address, amount, "lte");
|
|
25
|
+
}
|
|
26
|
+
willSendLt(amount) {
|
|
27
|
+
return new PartialPcFtWithCode(this.address, amount, "lt");
|
|
28
|
+
}
|
|
29
|
+
willSendAsset() {
|
|
30
|
+
return new PartialPcNftWithCode(this.address, "sent");
|
|
31
|
+
}
|
|
32
|
+
willNotSendAsset() {
|
|
33
|
+
return new PartialPcNftWithCode(this.address, "not-sent");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
class PartialPcFtWithCode {
|
|
38
|
+
address;
|
|
39
|
+
amount;
|
|
40
|
+
code;
|
|
41
|
+
constructor(address, amount, code) {
|
|
42
|
+
this.address = address;
|
|
43
|
+
this.amount = amount;
|
|
44
|
+
this.code = code;
|
|
45
|
+
}
|
|
46
|
+
ustx() {
|
|
47
|
+
return {
|
|
48
|
+
type: "stx-postcondition",
|
|
49
|
+
address: this.address,
|
|
50
|
+
condition: this.code,
|
|
51
|
+
amount: intToBigInt(this.amount).toString()
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
ft(contractId, tokenName) {
|
|
55
|
+
const [address, name] = contractId.split(".");
|
|
56
|
+
if (!address || !validateStacksAddress(address) || !name) {
|
|
57
|
+
throw new Error(`Invalid contract id: ${contractId}`);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
type: "ft-postcondition",
|
|
61
|
+
address: this.address,
|
|
62
|
+
condition: this.code,
|
|
63
|
+
amount: intToBigInt(this.amount).toString(),
|
|
64
|
+
asset: `${contractId}::${tokenName}`
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
class PartialPcNftWithCode {
|
|
70
|
+
address;
|
|
71
|
+
code;
|
|
72
|
+
constructor(address, code) {
|
|
73
|
+
this.address = address;
|
|
74
|
+
this.code = code;
|
|
75
|
+
}
|
|
76
|
+
nft(assetOrContractId, tokenNameOrAssetId, assetId) {
|
|
77
|
+
let contractAddress;
|
|
78
|
+
let contractName;
|
|
79
|
+
let tokenName;
|
|
80
|
+
let id;
|
|
81
|
+
if (assetId !== undefined) {
|
|
82
|
+
[contractAddress, contractName] = parseContractId(assetOrContractId);
|
|
83
|
+
tokenName = tokenNameOrAssetId;
|
|
84
|
+
id = assetId;
|
|
85
|
+
} else {
|
|
86
|
+
const [principal, tName] = assetOrContractId.split("::");
|
|
87
|
+
if (!principal || !tName)
|
|
88
|
+
throw new Error(`Invalid asset name: ${assetOrContractId}`);
|
|
89
|
+
[contractAddress, contractName] = parseContractId(principal);
|
|
90
|
+
tokenName = tName;
|
|
91
|
+
id = tokenNameOrAssetId;
|
|
92
|
+
}
|
|
93
|
+
if (!validateStacksAddress(contractAddress)) {
|
|
94
|
+
throw new Error(`Invalid contract address: ${contractAddress}`);
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
type: "nft-postcondition",
|
|
98
|
+
address: this.address,
|
|
99
|
+
condition: this.code,
|
|
100
|
+
asset: `${contractAddress}.${contractName}::${tokenName}`,
|
|
101
|
+
assetId: id
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
var Pc = {
|
|
106
|
+
principal(address) {
|
|
107
|
+
const [addr, name] = address.split(".");
|
|
108
|
+
if (!addr || !validateStacksAddress(addr) || typeof name === "string" && !name) {
|
|
109
|
+
throw new Error(`Invalid principal: ${address}`);
|
|
110
|
+
}
|
|
111
|
+
return new PartialPcWithPrincipal(address);
|
|
112
|
+
},
|
|
113
|
+
origin() {
|
|
114
|
+
return new PartialPcWithPrincipal("origin");
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
//# debugId=4E76AF631CC87C2164756E2164756E21
|
|
3
119
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
3
|
+
"sources": ["../src/postconditions/builder.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"import { intToBigInt, type IntegerType } from \"../utils/encoding.ts\";\nimport { validateStacksAddress, parseContractId } from \"../utils/address.ts\";\nimport type { ClarityValue } from \"../clarity/types.ts\";\nimport type {\n StxPostCondition,\n FtPostCondition,\n NftPostCondition,\n FungibleComparator,\n NonFungibleComparator,\n} from \"./types.ts\";\n\nclass PartialPcWithPrincipal {\n constructor(private address: string) {}\n\n willSendEq(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"eq\");\n }\n willSendGte(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"gte\");\n }\n willSendGt(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"gt\");\n }\n willSendLte(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"lte\");\n }\n willSendLt(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"lt\");\n }\n willSendAsset() {\n return new PartialPcNftWithCode(this.address, \"sent\");\n }\n willNotSendAsset() {\n return new PartialPcNftWithCode(this.address, \"not-sent\");\n }\n}\n\nclass PartialPcFtWithCode {\n constructor(\n private address: string,\n private amount: IntegerType,\n private code: FungibleComparator\n ) {}\n\n ustx(): StxPostCondition {\n return {\n type: \"stx-postcondition\",\n address: this.address,\n condition: this.code,\n amount: intToBigInt(this.amount).toString(),\n };\n }\n\n ft(contractId: string, tokenName: string): FtPostCondition {\n const [address, name] = contractId.split(\".\");\n if (!address || !validateStacksAddress(address) || !name) {\n throw new Error(`Invalid contract id: ${contractId}`);\n }\n return {\n type: \"ft-postcondition\",\n address: this.address,\n condition: this.code,\n amount: intToBigInt(this.amount).toString(),\n asset: `${contractId}::${tokenName}`,\n };\n }\n}\n\nclass PartialPcNftWithCode {\n constructor(\n private address: string,\n private code: NonFungibleComparator\n ) {}\n\n nft(assetOrContractId: string, tokenNameOrAssetId: string | ClarityValue, assetId?: ClarityValue): NftPostCondition {\n let contractAddress: string;\n let contractName: string;\n let tokenName: string;\n let id: ClarityValue;\n\n if (assetId !== undefined) {\n // 3 args: contractId, tokenName, assetId\n [contractAddress, contractName] = parseContractId(assetOrContractId);\n tokenName = tokenNameOrAssetId as string;\n id = assetId;\n } else {\n // 2 args: assetString (addr.contract::token), assetId\n const [principal, tName] = assetOrContractId.split(\"::\");\n if (!principal || !tName) throw new Error(`Invalid asset name: ${assetOrContractId}`);\n [contractAddress, contractName] = parseContractId(principal);\n tokenName = tName;\n id = tokenNameOrAssetId as ClarityValue;\n }\n\n if (!validateStacksAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n\n return {\n type: \"nft-postcondition\",\n address: this.address,\n condition: this.code,\n asset: `${contractAddress}.${contractName}::${tokenName}`,\n assetId: id,\n };\n }\n}\n\nexport const Pc = {\n principal(address: string) {\n const [addr, name] = address.split(\".\");\n if (!addr || !validateStacksAddress(addr) || (typeof name === \"string\" && !name)) {\n throw new Error(`Invalid principal: ${address}`);\n }\n return new PartialPcWithPrincipal(address);\n },\n origin() {\n return new PartialPcWithPrincipal(\"origin\");\n },\n};\n"
|
|
5
6
|
],
|
|
6
|
-
"mappings": "",
|
|
7
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "4E76AF631CC87C2164756E2164756E21",
|
|
8
9
|
"names": []
|
|
9
10
|
}
|
|
@@ -1,12 +1,125 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
2
|
+
parseContractId,
|
|
3
|
+
validateStacksAddress
|
|
4
|
+
} from "../../shared/stacks-gjvbq6w7.js";
|
|
5
|
+
import {
|
|
6
|
+
intToBigInt
|
|
7
|
+
} from "../../shared/stacks-nqytwfcc.js";
|
|
8
|
+
import"../../shared/stacks-njvyj3ab.js";
|
|
9
|
+
|
|
10
|
+
// src/postconditions/builder.ts
|
|
11
|
+
class PartialPcWithPrincipal {
|
|
12
|
+
address;
|
|
13
|
+
constructor(address) {
|
|
14
|
+
this.address = address;
|
|
15
|
+
}
|
|
16
|
+
willSendEq(amount) {
|
|
17
|
+
return new PartialPcFtWithCode(this.address, amount, "eq");
|
|
18
|
+
}
|
|
19
|
+
willSendGte(amount) {
|
|
20
|
+
return new PartialPcFtWithCode(this.address, amount, "gte");
|
|
21
|
+
}
|
|
22
|
+
willSendGt(amount) {
|
|
23
|
+
return new PartialPcFtWithCode(this.address, amount, "gt");
|
|
24
|
+
}
|
|
25
|
+
willSendLte(amount) {
|
|
26
|
+
return new PartialPcFtWithCode(this.address, amount, "lte");
|
|
27
|
+
}
|
|
28
|
+
willSendLt(amount) {
|
|
29
|
+
return new PartialPcFtWithCode(this.address, amount, "lt");
|
|
30
|
+
}
|
|
31
|
+
willSendAsset() {
|
|
32
|
+
return new PartialPcNftWithCode(this.address, "sent");
|
|
33
|
+
}
|
|
34
|
+
willNotSendAsset() {
|
|
35
|
+
return new PartialPcNftWithCode(this.address, "not-sent");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
class PartialPcFtWithCode {
|
|
40
|
+
address;
|
|
41
|
+
amount;
|
|
42
|
+
code;
|
|
43
|
+
constructor(address, amount, code) {
|
|
44
|
+
this.address = address;
|
|
45
|
+
this.amount = amount;
|
|
46
|
+
this.code = code;
|
|
47
|
+
}
|
|
48
|
+
ustx() {
|
|
49
|
+
return {
|
|
50
|
+
type: "stx-postcondition",
|
|
51
|
+
address: this.address,
|
|
52
|
+
condition: this.code,
|
|
53
|
+
amount: intToBigInt(this.amount).toString()
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
ft(contractId, tokenName) {
|
|
57
|
+
const [address, name] = contractId.split(".");
|
|
58
|
+
if (!address || !validateStacksAddress(address) || !name) {
|
|
59
|
+
throw new Error(`Invalid contract id: ${contractId}`);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
type: "ft-postcondition",
|
|
63
|
+
address: this.address,
|
|
64
|
+
condition: this.code,
|
|
65
|
+
amount: intToBigInt(this.amount).toString(),
|
|
66
|
+
asset: `${contractId}::${tokenName}`
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
class PartialPcNftWithCode {
|
|
72
|
+
address;
|
|
73
|
+
code;
|
|
74
|
+
constructor(address, code) {
|
|
75
|
+
this.address = address;
|
|
76
|
+
this.code = code;
|
|
77
|
+
}
|
|
78
|
+
nft(assetOrContractId, tokenNameOrAssetId, assetId) {
|
|
79
|
+
let contractAddress;
|
|
80
|
+
let contractName;
|
|
81
|
+
let tokenName;
|
|
82
|
+
let id;
|
|
83
|
+
if (assetId !== undefined) {
|
|
84
|
+
[contractAddress, contractName] = parseContractId(assetOrContractId);
|
|
85
|
+
tokenName = tokenNameOrAssetId;
|
|
86
|
+
id = assetId;
|
|
87
|
+
} else {
|
|
88
|
+
const [principal, tName] = assetOrContractId.split("::");
|
|
89
|
+
if (!principal || !tName)
|
|
90
|
+
throw new Error(`Invalid asset name: ${assetOrContractId}`);
|
|
91
|
+
[contractAddress, contractName] = parseContractId(principal);
|
|
92
|
+
tokenName = tName;
|
|
93
|
+
id = tokenNameOrAssetId;
|
|
94
|
+
}
|
|
95
|
+
if (!validateStacksAddress(contractAddress)) {
|
|
96
|
+
throw new Error(`Invalid contract address: ${contractAddress}`);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
type: "nft-postcondition",
|
|
100
|
+
address: this.address,
|
|
101
|
+
condition: this.code,
|
|
102
|
+
asset: `${contractAddress}.${contractName}::${tokenName}`,
|
|
103
|
+
assetId: id
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
var Pc = {
|
|
108
|
+
principal(address) {
|
|
109
|
+
const [addr, name] = address.split(".");
|
|
110
|
+
if (!addr || !validateStacksAddress(addr) || typeof name === "string" && !name) {
|
|
111
|
+
throw new Error(`Invalid principal: ${address}`);
|
|
112
|
+
}
|
|
113
|
+
return new PartialPcWithPrincipal(address);
|
|
114
|
+
},
|
|
115
|
+
origin() {
|
|
116
|
+
return new PartialPcWithPrincipal("origin");
|
|
117
|
+
}
|
|
118
|
+
};
|
|
7
119
|
export {
|
|
8
120
|
Pc
|
|
9
121
|
};
|
|
122
|
+
export { Pc };
|
|
10
123
|
|
|
11
|
-
//# debugId=
|
|
124
|
+
//# debugId=3BA550F555999C6364756E2164756E21
|
|
12
125
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
3
|
+
"sources": ["../src/postconditions/builder.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
+
"import { intToBigInt, type IntegerType } from \"../utils/encoding.ts\";\nimport { validateStacksAddress, parseContractId } from \"../utils/address.ts\";\nimport type { ClarityValue } from \"../clarity/types.ts\";\nimport type {\n StxPostCondition,\n FtPostCondition,\n NftPostCondition,\n FungibleComparator,\n NonFungibleComparator,\n} from \"./types.ts\";\n\nclass PartialPcWithPrincipal {\n constructor(private address: string) {}\n\n willSendEq(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"eq\");\n }\n willSendGte(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"gte\");\n }\n willSendGt(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"gt\");\n }\n willSendLte(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"lte\");\n }\n willSendLt(amount: IntegerType) {\n return new PartialPcFtWithCode(this.address, amount, \"lt\");\n }\n willSendAsset() {\n return new PartialPcNftWithCode(this.address, \"sent\");\n }\n willNotSendAsset() {\n return new PartialPcNftWithCode(this.address, \"not-sent\");\n }\n}\n\nclass PartialPcFtWithCode {\n constructor(\n private address: string,\n private amount: IntegerType,\n private code: FungibleComparator\n ) {}\n\n ustx(): StxPostCondition {\n return {\n type: \"stx-postcondition\",\n address: this.address,\n condition: this.code,\n amount: intToBigInt(this.amount).toString(),\n };\n }\n\n ft(contractId: string, tokenName: string): FtPostCondition {\n const [address, name] = contractId.split(\".\");\n if (!address || !validateStacksAddress(address) || !name) {\n throw new Error(`Invalid contract id: ${contractId}`);\n }\n return {\n type: \"ft-postcondition\",\n address: this.address,\n condition: this.code,\n amount: intToBigInt(this.amount).toString(),\n asset: `${contractId}::${tokenName}`,\n };\n }\n}\n\nclass PartialPcNftWithCode {\n constructor(\n private address: string,\n private code: NonFungibleComparator\n ) {}\n\n nft(assetOrContractId: string, tokenNameOrAssetId: string | ClarityValue, assetId?: ClarityValue): NftPostCondition {\n let contractAddress: string;\n let contractName: string;\n let tokenName: string;\n let id: ClarityValue;\n\n if (assetId !== undefined) {\n // 3 args: contractId, tokenName, assetId\n [contractAddress, contractName] = parseContractId(assetOrContractId);\n tokenName = tokenNameOrAssetId as string;\n id = assetId;\n } else {\n // 2 args: assetString (addr.contract::token), assetId\n const [principal, tName] = assetOrContractId.split(\"::\");\n if (!principal || !tName) throw new Error(`Invalid asset name: ${assetOrContractId}`);\n [contractAddress, contractName] = parseContractId(principal);\n tokenName = tName;\n id = tokenNameOrAssetId as ClarityValue;\n }\n\n if (!validateStacksAddress(contractAddress)) {\n throw new Error(`Invalid contract address: ${contractAddress}`);\n }\n\n return {\n type: \"nft-postcondition\",\n address: this.address,\n condition: this.code,\n asset: `${contractAddress}.${contractName}::${tokenName}`,\n assetId: id,\n };\n }\n}\n\nexport const Pc = {\n principal(address: string) {\n const [addr, name] = address.split(\".\");\n if (!addr || !validateStacksAddress(addr) || (typeof name === \"string\" && !name)) {\n throw new Error(`Invalid principal: ${address}`);\n }\n return new PartialPcWithPrincipal(address);\n },\n origin() {\n return new PartialPcWithPrincipal(\"origin\");\n },\n};\n"
|
|
5
6
|
],
|
|
6
|
-
"mappings": "",
|
|
7
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "3BA550F555999C6364756E2164756E21",
|
|
8
9
|
"names": []
|
|
9
10
|
}
|