@secondlayer/stacks 1.0.0 → 2.0.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/src/index.cjs.map +1 -1
- package/dist/src/index.d.cts +2 -2
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -7
- package/dist/src/triggers/index.cjs +0 -66
- package/dist/src/triggers/index.cjs.map +0 -10
- package/dist/src/triggers/index.d.cts +0 -120
- package/dist/src/triggers/index.d.ts +0 -120
- package/dist/src/triggers/index.js +0 -25
- package/dist/src/triggers/index.js.map +0 -10
package/dist/src/index.cjs.map
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"import {\n\ttype CallContractParams,\n\tcallContract,\n} from \"../../actions/wallet/callContract.ts\";\nimport {\n\ttype DeployContractParams,\n\tdeployContract,\n} from \"../../actions/wallet/deployContract.ts\";\nimport {\n\ttype SendTransactionParams,\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport {\n\ttype SignMessageParams,\n\tsignMessage,\n} from \"../../actions/wallet/signMessage.ts\";\nimport {\n\ttype SignTransactionParams,\n\tsignTransactionAction,\n} from \"../../actions/wallet/signTransaction.ts\";\nimport {\n\ttype SponsorTransactionParams,\n\tsponsorTransaction,\n} from \"../../actions/wallet/sponsorTransaction.ts\";\nimport {\n\ttype TransferStxParams,\n\ttransferStx,\n} from \"../../actions/wallet/transferStx.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport type { Client } from \"../types.ts\";\n\n/** Signing actions: send transactions, transfer STX, call/deploy contracts, sign messages. */\nexport type WalletActions = {\n\tsendTransaction: (\n\t\tparams: SendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n\tsignTransaction: (\n\t\tparams: SignTransactionParams,\n\t) => Promise<StacksTransaction>;\n\ttransferStx: (params: TransferStxParams) => Promise<string>;\n\tcallContract: (params: CallContractParams) => Promise<string>;\n\tdeployContract: (params: DeployContractParams) => Promise<string>;\n\tsignMessage: (params: SignMessageParams) => Promise<string>;\n\tsponsorTransaction: (\n\t\tparams: SponsorTransactionParams,\n\t) => Promise<StacksTransaction>;\n};\n\n/** Decorator that binds {@link WalletActions} to a client instance. */\nexport function walletActions(client: Client): WalletActions {\n\treturn {\n\t\tsendTransaction: (params) => sendTransaction(client, params),\n\t\tsignTransaction: (params) => signTransactionAction(client, params),\n\t\ttransferStx: (params) => transferStx(client, params),\n\t\tcallContract: (params) => callContract(client, params),\n\t\tdeployContract: (params) => deployContract(client, params),\n\t\tsignMessage: (params) => signMessage(client, params),\n\t\tsponsorTransaction: (params) => sponsorTransaction(client, params),\n\t};\n}\n",
|
|
9
9
|
"import { createClient } from \"./createClient.ts\";\nimport { type WalletActions, walletActions } from \"./decorators/wallet.ts\";\nimport type { Account, Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createWalletClient} — requires an account for signing. */\nexport type WalletClientConfig = ClientConfig & {\n\taccount: Account;\n};\n\n/**\n * Create a client pre-extended with {@link WalletActions} for signing and broadcasting transactions.\n */\nexport function createWalletClient(\n\tconfig: WalletClientConfig,\n): Client<WalletActions> & WalletActions & { account: Account } {\n\treturn createClient(config).extend(walletActions) as any;\n}\n",
|
|
10
10
|
"import { estimateFee } from \"../../actions/public/estimateFee.ts\";\nimport { getNonce } from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport {\n\tbuildContractCall,\n\tbuildContractDeploy,\n\tbuildTokenTransfer,\n} from \"../../transactions/build.ts\";\nimport {\n\tfinalizeMultiSig,\n\tmakeMultiSigAddress,\n} from \"../../transactions/multisig.ts\";\nimport type {\n\tClarityVersion,\n\tMultiSigHashMode,\n\tStacksTransaction,\n} from \"../../transactions/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport type { Client } from \"../types.ts\";\n\nexport type MultiSigTransferStxParams = {\n\tto: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigCallContractParams = {\n\tcontract: string;\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigDeployContractParams = {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigSendTransactionParams = {\n\ttransaction: StacksTransaction;\n\tattachment?: Uint8Array | string;\n};\n\n/** Multi-sig transaction actions: build unsigned transactions and broadcast with auto-finalization. */\nexport type MultiSigActions = {\n\ttransferStx: (\n\t\tparams: MultiSigTransferStxParams,\n\t) => Promise<StacksTransaction>;\n\tcallContract: (\n\t\tparams: MultiSigCallContractParams,\n\t) => Promise<StacksTransaction>;\n\tdeployContract: (\n\t\tparams: MultiSigDeployContractParams,\n\t) => Promise<StacksTransaction>;\n\tsendTransaction: (\n\t\tparams: MultiSigSendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n};\n\n/** Decorator that binds {@link MultiSigActions} to a multi-sig client. */\nexport function multisigActions(client: Client): MultiSigActions {\n\tconst msConfig = (client as any)._multisigConfig as {\n\t\tsigners: string[];\n\t\trequiredSignatures: number;\n\t\thashMode?: MultiSigHashMode;\n\t};\n\n\tif (!msConfig) throw new Error(\"multisigActions requires a multi-sig client\");\n\n\tconst { signers, requiredSignatures, hashMode } = msConfig;\n\n\t/** Resolve nonce from the multi-sig address */\n\tasync function resolveNonce(nonce?: IntegerType): Promise<IntegerType> {\n\t\tif (nonce !== undefined) return nonce;\n\t\tconst address = makeMultiSigAddress(\n\t\t\tsigners,\n\t\t\trequiredSignatures,\n\t\t\tclient.chain,\n\t\t);\n\t\treturn getNonce(client, { address });\n\t}\n\n\treturn {\n\t\tasync transferStx(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildTokenTransfer({\n\t\t\t\trecipient: params.to,\n\t\t\t\tamount: params.amount,\n\t\t\t\tmemo: params.memo,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync callContract(params) {\n\t\t\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractCall({\n\t\t\t\tcontractAddress,\n\t\t\t\tcontractName,\n\t\t\t\tfunctionName: params.functionName,\n\t\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync deployContract(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractDeploy({\n\t\t\t\tcontractName: params.contractName,\n\t\t\t\tcodeBody: params.codeBody,\n\t\t\t\tclarityVersion: params.clarityVersion,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync sendTransaction(params) {\n\t\t\t// Auto-finalize before broadcast\n\t\t\tconst finalized = finalizeMultiSig(params.transaction, signers);\n\t\t\treturn sendTransaction(client, {\n\t\t\t\ttransaction: finalized,\n\t\t\t\tattachment: params.attachment,\n\t\t\t});\n\t\t},\n\t};\n}\n",
|
|
11
|
-
"import type { MultiSigHashMode } from \"../transactions/types.ts\";\nimport { createClient } from \"./createClient.ts\";\nimport {\n\ttype MultiSigActions,\n\tmultisigActions,\n} from \"./decorators/multisig.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createMultiSigClient} — requires signer public keys and threshold. */\nexport type MultiSigClientConfig = Omit<ClientConfig, \"account\"> & {\n\tsigners: string[];\n\trequiredSignatures: number;\n\thashMode?: MultiSigHashMode;\n};\n\n/** A client pre-extended with {@link MultiSigActions} for m-of-n signing
|
|
11
|
+
"import type { MultiSigHashMode } from \"../transactions/types.ts\";\nimport { createClient } from \"./createClient.ts\";\nimport {\n\ttype MultiSigActions,\n\tmultisigActions,\n} from \"./decorators/multisig.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createMultiSigClient} — requires signer public keys and threshold. */\nexport type MultiSigClientConfig = Omit<ClientConfig, \"account\"> & {\n\tsigners: string[];\n\trequiredSignatures: number;\n\thashMode?: MultiSigHashMode;\n};\n\n/** A client pre-extended with {@link MultiSigActions} for m-of-n signing flows. */\nexport type MultiSigClient = Client<MultiSigActions> & MultiSigActions;\n\n/**\n * Create a client for multi-sig transaction flows.\n * Builds unsigned transactions that can be signed by each party then broadcast.\n */\nexport function createMultiSigClient(\n\tconfig: MultiSigClientConfig,\n): MultiSigClient {\n\tconst client = createClient(config);\n\n\t// Attach multi-sig config for the decorator to read\n\t(client as any)._multisigConfig = {\n\t\tsigners: config.signers,\n\t\trequiredSignatures: config.requiredSignatures,\n\t\thashMode: config.hashMode,\n\t};\n\n\treturn client.extend(multisigActions) as any;\n}\n",
|
|
12
12
|
"import type {\n\tRequestFn,\n\tRequestOptions,\n\tTransport,\n\tTransportConfig,\n} from \"./types.ts\";\n\nexport function createTransport(\n\ttype: string,\n\tconfig: TransportConfig & { request: RequestFn },\n): Transport {\n\treturn {\n\t\ttype,\n\t\trequest: config.request,\n\t\tconfig,\n\t};\n}\n\nexport async function fetchWithRetry(\n\turl: string,\n\toptions: RequestInit,\n\tretryCount: number,\n\tretryDelay: number,\n\ttimeout: number,\n): Promise<Response> {\n\tlet lastError: Error | undefined;\n\n\tfor (let attempt = 0; attempt <= retryCount; attempt++) {\n\t\ttry {\n\t\t\tconst controller = new AbortController();\n\t\t\tconst timeoutId = setTimeout(() => controller.abort(), timeout);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\t...options,\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tclearTimeout(timeoutId);\n\n\t\t\tif (response.ok || response.status < 500) {\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tlastError = new Error(`HTTP ${response.status}: ${response.statusText}`);\n\t\t} catch (error) {\n\t\t\tlastError = error instanceof Error ? error : new Error(String(error));\n\t\t}\n\n\t\tif (attempt < retryCount) {\n\t\t\tawait new Promise((r) => setTimeout(r, retryDelay * (attempt + 1)));\n\t\t}\n\t}\n\n\tthrow lastError ?? new Error(\"Request failed\");\n}\n\nexport function buildRequestFn(\n\tbaseUrl: string,\n\tconfig: TransportConfig,\n): RequestFn {\n\tconst {\n\t\ttimeout = 30_000,\n\t\tretryCount = 3,\n\t\tretryDelay = 150,\n\t\tfetchOptions = {},\n\t\tapiKey,\n\t} = config;\n\n\treturn async (path: string, options?: RequestOptions) => {\n\t\tconst url = `${baseUrl.replace(/\\/$/, \"\")}${path}`;\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(fetchOptions.headers as Record<string, string>),\n\t\t\t...options?.headers,\n\t\t};\n\n\t\tif (apiKey) {\n\t\t\theaders[\"x-api-key\"] = apiKey;\n\t\t}\n\n\t\tconst init: RequestInit = {\n\t\t\t...fetchOptions,\n\t\t\tmethod: options?.method ?? \"GET\",\n\t\t\theaders,\n\t\t};\n\n\t\tif (options?.body !== undefined) {\n\t\t\tinit.body = JSON.stringify(options.body);\n\t\t}\n\n\t\tconst response = await fetchWithRetry(\n\t\t\turl,\n\t\t\tinit,\n\t\t\tretryCount,\n\t\t\tretryDelay,\n\t\t\ttimeout,\n\t\t);\n\n\t\tconst contentType = response.headers.get(\"content-type\") ?? \"\";\n\t\tif (contentType.includes(\"application/json\")) {\n\t\t\treturn response.json();\n\t\t}\n\t\treturn response.text();\n\t};\n}\n",
|
|
13
13
|
"import { buildRequestFn, createTransport } from \"./createTransport.ts\";\nimport type { TransportConfig, TransportFactory } from \"./types.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\treturn (params) => {\n\t\tconst resolvedUrl =\n\t\t\turl ?? params?.chain?.rpcUrls.default.http[0] ?? \"http://localhost:3999\";\n\n\t\tconst mergedConfig: TransportConfig = {\n\t\t\t...config,\n\t\t\turl: resolvedUrl,\n\t\t};\n\n\t\treturn createTransport(\"http\", {\n\t\t\t...mergedConfig,\n\t\t\trequest: buildRequestFn(resolvedUrl, mergedConfig),\n\t\t});\n\t};\n}\n",
|
|
14
14
|
"import { createTransport } from \"./createTransport.ts\";\nimport type { RequestFn, TransportFactory } from \"./types.ts\";\n\n/** Create a transport backed by a user-provided request function. */\nexport function custom(params: { request: RequestFn }): TransportFactory {\n\treturn () => createTransport(\"custom\", { request: params.request });\n}\n",
|
package/dist/src/index.d.cts
CHANGED
|
@@ -804,10 +804,10 @@ type MultiSigClientConfig = Omit<ClientConfig, "account"> & {
|
|
|
804
804
|
requiredSignatures: number
|
|
805
805
|
hashMode?: MultiSigHashMode
|
|
806
806
|
};
|
|
807
|
-
/** A client pre-extended with {@link MultiSigActions} for m-of-n signing
|
|
807
|
+
/** A client pre-extended with {@link MultiSigActions} for m-of-n signing flows. */
|
|
808
808
|
type MultiSigClient = Client<MultiSigActions> & MultiSigActions;
|
|
809
809
|
/**
|
|
810
|
-
* Create a client for multi-sig transaction
|
|
810
|
+
* Create a client for multi-sig transaction flows.
|
|
811
811
|
* Builds unsigned transactions that can be signed by each party then broadcast.
|
|
812
812
|
*/
|
|
813
813
|
declare function createMultiSigClient(config: MultiSigClientConfig): MultiSigClient;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -804,10 +804,10 @@ type MultiSigClientConfig = Omit<ClientConfig, "account"> & {
|
|
|
804
804
|
requiredSignatures: number
|
|
805
805
|
hashMode?: MultiSigHashMode
|
|
806
806
|
};
|
|
807
|
-
/** A client pre-extended with {@link MultiSigActions} for m-of-n signing
|
|
807
|
+
/** A client pre-extended with {@link MultiSigActions} for m-of-n signing flows. */
|
|
808
808
|
type MultiSigClient = Client<MultiSigActions> & MultiSigActions;
|
|
809
809
|
/**
|
|
810
|
-
* Create a client for multi-sig transaction
|
|
810
|
+
* Create a client for multi-sig transaction flows.
|
|
811
811
|
* Builds unsigned transactions that can be signed by each party then broadcast.
|
|
812
812
|
*/
|
|
813
813
|
declare function createMultiSigClient(config: MultiSigClientConfig): MultiSigClient;
|
package/dist/src/index.js.map
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"import {\n\ttype CallContractParams,\n\tcallContract,\n} from \"../../actions/wallet/callContract.ts\";\nimport {\n\ttype DeployContractParams,\n\tdeployContract,\n} from \"../../actions/wallet/deployContract.ts\";\nimport {\n\ttype SendTransactionParams,\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport {\n\ttype SignMessageParams,\n\tsignMessage,\n} from \"../../actions/wallet/signMessage.ts\";\nimport {\n\ttype SignTransactionParams,\n\tsignTransactionAction,\n} from \"../../actions/wallet/signTransaction.ts\";\nimport {\n\ttype SponsorTransactionParams,\n\tsponsorTransaction,\n} from \"../../actions/wallet/sponsorTransaction.ts\";\nimport {\n\ttype TransferStxParams,\n\ttransferStx,\n} from \"../../actions/wallet/transferStx.ts\";\nimport type { StacksTransaction } from \"../../transactions/types.ts\";\nimport type { Client } from \"../types.ts\";\n\n/** Signing actions: send transactions, transfer STX, call/deploy contracts, sign messages. */\nexport type WalletActions = {\n\tsendTransaction: (\n\t\tparams: SendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n\tsignTransaction: (\n\t\tparams: SignTransactionParams,\n\t) => Promise<StacksTransaction>;\n\ttransferStx: (params: TransferStxParams) => Promise<string>;\n\tcallContract: (params: CallContractParams) => Promise<string>;\n\tdeployContract: (params: DeployContractParams) => Promise<string>;\n\tsignMessage: (params: SignMessageParams) => Promise<string>;\n\tsponsorTransaction: (\n\t\tparams: SponsorTransactionParams,\n\t) => Promise<StacksTransaction>;\n};\n\n/** Decorator that binds {@link WalletActions} to a client instance. */\nexport function walletActions(client: Client): WalletActions {\n\treturn {\n\t\tsendTransaction: (params) => sendTransaction(client, params),\n\t\tsignTransaction: (params) => signTransactionAction(client, params),\n\t\ttransferStx: (params) => transferStx(client, params),\n\t\tcallContract: (params) => callContract(client, params),\n\t\tdeployContract: (params) => deployContract(client, params),\n\t\tsignMessage: (params) => signMessage(client, params),\n\t\tsponsorTransaction: (params) => sponsorTransaction(client, params),\n\t};\n}\n",
|
|
9
9
|
"import { createClient } from \"./createClient.ts\";\nimport { type WalletActions, walletActions } from \"./decorators/wallet.ts\";\nimport type { Account, Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createWalletClient} — requires an account for signing. */\nexport type WalletClientConfig = ClientConfig & {\n\taccount: Account;\n};\n\n/**\n * Create a client pre-extended with {@link WalletActions} for signing and broadcasting transactions.\n */\nexport function createWalletClient(\n\tconfig: WalletClientConfig,\n): Client<WalletActions> & WalletActions & { account: Account } {\n\treturn createClient(config).extend(walletActions) as any;\n}\n",
|
|
10
10
|
"import { estimateFee } from \"../../actions/public/estimateFee.ts\";\nimport { getNonce } from \"../../actions/public/getNonce.ts\";\nimport {\n\ttype SendTransactionResult,\n\tsendTransaction,\n} from \"../../actions/wallet/sendTransaction.ts\";\nimport type { ClarityValue } from \"../../clarity/types.ts\";\nimport type { PostCondition } from \"../../postconditions/types.ts\";\nimport {\n\tbuildContractCall,\n\tbuildContractDeploy,\n\tbuildTokenTransfer,\n} from \"../../transactions/build.ts\";\nimport {\n\tfinalizeMultiSig,\n\tmakeMultiSigAddress,\n} from \"../../transactions/multisig.ts\";\nimport type {\n\tClarityVersion,\n\tMultiSigHashMode,\n\tStacksTransaction,\n} from \"../../transactions/types.ts\";\nimport { parseContractId } from \"../../utils/address.ts\";\nimport type { IntegerType } from \"../../utils/encoding.ts\";\nimport type { Client } from \"../types.ts\";\n\nexport type MultiSigTransferStxParams = {\n\tto: string;\n\tamount: IntegerType;\n\tmemo?: string;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigCallContractParams = {\n\tcontract: string;\n\tfunctionName: string;\n\tfunctionArgs?: ClarityValue[];\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigDeployContractParams = {\n\tcontractName: string;\n\tcodeBody: string;\n\tclarityVersion?: ClarityVersion;\n\tfee?: IntegerType;\n\tnonce?: IntegerType;\n\tpostConditionMode?: \"allow\" | \"deny\";\n\tpostConditions?: PostCondition[];\n};\n\nexport type MultiSigSendTransactionParams = {\n\ttransaction: StacksTransaction;\n\tattachment?: Uint8Array | string;\n};\n\n/** Multi-sig transaction actions: build unsigned transactions and broadcast with auto-finalization. */\nexport type MultiSigActions = {\n\ttransferStx: (\n\t\tparams: MultiSigTransferStxParams,\n\t) => Promise<StacksTransaction>;\n\tcallContract: (\n\t\tparams: MultiSigCallContractParams,\n\t) => Promise<StacksTransaction>;\n\tdeployContract: (\n\t\tparams: MultiSigDeployContractParams,\n\t) => Promise<StacksTransaction>;\n\tsendTransaction: (\n\t\tparams: MultiSigSendTransactionParams,\n\t) => Promise<SendTransactionResult>;\n};\n\n/** Decorator that binds {@link MultiSigActions} to a multi-sig client. */\nexport function multisigActions(client: Client): MultiSigActions {\n\tconst msConfig = (client as any)._multisigConfig as {\n\t\tsigners: string[];\n\t\trequiredSignatures: number;\n\t\thashMode?: MultiSigHashMode;\n\t};\n\n\tif (!msConfig) throw new Error(\"multisigActions requires a multi-sig client\");\n\n\tconst { signers, requiredSignatures, hashMode } = msConfig;\n\n\t/** Resolve nonce from the multi-sig address */\n\tasync function resolveNonce(nonce?: IntegerType): Promise<IntegerType> {\n\t\tif (nonce !== undefined) return nonce;\n\t\tconst address = makeMultiSigAddress(\n\t\t\tsigners,\n\t\t\trequiredSignatures,\n\t\t\tclient.chain,\n\t\t);\n\t\treturn getNonce(client, { address });\n\t}\n\n\treturn {\n\t\tasync transferStx(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildTokenTransfer({\n\t\t\t\trecipient: params.to,\n\t\t\t\tamount: params.amount,\n\t\t\t\tmemo: params.memo,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync callContract(params) {\n\t\t\tconst [contractAddress, contractName] = parseContractId(params.contract);\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractCall({\n\t\t\t\tcontractAddress,\n\t\t\t\tcontractName,\n\t\t\t\tfunctionName: params.functionName,\n\t\t\t\tfunctionArgs: params.functionArgs ?? [],\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync deployContract(params) {\n\t\t\tconst nonce = await resolveNonce(params.nonce);\n\n\t\t\tconst unsigned = buildContractDeploy({\n\t\t\t\tcontractName: params.contractName,\n\t\t\t\tcodeBody: params.codeBody,\n\t\t\t\tclarityVersion: params.clarityVersion,\n\t\t\t\tfee: params.fee ?? 0n,\n\t\t\t\tnonce,\n\t\t\t\tpublicKeys: signers,\n\t\t\t\tsignaturesRequired: requiredSignatures,\n\t\t\t\thashMode,\n\t\t\t\tchain: client.chain,\n\t\t\t\tpostConditionMode: params.postConditionMode,\n\t\t\t\tpostConditions: params.postConditions,\n\t\t\t});\n\n\t\t\tif (params.fee === undefined) {\n\t\t\t\tconst estimates = await estimateFee(client, { transaction: unsigned });\n\t\t\t\tconst mid = estimates[1] ?? estimates[0];\n\t\t\t\tif (mid) {\n\t\t\t\t\t(unsigned.auth.spendingCondition as any).fee = BigInt(mid.fee);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn unsigned;\n\t\t},\n\n\t\tasync sendTransaction(params) {\n\t\t\t// Auto-finalize before broadcast\n\t\t\tconst finalized = finalizeMultiSig(params.transaction, signers);\n\t\t\treturn sendTransaction(client, {\n\t\t\t\ttransaction: finalized,\n\t\t\t\tattachment: params.attachment,\n\t\t\t});\n\t\t},\n\t};\n}\n",
|
|
11
|
-
"import type { MultiSigHashMode } from \"../transactions/types.ts\";\nimport { createClient } from \"./createClient.ts\";\nimport {\n\ttype MultiSigActions,\n\tmultisigActions,\n} from \"./decorators/multisig.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createMultiSigClient} — requires signer public keys and threshold. */\nexport type MultiSigClientConfig = Omit<ClientConfig, \"account\"> & {\n\tsigners: string[];\n\trequiredSignatures: number;\n\thashMode?: MultiSigHashMode;\n};\n\n/** A client pre-extended with {@link MultiSigActions} for m-of-n signing
|
|
11
|
+
"import type { MultiSigHashMode } from \"../transactions/types.ts\";\nimport { createClient } from \"./createClient.ts\";\nimport {\n\ttype MultiSigActions,\n\tmultisigActions,\n} from \"./decorators/multisig.ts\";\nimport type { Client, ClientConfig } from \"./types.ts\";\n\n/** Configuration for {@link createMultiSigClient} — requires signer public keys and threshold. */\nexport type MultiSigClientConfig = Omit<ClientConfig, \"account\"> & {\n\tsigners: string[];\n\trequiredSignatures: number;\n\thashMode?: MultiSigHashMode;\n};\n\n/** A client pre-extended with {@link MultiSigActions} for m-of-n signing flows. */\nexport type MultiSigClient = Client<MultiSigActions> & MultiSigActions;\n\n/**\n * Create a client for multi-sig transaction flows.\n * Builds unsigned transactions that can be signed by each party then broadcast.\n */\nexport function createMultiSigClient(\n\tconfig: MultiSigClientConfig,\n): MultiSigClient {\n\tconst client = createClient(config);\n\n\t// Attach multi-sig config for the decorator to read\n\t(client as any)._multisigConfig = {\n\t\tsigners: config.signers,\n\t\trequiredSignatures: config.requiredSignatures,\n\t\thashMode: config.hashMode,\n\t};\n\n\treturn client.extend(multisigActions) as any;\n}\n",
|
|
12
12
|
"import type {\n\tRequestFn,\n\tRequestOptions,\n\tTransport,\n\tTransportConfig,\n} from \"./types.ts\";\n\nexport function createTransport(\n\ttype: string,\n\tconfig: TransportConfig & { request: RequestFn },\n): Transport {\n\treturn {\n\t\ttype,\n\t\trequest: config.request,\n\t\tconfig,\n\t};\n}\n\nexport async function fetchWithRetry(\n\turl: string,\n\toptions: RequestInit,\n\tretryCount: number,\n\tretryDelay: number,\n\ttimeout: number,\n): Promise<Response> {\n\tlet lastError: Error | undefined;\n\n\tfor (let attempt = 0; attempt <= retryCount; attempt++) {\n\t\ttry {\n\t\t\tconst controller = new AbortController();\n\t\t\tconst timeoutId = setTimeout(() => controller.abort(), timeout);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\t...options,\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tclearTimeout(timeoutId);\n\n\t\t\tif (response.ok || response.status < 500) {\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tlastError = new Error(`HTTP ${response.status}: ${response.statusText}`);\n\t\t} catch (error) {\n\t\t\tlastError = error instanceof Error ? error : new Error(String(error));\n\t\t}\n\n\t\tif (attempt < retryCount) {\n\t\t\tawait new Promise((r) => setTimeout(r, retryDelay * (attempt + 1)));\n\t\t}\n\t}\n\n\tthrow lastError ?? new Error(\"Request failed\");\n}\n\nexport function buildRequestFn(\n\tbaseUrl: string,\n\tconfig: TransportConfig,\n): RequestFn {\n\tconst {\n\t\ttimeout = 30_000,\n\t\tretryCount = 3,\n\t\tretryDelay = 150,\n\t\tfetchOptions = {},\n\t\tapiKey,\n\t} = config;\n\n\treturn async (path: string, options?: RequestOptions) => {\n\t\tconst url = `${baseUrl.replace(/\\/$/, \"\")}${path}`;\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(fetchOptions.headers as Record<string, string>),\n\t\t\t...options?.headers,\n\t\t};\n\n\t\tif (apiKey) {\n\t\t\theaders[\"x-api-key\"] = apiKey;\n\t\t}\n\n\t\tconst init: RequestInit = {\n\t\t\t...fetchOptions,\n\t\t\tmethod: options?.method ?? \"GET\",\n\t\t\theaders,\n\t\t};\n\n\t\tif (options?.body !== undefined) {\n\t\t\tinit.body = JSON.stringify(options.body);\n\t\t}\n\n\t\tconst response = await fetchWithRetry(\n\t\t\turl,\n\t\t\tinit,\n\t\t\tretryCount,\n\t\t\tretryDelay,\n\t\t\ttimeout,\n\t\t);\n\n\t\tconst contentType = response.headers.get(\"content-type\") ?? \"\";\n\t\tif (contentType.includes(\"application/json\")) {\n\t\t\treturn response.json();\n\t\t}\n\t\treturn response.text();\n\t};\n}\n",
|
|
13
13
|
"import { buildRequestFn, createTransport } from \"./createTransport.ts\";\nimport type { TransportConfig, TransportFactory } from \"./types.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\treturn (params) => {\n\t\tconst resolvedUrl =\n\t\t\turl ?? params?.chain?.rpcUrls.default.http[0] ?? \"http://localhost:3999\";\n\n\t\tconst mergedConfig: TransportConfig = {\n\t\t\t...config,\n\t\t\turl: resolvedUrl,\n\t\t};\n\n\t\treturn createTransport(\"http\", {\n\t\t\t...mergedConfig,\n\t\t\trequest: buildRequestFn(resolvedUrl, mergedConfig),\n\t\t});\n\t};\n}\n",
|
|
14
14
|
"import { createTransport } from \"./createTransport.ts\";\nimport type { RequestFn, TransportFactory } from \"./types.ts\";\n\n/** Create a transport backed by a user-provided request function. */\nexport function custom(params: { request: RequestFn }): TransportFactory {\n\treturn () => createTransport(\"custom\", { request: params.request });\n}\n",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@secondlayer/stacks",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "A viem-style SDK for the Stacks blockchain",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.cjs",
|
|
@@ -86,11 +86,6 @@
|
|
|
86
86
|
"types": "./dist/src/tools/btc/index.d.ts",
|
|
87
87
|
"import": "./dist/src/tools/btc/index.js",
|
|
88
88
|
"require": "./dist/src/tools/btc/index.cjs"
|
|
89
|
-
},
|
|
90
|
-
"./triggers": {
|
|
91
|
-
"types": "./dist/src/triggers/index.d.ts",
|
|
92
|
-
"import": "./dist/src/triggers/index.js",
|
|
93
|
-
"require": "./dist/src/triggers/index.cjs"
|
|
94
89
|
}
|
|
95
90
|
},
|
|
96
91
|
"files": [
|
|
@@ -118,7 +113,6 @@
|
|
|
118
113
|
"@noble/ciphers": "2.1.1",
|
|
119
114
|
"@noble/curves": "2.0.1",
|
|
120
115
|
"@scure/bip39": "2.0.1",
|
|
121
|
-
"@secondlayer/subgraphs": "^1.0.0",
|
|
122
116
|
"ai": "6.0.167",
|
|
123
117
|
"zod": "^4.3.6"
|
|
124
118
|
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
var import_node_module = require("node:module");
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
function __accessProp(key) {
|
|
7
|
-
return this[key];
|
|
8
|
-
}
|
|
9
|
-
var __toCommonJS = (from) => {
|
|
10
|
-
var entry = (__moduleCache ??= new WeakMap).get(from), desc;
|
|
11
|
-
if (entry)
|
|
12
|
-
return entry;
|
|
13
|
-
entry = __defProp({}, "__esModule", { value: true });
|
|
14
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
-
for (var key of __getOwnPropNames(from))
|
|
16
|
-
if (!__hasOwnProp.call(entry, key))
|
|
17
|
-
__defProp(entry, key, {
|
|
18
|
-
get: __accessProp.bind(from, key),
|
|
19
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
__moduleCache.set(from, entry);
|
|
23
|
-
return entry;
|
|
24
|
-
};
|
|
25
|
-
var __moduleCache;
|
|
26
|
-
var __returnValue = (v) => v;
|
|
27
|
-
function __exportSetter(name, newValue) {
|
|
28
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
29
|
-
}
|
|
30
|
-
var __export = (target, all) => {
|
|
31
|
-
for (var name in all)
|
|
32
|
-
__defProp(target, name, {
|
|
33
|
-
get: all[name],
|
|
34
|
-
enumerable: true,
|
|
35
|
-
configurable: true,
|
|
36
|
-
set: __exportSetter.bind(all, name)
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
// src/triggers/index.ts
|
|
41
|
-
var exports_triggers = {};
|
|
42
|
-
__export(exports_triggers, {
|
|
43
|
-
on: () => on
|
|
44
|
-
});
|
|
45
|
-
module.exports = __toCommonJS(exports_triggers);
|
|
46
|
-
function make(filter) {
|
|
47
|
-
return { type: "event", filter };
|
|
48
|
-
}
|
|
49
|
-
var on = {
|
|
50
|
-
stxTransfer: (f = {}) => make({ type: "stx_transfer", ...f }),
|
|
51
|
-
stxMint: (f = {}) => make({ type: "stx_mint", ...f }),
|
|
52
|
-
stxBurn: (f = {}) => make({ type: "stx_burn", ...f }),
|
|
53
|
-
stxLock: (f = {}) => make({ type: "stx_lock", ...f }),
|
|
54
|
-
ftTransfer: (f = {}) => make({ type: "ft_transfer", ...f }),
|
|
55
|
-
ftMint: (f = {}) => make({ type: "ft_mint", ...f }),
|
|
56
|
-
ftBurn: (f = {}) => make({ type: "ft_burn", ...f }),
|
|
57
|
-
nftTransfer: (f = {}) => make({ type: "nft_transfer", ...f }),
|
|
58
|
-
nftMint: (f = {}) => make({ type: "nft_mint", ...f }),
|
|
59
|
-
nftBurn: (f = {}) => make({ type: "nft_burn", ...f }),
|
|
60
|
-
contractCall: (f = {}) => make({ type: "contract_call", ...f }),
|
|
61
|
-
contractDeploy: (f = {}) => make({ type: "contract_deploy", ...f }),
|
|
62
|
-
printEvent: (f = {}) => make({ type: "print_event", ...f })
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
//# debugId=10C54A365AA4CC8564756E2164756E21
|
|
66
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/triggers/index.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"/**\n * Typed event-trigger helpers. Each helper returns a standard `EventTrigger`\n * plus a phantom `__event` type used for inference at consumer sites. The\n * phantom carries no runtime value.\n */\n\nimport type {\n\tContractCallFilter,\n\tContractDeployFilter,\n\tFtBurnFilter,\n\tFtMintFilter,\n\tFtTransferFilter,\n\tNftBurnFilter,\n\tNftMintFilter,\n\tNftTransferFilter,\n\tPrintEventFilter,\n\tStxBurnFilter,\n\tStxLockFilter,\n\tStxMintFilter,\n\tStxTransferFilter,\n} from \"@secondlayer/subgraphs/types\";\nimport type { EventTrigger } from \"./types\";\n\n// --- Per-filter event payload shapes ---\n\n/** Metadata shared by every event. */\nexport interface TxMeta {\n\ttxId: string;\n\tsender: string;\n\tblockHeight: number;\n\tblockTime: number;\n}\n\nexport interface StxTransferEvent {\n\tsender: string;\n\trecipient: string;\n\tamount: bigint;\n\tmemo: string | null;\n\ttx: TxMeta;\n}\n\nexport interface StxMintEvent {\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface StxBurnEvent {\n\tsender: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface StxLockEvent {\n\tlockedAddress: string;\n\tamount: bigint;\n\tunlockHeight: number;\n\ttx: TxMeta;\n}\n\nexport interface FtTransferEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface FtMintEvent {\n\tassetIdentifier: string;\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface FtBurnEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface NftTransferEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\trecipient: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface NftMintEvent {\n\tassetIdentifier: string;\n\trecipient: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface NftBurnEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface ContractCallEvent {\n\tcontractId: string;\n\tfunctionName: string;\n\targs: unknown[];\n\tcaller: string;\n\ttx: TxMeta;\n}\n\nexport interface ContractDeployEvent {\n\tcontractId: string;\n\tdeployer: string;\n\tcontractName: string;\n\ttx: TxMeta;\n}\n\nexport interface PrintEventEvent {\n\tcontractId: string;\n\ttopic: string | null;\n\tvalue: unknown;\n\ttx: TxMeta;\n}\n\n// --- Typed trigger wrapper ---\n\n/**\n * Phantom-typed EventTrigger. Runtime shape is identical to `EventTrigger`;\n * the `__event` field only exists at the type level for `defineWorkflow`\n * to infer the handler's `event` parameter.\n */\nexport type TypedEventTrigger<TEvent> = EventTrigger & {\n\treadonly __event?: TEvent;\n};\n\nfunction make<TEvent>(\n\tfilter: EventTrigger[\"filter\"],\n): TypedEventTrigger<TEvent> {\n\treturn { type: \"event\", filter };\n}\n\n// --- `on.*` helpers, 13 total ---\n\nexport interface TriggerHelpers {\n\tstxTransfer: (\n\t\tf?: Omit<StxTransferFilter, \"type\">,\n\t) => TypedEventTrigger<StxTransferEvent>;\n\tstxMint: (f?: Omit<StxMintFilter, \"type\">) => TypedEventTrigger<StxMintEvent>;\n\tstxBurn: (f?: Omit<StxBurnFilter, \"type\">) => TypedEventTrigger<StxBurnEvent>;\n\tstxLock: (f?: Omit<StxLockFilter, \"type\">) => TypedEventTrigger<StxLockEvent>;\n\tftTransfer: (\n\t\tf?: Omit<FtTransferFilter, \"type\">,\n\t) => TypedEventTrigger<FtTransferEvent>;\n\tftMint: (f?: Omit<FtMintFilter, \"type\">) => TypedEventTrigger<FtMintEvent>;\n\tftBurn: (f?: Omit<FtBurnFilter, \"type\">) => TypedEventTrigger<FtBurnEvent>;\n\tnftTransfer: (\n\t\tf?: Omit<NftTransferFilter, \"type\">,\n\t) => TypedEventTrigger<NftTransferEvent>;\n\tnftMint: (f?: Omit<NftMintFilter, \"type\">) => TypedEventTrigger<NftMintEvent>;\n\tnftBurn: (f?: Omit<NftBurnFilter, \"type\">) => TypedEventTrigger<NftBurnEvent>;\n\tcontractCall: (\n\t\tf?: Omit<ContractCallFilter, \"type\">,\n\t) => TypedEventTrigger<ContractCallEvent>;\n\tcontractDeploy: (\n\t\tf?: Omit<ContractDeployFilter, \"type\">,\n\t) => TypedEventTrigger<ContractDeployEvent>;\n\tprintEvent: (\n\t\tf?: Omit<PrintEventFilter, \"type\">,\n\t) => TypedEventTrigger<PrintEventEvent>;\n}\n\nexport const on: TriggerHelpers = {\n\tstxTransfer: (f = {}) =>\n\t\tmake<StxTransferEvent>({ type: \"stx_transfer\", ...f }),\n\n\tstxMint: (f = {}) => make<StxMintEvent>({ type: \"stx_mint\", ...f }),\n\n\tstxBurn: (f = {}) => make<StxBurnEvent>({ type: \"stx_burn\", ...f }),\n\n\tstxLock: (f = {}) => make<StxLockEvent>({ type: \"stx_lock\", ...f }),\n\n\tftTransfer: (f = {}) => make<FtTransferEvent>({ type: \"ft_transfer\", ...f }),\n\n\tftMint: (f = {}) => make<FtMintEvent>({ type: \"ft_mint\", ...f }),\n\n\tftBurn: (f = {}) => make<FtBurnEvent>({ type: \"ft_burn\", ...f }),\n\n\tnftTransfer: (f = {}) =>\n\t\tmake<NftTransferEvent>({ type: \"nft_transfer\", ...f }),\n\n\tnftMint: (f = {}) => make<NftMintEvent>({ type: \"nft_mint\", ...f }),\n\n\tnftBurn: (f = {}) => make<NftBurnEvent>({ type: \"nft_burn\", ...f }),\n\n\tcontractCall: (f = {}) =>\n\t\tmake<ContractCallEvent>({ type: \"contract_call\", ...f }),\n\n\tcontractDeploy: (f = {}) =>\n\t\tmake<ContractDeployEvent>({ type: \"contract_deploy\", ...f }),\n\n\tprintEvent: (f = {}) => make<PrintEventEvent>({ type: \"print_event\", ...f }),\n};\n\n/** Extract the event payload type from a trigger. */\nexport type EventOf<T> = T extends TypedEventTrigger<infer E> ? E : never;\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyIA,SAAS,IAAY,CACpB,QAC4B;AAAA,EAC5B,OAAO,EAAE,MAAM,SAAS,OAAO;AAAA;AAiCzB,IAAM,KAAqB;AAAA,EACjC,aAAa,CAAC,IAAI,CAAC,MAClB,KAAuB,EAAE,MAAM,mBAAmB,EAAE,CAAC;AAAA,EAEtD,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,YAAY,CAAC,IAAI,CAAC,MAAM,KAAsB,EAAE,MAAM,kBAAkB,EAAE,CAAC;AAAA,EAE3E,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAkB,EAAE,MAAM,cAAc,EAAE,CAAC;AAAA,EAE/D,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAkB,EAAE,MAAM,cAAc,EAAE,CAAC;AAAA,EAE/D,aAAa,CAAC,IAAI,CAAC,MAClB,KAAuB,EAAE,MAAM,mBAAmB,EAAE,CAAC;AAAA,EAEtD,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,cAAc,CAAC,IAAI,CAAC,MACnB,KAAwB,EAAE,MAAM,oBAAoB,EAAE,CAAC;AAAA,EAExD,gBAAgB,CAAC,IAAI,CAAC,MACrB,KAA0B,EAAE,MAAM,sBAAsB,EAAE,CAAC;AAAA,EAE5D,YAAY,CAAC,IAAI,CAAC,MAAM,KAAsB,EAAE,MAAM,kBAAkB,EAAE,CAAC;AAC5E;",
|
|
8
|
-
"debugId": "10C54A365AA4CC8564756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { ContractCallFilter, ContractDeployFilter, FtBurnFilter, FtMintFilter, FtTransferFilter, NftBurnFilter, NftMintFilter, NftTransferFilter, PrintEventFilter, StxBurnFilter, StxLockFilter, StxMintFilter, StxTransferFilter } from "@secondlayer/subgraphs/types";
|
|
2
|
-
import { SubgraphFilter } from "@secondlayer/subgraphs/types";
|
|
3
|
-
interface EventTrigger {
|
|
4
|
-
type: "event";
|
|
5
|
-
filter: SubgraphFilter;
|
|
6
|
-
}
|
|
7
|
-
/** Metadata shared by every event. */
|
|
8
|
-
interface TxMeta {
|
|
9
|
-
txId: string;
|
|
10
|
-
sender: string;
|
|
11
|
-
blockHeight: number;
|
|
12
|
-
blockTime: number;
|
|
13
|
-
}
|
|
14
|
-
interface StxTransferEvent {
|
|
15
|
-
sender: string;
|
|
16
|
-
recipient: string;
|
|
17
|
-
amount: bigint;
|
|
18
|
-
memo: string | null;
|
|
19
|
-
tx: TxMeta;
|
|
20
|
-
}
|
|
21
|
-
interface StxMintEvent {
|
|
22
|
-
recipient: string;
|
|
23
|
-
amount: bigint;
|
|
24
|
-
tx: TxMeta;
|
|
25
|
-
}
|
|
26
|
-
interface StxBurnEvent {
|
|
27
|
-
sender: string;
|
|
28
|
-
amount: bigint;
|
|
29
|
-
tx: TxMeta;
|
|
30
|
-
}
|
|
31
|
-
interface StxLockEvent {
|
|
32
|
-
lockedAddress: string;
|
|
33
|
-
amount: bigint;
|
|
34
|
-
unlockHeight: number;
|
|
35
|
-
tx: TxMeta;
|
|
36
|
-
}
|
|
37
|
-
interface FtTransferEvent {
|
|
38
|
-
assetIdentifier: string;
|
|
39
|
-
sender: string;
|
|
40
|
-
recipient: string;
|
|
41
|
-
amount: bigint;
|
|
42
|
-
tx: TxMeta;
|
|
43
|
-
}
|
|
44
|
-
interface FtMintEvent {
|
|
45
|
-
assetIdentifier: string;
|
|
46
|
-
recipient: string;
|
|
47
|
-
amount: bigint;
|
|
48
|
-
tx: TxMeta;
|
|
49
|
-
}
|
|
50
|
-
interface FtBurnEvent {
|
|
51
|
-
assetIdentifier: string;
|
|
52
|
-
sender: string;
|
|
53
|
-
amount: bigint;
|
|
54
|
-
tx: TxMeta;
|
|
55
|
-
}
|
|
56
|
-
interface NftTransferEvent {
|
|
57
|
-
assetIdentifier: string;
|
|
58
|
-
sender: string;
|
|
59
|
-
recipient: string;
|
|
60
|
-
tokenId: string;
|
|
61
|
-
tx: TxMeta;
|
|
62
|
-
}
|
|
63
|
-
interface NftMintEvent {
|
|
64
|
-
assetIdentifier: string;
|
|
65
|
-
recipient: string;
|
|
66
|
-
tokenId: string;
|
|
67
|
-
tx: TxMeta;
|
|
68
|
-
}
|
|
69
|
-
interface NftBurnEvent {
|
|
70
|
-
assetIdentifier: string;
|
|
71
|
-
sender: string;
|
|
72
|
-
tokenId: string;
|
|
73
|
-
tx: TxMeta;
|
|
74
|
-
}
|
|
75
|
-
interface ContractCallEvent {
|
|
76
|
-
contractId: string;
|
|
77
|
-
functionName: string;
|
|
78
|
-
args: unknown[];
|
|
79
|
-
caller: string;
|
|
80
|
-
tx: TxMeta;
|
|
81
|
-
}
|
|
82
|
-
interface ContractDeployEvent {
|
|
83
|
-
contractId: string;
|
|
84
|
-
deployer: string;
|
|
85
|
-
contractName: string;
|
|
86
|
-
tx: TxMeta;
|
|
87
|
-
}
|
|
88
|
-
interface PrintEventEvent {
|
|
89
|
-
contractId: string;
|
|
90
|
-
topic: string | null;
|
|
91
|
-
value: unknown;
|
|
92
|
-
tx: TxMeta;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Phantom-typed EventTrigger. Runtime shape is identical to `EventTrigger`;
|
|
96
|
-
* the `__event` field only exists at the type level for `defineWorkflow`
|
|
97
|
-
* to infer the handler's `event` parameter.
|
|
98
|
-
*/
|
|
99
|
-
type TypedEventTrigger<TEvent> = EventTrigger & {
|
|
100
|
-
readonly __event?: TEvent
|
|
101
|
-
};
|
|
102
|
-
interface TriggerHelpers {
|
|
103
|
-
stxTransfer: (f?: Omit<StxTransferFilter, "type">) => TypedEventTrigger<StxTransferEvent>;
|
|
104
|
-
stxMint: (f?: Omit<StxMintFilter, "type">) => TypedEventTrigger<StxMintEvent>;
|
|
105
|
-
stxBurn: (f?: Omit<StxBurnFilter, "type">) => TypedEventTrigger<StxBurnEvent>;
|
|
106
|
-
stxLock: (f?: Omit<StxLockFilter, "type">) => TypedEventTrigger<StxLockEvent>;
|
|
107
|
-
ftTransfer: (f?: Omit<FtTransferFilter, "type">) => TypedEventTrigger<FtTransferEvent>;
|
|
108
|
-
ftMint: (f?: Omit<FtMintFilter, "type">) => TypedEventTrigger<FtMintEvent>;
|
|
109
|
-
ftBurn: (f?: Omit<FtBurnFilter, "type">) => TypedEventTrigger<FtBurnEvent>;
|
|
110
|
-
nftTransfer: (f?: Omit<NftTransferFilter, "type">) => TypedEventTrigger<NftTransferEvent>;
|
|
111
|
-
nftMint: (f?: Omit<NftMintFilter, "type">) => TypedEventTrigger<NftMintEvent>;
|
|
112
|
-
nftBurn: (f?: Omit<NftBurnFilter, "type">) => TypedEventTrigger<NftBurnEvent>;
|
|
113
|
-
contractCall: (f?: Omit<ContractCallFilter, "type">) => TypedEventTrigger<ContractCallEvent>;
|
|
114
|
-
contractDeploy: (f?: Omit<ContractDeployFilter, "type">) => TypedEventTrigger<ContractDeployEvent>;
|
|
115
|
-
printEvent: (f?: Omit<PrintEventFilter, "type">) => TypedEventTrigger<PrintEventEvent>;
|
|
116
|
-
}
|
|
117
|
-
declare const on: TriggerHelpers;
|
|
118
|
-
/** Extract the event payload type from a trigger. */
|
|
119
|
-
type EventOf<T> = T extends TypedEventTrigger<infer E> ? E : never;
|
|
120
|
-
export { on, TypedEventTrigger, TxMeta, TriggerHelpers, StxTransferEvent, StxMintEvent, StxLockEvent, StxBurnEvent, PrintEventEvent, NftTransferEvent, NftMintEvent, NftBurnEvent, FtTransferEvent, FtMintEvent, FtBurnEvent, EventOf, ContractDeployEvent, ContractCallEvent };
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { ContractCallFilter, ContractDeployFilter, FtBurnFilter, FtMintFilter, FtTransferFilter, NftBurnFilter, NftMintFilter, NftTransferFilter, PrintEventFilter, StxBurnFilter, StxLockFilter, StxMintFilter, StxTransferFilter } from "@secondlayer/subgraphs/types";
|
|
2
|
-
import { SubgraphFilter } from "@secondlayer/subgraphs/types";
|
|
3
|
-
interface EventTrigger {
|
|
4
|
-
type: "event";
|
|
5
|
-
filter: SubgraphFilter;
|
|
6
|
-
}
|
|
7
|
-
/** Metadata shared by every event. */
|
|
8
|
-
interface TxMeta {
|
|
9
|
-
txId: string;
|
|
10
|
-
sender: string;
|
|
11
|
-
blockHeight: number;
|
|
12
|
-
blockTime: number;
|
|
13
|
-
}
|
|
14
|
-
interface StxTransferEvent {
|
|
15
|
-
sender: string;
|
|
16
|
-
recipient: string;
|
|
17
|
-
amount: bigint;
|
|
18
|
-
memo: string | null;
|
|
19
|
-
tx: TxMeta;
|
|
20
|
-
}
|
|
21
|
-
interface StxMintEvent {
|
|
22
|
-
recipient: string;
|
|
23
|
-
amount: bigint;
|
|
24
|
-
tx: TxMeta;
|
|
25
|
-
}
|
|
26
|
-
interface StxBurnEvent {
|
|
27
|
-
sender: string;
|
|
28
|
-
amount: bigint;
|
|
29
|
-
tx: TxMeta;
|
|
30
|
-
}
|
|
31
|
-
interface StxLockEvent {
|
|
32
|
-
lockedAddress: string;
|
|
33
|
-
amount: bigint;
|
|
34
|
-
unlockHeight: number;
|
|
35
|
-
tx: TxMeta;
|
|
36
|
-
}
|
|
37
|
-
interface FtTransferEvent {
|
|
38
|
-
assetIdentifier: string;
|
|
39
|
-
sender: string;
|
|
40
|
-
recipient: string;
|
|
41
|
-
amount: bigint;
|
|
42
|
-
tx: TxMeta;
|
|
43
|
-
}
|
|
44
|
-
interface FtMintEvent {
|
|
45
|
-
assetIdentifier: string;
|
|
46
|
-
recipient: string;
|
|
47
|
-
amount: bigint;
|
|
48
|
-
tx: TxMeta;
|
|
49
|
-
}
|
|
50
|
-
interface FtBurnEvent {
|
|
51
|
-
assetIdentifier: string;
|
|
52
|
-
sender: string;
|
|
53
|
-
amount: bigint;
|
|
54
|
-
tx: TxMeta;
|
|
55
|
-
}
|
|
56
|
-
interface NftTransferEvent {
|
|
57
|
-
assetIdentifier: string;
|
|
58
|
-
sender: string;
|
|
59
|
-
recipient: string;
|
|
60
|
-
tokenId: string;
|
|
61
|
-
tx: TxMeta;
|
|
62
|
-
}
|
|
63
|
-
interface NftMintEvent {
|
|
64
|
-
assetIdentifier: string;
|
|
65
|
-
recipient: string;
|
|
66
|
-
tokenId: string;
|
|
67
|
-
tx: TxMeta;
|
|
68
|
-
}
|
|
69
|
-
interface NftBurnEvent {
|
|
70
|
-
assetIdentifier: string;
|
|
71
|
-
sender: string;
|
|
72
|
-
tokenId: string;
|
|
73
|
-
tx: TxMeta;
|
|
74
|
-
}
|
|
75
|
-
interface ContractCallEvent {
|
|
76
|
-
contractId: string;
|
|
77
|
-
functionName: string;
|
|
78
|
-
args: unknown[];
|
|
79
|
-
caller: string;
|
|
80
|
-
tx: TxMeta;
|
|
81
|
-
}
|
|
82
|
-
interface ContractDeployEvent {
|
|
83
|
-
contractId: string;
|
|
84
|
-
deployer: string;
|
|
85
|
-
contractName: string;
|
|
86
|
-
tx: TxMeta;
|
|
87
|
-
}
|
|
88
|
-
interface PrintEventEvent {
|
|
89
|
-
contractId: string;
|
|
90
|
-
topic: string | null;
|
|
91
|
-
value: unknown;
|
|
92
|
-
tx: TxMeta;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Phantom-typed EventTrigger. Runtime shape is identical to `EventTrigger`;
|
|
96
|
-
* the `__event` field only exists at the type level for `defineWorkflow`
|
|
97
|
-
* to infer the handler's `event` parameter.
|
|
98
|
-
*/
|
|
99
|
-
type TypedEventTrigger<TEvent> = EventTrigger & {
|
|
100
|
-
readonly __event?: TEvent
|
|
101
|
-
};
|
|
102
|
-
interface TriggerHelpers {
|
|
103
|
-
stxTransfer: (f?: Omit<StxTransferFilter, "type">) => TypedEventTrigger<StxTransferEvent>;
|
|
104
|
-
stxMint: (f?: Omit<StxMintFilter, "type">) => TypedEventTrigger<StxMintEvent>;
|
|
105
|
-
stxBurn: (f?: Omit<StxBurnFilter, "type">) => TypedEventTrigger<StxBurnEvent>;
|
|
106
|
-
stxLock: (f?: Omit<StxLockFilter, "type">) => TypedEventTrigger<StxLockEvent>;
|
|
107
|
-
ftTransfer: (f?: Omit<FtTransferFilter, "type">) => TypedEventTrigger<FtTransferEvent>;
|
|
108
|
-
ftMint: (f?: Omit<FtMintFilter, "type">) => TypedEventTrigger<FtMintEvent>;
|
|
109
|
-
ftBurn: (f?: Omit<FtBurnFilter, "type">) => TypedEventTrigger<FtBurnEvent>;
|
|
110
|
-
nftTransfer: (f?: Omit<NftTransferFilter, "type">) => TypedEventTrigger<NftTransferEvent>;
|
|
111
|
-
nftMint: (f?: Omit<NftMintFilter, "type">) => TypedEventTrigger<NftMintEvent>;
|
|
112
|
-
nftBurn: (f?: Omit<NftBurnFilter, "type">) => TypedEventTrigger<NftBurnEvent>;
|
|
113
|
-
contractCall: (f?: Omit<ContractCallFilter, "type">) => TypedEventTrigger<ContractCallEvent>;
|
|
114
|
-
contractDeploy: (f?: Omit<ContractDeployFilter, "type">) => TypedEventTrigger<ContractDeployEvent>;
|
|
115
|
-
printEvent: (f?: Omit<PrintEventFilter, "type">) => TypedEventTrigger<PrintEventEvent>;
|
|
116
|
-
}
|
|
117
|
-
declare const on: TriggerHelpers;
|
|
118
|
-
/** Extract the event payload type from a trigger. */
|
|
119
|
-
type EventOf<T> = T extends TypedEventTrigger<infer E> ? E : never;
|
|
120
|
-
export { on, TypedEventTrigger, TxMeta, TriggerHelpers, StxTransferEvent, StxMintEvent, StxLockEvent, StxBurnEvent, PrintEventEvent, NftTransferEvent, NftMintEvent, NftBurnEvent, FtTransferEvent, FtMintEvent, FtBurnEvent, EventOf, ContractDeployEvent, ContractCallEvent };
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// src/triggers/index.ts
|
|
2
|
-
function make(filter) {
|
|
3
|
-
return { type: "event", filter };
|
|
4
|
-
}
|
|
5
|
-
var on = {
|
|
6
|
-
stxTransfer: (f = {}) => make({ type: "stx_transfer", ...f }),
|
|
7
|
-
stxMint: (f = {}) => make({ type: "stx_mint", ...f }),
|
|
8
|
-
stxBurn: (f = {}) => make({ type: "stx_burn", ...f }),
|
|
9
|
-
stxLock: (f = {}) => make({ type: "stx_lock", ...f }),
|
|
10
|
-
ftTransfer: (f = {}) => make({ type: "ft_transfer", ...f }),
|
|
11
|
-
ftMint: (f = {}) => make({ type: "ft_mint", ...f }),
|
|
12
|
-
ftBurn: (f = {}) => make({ type: "ft_burn", ...f }),
|
|
13
|
-
nftTransfer: (f = {}) => make({ type: "nft_transfer", ...f }),
|
|
14
|
-
nftMint: (f = {}) => make({ type: "nft_mint", ...f }),
|
|
15
|
-
nftBurn: (f = {}) => make({ type: "nft_burn", ...f }),
|
|
16
|
-
contractCall: (f = {}) => make({ type: "contract_call", ...f }),
|
|
17
|
-
contractDeploy: (f = {}) => make({ type: "contract_deploy", ...f }),
|
|
18
|
-
printEvent: (f = {}) => make({ type: "print_event", ...f })
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
on
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
//# debugId=3E5DFF22EC6ECA5D64756E2164756E21
|
|
25
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/triggers/index.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"/**\n * Typed event-trigger helpers. Each helper returns a standard `EventTrigger`\n * plus a phantom `__event` type used for inference at consumer sites. The\n * phantom carries no runtime value.\n */\n\nimport type {\n\tContractCallFilter,\n\tContractDeployFilter,\n\tFtBurnFilter,\n\tFtMintFilter,\n\tFtTransferFilter,\n\tNftBurnFilter,\n\tNftMintFilter,\n\tNftTransferFilter,\n\tPrintEventFilter,\n\tStxBurnFilter,\n\tStxLockFilter,\n\tStxMintFilter,\n\tStxTransferFilter,\n} from \"@secondlayer/subgraphs/types\";\nimport type { EventTrigger } from \"./types\";\n\n// --- Per-filter event payload shapes ---\n\n/** Metadata shared by every event. */\nexport interface TxMeta {\n\ttxId: string;\n\tsender: string;\n\tblockHeight: number;\n\tblockTime: number;\n}\n\nexport interface StxTransferEvent {\n\tsender: string;\n\trecipient: string;\n\tamount: bigint;\n\tmemo: string | null;\n\ttx: TxMeta;\n}\n\nexport interface StxMintEvent {\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface StxBurnEvent {\n\tsender: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface StxLockEvent {\n\tlockedAddress: string;\n\tamount: bigint;\n\tunlockHeight: number;\n\ttx: TxMeta;\n}\n\nexport interface FtTransferEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface FtMintEvent {\n\tassetIdentifier: string;\n\trecipient: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface FtBurnEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\tamount: bigint;\n\ttx: TxMeta;\n}\n\nexport interface NftTransferEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\trecipient: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface NftMintEvent {\n\tassetIdentifier: string;\n\trecipient: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface NftBurnEvent {\n\tassetIdentifier: string;\n\tsender: string;\n\ttokenId: string;\n\ttx: TxMeta;\n}\n\nexport interface ContractCallEvent {\n\tcontractId: string;\n\tfunctionName: string;\n\targs: unknown[];\n\tcaller: string;\n\ttx: TxMeta;\n}\n\nexport interface ContractDeployEvent {\n\tcontractId: string;\n\tdeployer: string;\n\tcontractName: string;\n\ttx: TxMeta;\n}\n\nexport interface PrintEventEvent {\n\tcontractId: string;\n\ttopic: string | null;\n\tvalue: unknown;\n\ttx: TxMeta;\n}\n\n// --- Typed trigger wrapper ---\n\n/**\n * Phantom-typed EventTrigger. Runtime shape is identical to `EventTrigger`;\n * the `__event` field only exists at the type level for `defineWorkflow`\n * to infer the handler's `event` parameter.\n */\nexport type TypedEventTrigger<TEvent> = EventTrigger & {\n\treadonly __event?: TEvent;\n};\n\nfunction make<TEvent>(\n\tfilter: EventTrigger[\"filter\"],\n): TypedEventTrigger<TEvent> {\n\treturn { type: \"event\", filter };\n}\n\n// --- `on.*` helpers, 13 total ---\n\nexport interface TriggerHelpers {\n\tstxTransfer: (\n\t\tf?: Omit<StxTransferFilter, \"type\">,\n\t) => TypedEventTrigger<StxTransferEvent>;\n\tstxMint: (f?: Omit<StxMintFilter, \"type\">) => TypedEventTrigger<StxMintEvent>;\n\tstxBurn: (f?: Omit<StxBurnFilter, \"type\">) => TypedEventTrigger<StxBurnEvent>;\n\tstxLock: (f?: Omit<StxLockFilter, \"type\">) => TypedEventTrigger<StxLockEvent>;\n\tftTransfer: (\n\t\tf?: Omit<FtTransferFilter, \"type\">,\n\t) => TypedEventTrigger<FtTransferEvent>;\n\tftMint: (f?: Omit<FtMintFilter, \"type\">) => TypedEventTrigger<FtMintEvent>;\n\tftBurn: (f?: Omit<FtBurnFilter, \"type\">) => TypedEventTrigger<FtBurnEvent>;\n\tnftTransfer: (\n\t\tf?: Omit<NftTransferFilter, \"type\">,\n\t) => TypedEventTrigger<NftTransferEvent>;\n\tnftMint: (f?: Omit<NftMintFilter, \"type\">) => TypedEventTrigger<NftMintEvent>;\n\tnftBurn: (f?: Omit<NftBurnFilter, \"type\">) => TypedEventTrigger<NftBurnEvent>;\n\tcontractCall: (\n\t\tf?: Omit<ContractCallFilter, \"type\">,\n\t) => TypedEventTrigger<ContractCallEvent>;\n\tcontractDeploy: (\n\t\tf?: Omit<ContractDeployFilter, \"type\">,\n\t) => TypedEventTrigger<ContractDeployEvent>;\n\tprintEvent: (\n\t\tf?: Omit<PrintEventFilter, \"type\">,\n\t) => TypedEventTrigger<PrintEventEvent>;\n}\n\nexport const on: TriggerHelpers = {\n\tstxTransfer: (f = {}) =>\n\t\tmake<StxTransferEvent>({ type: \"stx_transfer\", ...f }),\n\n\tstxMint: (f = {}) => make<StxMintEvent>({ type: \"stx_mint\", ...f }),\n\n\tstxBurn: (f = {}) => make<StxBurnEvent>({ type: \"stx_burn\", ...f }),\n\n\tstxLock: (f = {}) => make<StxLockEvent>({ type: \"stx_lock\", ...f }),\n\n\tftTransfer: (f = {}) => make<FtTransferEvent>({ type: \"ft_transfer\", ...f }),\n\n\tftMint: (f = {}) => make<FtMintEvent>({ type: \"ft_mint\", ...f }),\n\n\tftBurn: (f = {}) => make<FtBurnEvent>({ type: \"ft_burn\", ...f }),\n\n\tnftTransfer: (f = {}) =>\n\t\tmake<NftTransferEvent>({ type: \"nft_transfer\", ...f }),\n\n\tnftMint: (f = {}) => make<NftMintEvent>({ type: \"nft_mint\", ...f }),\n\n\tnftBurn: (f = {}) => make<NftBurnEvent>({ type: \"nft_burn\", ...f }),\n\n\tcontractCall: (f = {}) =>\n\t\tmake<ContractCallEvent>({ type: \"contract_call\", ...f }),\n\n\tcontractDeploy: (f = {}) =>\n\t\tmake<ContractDeployEvent>({ type: \"contract_deploy\", ...f }),\n\n\tprintEvent: (f = {}) => make<PrintEventEvent>({ type: \"print_event\", ...f }),\n};\n\n/** Extract the event payload type from a trigger. */\nexport type EventOf<T> = T extends TypedEventTrigger<infer E> ? E : never;\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";AAyIA,SAAS,IAAY,CACpB,QAC4B;AAAA,EAC5B,OAAO,EAAE,MAAM,SAAS,OAAO;AAAA;AAiCzB,IAAM,KAAqB;AAAA,EACjC,aAAa,CAAC,IAAI,CAAC,MAClB,KAAuB,EAAE,MAAM,mBAAmB,EAAE,CAAC;AAAA,EAEtD,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,YAAY,CAAC,IAAI,CAAC,MAAM,KAAsB,EAAE,MAAM,kBAAkB,EAAE,CAAC;AAAA,EAE3E,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAkB,EAAE,MAAM,cAAc,EAAE,CAAC;AAAA,EAE/D,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAkB,EAAE,MAAM,cAAc,EAAE,CAAC;AAAA,EAE/D,aAAa,CAAC,IAAI,CAAC,MAClB,KAAuB,EAAE,MAAM,mBAAmB,EAAE,CAAC;AAAA,EAEtD,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,SAAS,CAAC,IAAI,CAAC,MAAM,KAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;AAAA,EAElE,cAAc,CAAC,IAAI,CAAC,MACnB,KAAwB,EAAE,MAAM,oBAAoB,EAAE,CAAC;AAAA,EAExD,gBAAgB,CAAC,IAAI,CAAC,MACrB,KAA0B,EAAE,MAAM,sBAAsB,EAAE,CAAC;AAAA,EAE5D,YAAY,CAAC,IAAI,CAAC,MAAM,KAAsB,EAAE,MAAM,kBAAkB,EAAE,CAAC;AAC5E;",
|
|
8
|
-
"debugId": "3E5DFF22EC6ECA5D64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|