@secondlayer/cli 1.0.0 → 1.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/index.d.ts CHANGED
@@ -303,6 +303,8 @@ interface ActionsPluginOptions {
303
303
  excludeFunctions?: string[];
304
304
  /** Enable debug output */
305
305
  debug?: boolean;
306
+ /** Environment variable name for default sender key (default: "STX_SENDER_KEY") */
307
+ senderKeyEnv?: string;
306
308
  }
307
309
  /**
308
310
  * Actions plugin factory
package/dist/index.js CHANGED
@@ -1174,6 +1174,7 @@ function generateReadHelpers(contract, options) {
1174
1174
  function generateWriteHelpers(contract, options) {
1175
1175
  const { abi, name } = contract;
1176
1176
  const functions = abi.functions || [];
1177
+ const envVarName = options.senderKeyEnv ?? "STX_SENDER_KEY";
1177
1178
  const publicFunctions = functions.filter((f) => f.access === "public");
1178
1179
  if (publicFunctions.length === 0) {
1179
1180
  return "";
@@ -1194,8 +1195,7 @@ function generateWriteHelpers(contract, options) {
1194
1195
  const methodName = toCamelCase4(func.name);
1195
1196
  const argsSignature = generateArgsSignature(func.args);
1196
1197
  const clarityArgs = generateClarityArgs(func.args, name);
1197
- return `async ${methodName}(${argsSignature}options: {
1198
- senderKey: string;
1198
+ return `async ${methodName}(${argsSignature}senderKey?: string, options?: {
1199
1199
  network?: 'mainnet' | 'testnet' | 'devnet';
1200
1200
  fee?: string | number | undefined;
1201
1201
  nonce?: bigint;
@@ -1203,14 +1203,18 @@ function generateWriteHelpers(contract, options) {
1203
1203
  postConditions?: PostCondition[];
1204
1204
  validateWithAbi?: boolean;
1205
1205
  }) {
1206
- const { senderKey, network = 'mainnet', ...txOptions } = options;
1207
-
1206
+ const resolvedSenderKey = senderKey ?? process.env.${envVarName};
1207
+ if (!resolvedSenderKey) {
1208
+ throw new Error('senderKey required: pass as argument or set ${envVarName} env var');
1209
+ }
1210
+ const { network = 'mainnet', ...txOptions } = options ?? {};
1211
+
1208
1212
  return await makeContractCall({
1209
1213
  contractAddress: '${contract.address}',
1210
1214
  contractName: '${contract.contractName}',
1211
1215
  functionName: '${func.name}',
1212
1216
  functionArgs: [${clarityArgs}],
1213
- senderKey,
1217
+ senderKey: resolvedSenderKey,
1214
1218
  network,
1215
1219
  validateWithAbi: true,
1216
1220
  ...txOptions
@@ -2979,5 +2983,5 @@ export {
2979
2983
  PluginManager
2980
2984
  };
2981
2985
 
2982
- //# debugId=8AEF6558336586B764756E2164756E21
2986
+ //# debugId=DBBDDA8E89A55EA464756E2164756E21
2983
2987
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -8,8 +8,8 @@
8
8
  "/**\n * Clarinet Plugin for @secondlayer/cli\n * Generates type-safe contract interfaces from local Clarity contracts using Clarinet SDK\n */\n\nimport { initSimnet } from \"@hirosystems/clarinet-sdk\";\nimport { toCamelCase } from \"@secondlayer/clarity-types\";\nimport { generateContractInterface } from \"../../generators/contract\";\nimport type {\n PluginFactory,\n UserConfig,\n GenerateContext,\n} from \"../../types/plugin\";\n\nexport interface ClarinetPluginOptions {\n /** Path to Clarinet.toml file */\n path?: string;\n\n /** Include only specific contracts */\n include?: string[];\n\n /** Exclude specific contracts */\n exclude?: string[];\n\n /** Enable debug output */\n debug?: boolean;\n}\n\n/**\n * Sanitize contract name to be a valid JavaScript identifier using camelCase\n */\nfunction sanitizeContractName(name: string): string {\n return toCamelCase(name);\n}\n\n/**\n * Check if a contract is a user-defined contract (not a system contract)\n */\nasync function isUserDefinedContract(\n contractId: string,\n manifestPath: string\n): Promise<boolean> {\n const [address, contractName] = contractId.split(\".\");\n\n try {\n // Read Clarinet.toml to get user-defined contracts\n const { promises: fs } = await import(\"fs\");\n const tomlContent = await fs.readFile(manifestPath, \"utf-8\");\n\n // Simple TOML parsing to find [contracts.CONTRACT_NAME] sections\n const contractSectionRegex = /^\\[contracts\\.([^\\]]+)\\]/gm;\n const userContracts = new Set<string>();\n\n let match;\n while ((match = contractSectionRegex.exec(tomlContent)) !== null) {\n userContracts.add(match[1]);\n }\n\n // If the contract is explicitly defined in Clarinet.toml, it's user-defined\n if (userContracts.has(contractName)) {\n return true;\n }\n } catch (error) {\n // If we can't read the TOML file, fall back to pattern matching\n }\n\n // Fallback: System contracts typically have specific addresses or are in the boot contracts\n // Common system contract patterns:\n const systemContractPatterns = [\n /^pox-\\d+$/, // pox-2, pox-3, etc.\n /^bns$/, // Blockchain Name System\n /^costs-\\d+$/, // costs-2, costs-3, etc.\n /^lockup$/, // lockup contract\n ];\n\n // Check if it matches any system contract pattern\n if (systemContractPatterns.some((pattern) => pattern.test(contractName))) {\n return false;\n }\n\n // System contracts often use specific addresses\n const systemAddresses = [\n \"SP000000000000000000002Q6VF78\", // Boot contracts address\n \"ST000000000000000000002AMW42H\", // Boot contracts address (testnet)\n ];\n\n if (systemAddresses.includes(address)) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Clarinet plugin factory\n */\nexport const clarinet: PluginFactory<ClarinetPluginOptions> = (\n options = {}\n) => {\n const manifestPath = options.path || \"./Clarinet.toml\";\n let simnet: any;\n\n return {\n name: \"@secondlayer/cli/plugin-clarinet\",\n version: \"1.0.0\",\n\n async transformConfig(config: UserConfig): Promise<UserConfig> {\n try {\n // Initialize simnet to extract contract ABIs\n simnet = await initSimnet(manifestPath);\n\n // Get contract interfaces from Clarinet\n const contractInterfaces = simnet.getContractsInterfaces();\n const contracts = [];\n\n for (const [contractId, abi] of contractInterfaces) {\n const [_, contractName] = contractId.split(\".\");\n\n // Skip system contracts\n if (!(await isUserDefinedContract(contractId, manifestPath))) {\n if (options.debug) {\n console.log(`🚫 Skipping system contract: ${contractId}`);\n }\n continue;\n }\n\n // Apply user filters\n if (options.include && !options.include.includes(contractName)) {\n continue;\n }\n if (options.exclude && options.exclude.includes(contractName)) {\n continue;\n }\n\n // Sanitize the contract name for JavaScript export\n const sanitizedName = sanitizeContractName(contractName);\n\n // Don't set source field to avoid conflict with file resolution\n // Instead, we'll track this in metadata during processing\n contracts.push({\n name: sanitizedName,\n address: contractId,\n abi: abi,\n // Remove source field - this was causing the path resolution issue\n _clarinetSource: true, // Internal flag for our plugin\n });\n }\n\n if (options.debug) {\n console.log(\n `🔍 Clarinet plugin found ${contracts.length} user-defined contracts`\n );\n }\n\n return {\n ...config,\n contracts: [...(config.contracts || []), ...contracts],\n };\n } catch (error) {\n const err = error as Error;\n if (options.debug) {\n console.warn(\n `⚠️ Clarinet plugin failed to load contracts: ${err.message}`\n );\n }\n // If Clarinet.toml doesn't exist or fails, just return config unchanged\n return config;\n }\n },\n\n async generate(context: GenerateContext): Promise<void> {\n // Filter contracts that came from Clarinet\n const clarinetContracts = context.contracts.filter(\n (contract) => contract.metadata?.source === \"clarinet\"\n );\n\n if (clarinetContracts.length === 0) {\n return;\n }\n\n if (options.debug) {\n context.logger.debug(\n `Generating interfaces for ${clarinetContracts.length} Clarinet contracts`\n );\n }\n\n // Generate the main contracts file using existing generator\n const contractsCode = await generateContractInterface(clarinetContracts);\n\n context.addOutput(\"contracts\", {\n path: context.config.out,\n content: contractsCode,\n type: \"contracts\",\n });\n\n // Don't log success here - let the main command handle it\n },\n };\n};\n\n/**\n * Utility function to check if a Clarinet project exists\n */\nexport async function hasClarinetProject(\n path = \"./Clarinet.toml\"\n): Promise<boolean> {\n try {\n const { promises: fs } = await import(\"fs\");\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n}\n",
9
9
  "import type { ResolvedContract } from \"../types/config\";\nimport { formatCode } from \"../utils/format\";\nimport {\n toCamelCase,\n type ClarityFunction,\n type ClarityMap,\n type ClarityVariable,\n} from \"@secondlayer/clarity-types\";\nimport { getTypeForArg } from \"../utils/type-mapping\";\n\n/**\n * Code generator for contract interfaces\n */\n\n/**\n * Generate shared network utilities for the generated code\n */\nfunction generateNetworkUtils(): string {\n return `/**\n * API URLs for different networks\n */\nconst API_URLS: Record<'mainnet' | 'testnet' | 'devnet', string> = {\n mainnet: 'https://api.hiro.so',\n testnet: 'https://api.testnet.hiro.so',\n devnet: 'http://localhost:3999'\n};\n\n/**\n * Infer network from Stacks address prefix\n * SP/SM = mainnet, ST/SN = testnet\n */\nfunction inferNetworkFromAddress(address: string): 'mainnet' | 'testnet' | undefined {\n if (address.startsWith('SP') || address.startsWith('SM')) return 'mainnet';\n if (address.startsWith('ST') || address.startsWith('SN')) return 'testnet';\n return undefined;\n}\n\n/**\n * Get API URL, inferring network from contract address if not specified\n */\nfunction getApiUrl(\n contractAddress: string,\n explicitNetwork?: 'mainnet' | 'testnet' | 'devnet'\n): string {\n const network = explicitNetwork ?? inferNetworkFromAddress(contractAddress) ?? 'mainnet';\n return API_URLS[network];\n}`;\n}\n\n/**\n * Generate validation utilities that are inlined in generated code\n * This avoids requiring external dependencies beyond @stacks/transactions\n */\nfunction generateValidationUtils(): string {\n return `/**\n * Contract name validation regex\n * Must start with letter, contain only letters, numbers, and hyphens, max 128 chars\n */\nconst CONTRACT_NAME_REGEX = /^[a-zA-Z][a-zA-Z0-9\\\\-]{0,127}$/;`;\n}\n\nexport async function generateContractInterface(\n contracts: ResolvedContract[]\n): Promise<string> {\n const imports = `import { Cl, validateStacksAddress } from '@stacks/transactions'`;\n\n const header = `/**\n * Generated by @secondlayer/cli\n * DO NOT EDIT MANUALLY\n *\n * @requires @stacks/transactions - Install with: npm install @stacks/transactions\n */`;\n\n const validationUtils = generateValidationUtils();\n const networkUtils = generateNetworkUtils();\n\n const contractsCode = contracts\n .map((contract) => generateContract(contract))\n .join(\"\\n\\n\");\n\n const code = `${imports}\\n\\n${header}\\n\\n${validationUtils}\\n\\n${networkUtils}\\n\\n${contractsCode}`;\n\n return formatCode(code);\n}\n\nfunction generateContract(contract: ResolvedContract): string {\n const { name, address, contractName, abi } = contract;\n\n const abiCode = generateAbiConstant(name, abi);\n\n const methods = abi.functions\n .filter((func: ClarityFunction) => func.access !== \"private\")\n .map((func: ClarityFunction) => generateMethod(func, address, contractName))\n .join(\",\\n\\n \");\n\n // Generate maps object if contract has maps\n const mapsObject = generateMapsObject(abi.maps || [], address, contractName);\n\n // Generate vars object if contract has variables (only data vars, not constants)\n const varsObject = generateVarsObject(abi.variables || [], address, contractName);\n\n // Generate constants object if contract has constants\n const constantsObject = generateConstantsObject(abi.variables || [], address, contractName);\n\n // Combine all members\n const allMembers = [methods, mapsObject, varsObject, constantsObject].filter(Boolean);\n\n const contractCode = `export const ${name} = {\n address: '${address}',\n contractAddress: '${address}',\n contractName: '${contractName}',\n\n ${allMembers.join(\",\\n\\n \")}\n} as const`;\n\n return `${abiCode}\\n\\n${contractCode}`;\n}\n\nfunction generateAbiConstant(name: string, abi: any): string {\n const abiJson = JSON.stringify(abi, null, 2)\n .replace(/\"([a-zA-Z_$][a-zA-Z0-9_$]*)\":/g, \"$1:\") // Only remove quotes from valid JS identifiers\n .replace(/\"/g, \"'\"); // Use single quotes\n\n return `export const ${name}Abi = ${abiJson} as const`;\n}\n\nfunction generateMethod(\n func: ClarityFunction,\n address: string,\n contractName: string\n): string {\n const methodName = toCamelCase(func.name);\n\n if (func.args.length === 0) {\n return `${methodName}() {\n return {\n contractAddress: '${address}',\n contractName: '${contractName}',\n functionName: '${func.name}',\n functionArgs: []\n }\n }`;\n }\n\n if (func.args.length === 1) {\n const originalArgName = func.args[0].name;\n const argName = toCamelCase(originalArgName);\n const argType = getTypeForArg(func.args[0]);\n const clarityConversion = generateClarityConversion(argName, func.args[0]);\n\n return `${methodName}(...args: [{ ${argName}: ${argType} }] | [${argType}]) {\n const ${argName} = args.length === 1 && typeof args[0] === 'object' && args[0] !== null && '${argName}' in args[0]\n ? args[0].${argName}\n : args[0] as ${argType}\n \n return {\n contractAddress: '${address}',\n contractName: '${contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityConversion}]\n }\n }`;\n }\n\n const argsList = func.args.map((arg) => toCamelCase(arg.name)).join(\", \");\n const argsTypes = func.args\n .map((arg) => {\n const camelName = toCamelCase(arg.name);\n return `${camelName}: ${getTypeForArg(arg)}`;\n })\n .join(\"; \");\n const argsArray = func.args\n .map((arg) => {\n const argName = toCamelCase(arg.name);\n return generateClarityConversion(argName, arg);\n })\n .join(\", \");\n const objectAccess = func.args\n .map((arg) => {\n const camelName = toCamelCase(arg.name);\n return `args[0].${camelName}`;\n })\n .join(\", \");\n const positionTypes = func.args.map((arg) => getTypeForArg(arg)).join(\", \");\n\n return `${methodName}(...args: [{ ${argsTypes} }] | [${positionTypes}]) {\n const [${argsList}] = args.length === 1 && typeof args[0] === 'object' && args[0] !== null\n ? [${objectAccess}]\n : args as [${positionTypes}]\n \n return {\n contractAddress: '${address}',\n contractName: '${contractName}',\n functionName: '${func.name}',\n functionArgs: [${argsArray}]\n }\n }`;\n}\n\n\n/**\n * Convert TypeScript value to ClarityValue based on the argument type\n */\nfunction generateClarityConversion(argName: string, argType: any): string {\n const type = argType.type;\n\n if (typeof type === \"string\") {\n switch (type) {\n case \"uint128\":\n return `Cl.uint(${argName})`;\n case \"int128\":\n return `Cl.int(${argName})`;\n case \"bool\":\n return `Cl.bool(${argName})`;\n case \"principal\":\n case \"trait_reference\":\n return `(() => {\n const [address, contractName] = ${argName}.split(\".\") as [string, string | undefined];\n if (!validateStacksAddress(address)) {\n throw new Error(\"Invalid Stacks address format\");\n }\n if (contractName !== undefined) {\n if (!CONTRACT_NAME_REGEX.test(contractName)) {\n throw new Error(\"Invalid contract name format: must start with letter and contain only letters, numbers, and hyphens\");\n }\n return Cl.contractPrincipal(address, contractName);\n }\n return Cl.standardPrincipal(${argName});\n })()`;\n default:\n return `${argName}`; // fallback for unknown types\n }\n }\n\n if (type[\"string-ascii\"]) {\n return `Cl.stringAscii(${argName})`;\n }\n\n if (type[\"string-utf8\"]) {\n return `Cl.stringUtf8(${argName})`;\n }\n\n if (type.buff) {\n // Generate flexible buffer conversion code that matches the hooks implementation\n return `(() => {\n const value = ${argName};\n // Direct Uint8Array\n if (value instanceof Uint8Array) {\n return Cl.buffer(value);\n }\n // Object notation with explicit type\n if (typeof value === 'object' && value !== null && value.type && value.value) {\n switch (value.type) {\n case 'ascii':\n return Cl.bufferFromAscii(value.value);\n case 'utf8':\n return Cl.bufferFromUtf8(value.value);\n case 'hex':\n return Cl.bufferFromHex(value.value);\n default:\n throw new Error(\\`Unsupported buffer type: \\${value.type}\\`);\n }\n }\n // Auto-detect string type\n if (typeof value === 'string') {\n // Check for hex (0x prefix or pure hex pattern)\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return Cl.bufferFromHex(value);\n }\n // Check for non-ASCII characters (UTF-8) using char code comparison\n const hasNonAscii = value.split('').some(char => char.charCodeAt(0) > 127);\n if (hasNonAscii) {\n return Cl.bufferFromUtf8(value);\n }\n // Default to ASCII for simple ASCII strings\n return Cl.bufferFromAscii(value);\n }\n throw new Error(\\`Invalid buffer value: \\${value}\\`);\n })()`;\n }\n\n if (type.optional) {\n const innerConversion = generateClarityConversion(argName, {\n type: type.optional,\n });\n return `${argName} !== null ? Cl.some(${innerConversion.replace(argName, `${argName}`)}) : Cl.none()`;\n }\n\n if (type.list) {\n const innerConversion = generateClarityConversion(\"item\", {\n type: type.list.type,\n });\n const maxLength = type.list.length || 100;\n return `(() => {\n const listValue = ${argName};\n if (listValue.length > ${maxLength}) {\n throw new Error(\\`List length \\${listValue.length} exceeds max ${maxLength}\\`);\n }\n return Cl.list(listValue.map(item => ${innerConversion}));\n })()`;\n }\n\n if (type.tuple) {\n const requiredFields = type.tuple.map((f: any) => f.name);\n const fieldNames = JSON.stringify(requiredFields);\n const fields = type.tuple\n .map((field: any) => {\n const camelFieldName = toCamelCase(field.name);\n const fieldConversion = generateClarityConversion(\n `tupleValue.${camelFieldName}`,\n { type: field.type }\n );\n return `\"${field.name}\": ${fieldConversion}`;\n })\n .join(\", \");\n return `(() => {\n const tupleValue = ${argName};\n const requiredFields = ${fieldNames};\n for (const fieldName of requiredFields) {\n const camelName = fieldName.replace(/-([a-z])/g, (_: string, l: string) => l.toUpperCase());\n if (!(fieldName in tupleValue) && !(camelName in tupleValue)) {\n throw new Error(\\`Missing tuple field: \\${fieldName}\\`);\n }\n }\n return Cl.tuple({ ${fields} });\n })()`;\n }\n\n if (type.response) {\n // For response types, we expect the user to pass { ok: value } or { err: value }\n const okConversion = generateClarityConversion(`responseValue.ok`, {\n type: type.response.ok,\n });\n const errConversion = generateClarityConversion(`responseValue.err`, {\n type: type.response.error,\n });\n return `(() => {\n const responseValue = ${argName};\n const hasOk = 'ok' in responseValue;\n const hasErr = 'err' in responseValue;\n if (hasOk && !hasErr) {\n return Cl.ok(${okConversion});\n }\n if (hasErr && !hasOk) {\n return Cl.error(${errConversion});\n }\n throw new Error(\"Response must have exactly 'ok' or 'err' property\");\n })()`;\n }\n\n // Default fallback\n return `${argName}`;\n}\n\n/**\n * Generate maps object with type-safe accessors for contract data maps\n */\nfunction generateMapsObject(\n maps: readonly ClarityMap[],\n address: string,\n contractName: string\n): string {\n if (!maps || maps.length === 0) {\n return \"\";\n }\n\n const mapMethods = maps.map((map) => {\n const methodName = toCamelCase(map.name);\n const keyType = getTypeForArg({ type: map.key });\n const valueType = getTypeForArg({ type: map.value });\n const keyConversion = generateMapKeyConversion(map.key);\n\n return `${methodName}: {\n async get(key: ${keyType}, options?: { network?: 'mainnet' | 'testnet' | 'devnet' }): Promise<${valueType} | null> {\n try {\n const { cvToJSON, serializeCV } = await import('@stacks/transactions');\n const baseUrl = getApiUrl('${address}', options?.network);\n const mapKey = ${keyConversion};\n const keyHex = serializeCV(mapKey).toString('hex');\n\n const response = await fetch(\n \\`\\${baseUrl}/v2/map_entry/${address}/${contractName}/${map.name}\\`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(keyHex)\n }\n );\n\n if (!response.ok) {\n throw new Error(\\`HTTP \\${response.status}: \\${response.statusText}\\`);\n }\n\n const result = await response.json();\n if (!result.data || result.data === '0x09') {\n return null; // none value\n }\n\n const { deserializeCV } = await import('@stacks/transactions');\n const cv = deserializeCV(result.data);\n const parsed = cvToJSON(cv);\n // Unwrap the (some ...) wrapper\n return parsed.value?.value ?? parsed.value ?? null;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(\\`Map access failed for '${map.name}': \\${error.message}\\`);\n }\n throw error;\n }\n },\n keyType: ${JSON.stringify(map.key)} as const,\n valueType: ${JSON.stringify(map.value)} as const\n }`;\n });\n\n return `maps: {\n ${mapMethods.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate vars object with type-safe accessors for contract data variables\n */\nfunction generateVarsObject(\n variables: readonly ClarityVariable[],\n address: string,\n contractName: string\n): string {\n if (!variables || variables.length === 0) {\n return \"\";\n }\n\n // Filter to only include mutable data variables (not constants)\n const dataVars = variables.filter((v) => v.access === \"variable\");\n\n if (dataVars.length === 0) {\n return \"\";\n }\n\n const varMethods = dataVars.map((variable) => {\n const methodName = toCamelCase(variable.name);\n const valueType = getTypeForArg({ type: variable.type });\n\n return `${methodName}: {\n async get(options?: { network?: 'mainnet' | 'testnet' | 'devnet' }): Promise<${valueType}> {\n try {\n const { cvToJSON, deserializeCV } = await import('@stacks/transactions');\n const baseUrl = getApiUrl('${address}', options?.network);\n\n const response = await fetch(\n \\`\\${baseUrl}/v2/data_var/${address}/${contractName}/${variable.name}?proof=0\\`\n );\n\n if (!response.ok) {\n throw new Error(\\`HTTP \\${response.status}: \\${response.statusText}\\`);\n }\n\n const result = await response.json();\n const cv = deserializeCV(result.data);\n const parsed = cvToJSON(cv);\n return parsed.value ?? parsed;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(\\`Variable access failed for '${variable.name}': \\${error.message}\\`);\n }\n throw error;\n }\n },\n type: ${JSON.stringify(variable.type)} as const\n }`;\n });\n\n return `vars: {\n ${varMethods.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate constants object with type-safe accessors for contract constants\n */\nfunction generateConstantsObject(\n variables: readonly ClarityVariable[],\n address: string,\n contractName: string\n): string {\n if (!variables || variables.length === 0) {\n return \"\";\n }\n\n // Filter to only include constants\n const constants = variables.filter((v) => v.access === \"constant\");\n\n if (constants.length === 0) {\n return \"\";\n }\n\n const constMethods = constants.map((constant) => {\n const methodName = toCamelCase(constant.name);\n const valueType = getTypeForArg({ type: constant.type });\n\n return `${methodName}: {\n async get(options?: { network?: 'mainnet' | 'testnet' | 'devnet' }): Promise<${valueType}> {\n try {\n const { cvToJSON, deserializeCV } = await import('@stacks/transactions');\n const baseUrl = getApiUrl('${address}', options?.network);\n\n const response = await fetch(\n \\`\\${baseUrl}/v2/constant_val/${address}/${contractName}/${constant.name}?proof=0\\`\n );\n\n if (!response.ok) {\n throw new Error(\\`HTTP \\${response.status}: \\${response.statusText}\\`);\n }\n\n const result = await response.json();\n const cv = deserializeCV(result.data);\n const parsed = cvToJSON(cv);\n return parsed.value ?? parsed;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(\\`Constant access failed for '${constant.name}': \\${error.message}\\`);\n }\n throw error;\n }\n },\n type: ${JSON.stringify(constant.type)} as const\n }`;\n });\n\n return `constants: {\n ${constMethods.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate Clarity conversion for map key\n */\nfunction generateMapKeyConversion(keyType: any): string {\n // Map keys are typically tuples or simple types\n if (keyType.tuple) {\n const fields = keyType.tuple\n .map((field: any) => {\n const camelFieldName = toCamelCase(field.name);\n const fieldConversion = generateClarityConversion(\n `key.${camelFieldName}`,\n { type: field.type }\n );\n return `\"${field.name}\": ${fieldConversion}`;\n })\n .join(\", \");\n return `Cl.tuple({ ${fields} })`;\n }\n\n // Single-value keys\n return generateClarityConversion(\"key\", { type: keyType });\n}\n",
10
10
  "/**\n * Shared type mapping utility for Clarity types to TypeScript types\n *\n * This module provides a single, consistent implementation for mapping\n * Clarity types to their TypeScript equivalents, used across all generators.\n */\n\nimport {\n toCamelCase,\n isClarityList,\n isClarityTuple,\n isClarityOptional,\n isClarityResponse,\n isClarityBuffer,\n isClarityStringAscii,\n isClarityStringUtf8,\n type ClarityType,\n} from \"@secondlayer/clarity-types\";\n\n/**\n * Map a Clarity type to its TypeScript type string representation\n *\n * @param type - The Clarity type definition from an ABI\n * @returns The TypeScript type string (e.g., \"bigint\", \"string\", \"{ field: bigint }\")\n */\nexport function clarityTypeToTS(type: ClarityType): string {\n // Handle string primitive types\n if (typeof type === \"string\") {\n switch (type) {\n case \"uint128\":\n case \"int128\":\n return \"bigint\";\n case \"bool\":\n return \"boolean\";\n case \"principal\":\n case \"trait_reference\":\n return \"string\";\n default: {\n // Handle shorthand string formats (e.g., \"string-ascii\", \"string-utf8\", \"buff\")\n // Cast to string since TypeScript narrows to never in exhaustive switches\n const typeStr = type as string;\n // Handle \"none\" type (commonly used in response types)\n if (typeStr === \"none\") {\n return \"null\";\n }\n if (typeStr.includes(\"string\") || typeStr.includes(\"ascii\") || typeStr.includes(\"utf8\")) {\n return \"string\";\n }\n if (typeStr.includes(\"buff\")) {\n return \"Uint8Array | string | { type: 'ascii' | 'utf8' | 'hex'; value: string }\";\n }\n if (typeStr.includes(\"uint\") || typeStr.includes(\"int\")) {\n return \"bigint\";\n }\n return \"any\";\n }\n }\n }\n\n // Handle buffer types - support flexible input\n if (isClarityBuffer(type)) {\n return \"Uint8Array | string | { type: 'ascii' | 'utf8' | 'hex'; value: string }\";\n }\n\n // Handle string types\n if (isClarityStringAscii(type) || isClarityStringUtf8(type)) {\n return \"string\";\n }\n\n // Handle optional types\n if (isClarityOptional(type)) {\n const innerType = clarityTypeToTS(type.optional);\n // Wrap union types in parentheses for correct precedence\n if (innerType.includes(\" | \") && !innerType.startsWith(\"(\")) {\n return `(${innerType}) | null`;\n }\n return `${innerType} | null`;\n }\n\n // Handle list types\n if (isClarityList(type)) {\n const innerType = clarityTypeToTS(type.list.type);\n // Wrap union types in parentheses for correct precedence\n if (innerType.includes(\" | \") && !innerType.startsWith(\"(\")) {\n return `(${innerType})[]`;\n }\n return `${innerType}[]`;\n }\n\n // Handle tuple types\n if (isClarityTuple(type)) {\n const fields = type.tuple\n .map((field) => `${toCamelCase(field.name)}: ${clarityTypeToTS(field.type)}`)\n .join(\"; \");\n return `{ ${fields} }`;\n }\n\n // Handle response types\n if (isClarityResponse(type)) {\n const okType = clarityTypeToTS(type.response.ok);\n const errType = clarityTypeToTS(type.response.error);\n return `{ ok: ${okType} } | { err: ${errType} }`;\n }\n\n // Fallback for unknown types\n return \"any\";\n}\n\n/**\n * Map a Clarity argument definition to its TypeScript type\n * This is a convenience wrapper that extracts the type from an argument object\n *\n * @param arg - An argument object with a `type` property\n * @returns The TypeScript type string\n */\nexport function getTypeForArg(arg: { type: ClarityType }): string {\n return clarityTypeToTS(arg.type);\n}\n\n/**\n * Generate a TypeScript type signature for function arguments\n *\n * @param args - Array of argument definitions with name and type\n * @returns TypeScript type string like \"{ arg1: bigint; arg2: string }\"\n */\nexport function generateArgsTypeSignature(\n args: readonly { name: string; type: ClarityType }[]\n): string {\n if (args.length === 0) return \"void\";\n\n const argsList = args\n .map((arg) => `${toCamelCase(arg.name)}: ${clarityTypeToTS(arg.type)}`)\n .join(\"; \");\n return `{ ${argsList} }`;\n}\n",
11
- "/**\n * Action generators for read and write helper functions\n */\n\nimport type { ProcessedContract } from \"../../types/plugin\";\nimport { toCamelCase, type ClarityFunction } from \"@secondlayer/clarity-types\";\nimport type { ActionsPluginOptions } from \"./index\";\nimport { getTypeForArg } from \"../../utils/type-mapping\";\n\n/**\n * Generate arguments signature for helper functions\n */\nfunction generateArgsSignature(args: readonly any[]): string {\n if (args.length === 0) return \"\";\n\n const argsTypes = args\n .map((arg) => {\n const camelName = toCamelCase(arg.name);\n return `${camelName}: ${getTypeForArg(arg)}`;\n })\n .join(\"; \");\n\n return `args: { ${argsTypes} }, `;\n}\n\n/**\n * Generate Clarity arguments for function calls\n */\nfunction generateClarityArgs(\n args: readonly any[],\n _contractName: string\n): string {\n if (args.length === 0) return \"\";\n\n return args\n .map((arg) => {\n const argName = `args.${toCamelCase(arg.name)}`;\n return generateClarityConversion(argName, arg);\n })\n .join(\", \");\n}\n\n/**\n * Convert TypeScript value to ClarityValue based on the argument type (from old generator)\n */\nfunction generateClarityConversion(argName: string, argType: any): string {\n const type = argType.type;\n\n if (typeof type === \"string\") {\n switch (type) {\n case \"uint128\":\n return `Cl.uint(${argName})`;\n case \"int128\":\n return `Cl.int(${argName})`;\n case \"bool\":\n return `Cl.bool(${argName})`;\n case \"principal\":\n case \"trait_reference\":\n return `(() => {\n const [address, contractName] = ${argName}.split(\".\") as [string, string | undefined];\n if (!validateStacksAddress(address)) {\n throw new Error(\"Invalid Stacks address format\");\n }\n if (contractName !== undefined) {\n if (!CONTRACT_NAME_REGEX.test(contractName)) {\n throw new Error(\"Invalid contract name format: must start with letter and contain only letters, numbers, and hyphens\");\n }\n return Cl.contractPrincipal(address, contractName);\n }\n return Cl.standardPrincipal(${argName});\n })()`;\n default:\n return `${argName}`;\n }\n }\n\n if (type[\"string-ascii\"]) {\n return `Cl.stringAscii(${argName})`;\n }\n\n if (type[\"string-utf8\"]) {\n return `Cl.stringUtf8(${argName})`;\n }\n\n if (type.buff) {\n return `(() => {\n const value = ${argName};\n if (value instanceof Uint8Array) {\n return Cl.buffer(value);\n }\n if (typeof value === 'object' && value !== null && value.type && value.value) {\n switch (value.type) {\n case 'ascii':\n return Cl.bufferFromAscii(value.value);\n case 'utf8':\n return Cl.bufferFromUtf8(value.value);\n case 'hex':\n return Cl.bufferFromHex(value.value);\n default:\n throw new Error(\\`Unsupported buffer type: \\${value.type}\\`);\n }\n }\n if (typeof value === 'string') {\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return Cl.bufferFromHex(value);\n }\n const hasNonAscii = value.split('').some(char => char.charCodeAt(0) > 127);\n if (hasNonAscii) {\n return Cl.bufferFromUtf8(value);\n }\n return Cl.bufferFromAscii(value);\n }\n throw new Error(\\`Invalid buffer value: \\${value}\\`);\n })()`;\n }\n\n if (type.optional) {\n const innerConversion = generateClarityConversion(argName, {\n type: type.optional,\n });\n return `${argName} !== null ? Cl.some(${innerConversion.replace(argName, `${argName}`)}) : Cl.none()`;\n }\n\n if (type.list) {\n const innerConversion = generateClarityConversion(\"item\", {\n type: type.list.type,\n });\n const maxLength = type.list.length || 100;\n return `(() => {\n const listValue = ${argName};\n if (listValue.length > ${maxLength}) {\n throw new Error(\\`List length \\${listValue.length} exceeds max ${maxLength}\\`);\n }\n return Cl.list(listValue.map(item => ${innerConversion}));\n })()`;\n }\n\n if (type.tuple) {\n const requiredFields = type.tuple.map((f: any) => f.name);\n const fieldNames = JSON.stringify(requiredFields);\n const fields = type.tuple\n .map((field: any) => {\n const camelFieldName = toCamelCase(field.name);\n const fieldConversion = generateClarityConversion(\n `tupleValue.${camelFieldName}`,\n { type: field.type }\n );\n return `\"${field.name}\": ${fieldConversion}`;\n })\n .join(\", \");\n return `(() => {\n const tupleValue = ${argName};\n const requiredFields = ${fieldNames};\n for (const fieldName of requiredFields) {\n const camelName = fieldName.replace(/-([a-z])/g, (_: string, l: string) => l.toUpperCase());\n if (!(fieldName in tupleValue) && !(camelName in tupleValue)) {\n throw new Error(\\`Missing tuple field: \\${fieldName}\\`);\n }\n }\n return Cl.tuple({ ${fields} });\n })()`;\n }\n\n if (type.response) {\n const okConversion = generateClarityConversion(`responseValue.ok`, {\n type: type.response.ok,\n });\n const errConversion = generateClarityConversion(`responseValue.err`, {\n type: type.response.error,\n });\n return `(() => {\n const responseValue = ${argName};\n const hasOk = 'ok' in responseValue;\n const hasErr = 'err' in responseValue;\n if (hasOk && !hasErr) {\n return Cl.ok(${okConversion});\n }\n if (hasErr && !hasOk) {\n return Cl.error(${errConversion});\n }\n throw new Error(\"Response must have exactly 'ok' or 'err' property\");\n })()`;\n }\n\n return `${argName}`;\n}\n\n/**\n * Generate read helper functions for a contract (fixed version)\n */\nfunction generateReadHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): string {\n const { abi, name } = contract;\n const functions = abi.functions || [];\n\n const readOnlyFunctions = functions.filter(\n (f: ClarityFunction) =>\n (f.access as any) === \"read_only\" || f.access === \"read-only\"\n );\n\n if (readOnlyFunctions.length === 0) {\n return \"\";\n }\n\n // Apply function filters\n const filteredFunctions = readOnlyFunctions.filter(\n (func: ClarityFunction) => {\n if (\n options.includeFunctions &&\n !options.includeFunctions.includes(func.name)\n ) {\n return false;\n }\n if (\n options.excludeFunctions &&\n options.excludeFunctions.includes(func.name)\n ) {\n return false;\n }\n return true;\n }\n );\n\n if (filteredFunctions.length === 0) {\n return \"\";\n }\n\n const helpers = filteredFunctions.map((func: ClarityFunction) => {\n const methodName = toCamelCase(func.name);\n const argsSignature = generateArgsSignature(func.args);\n const clarityArgs = generateClarityArgs(func.args, name);\n\n return `async ${methodName}(${argsSignature}options?: {\n network?: 'mainnet' | 'testnet' | 'devnet';\n senderAddress?: string;\n }) {\n return await fetchCallReadOnlyFunction({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n network: options?.network ?? inferNetworkFromAddress('${contract.address}') ?? 'mainnet',\n senderAddress: options?.senderAddress || 'SP000000000000000000002Q6VF78'\n });\n }`;\n });\n\n return `read: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate write helper functions for a contract (fixed version)\n */\nfunction generateWriteHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): string {\n const { abi, name } = contract;\n const functions = abi.functions || [];\n\n const publicFunctions = functions.filter(\n (f: ClarityFunction) => f.access === \"public\"\n );\n\n if (publicFunctions.length === 0) {\n return \"\";\n }\n\n // Apply function filters\n const filteredFunctions = publicFunctions.filter((func: ClarityFunction) => {\n if (\n options.includeFunctions &&\n !options.includeFunctions.includes(func.name)\n ) {\n return false;\n }\n if (\n options.excludeFunctions &&\n options.excludeFunctions.includes(func.name)\n ) {\n return false;\n }\n return true;\n });\n\n if (filteredFunctions.length === 0) {\n return \"\";\n }\n\n const helpers = filteredFunctions.map((func: ClarityFunction) => {\n const methodName = toCamelCase(func.name);\n const argsSignature = generateArgsSignature(func.args);\n const clarityArgs = generateClarityArgs(func.args, name);\n\n return `async ${methodName}(${argsSignature}options: {\n senderKey: string;\n network?: 'mainnet' | 'testnet' | 'devnet';\n fee?: string | number | undefined;\n nonce?: bigint;\n anchorMode?: 1 | 2 | 3; // AnchorMode: OnChainOnly = 1, OffChainOnly = 2, Any = 3\n postConditions?: PostCondition[];\n validateWithAbi?: boolean;\n }) {\n const { senderKey, network = 'mainnet', ...txOptions } = options;\n \n return await makeContractCall({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n senderKey,\n network,\n validateWithAbi: true,\n ...txOptions\n });\n }`;\n });\n\n return `write: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate action helpers (read and write functions) for a contract\n */\nexport async function generateActionHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): Promise<string> {\n const readHelpers = generateReadHelpers(contract, options);\n const writeHelpers = generateWriteHelpers(contract, options);\n\n if (!readHelpers && !writeHelpers) {\n return \"\";\n }\n\n const helpers = [readHelpers, writeHelpers].filter(Boolean);\n return helpers.join(\",\\n\\n\");\n}\n",
12
- "/**\n * Actions Plugin for @secondlayer/cli\n * Generates read and write helper functions for direct blockchain interaction\n */\n\nimport { generateActionHelpers } from \"./generators\";\nimport type {\n PluginFactory,\n // UserConfig,\n GenerateContext,\n} from \"../../types/plugin\";\n\nexport interface ActionsPluginOptions {\n /** Include only specific contracts */\n include?: string[];\n\n /** Exclude specific contracts */\n exclude?: string[];\n\n /** Include only specific functions */\n includeFunctions?: string[];\n\n /** Exclude specific functions */\n excludeFunctions?: string[];\n\n /** Enable debug output */\n debug?: boolean;\n}\n\n/**\n * Actions plugin factory\n */\nexport const actions: PluginFactory<ActionsPluginOptions> = (options = {}) => {\n return {\n name: \"@secondlayer/cli/plugin-actions\",\n version: \"1.0.0\",\n\n async generate(context: GenerateContext): Promise<void> {\n const { contracts } = context;\n\n // Filter contracts based on options\n const filteredContracts = contracts.filter((contract) => {\n if (options.include && !options.include.includes(contract.name)) {\n return false;\n }\n if (options.exclude && options.exclude.includes(contract.name)) {\n return false;\n }\n return true;\n });\n\n if (filteredContracts.length === 0) {\n if (options.debug) {\n context.logger.debug(\"Actions plugin: No contracts to process\");\n }\n return;\n }\n\n if (options.debug) {\n context.logger.debug(\n `Actions plugin: Generating read/write helpers for ${filteredContracts.length} contracts`\n );\n }\n\n // Collect all helpers for all contracts\n const contractHelpers = new Map<string, string>();\n\n for (const contract of filteredContracts) {\n const actionsCode = await generateActionHelpers(contract, options);\n if (actionsCode) {\n contractHelpers.set(contract.name, actionsCode);\n }\n }\n\n // Inject all helpers into the output\n if (contractHelpers.size > 0) {\n const existingOutput = context.outputs.get(\"contracts\");\n if (existingOutput) {\n let modifiedContent = addRequiredImports(existingOutput.content);\n\n // Inject helpers for each contract\n for (const [contractName, helpersCode] of contractHelpers) {\n modifiedContent = injectHelpersIntoContract(\n modifiedContent,\n contractName,\n helpersCode\n );\n }\n\n context.outputs.set(\"contracts\", {\n ...existingOutput,\n content: modifiedContent,\n });\n }\n }\n },\n };\n};\n\n/**\n * Add required imports for fetchCallReadOnlyFunction, makeContractCall, and PostCondition\n */\nfunction addRequiredImports(content: string): string {\n // Find the existing @stacks/transactions import line\n const transactionsImportRegex =\n /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]@stacks\\/transactions['\"];/;\n const match = content.match(transactionsImportRegex);\n\n if (match) {\n // Add the new imports to the existing import\n const existingImports = match[1].trim();\n const requiredImports = [\n \"fetchCallReadOnlyFunction\",\n \"makeContractCall\",\n ];\n\n const newImports = requiredImports\n .filter((imp) => !existingImports.includes(imp))\n .join(\", \");\n\n if (newImports) {\n const updatedImport = `import { ${existingImports}, ${newImports} } from '@stacks/transactions';`;\n let updatedContent = content.replace(transactionsImportRegex, updatedImport);\n\n // Add type import for PostCondition if not present\n if (!updatedContent.includes(\"type PostCondition\")) {\n updatedContent = updatedContent.replace(\n updatedImport,\n `${updatedImport}\\nimport type { PostCondition } from '@stacks/transactions';`\n );\n }\n\n return updatedContent;\n }\n\n // Still need to add PostCondition type import even if other imports exist\n if (!content.includes(\"type PostCondition\")) {\n return content.replace(\n transactionsImportRegex,\n `${match[0]}\\nimport type { PostCondition } from '@stacks/transactions';`\n );\n }\n }\n\n return content;\n}\n\n/**\n * Inject read/write helpers into a specific contract object in the output\n */\nfunction injectHelpersIntoContract(\n content: string,\n contractName: string,\n helpersCode: string\n): string {\n // Use a more precise regex to find the entire contract object\n const contractPattern = new RegExp(\n `(export const ${contractName} = \\\\{[\\\\s\\\\S]*?)\\\\n\\\\} as const;`,\n \"g\"\n );\n\n return content.replace(contractPattern, (_, contractBody) => {\n // Remove any trailing comma and whitespace from the contract body\n const cleanBody = contractBody.replace(/,\\s*$/, \"\");\n\n // Add proper indentation to lines that start top-level properties\n const indentedHelpersCode = helpersCode\n .split(\"\\n\")\n .map((line) => {\n // Only add indentation to lines that start with a property name (like \"write:\")\n if (line.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*\\s*:/)) {\n return ` ${line}`;\n }\n return line;\n })\n .join(\"\\n\");\n\n // Add the helpers with proper formatting\n return `${cleanBody},\n\n${indentedHelpersCode}\n} as const;`;\n });\n}\n",
11
+ "/**\n * Action generators for read and write helper functions\n */\n\nimport type { ProcessedContract } from \"../../types/plugin\";\nimport { toCamelCase, type ClarityFunction } from \"@secondlayer/clarity-types\";\nimport type { ActionsPluginOptions } from \"./index\";\nimport { getTypeForArg } from \"../../utils/type-mapping\";\n\n/**\n * Generate arguments signature for helper functions\n */\nfunction generateArgsSignature(args: readonly any[]): string {\n if (args.length === 0) return \"\";\n\n const argsTypes = args\n .map((arg) => {\n const camelName = toCamelCase(arg.name);\n return `${camelName}: ${getTypeForArg(arg)}`;\n })\n .join(\"; \");\n\n return `args: { ${argsTypes} }, `;\n}\n\n/**\n * Generate Clarity arguments for function calls\n */\nfunction generateClarityArgs(\n args: readonly any[],\n _contractName: string\n): string {\n if (args.length === 0) return \"\";\n\n return args\n .map((arg) => {\n const argName = `args.${toCamelCase(arg.name)}`;\n return generateClarityConversion(argName, arg);\n })\n .join(\", \");\n}\n\n/**\n * Convert TypeScript value to ClarityValue based on the argument type (from old generator)\n */\nfunction generateClarityConversion(argName: string, argType: any): string {\n const type = argType.type;\n\n if (typeof type === \"string\") {\n switch (type) {\n case \"uint128\":\n return `Cl.uint(${argName})`;\n case \"int128\":\n return `Cl.int(${argName})`;\n case \"bool\":\n return `Cl.bool(${argName})`;\n case \"principal\":\n case \"trait_reference\":\n return `(() => {\n const [address, contractName] = ${argName}.split(\".\") as [string, string | undefined];\n if (!validateStacksAddress(address)) {\n throw new Error(\"Invalid Stacks address format\");\n }\n if (contractName !== undefined) {\n if (!CONTRACT_NAME_REGEX.test(contractName)) {\n throw new Error(\"Invalid contract name format: must start with letter and contain only letters, numbers, and hyphens\");\n }\n return Cl.contractPrincipal(address, contractName);\n }\n return Cl.standardPrincipal(${argName});\n })()`;\n default:\n return `${argName}`;\n }\n }\n\n if (type[\"string-ascii\"]) {\n return `Cl.stringAscii(${argName})`;\n }\n\n if (type[\"string-utf8\"]) {\n return `Cl.stringUtf8(${argName})`;\n }\n\n if (type.buff) {\n return `(() => {\n const value = ${argName};\n if (value instanceof Uint8Array) {\n return Cl.buffer(value);\n }\n if (typeof value === 'object' && value !== null && value.type && value.value) {\n switch (value.type) {\n case 'ascii':\n return Cl.bufferFromAscii(value.value);\n case 'utf8':\n return Cl.bufferFromUtf8(value.value);\n case 'hex':\n return Cl.bufferFromHex(value.value);\n default:\n throw new Error(\\`Unsupported buffer type: \\${value.type}\\`);\n }\n }\n if (typeof value === 'string') {\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return Cl.bufferFromHex(value);\n }\n const hasNonAscii = value.split('').some(char => char.charCodeAt(0) > 127);\n if (hasNonAscii) {\n return Cl.bufferFromUtf8(value);\n }\n return Cl.bufferFromAscii(value);\n }\n throw new Error(\\`Invalid buffer value: \\${value}\\`);\n })()`;\n }\n\n if (type.optional) {\n const innerConversion = generateClarityConversion(argName, {\n type: type.optional,\n });\n return `${argName} !== null ? Cl.some(${innerConversion.replace(argName, `${argName}`)}) : Cl.none()`;\n }\n\n if (type.list) {\n const innerConversion = generateClarityConversion(\"item\", {\n type: type.list.type,\n });\n const maxLength = type.list.length || 100;\n return `(() => {\n const listValue = ${argName};\n if (listValue.length > ${maxLength}) {\n throw new Error(\\`List length \\${listValue.length} exceeds max ${maxLength}\\`);\n }\n return Cl.list(listValue.map(item => ${innerConversion}));\n })()`;\n }\n\n if (type.tuple) {\n const requiredFields = type.tuple.map((f: any) => f.name);\n const fieldNames = JSON.stringify(requiredFields);\n const fields = type.tuple\n .map((field: any) => {\n const camelFieldName = toCamelCase(field.name);\n const fieldConversion = generateClarityConversion(\n `tupleValue.${camelFieldName}`,\n { type: field.type }\n );\n return `\"${field.name}\": ${fieldConversion}`;\n })\n .join(\", \");\n return `(() => {\n const tupleValue = ${argName};\n const requiredFields = ${fieldNames};\n for (const fieldName of requiredFields) {\n const camelName = fieldName.replace(/-([a-z])/g, (_: string, l: string) => l.toUpperCase());\n if (!(fieldName in tupleValue) && !(camelName in tupleValue)) {\n throw new Error(\\`Missing tuple field: \\${fieldName}\\`);\n }\n }\n return Cl.tuple({ ${fields} });\n })()`;\n }\n\n if (type.response) {\n const okConversion = generateClarityConversion(`responseValue.ok`, {\n type: type.response.ok,\n });\n const errConversion = generateClarityConversion(`responseValue.err`, {\n type: type.response.error,\n });\n return `(() => {\n const responseValue = ${argName};\n const hasOk = 'ok' in responseValue;\n const hasErr = 'err' in responseValue;\n if (hasOk && !hasErr) {\n return Cl.ok(${okConversion});\n }\n if (hasErr && !hasOk) {\n return Cl.error(${errConversion});\n }\n throw new Error(\"Response must have exactly 'ok' or 'err' property\");\n })()`;\n }\n\n return `${argName}`;\n}\n\n/**\n * Generate read helper functions for a contract (fixed version)\n */\nfunction generateReadHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): string {\n const { abi, name } = contract;\n const functions = abi.functions || [];\n\n const readOnlyFunctions = functions.filter(\n (f: ClarityFunction) =>\n (f.access as any) === \"read_only\" || f.access === \"read-only\"\n );\n\n if (readOnlyFunctions.length === 0) {\n return \"\";\n }\n\n // Apply function filters\n const filteredFunctions = readOnlyFunctions.filter(\n (func: ClarityFunction) => {\n if (\n options.includeFunctions &&\n !options.includeFunctions.includes(func.name)\n ) {\n return false;\n }\n if (\n options.excludeFunctions &&\n options.excludeFunctions.includes(func.name)\n ) {\n return false;\n }\n return true;\n }\n );\n\n if (filteredFunctions.length === 0) {\n return \"\";\n }\n\n const helpers = filteredFunctions.map((func: ClarityFunction) => {\n const methodName = toCamelCase(func.name);\n const argsSignature = generateArgsSignature(func.args);\n const clarityArgs = generateClarityArgs(func.args, name);\n\n return `async ${methodName}(${argsSignature}options?: {\n network?: 'mainnet' | 'testnet' | 'devnet';\n senderAddress?: string;\n }) {\n return await fetchCallReadOnlyFunction({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n network: options?.network ?? inferNetworkFromAddress('${contract.address}') ?? 'mainnet',\n senderAddress: options?.senderAddress || 'SP000000000000000000002Q6VF78'\n });\n }`;\n });\n\n return `read: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate write helper functions for a contract (fixed version)\n */\nfunction generateWriteHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): string {\n const { abi, name } = contract;\n const functions = abi.functions || [];\n const envVarName = options.senderKeyEnv ?? \"STX_SENDER_KEY\";\n\n const publicFunctions = functions.filter(\n (f: ClarityFunction) => f.access === \"public\"\n );\n\n if (publicFunctions.length === 0) {\n return \"\";\n }\n\n // Apply function filters\n const filteredFunctions = publicFunctions.filter((func: ClarityFunction) => {\n if (\n options.includeFunctions &&\n !options.includeFunctions.includes(func.name)\n ) {\n return false;\n }\n if (\n options.excludeFunctions &&\n options.excludeFunctions.includes(func.name)\n ) {\n return false;\n }\n return true;\n });\n\n if (filteredFunctions.length === 0) {\n return \"\";\n }\n\n const helpers = filteredFunctions.map((func: ClarityFunction) => {\n const methodName = toCamelCase(func.name);\n const argsSignature = generateArgsSignature(func.args);\n const clarityArgs = generateClarityArgs(func.args, name);\n\n return `async ${methodName}(${argsSignature}senderKey?: string, options?: {\n network?: 'mainnet' | 'testnet' | 'devnet';\n fee?: string | number | undefined;\n nonce?: bigint;\n anchorMode?: 1 | 2 | 3; // AnchorMode: OnChainOnly = 1, OffChainOnly = 2, Any = 3\n postConditions?: PostCondition[];\n validateWithAbi?: boolean;\n }) {\n const resolvedSenderKey = senderKey ?? process.env.${envVarName};\n if (!resolvedSenderKey) {\n throw new Error('senderKey required: pass as argument or set ${envVarName} env var');\n }\n const { network = 'mainnet', ...txOptions } = options ?? {};\n\n return await makeContractCall({\n contractAddress: '${contract.address}',\n contractName: '${contract.contractName}',\n functionName: '${func.name}',\n functionArgs: [${clarityArgs}],\n senderKey: resolvedSenderKey,\n network,\n validateWithAbi: true,\n ...txOptions\n });\n }`;\n });\n\n return `write: {\n ${helpers.join(\",\\n\\n \")}\n }`;\n}\n\n/**\n * Generate action helpers (read and write functions) for a contract\n */\nexport async function generateActionHelpers(\n contract: ProcessedContract,\n options: ActionsPluginOptions\n): Promise<string> {\n const readHelpers = generateReadHelpers(contract, options);\n const writeHelpers = generateWriteHelpers(contract, options);\n\n if (!readHelpers && !writeHelpers) {\n return \"\";\n }\n\n const helpers = [readHelpers, writeHelpers].filter(Boolean);\n return helpers.join(\",\\n\\n\");\n}\n",
12
+ "/**\n * Actions Plugin for @secondlayer/cli\n * Generates read and write helper functions for direct blockchain interaction\n */\n\nimport { generateActionHelpers } from \"./generators\";\nimport type {\n PluginFactory,\n // UserConfig,\n GenerateContext,\n} from \"../../types/plugin\";\n\nexport interface ActionsPluginOptions {\n /** Include only specific contracts */\n include?: string[];\n\n /** Exclude specific contracts */\n exclude?: string[];\n\n /** Include only specific functions */\n includeFunctions?: string[];\n\n /** Exclude specific functions */\n excludeFunctions?: string[];\n\n /** Enable debug output */\n debug?: boolean;\n\n /** Environment variable name for default sender key (default: \"STX_SENDER_KEY\") */\n senderKeyEnv?: string;\n}\n\n/**\n * Actions plugin factory\n */\nexport const actions: PluginFactory<ActionsPluginOptions> = (options = {}) => {\n return {\n name: \"@secondlayer/cli/plugin-actions\",\n version: \"1.0.0\",\n\n async generate(context: GenerateContext): Promise<void> {\n const { contracts } = context;\n\n // Filter contracts based on options\n const filteredContracts = contracts.filter((contract) => {\n if (options.include && !options.include.includes(contract.name)) {\n return false;\n }\n if (options.exclude && options.exclude.includes(contract.name)) {\n return false;\n }\n return true;\n });\n\n if (filteredContracts.length === 0) {\n if (options.debug) {\n context.logger.debug(\"Actions plugin: No contracts to process\");\n }\n return;\n }\n\n if (options.debug) {\n context.logger.debug(\n `Actions plugin: Generating read/write helpers for ${filteredContracts.length} contracts`\n );\n }\n\n // Collect all helpers for all contracts\n const contractHelpers = new Map<string, string>();\n\n for (const contract of filteredContracts) {\n const actionsCode = await generateActionHelpers(contract, options);\n if (actionsCode) {\n contractHelpers.set(contract.name, actionsCode);\n }\n }\n\n // Inject all helpers into the output\n if (contractHelpers.size > 0) {\n const existingOutput = context.outputs.get(\"contracts\");\n if (existingOutput) {\n let modifiedContent = addRequiredImports(existingOutput.content);\n\n // Inject helpers for each contract\n for (const [contractName, helpersCode] of contractHelpers) {\n modifiedContent = injectHelpersIntoContract(\n modifiedContent,\n contractName,\n helpersCode\n );\n }\n\n context.outputs.set(\"contracts\", {\n ...existingOutput,\n content: modifiedContent,\n });\n }\n }\n },\n };\n};\n\n/**\n * Add required imports for fetchCallReadOnlyFunction, makeContractCall, and PostCondition\n */\nfunction addRequiredImports(content: string): string {\n // Find the existing @stacks/transactions import line\n const transactionsImportRegex =\n /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]@stacks\\/transactions['\"];/;\n const match = content.match(transactionsImportRegex);\n\n if (match) {\n // Add the new imports to the existing import\n const existingImports = match[1].trim();\n const requiredImports = [\n \"fetchCallReadOnlyFunction\",\n \"makeContractCall\",\n ];\n\n const newImports = requiredImports\n .filter((imp) => !existingImports.includes(imp))\n .join(\", \");\n\n if (newImports) {\n const updatedImport = `import { ${existingImports}, ${newImports} } from '@stacks/transactions';`;\n let updatedContent = content.replace(transactionsImportRegex, updatedImport);\n\n // Add type import for PostCondition if not present\n if (!updatedContent.includes(\"type PostCondition\")) {\n updatedContent = updatedContent.replace(\n updatedImport,\n `${updatedImport}\\nimport type { PostCondition } from '@stacks/transactions';`\n );\n }\n\n return updatedContent;\n }\n\n // Still need to add PostCondition type import even if other imports exist\n if (!content.includes(\"type PostCondition\")) {\n return content.replace(\n transactionsImportRegex,\n `${match[0]}\\nimport type { PostCondition } from '@stacks/transactions';`\n );\n }\n }\n\n return content;\n}\n\n/**\n * Inject read/write helpers into a specific contract object in the output\n */\nfunction injectHelpersIntoContract(\n content: string,\n contractName: string,\n helpersCode: string\n): string {\n // Use a more precise regex to find the entire contract object\n const contractPattern = new RegExp(\n `(export const ${contractName} = \\\\{[\\\\s\\\\S]*?)\\\\n\\\\} as const;`,\n \"g\"\n );\n\n return content.replace(contractPattern, (_, contractBody) => {\n // Remove any trailing comma and whitespace from the contract body\n const cleanBody = contractBody.replace(/,\\s*$/, \"\");\n\n // Add proper indentation to lines that start top-level properties\n const indentedHelpersCode = helpersCode\n .split(\"\\n\")\n .map((line) => {\n // Only add indentation to lines that start with a property name (like \"write:\")\n if (line.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*\\s*:/)) {\n return ` ${line}`;\n }\n return line;\n })\n .join(\"\\n\");\n\n // Add the helpers with proper formatting\n return `${cleanBody},\n\n${indentedHelpersCode}\n} as const;`;\n });\n}\n",
13
13
  "/**\n * Provider generator for React plugin\n */\n\nimport { formatCode } from \"../../../utils/format\";\n\n/**\n * Generate the provider file content for user projects\n */\nexport async function generateProvider(): Promise<string> {\n const code = `/**\n * Generated SecondLayer React Provider\n * DO NOT EDIT MANUALLY\n */\n\nimport React, { createContext, useContext } from 'react'\n\n/**\n * SecondLayer configuration interface\n */\nexport interface SecondLayerReactConfig {\n /**\n * Network to use for API calls\n */\n network: 'mainnet' | 'testnet' | 'devnet'\n\n /**\n * API key for Stacks API (optional)\n */\n apiKey?: string\n\n /**\n * Base URL for Stacks API (optional override)\n */\n apiUrl?: string\n\n /**\n * Default sender address for read-only calls\n */\n senderAddress?: string\n}\n\n/**\n * Provider component props\n */\nexport interface SecondLayerProviderProps {\n children: React.ReactNode\n config: SecondLayerReactConfig\n}\n\n/**\n * React context for SecondLayer configuration\n */\nconst SecondLayerContext = createContext<SecondLayerReactConfig | undefined>(undefined)\nSecondLayerContext.displayName = 'SecondLayerContext'\n\n/**\n * Create a SecondLayer React configuration with defaults\n */\nexport function createSecondLayerConfig(config: SecondLayerReactConfig): SecondLayerReactConfig {\n return {\n network: config.network,\n apiKey: config.apiKey,\n apiUrl: config.apiUrl,\n senderAddress: config.senderAddress || 'SP000000000000000000002Q6VF78'\n }\n}\n\n/**\n * Provider component that makes SecondLayer configuration available to hooks\n */\nexport function SecondLayerProvider({ children, config }: SecondLayerProviderProps) {\n const resolvedConfig = createSecondLayerConfig(config)\n\n return (\n <SecondLayerContext.Provider value={resolvedConfig}>\n {children}\n </SecondLayerContext.Provider>\n )\n}\n\n/**\n * Hook to access the SecondLayer configuration\n */\nexport function useSecondLayerConfig(): SecondLayerReactConfig {\n const context = useContext(SecondLayerContext)\n\n if (context === undefined) {\n throw new Error(\n 'useSecondLayerConfig must be used within a SecondLayerProvider. ' +\n 'Make sure to wrap your app with <SecondLayerProvider config={{...}}>'\n )\n }\n\n return context\n}`;\n\n return formatCode(code);\n}\n",
14
14
  "/**\n * Generic Stacks hooks generator for React plugin\n */\n\nimport { formatCode } from \"../../../utils/format\";\n\nconst GENERIC_HOOKS = [\n \"useAccount\",\n \"useConnect\",\n \"useDisconnect\",\n \"useNetwork\",\n \"useContract\",\n \"useOpenSTXTransfer\",\n \"useSignMessage\",\n \"useDeployContract\",\n \"useReadContract\",\n \"useTransaction\",\n \"useBlock\",\n \"useAccountTransactions\",\n \"useWaitForTransaction\",\n] as const;\n\nexport async function generateGenericHooks(\n excludeList: string[] = []\n): Promise<string> {\n // Filter out excluded hooks\n const hooksToGenerate = GENERIC_HOOKS.filter(\n (hookName) => !excludeList.includes(hookName)\n );\n\n const imports = `import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useState, useCallback } from 'react'\nimport { useSecondLayerConfig } from './provider'\nimport { connect, disconnect, isConnected, request, openContractCall as stacksOpenContractCall, openSTXTransfer, openSignatureRequestPopup, openContractDeploy } from '@stacks/connect'\nimport { Cl, validateStacksAddress } from '@stacks/transactions'\nimport type { PostCondition } from '@stacks/transactions'\nimport type { ExtractFunctionArgs, ExtractFunctionNames, ClarityContract } from '@secondlayer/clarity-types'\n\nconst API_URLS: Record<string, string> = {\n mainnet: 'https://api.hiro.so',\n testnet: 'https://api.testnet.hiro.so',\n devnet: 'http://localhost:3999'\n}\n\nasync function fetchTransaction({ txId, network, apiUrl }: { txId: string; network?: string; apiUrl?: string }): Promise<any> {\n const baseUrl = apiUrl || API_URLS[network || 'mainnet']\n const response = await fetch(\\`\\${baseUrl}/extended/v1/tx/\\${txId}\\`)\n if (!response.ok) throw new Error(\\`Failed to fetch transaction: \\${response.statusText}\\`)\n return response.json()\n}\n\nasync function fetchBlock({ height, network, apiUrl }: { height: number; network?: string; apiUrl?: string }): Promise<any> {\n const baseUrl = apiUrl || API_URLS[network || 'mainnet']\n const response = await fetch(\\`\\${baseUrl}/extended/v1/block/by_height/\\${height}\\`)\n if (!response.ok) throw new Error(\\`Failed to fetch block: \\${response.statusText}\\`)\n return response.json()\n}\n\nasync function fetchAccountTransactions({ address, network, apiUrl }: { address: string; network?: string; apiUrl?: string }): Promise<any> {\n const baseUrl = apiUrl || API_URLS[network || 'mainnet']\n const response = await fetch(\\`\\${baseUrl}/extended/v1/address/\\${address}/transactions\\`)\n if (!response.ok) throw new Error(\\`Failed to fetch transactions: \\${response.statusText}\\`)\n return response.json()\n}`;\n\n const header = `/**\n * Generated generic Stacks React hooks\n * DO NOT EDIT MANUALLY\n */`;\n\n const hooksCode = hooksToGenerate\n .map((hookName) => generateGenericHook(hookName))\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const code = `${imports}\\n\\n${header}\\n\\n${hooksCode}`;\n\n return formatCode(code);\n}\n\nfunction generateGenericHook(hookName: string): string {\n switch (hookName) {\n case \"useAccount\":\n return `export function useAccount() {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['stacks-account', config.network],\n queryFn: async () => {\n try {\n // Check if already connected using @stacks/connect v8\n const connected = isConnected()\n \n if (!connected) {\n return {\n address: undefined,\n addresses: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n status: 'disconnected' as const\n }\n }\n\n // Get addresses using @stacks/connect v8 request method (SIP-030)\n const result = await request('stx_getAddresses')\n \n if (!result || !result.addresses || result.addresses.length === 0) {\n return {\n address: undefined,\n addresses: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n status: 'disconnected' as const\n }\n }\n\n // Extract STX addresses from the response\n const stxAddresses = result.addresses\n .filter((addr: any) => addr.address.startsWith('SP') || addr.address.startsWith('ST'))\n .map((addr: any) => addr.address)\n\n return {\n address: stxAddresses[0] || undefined,\n addresses: stxAddresses,\n isConnected: true,\n isConnecting: false,\n isDisconnected: false,\n status: 'connected' as const\n }\n } catch (error) {\n // Handle case where wallet is not available or user rejected\n return {\n address: undefined,\n addresses: undefined,\n isConnected: false,\n isConnecting: false,\n isDisconnected: true,\n status: 'disconnected' as const\n }\n }\n },\n refetchOnWindowFocus: false,\n retry: false,\n staleTime: 1000 * 60 * 5, // 5 minutes\n refetchInterval: 1000 * 30, // Refetch every 30 seconds to detect wallet changes\n })\n}`;\n\n case \"useConnect\":\n return `export function useConnect() {\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async (options: { forceWalletSelect?: boolean } = {}) => {\n // Use @stacks/connect v8 connect method\n return await connect(options)\n },\n onSuccess: () => {\n // Invalidate account queries to refetch connection state\n queryClient.invalidateQueries({ queryKey: ['stacks-account'] })\n },\n onError: (error) => {\n console.error('Connection failed:', error)\n }\n })\n\n return {\n // Custom connect function that works without arguments\n connect: (options?: { forceWalletSelect?: boolean }) => {\n return mutation.mutate(options || {})\n },\n connectAsync: async (options?: { forceWalletSelect?: boolean }) => {\n return mutation.mutateAsync(options || {})\n },\n // Expose all the mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset,\n // Keep the original mutate/mutateAsync for advanced users\n mutate: mutation.mutate,\n mutateAsync: mutation.mutateAsync\n }\n}`;\n\n case \"useDisconnect\":\n return `export function useDisconnect() {\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async () => {\n // Use @stacks/connect v8 disconnect method\n return await disconnect()\n },\n onSuccess: () => {\n // Clear all cached data on disconnect\n queryClient.clear()\n },\n onError: (error) => {\n console.error('Disconnect failed:', error)\n }\n })\n\n return {\n // Custom disconnect function\n disconnect: () => {\n return mutation.mutate()\n },\n disconnectAsync: async () => {\n return mutation.mutateAsync()\n },\n // Expose all the mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset,\n // Keep the original mutate/mutateAsync for advanced users\n mutate: mutation.mutate,\n mutateAsync: mutation.mutateAsync\n }\n}`;\n\n case \"useNetwork\":\n return `export function useNetwork() {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['stacks-network', config.network],\n queryFn: async () => {\n // Currently read-only from config\n // Future: Use request('stx_getNetworks') when wallet support improves\n const network = config.network\n \n return {\n network,\n isMainnet: network === 'mainnet',\n isTestnet: network === 'testnet', \n isDevnet: network === 'devnet',\n // Future: Add switchNetwork when wallets support stx_networkChange\n // switchNetwork: async (newNetwork: string) => {\n // return await request('wallet_changeNetwork', { network: newNetwork })\n // }\n }\n },\n staleTime: Infinity, // Network config rarely changes\n refetchOnWindowFocus: false,\n retry: false\n })\n}`;\n\n case \"useContract\":\n return `export function useContract() {\n const config = useSecondLayerConfig()\n const queryClient = useQueryClient()\n const [isRequestPending, setIsRequestPending] = useState(false)\n \n // Helper function to convert JS values to Clarity values based on ABI\n const convertArgsWithAbi = (args: any, abiArgs: any[]): any[] => {\n if (!abiArgs || abiArgs.length === 0) return []\n \n return abiArgs.map((abiArg, index) => {\n const argValue = Array.isArray(args) \n ? args[index] \n : args[abiArg.name] || args[abiArg.name.replace(/-/g, '').replace(/_/g, '')]\n return convertJSValueToClarityValue(argValue, abiArg.type)\n })\n }\n\n // Helper function to convert buffer values with auto-detection\n const convertBufferValue = (value: any): any => {\n // Direct Uint8Array\n if (value instanceof Uint8Array) {\n return Cl.buffer(value)\n }\n \n // Object notation with explicit type\n if (typeof value === 'object' && value !== null && value.type && value.value) {\n switch (value.type) {\n case 'ascii':\n return Cl.bufferFromAscii(value.value)\n case 'utf8':\n return Cl.bufferFromUtf8(value.value)\n case 'hex':\n return Cl.bufferFromHex(value.value)\n default:\n throw new Error(\\`Unsupported buffer type: \\${value.type}\\`)\n }\n }\n \n // Auto-detect string type\n if (typeof value === 'string') {\n // 1. Check for hex (0x prefix or pure hex pattern)\n if (value.startsWith('0x') || /^[0-9a-fA-F]+$/.test(value)) {\n return Cl.bufferFromHex(value)\n }\n \n // 2. Check for non-ASCII characters (UTF-8)\n if (!/^[\\\\x00-\\\\x7F]*$/.test(value)) {\n return Cl.bufferFromUtf8(value)\n }\n \n // 3. Default to ASCII for simple ASCII strings\n return Cl.bufferFromAscii(value)\n }\n \n throw new Error(\\`Invalid buffer value: \\${value}\\`)\n }\n\n // Helper function to convert a single JS value to ClarityValue\n const convertJSValueToClarityValue = (value: any, type: any): any => {\n if (typeof type === 'string') {\n switch (type) {\n case 'uint128':\n return Cl.uint(value)\n case 'int128':\n return Cl.int(value)\n case 'bool':\n return Cl.bool(value)\n case 'principal':\n if (!validateStacksAddress(value.split('.')[0])) {\n throw new Error('Invalid Stacks address format')\n }\n if (value.includes('.')) {\n const [address, contractName] = value.split('.')\n return Cl.contractPrincipal(address, contractName)\n } else {\n return Cl.standardPrincipal(value)\n }\n default:\n return value\n }\n }\n\n if (type['string-ascii']) {\n return Cl.stringAscii(value)\n }\n\n if (type['string-utf8']) {\n return Cl.stringUtf8(value)\n }\n\n if (type.buff) {\n return convertBufferValue(value)\n }\n\n if (type.optional) {\n return value !== null ? Cl.some(convertJSValueToClarityValue(value, type.optional)) : Cl.none()\n }\n\n if (type.list) {\n return Cl.list(value.map((item: any) => convertJSValueToClarityValue(item, type.list.type)))\n }\n\n if (type.tuple) {\n const tupleData = type.tuple.reduce((acc: any, field: any) => {\n acc[field.name] = convertJSValueToClarityValue(value[field.name], field.type)\n return acc\n }, {})\n return Cl.tuple(tupleData)\n }\n\n if (type.response) {\n return 'ok' in value \n ? Cl.ok(convertJSValueToClarityValue(value.ok, type.response.ok))\n : Cl.error(convertJSValueToClarityValue(value.err, type.response.error))\n }\n\n return value\n }\n\n // Helper function to find a function in an ABI by name\n const findFunctionInAbi = (abi: any, functionName: string): any => {\n if (!abi || !abi.functions) return null\n return abi.functions.find((func: any) => func.name === functionName)\n }\n \n // Legacy function - unchanged, backward compatible\n const legacyOpenContractCall = useCallback(async (params: {\n contractAddress: string;\n contractName: string;\n functionName: string;\n functionArgs: any[]; // Pre-converted Clarity values\n network?: string;\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n setIsRequestPending(true)\n \n try {\n const { contractAddress, contractName, functionName, functionArgs, onFinish, onCancel, ...options } = params\n const network = params.network || config.network || 'mainnet'\n const contract = \\`\\${contractAddress}.\\${contractName}\\`\n \n // Try @stacks/connect v8 stx_callContract first (SIP-030)\n try {\n const result = await request('stx_callContract', {\n contract,\n functionName,\n functionArgs,\n network,\n ...options\n })\n \n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ \n queryKey: ['stacks-account'] \n })\n \n onFinish?.(result)\n return result\n } catch (connectError) {\n // Fallback to openContractCall for broader wallet compatibility\n console.warn('stx_callContract not supported, falling back to openContractCall:', connectError)\n \n return new Promise((resolve, reject) => {\n stacksOpenContractCall({\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n network,\n ...options,\n onFinish: (data: any) => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ \n queryKey: ['stacks-account'] \n })\n \n onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n onCancel?.()\n reject(new Error('User cancelled transaction'))\n }\n })\n })\n }\n } catch (error) {\n console.error('Contract call failed:', error)\n throw error instanceof Error ? error : new Error('Contract call failed')\n } finally {\n setIsRequestPending(false)\n }\n }, [config.network, queryClient])\n\n // Enhanced function - requires ABI, auto-converts JS values\n const openContractCall = useCallback(async <\n T extends ClarityContract,\n FN extends ExtractFunctionNames<T>\n >(params: {\n contractAddress: string;\n contractName: string;\n functionName: FN;\n abi: T;\n functionArgs: ExtractFunctionArgs<T, FN>;\n network?: string;\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n setIsRequestPending(true)\n \n try {\n const { contractAddress, contractName, functionName, functionArgs, abi, onFinish, onCancel, ...options } = params\n const network = params.network || config.network || 'mainnet'\n const contract = \\`\\${contractAddress}.\\${contractName}\\`\n \n // Find the function in the ABI and convert args\n const abiFunction = findFunctionInAbi(abi, functionName)\n if (!abiFunction) {\n throw new Error(\\`Function '\\${functionName}' not found in ABI\\`)\n }\n \n const processedArgs = convertArgsWithAbi(functionArgs, abiFunction.args || [])\n \n // Try @stacks/connect v8 stx_callContract first (SIP-030)\n try {\n const result = await request('stx_callContract', {\n contract,\n functionName,\n functionArgs: processedArgs,\n network,\n ...options\n })\n \n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ \n queryKey: ['stacks-account'] \n })\n \n onFinish?.(result)\n return result\n } catch (connectError) {\n // Fallback to openContractCall for broader wallet compatibility\n console.warn('stx_callContract not supported, falling back to openContractCall:', connectError)\n \n return new Promise((resolve, reject) => {\n stacksOpenContractCall({\n contractAddress,\n contractName,\n functionName,\n functionArgs: processedArgs,\n network,\n ...options,\n onFinish: (data: any) => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ \n queryKey: ['stacks-account'] \n })\n \n onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n onCancel?.()\n reject(new Error('User cancelled transaction'))\n }\n })\n })\n }\n } catch (error) {\n console.error('Contract call failed:', error)\n throw error instanceof Error ? error : new Error('Contract call failed')\n } finally {\n setIsRequestPending(false)\n }\n }, [config.network, queryClient])\n\n return {\n legacyOpenContractCall,\n openContractCall,\n isRequestPending\n }\n}`;\n\n case \"useReadContract\":\n return `export function useReadContract<TArgs = any, TResult = any>(params: {\n contractAddress: string;\n contractName: string;\n functionName: string;\n args?: TArgs;\n network?: 'mainnet' | 'testnet' | 'devnet';\n enabled?: boolean;\n}) {\n const config = useSecondLayerConfig()\n \n return useQuery<TResult>({\n queryKey: ['read-contract', params.contractAddress, params.contractName, params.functionName, params.args, params.network || config.network],\n queryFn: async () => {\n const { fetchCallReadOnlyFunction } = await import('@stacks/transactions')\n \n // For now, we'll need to handle the args conversion here\n // In the future, we could integrate with the contract interface for automatic conversion\n let functionArgs: any[] = []\n \n if (params.args) {\n // This is a simplified conversion - in practice, we'd need the ABI to do proper conversion\n // For now, we'll assume the args are already in the correct format or simple types\n if (Array.isArray(params.args)) {\n functionArgs = params.args\n } else if (typeof params.args === 'object') {\n // Convert object args to array (this is a basic implementation)\n functionArgs = Object.values(params.args)\n } else {\n functionArgs = [params.args]\n }\n }\n \n return await fetchCallReadOnlyFunction({\n contractAddress: params.contractAddress,\n contractName: params.contractName,\n functionName: params.functionName,\n functionArgs,\n network: params.network || config.network || 'mainnet',\n senderAddress: config.senderAddress || 'SP000000000000000000002Q6VF78'\n }) as TResult\n },\n enabled: params.enabled ?? true\n })\n}`;\n\n case \"useTransaction\":\n return `export function useTransaction(txId?: string) {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['transaction', txId, config.network],\n queryFn: () => fetchTransaction({\n txId: txId!,\n network: config.network,\n apiUrl: config.apiUrl\n }),\n enabled: !!txId\n })\n}`;\n\n case \"useBlock\":\n return `export function useBlock(height?: number) {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['block', height, config.network],\n queryFn: () => fetchBlock({\n height: height!,\n network: config.network,\n apiUrl: config.apiUrl\n }),\n enabled: typeof height === 'number'\n })\n}`;\n\n case \"useAccountTransactions\":\n return `export function useAccountTransactions(address?: string) {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['account-transactions', address, config.network],\n queryFn: () => fetchAccountTransactions({\n address: address!,\n network: config.network,\n apiUrl: config.apiUrl\n }),\n enabled: !!address\n })\n}`;\n\n case \"useWaitForTransaction\":\n return `export function useWaitForTransaction(txId?: string) {\n const config = useSecondLayerConfig()\n \n return useQuery({\n queryKey: ['wait-for-transaction', txId, config.network],\n queryFn: () => fetchTransaction({\n txId: txId!,\n network: config.network,\n apiUrl: config.apiUrl\n }),\n enabled: !!txId,\n refetchInterval: (data) => {\n // Stop polling when transaction is complete\n if (data?.tx_status === 'success' || \n data?.tx_status === 'abort_by_response' || \n data?.tx_status === 'abort_by_post_condition') {\n return false\n }\n return 2000 // Poll every 2 seconds\n },\n staleTime: 0 // Always refetch\n })\n}`;\n\n case \"useOpenSTXTransfer\":\n return `export function useOpenSTXTransfer() {\n const config = useSecondLayerConfig()\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async (params: {\n recipient: string;\n amount: string | number;\n memo?: string;\n network?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n const { recipient, amount, memo, onFinish, onCancel, ...options } = params\n const network = params.network || config.network || 'mainnet'\n \n return new Promise((resolve, reject) => {\n openSTXTransfer({\n recipient,\n amount: amount.toString(),\n memo,\n network,\n ...options,\n onFinish: (data: any) => {\n onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n onCancel?.()\n reject(new Error('User cancelled transaction'))\n }\n })\n })\n },\n onSuccess: () => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ queryKey: ['stacks-account'] })\n },\n onError: (error) => {\n console.error('STX transfer failed:', error)\n }\n })\n\n const openSTXTransfer = useCallback(async (params: {\n recipient: string;\n amount: string | number;\n memo?: string;\n network?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n return mutation.mutateAsync(params)\n }, [mutation])\n\n return {\n openSTXTransfer,\n // Expose mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset\n }\n}`;\n\n case \"useSignMessage\":\n return `export function useSignMessage() {\n const config = useSecondLayerConfig()\n \n const mutation = useMutation({\n mutationFn: async (params: {\n message: string;\n network?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n const { message, onFinish, onCancel, ...options } = params\n const network = params.network || config.network || 'mainnet'\n \n return new Promise((resolve, reject) => {\n openSignatureRequestPopup({\n message,\n network,\n ...options,\n onFinish: (data: any) => {\n onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n onCancel?.()\n reject(new Error('User cancelled message signing'))\n }\n })\n })\n },\n onError: (error) => {\n console.error('Message signing failed:', error)\n }\n })\n\n const signMessage = useCallback(async (params: {\n message: string;\n network?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n return mutation.mutateAsync(params)\n }, [mutation])\n\n return {\n signMessage,\n // Expose mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset\n }\n}`;\n\n case \"useDeployContract\":\n return `export function useDeployContract() {\n const config = useSecondLayerConfig()\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async (params: {\n contractName: string;\n codeBody: string;\n network?: string;\n postConditions?: PostCondition[];\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n const { contractName, codeBody, onFinish, onCancel, ...options } = params\n const network = params.network || config.network || 'mainnet'\n \n return new Promise((resolve, reject) => {\n openContractDeploy({\n contractName,\n codeBody,\n network,\n ...options,\n onFinish: (data: any) => {\n onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n onCancel?.()\n reject(new Error('User cancelled contract deployment'))\n }\n })\n })\n },\n onSuccess: () => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ queryKey: ['stacks-account'] })\n },\n onError: (error) => {\n console.error('Contract deployment failed:', error)\n }\n })\n\n const deployContract = useCallback(async (params: {\n contractName: string;\n codeBody: string;\n network?: string;\n postConditions?: PostCondition[];\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }) => {\n return mutation.mutateAsync(params)\n }, [mutation])\n\n return {\n deployContract,\n // Expose mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset\n }\n}`;\n\n default:\n return \"\";\n }\n}\n",
15
15
  "/**\n * Contract-specific hooks generator for React plugin\n */\n\nimport type { ProcessedContract } from \"../../../types/plugin\";\nimport { formatCode } from \"../../../utils/format\";\nimport type { ClarityFunction } from \"@secondlayer/clarity-types\";\nimport {\n toCamelCase,\n capitalize,\n generateHookArgsSignature,\n generateArgsType,\n generateQueryKeyArgs,\n generateFunctionCallArgs,\n generateEnabledCondition,\n generateObjectArgs,\n clarityTypeToTS,\n} from \"./utils\";\nimport type { ClarityMap, ClarityVariable } from \"@secondlayer/clarity-types\";\n\nexport async function generateContractHooks(\n contracts: ProcessedContract[],\n excludeList: string[] = []\n): Promise<string> {\n const imports = `import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { useCallback } from 'react'\nimport { useSecondLayerConfig } from './provider'\nimport { request, openContractCall as stacksOpenContractCall } from '@stacks/connect'\nimport type { PostCondition } from '@stacks/transactions'\nimport { ${contracts.map((c) => c.name).join(\", \")} } from './contracts'`;\n\n const header = `/**\n * Generated contract-specific React hooks\n * DO NOT EDIT MANUALLY\n */`;\n\n const hooksCode = contracts\n .map((contract) => generateContractHookMethods(contract, excludeList))\n .filter(Boolean)\n .join(\"\\n\\n\");\n\n const code = `${imports}\\n\\n${header}\\n\\n${hooksCode}`;\n\n return formatCode(code);\n}\n\nfunction generateContractHookMethods(\n contract: ProcessedContract,\n excludeList: string[]\n): string {\n const { abi, name, address, contractName } = contract;\n const functions = abi.functions || [];\n const maps = (abi.maps || []) as ClarityMap[];\n const variables = (abi.variables || []) as ClarityVariable[];\n\n const readOnlyFunctions = functions.filter(\n (f: ClarityFunction) =>\n (f.access as any) === \"read_only\" || f.access === \"read-only\"\n );\n const publicFunctions = functions.filter(\n (f: ClarityFunction) => f.access === \"public\"\n );\n\n const readHooks = readOnlyFunctions\n .map((func: ClarityFunction) => {\n const hookName = `use${capitalize(name)}${capitalize(toCamelCase(func.name))}`;\n // Check if this specific hook is excluded\n if (excludeList.includes(hookName)) {\n return null;\n }\n return generateReadHook(func, name);\n })\n .filter(Boolean);\n\n const writeHooks = publicFunctions\n .map((func: ClarityFunction) => {\n const hookName = `use${capitalize(name)}${capitalize(toCamelCase(func.name))}`;\n // Check if this specific hook is excluded\n if (excludeList.includes(hookName)) {\n return null;\n }\n return generateWriteHook(func, name);\n })\n .filter(Boolean);\n\n // Generate hooks for maps\n const mapHooks = maps\n .map((map: ClarityMap) => {\n const hookName = `use${capitalize(name)}${capitalize(toCamelCase(map.name))}`;\n if (excludeList.includes(hookName)) {\n return null;\n }\n return generateMapHook(map, name, address, contractName);\n })\n .filter(Boolean);\n\n // Generate hooks for data variables\n const dataVars = variables.filter((v) => v.access === \"variable\");\n const varHooks = dataVars\n .map((variable: ClarityVariable) => {\n const hookName = `use${capitalize(name)}${capitalize(toCamelCase(variable.name))}`;\n if (excludeList.includes(hookName)) {\n return null;\n }\n return generateVarHook(variable, name, address, contractName);\n })\n .filter(Boolean);\n\n // Generate hooks for constants\n const constants = variables.filter((v) => v.access === \"constant\");\n const constantHooks = constants\n .map((constant: ClarityVariable) => {\n const hookName = `use${capitalize(name)}${capitalize(toCamelCase(constant.name))}`;\n if (excludeList.includes(hookName)) {\n return null;\n }\n return generateConstantHook(constant, name, address, contractName);\n })\n .filter(Boolean);\n\n const allHooks = [...readHooks, ...writeHooks, ...mapHooks, ...varHooks, ...constantHooks];\n\n // If all hooks for this contract are excluded, return empty string\n if (allHooks.length === 0) {\n return \"\";\n }\n\n return allHooks.join(\"\\n\\n\");\n}\n\nfunction generateReadHook(func: ClarityFunction, contractName: string): string {\n const hookName = `use${capitalize(contractName)}${capitalize(toCamelCase(func.name))}`;\n const argsSignature = generateHookArgsSignature(func.args);\n const enabledParam =\n func.args.length > 0\n ? \", options?: { enabled?: boolean }\"\n : \"options?: { enabled?: boolean }\";\n\n // Generate proper return type from function outputs\n const returnType = clarityTypeToTS(func.outputs);\n\n return `export function ${hookName}(${argsSignature}${enabledParam}) {\n const config = useSecondLayerConfig()\n\n return useQuery<${returnType}>({\n queryKey: ['${func.name}', ${contractName}.address, ${generateQueryKeyArgs(func.args)}],\n queryFn: () => ${contractName}.read.${toCamelCase(func.name)}(${generateFunctionCallArgs(func.args) ? `{ ${generateObjectArgs(func.args)} }, ` : \"\"}{\n network: config.network,\n senderAddress: config.senderAddress || 'SP000000000000000000002Q6VF78'\n }),\n ${func.args.length > 0 ? `enabled: ${generateEnabledCondition(func.args)} && (options?.enabled ?? true),` : \"\"}\n ...options\n })\n}`;\n}\n\nfunction generateWriteHook(\n func: ClarityFunction,\n contractName: string\n): string {\n const hookName = `use${capitalize(contractName)}${capitalize(toCamelCase(func.name))}`;\n const argsType = generateArgsType(func.args);\n\n return `export function ${hookName}() {\n const config = useSecondLayerConfig()\n const queryClient = useQueryClient()\n \n const mutation = useMutation({\n mutationFn: async (params: {\n args: ${argsType};\n options?: {\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n };\n }) => {\n const { args, options = {} } = params\n const contractCallData = ${contractName}.${toCamelCase(func.name)}(args)\n const { contractAddress, contractName: name, functionName, functionArgs } = contractCallData\n const network = config.network || 'mainnet'\n const contract = \\`\\${contractAddress}.\\${name}\\`\n \n // Try @stacks/connect v8 stx_callContract first (SIP-030)\n try {\n const result = await request('stx_callContract', {\n contract,\n functionName,\n functionArgs,\n network,\n ...options\n })\n \n options.onFinish?.(result)\n return result\n } catch (connectError) {\n // Fallback to openContractCall for broader wallet compatibility\n console.warn('stx_callContract not supported, falling back to openContractCall:', connectError)\n \n return new Promise((resolve, reject) => {\n stacksOpenContractCall({\n contractAddress,\n contractName: name,\n functionName,\n functionArgs,\n network,\n ...options,\n onFinish: (data: any) => {\n options.onFinish?.(data)\n resolve(data)\n },\n onCancel: () => {\n options.onCancel?.()\n reject(new Error('User cancelled transaction'))\n }\n })\n })\n }\n },\n onSuccess: () => {\n // Invalidate relevant queries on success\n queryClient.invalidateQueries({ queryKey: ['stacks-account'] })\n },\n onError: (error) => {\n console.error('Contract call failed:', error)\n }\n })\n\n const ${toCamelCase(func.name)} = useCallback(async (\n args: ${argsType},\n options?: {\n postConditions?: PostCondition[];\n attachment?: string;\n onFinish?: (data: any) => void;\n onCancel?: () => void;\n }\n ) => {\n return mutation.mutateAsync({ args, options })\n }, [mutation])\n\n return {\n ${toCamelCase(func.name)},\n // Expose mutation state\n isPending: mutation.isPending,\n isError: mutation.isError,\n isSuccess: mutation.isSuccess,\n error: mutation.error,\n data: mutation.data,\n reset: mutation.reset\n }\n}`;\n}\n\n/**\n * Generate a hook for reading a map entry\n */\nfunction generateMapHook(\n map: ClarityMap,\n contractVarName: string,\n _address: string,\n _contractName: string\n): string {\n const hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(map.name))}`;\n const keyType = clarityTypeToTS(map.key);\n const valueType = clarityTypeToTS(map.value);\n\n return `export function ${hookName}(key: ${keyType}, options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType} | null>({\n queryKey: ['${contractVarName}', '${map.name}', 'map', key, config.network],\n queryFn: async () => {\n return ${contractVarName}.maps.${toCamelCase(map.name)}.get(key, { network: config.network })\n },\n enabled: options?.enabled ?? true\n })\n}`;\n}\n\n/**\n * Generate a hook for reading a data variable\n */\nfunction generateVarHook(\n variable: ClarityVariable,\n contractVarName: string,\n _address: string,\n _contractName: string\n): string {\n const hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(variable.name))}`;\n const valueType = clarityTypeToTS(variable.type);\n\n return `export function ${hookName}(options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType}>({\n queryKey: ['${contractVarName}', '${variable.name}', 'var', config.network],\n queryFn: async () => {\n return ${contractVarName}.vars.${toCamelCase(variable.name)}.get({ network: config.network })\n },\n enabled: options?.enabled ?? true\n })\n}`;\n}\n\n/**\n * Generate a hook for reading a constant\n */\nfunction generateConstantHook(\n constant: ClarityVariable,\n contractVarName: string,\n _address: string,\n _contractName: string\n): string {\n const hookName = `use${capitalize(contractVarName)}${capitalize(toCamelCase(constant.name))}`;\n const valueType = clarityTypeToTS(constant.type);\n\n return `export function ${hookName}(options?: { enabled?: boolean }) {\n const config = useSecondLayerConfig()\n\n return useQuery<${valueType}>({\n queryKey: ['${contractVarName}', '${constant.name}', 'constant', config.network],\n queryFn: async () => {\n return ${contractVarName}.constants.${toCamelCase(constant.name)}.get({ network: config.network })\n },\n enabled: options?.enabled ?? true,\n staleTime: Infinity // Constants never change\n })\n}`;\n}\n",
@@ -19,7 +19,7 @@
19
19
  "/**\n * Testing plugin for @secondlayer/cli\n * Generates type-safe helpers for Clarinet SDK unit tests\n */\n\nimport type { PluginFactory, GenerateContext } from \"../../types/plugin\";\nimport { generateTestingHelpers } from \"./generators\";\n\nexport interface TestingPluginOptions {\n /** Include only specific contracts */\n include?: string[];\n\n /** Exclude specific contracts */\n exclude?: string[];\n\n /** Output path for generated testing helpers (default: ./src/generated/testing.ts) */\n out?: string;\n\n /** Include private function helpers (default: false) */\n includePrivate?: boolean;\n\n /** Enable debug output */\n debug?: boolean;\n}\n\nexport const testing: PluginFactory<TestingPluginOptions> = (options = {}) => {\n return {\n name: \"@secondlayer/cli/plugin-testing\",\n version: \"1.0.0\",\n\n async generate(context: GenerateContext): Promise<void> {\n const { contracts } = context;\n\n // Filter contracts based on options\n const filteredContracts = contracts.filter((contract) => {\n if (options.include && !options.include.includes(contract.name)) {\n return false;\n }\n if (options.exclude && options.exclude.includes(contract.name)) {\n return false;\n }\n return true;\n });\n\n if (filteredContracts.length === 0) {\n if (options.debug) {\n context.logger.debug(\"Testing plugin: No contracts to process\");\n }\n return;\n }\n\n if (options.debug) {\n context.logger.debug(\n `Testing plugin: Generating helpers for ${filteredContracts.length} contracts`\n );\n }\n\n // Generate testing helpers\n const testingCode = await generateTestingHelpers(\n filteredContracts,\n options\n );\n\n const outputPath = options.out || \"./src/generated/testing.ts\";\n\n context.addOutput(\"testing\", {\n path: outputPath,\n content: testingCode,\n type: \"utils\",\n });\n\n if (options.debug) {\n context.logger.debug(\n `Testing plugin: Generated helpers for ${filteredContracts.length} contracts`\n );\n }\n },\n };\n};\n",
20
20
  "/**\n * Plugin exports for @secondlayer/cli\n * This will be expanded as plugins are implemented\n */\n\nimport type { SecondLayerPlugin } from \"../types/plugin\";\n\n// Re-export plugin types for convenience\nexport type {\n SecondLayerPlugin,\n PluginFactory,\n PluginOptions,\n GenerateContext,\n PluginContext,\n Logger,\n PluginUtils,\n} from \"../types/plugin\";\n\n// Plugin utilities\nexport { PluginManager } from \"../core/plugin-manager\";\n\n// Base plugin options interface\nexport interface BasePluginOptions {\n /** Include only specific contracts/functions */\n include?: string[];\n\n /** Exclude specific contracts/functions */\n exclude?: string[];\n\n /** Enable debug output */\n debug?: boolean;\n}\n\n/**\n * Utility function to filter contracts/functions based on include/exclude options\n */\nexport function filterByOptions<T extends { name: string }>(\n items: T[],\n options: BasePluginOptions = {}\n): T[] {\n let filtered = items;\n\n if (options.include && options.include.length > 0) {\n filtered = filtered.filter((item) =>\n options.include!.some(\n (pattern) =>\n item.name.includes(pattern) || item.name.match(new RegExp(pattern))\n )\n );\n }\n\n if (options.exclude && options.exclude.length > 0) {\n filtered = filtered.filter(\n (item) =>\n !options.exclude!.some(\n (pattern) =>\n item.name.includes(pattern) || item.name.match(new RegExp(pattern))\n )\n );\n }\n\n return filtered;\n}\n\n/**\n * Utility function to create a simple plugin\n */\nexport function createPlugin(\n name: string,\n version: string,\n implementation: Partial<SecondLayerPlugin>\n): SecondLayerPlugin {\n return {\n name,\n version,\n ...implementation,\n };\n}\n\n// Plugin exports\nexport { clarinet, hasClarinetProject } from \"./clarinet/index\";\nexport type { ClarinetPluginOptions } from \"./clarinet/index\";\n\nexport { actions } from \"./actions/index\";\nexport type { ActionsPluginOptions } from \"./actions/index\";\n\nexport { react } from \"./react/index\";\nexport type { ReactPluginOptions } from \"./react/index\";\n\nexport { testing } from \"./testing/index\";\nexport type { TestingPluginOptions } from \"./testing/index\";\n\n"
21
21
  ],
22
- "mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA2BJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgSJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA6CJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAwBJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAkEJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAuDJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkEP,OAAO;AAAA;AAAA;;;AC90Bb;;;ACDA,wBAAS;AAMF,SAAS,UAAU,CAAC,KAAqB;AAAA,EAC9C,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA;AAG3C,SAAS,yBAAyB,CAAC,MAA8B;AAAA,EACtE,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,MAAM,WAAW,KACd,IAAI,CAAC,QAAQ,GAAG,aAAY,IAAI,IAAI,MAAM,gBAAgB,IAAI,IAAI,GAAG,EACrE,KAAK,IAAI;AAAA,EACZ,OAAO,GAAG;AAAA;AAGL,SAAS,gBAAgB,CAAC,MAA8B;AAAA,EAC7D,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,MAAM,WAAW,KACd,IAAI,CAAC,QAAQ,GAAG,aAAY,IAAI,IAAI,MAAM,gBAAgB,IAAI,IAAI,GAAG,EACrE,KAAK,IAAI;AAAA,EACZ,OAAO,KAAK;AAAA;AAGP,SAAS,oBAAoB,CAAC,MAA8B;AAAA,EACjE,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAC9B,OAAO,KAAK,IAAI,CAAC,QAAQ,aAAY,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;AAAA;AAGpD,SAAS,wBAAwB,CAAC,MAA8B;AAAA,EACrE,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAC9B,OAAO,KAAK,IAAI,CAAC,QAAQ,aAAY,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;AAAA;AAGpD,SAAS,wBAAwB,CAAC,MAA8B;AAAA,EACrE,OAAO,KACJ,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,YAAY,aAAY,IAAI,IAAI;AAAA,IACtC,MAAM,OAAO,gBAAgB,IAAI,IAAI;AAAA,IACrC,IAAI,SAAS;AAAA,MAAU,OAAO,KAAK;AAAA,IACnC,IAAI,SAAS;AAAA,MAAU,OAAO,GAAG;AAAA,IACjC,OAAO,GAAG;AAAA,GACX,EACA,KAAK,MAAM;AAAA;AAGT,SAAS,kBAAkB,CAAC,MAA8B;AAAA,EAC/D,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAC9B,OAAO,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,aAAY,IAAI,IAAI,GAAG,EAAE,KAAK,IAAI;AAAA;;;ADpC7E,eAAsB,qBAAqB,CACzC,WACA,cAAwB,CAAC,GACR;AAAA,EACjB,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,WAKP,UAAU,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI;AAAA,EAE/C,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA,EAKf,MAAM,YAAY,UACf,IAAI,CAAC,aAAa,4BAA4B,UAAU,WAAW,CAAC,EACpE,OAAO,OAAO,EACd,KAAK;AAAA;AAAA,CAAM;AAAA,EAEd,MAAM,OAAO,GAAG;AAAA;AAAA,EAAc;AAAA;AAAA,EAAa;AAAA,EAE3C,OAAO,WAAW,IAAI;AAAA;AAGxB,SAAS,2BAA2B,CAClC,UACA,aACQ;AAAA,EACR,QAAQ,KAAK,MAAM,SAAS,iBAAiB;AAAA,EAC7C,MAAM,YAAY,IAAI,aAAa,CAAC;AAAA,EACpC,MAAM,OAAQ,IAAI,QAAQ,CAAC;AAAA,EAC3B,MAAM,YAAa,IAAI,aAAa,CAAC;AAAA,EAErC,MAAM,oBAAoB,UAAU,OAClC,CAAC,MACE,EAAE,WAAmB,eAAe,EAAE,WAAW,WACtD;AAAA,EACA,MAAM,kBAAkB,UAAU,OAChC,CAAC,MAAuB,EAAE,WAAW,QACvC;AAAA,EAEA,MAAM,YAAY,kBACf,IAAI,CAAC,SAA0B;AAAA,IAC9B,MAAM,WAAW,MAAM,WAAW,IAAI,IAAI,WAAW,aAAY,KAAK,IAAI,CAAC;AAAA,IAE3E,IAAI,YAAY,SAAS,QAAQ,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,iBAAiB,MAAM,IAAI;AAAA,GACnC,EACA,OAAO,OAAO;AAAA,EAEjB,MAAM,aAAa,gBAChB,IAAI,CAAC,SAA0B;AAAA,IAC9B,MAAM,WAAW,MAAM,WAAW,IAAI,IAAI,WAAW,aAAY,KAAK,IAAI,CAAC;AAAA,IAE3E,IAAI,YAAY,SAAS,QAAQ,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,kBAAkB,MAAM,IAAI;AAAA,GACpC,EACA,OAAO,OAAO;AAAA,EAGjB,MAAM,WAAW,KACd,IAAI,CAAC,QAAoB;AAAA,IACxB,MAAM,WAAW,MAAM,WAAW,IAAI,IAAI,WAAW,aAAY,IAAI,IAAI,CAAC;AAAA,IAC1E,IAAI,YAAY,SAAS,QAAQ,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,gBAAgB,KAAK,MAAM,SAAS,YAAY;AAAA,GACxD,EACA,OAAO,OAAO;AAAA,EAGjB,MAAM,WAAW,UAAU,OAAO,CAAC,MAAM,EAAE,WAAW,UAAU;AAAA,EAChE,MAAM,WAAW,SACd,IAAI,CAAC,aAA8B;AAAA,IAClC,MAAM,WAAW,MAAM,WAAW,IAAI,IAAI,WAAW,aAAY,SAAS,IAAI,CAAC;AAAA,IAC/E,IAAI,YAAY,SAAS,QAAQ,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,gBAAgB,UAAU,MAAM,SAAS,YAAY;AAAA,GAC7D,EACA,OAAO,OAAO;AAAA,EAGjB,MAAM,YAAY,UAAU,OAAO,CAAC,MAAM,EAAE,WAAW,UAAU;AAAA,EACjE,MAAM,gBAAgB,UACnB,IAAI,CAAC,aAA8B;AAAA,IAClC,MAAM,WAAW,MAAM,WAAW,IAAI,IAAI,WAAW,aAAY,SAAS,IAAI,CAAC;AAAA,IAC/E,IAAI,YAAY,SAAS,QAAQ,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,OAAO,qBAAqB,UAAU,MAAM,SAAS,YAAY;AAAA,GAClE,EACA,OAAO,OAAO;AAAA,EAEjB,MAAM,WAAW,CAAC,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa;AAAA,EAGzF,IAAI,SAAS,WAAW,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAAS,KAAK;AAAA;AAAA,CAAM;AAAA;AAG7B,SAAS,gBAAgB,CAAC,MAAuB,cAA8B;AAAA,EAC7E,MAAM,WAAW,MAAM,WAAW,YAAY,IAAI,WAAW,aAAY,KAAK,IAAI,CAAC;AAAA,EACnF,MAAM,gBAAgB,0BAA0B,KAAK,IAAI;AAAA,EACzD,MAAM,eACJ,KAAK,KAAK,SAAS,IACf,sCACA;AAAA,EAGN,MAAM,aAAa,gBAAgB,KAAK,OAAO;AAAA,EAE/C,OAAO,mBAAmB,YAAY,gBAAgB;AAAA;AAAA;AAAA,oBAGpC;AAAA,kBACF,KAAK,UAAU,yBAAyB,qBAAqB,KAAK,IAAI;AAAA,qBACnE,qBAAqB,aAAY,KAAK,IAAI,KAAK,yBAAyB,KAAK,IAAI,IAAI,KAAK,mBAAmB,KAAK,IAAI,UAAU;AAAA;AAAA;AAAA;AAAA,MAI/I,KAAK,KAAK,SAAS,IAAI,YAAY,yBAAyB,KAAK,IAAI,qCAAqC;AAAA;AAAA;AAAA;AAAA;AAMhH,SAAS,iBAAiB,CACxB,MACA,cACQ;AAAA,EACR,MAAM,WAAW,MAAM,WAAW,YAAY,IAAI,WAAW,aAAY,KAAK,IAAI,CAAC;AAAA,EACnF,MAAM,WAAW,iBAAiB,KAAK,IAAI;AAAA,EAE3C,OAAO,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAMd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCASmB,gBAAgB,aAAY,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAkD5D,aAAY,KAAK,IAAI;AAAA,YACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYN,aAAY,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe3B,SAAS,eAAe,CACtB,KACA,iBACA,UACA,eACQ;AAAA,EACR,MAAM,WAAW,MAAM,WAAW,eAAe,IAAI,WAAW,aAAY,IAAI,IAAI,CAAC;AAAA,EACrF,MAAM,UAAU,gBAAgB,IAAI,GAAG;AAAA,EACvC,MAAM,YAAY,gBAAgB,IAAI,KAAK;AAAA,EAE3C,OAAO,mBAAmB,iBAAiB;AAAA;AAAA;AAAA,oBAGzB;AAAA,kBACF,sBAAsB,IAAI;AAAA;AAAA,eAE7B,wBAAwB,aAAY,IAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAU3D,SAAS,eAAe,CACtB,UACA,iBACA,UACA,eACQ;AAAA,EACR,MAAM,WAAW,MAAM,WAAW,eAAe,IAAI,WAAW,aAAY,SAAS,IAAI,CAAC;AAAA,EAC1F,MAAM,YAAY,gBAAgB,SAAS,IAAI;AAAA,EAE/C,OAAO,mBAAmB;AAAA;AAAA;AAAA,oBAGR;AAAA,kBACF,sBAAsB,SAAS;AAAA;AAAA,eAElC,wBAAwB,aAAY,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhE,SAAS,oBAAoB,CAC3B,UACA,iBACA,UACA,eACQ;AAAA,EACR,MAAM,WAAW,MAAM,WAAW,eAAe,IAAI,WAAW,aAAY,SAAS,IAAI,CAAC;AAAA,EAC1F,MAAM,YAAY,gBAAgB,SAAS,IAAI;AAAA,EAE/C,OAAO,mBAAmB;AAAA;AAAA;AAAA,oBAGR;AAAA,kBACF,sBAAsB,SAAS;AAAA;AAAA,eAElC,6BAA6B,aAAY,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AEpT9D,IAAM,QAA2C,CAAC,UAAU,CAAC,MAAM;AAAA,EACxE,MAAM,cAAc,QAAQ,WAAW,CAAC;AAAA,EAExC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,SAEH,SAAQ,CAAC,SAAyC;AAAA,MACtD,IAAI,QAAQ,OAAO;AAAA,QACjB,QAAQ,OAAO,MACb,6CAA6C,YAAY,KAAK,IAAI,KAAK,SACzE;AAAA,MACF;AAAA,MAGA,MAAM,WAAW,MAAM,iBAAiB;AAAA,MACxC,QAAQ,UAAU,YAAY;AAAA,QAC5B,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,MAGD,MAAM,eAAe,MAAM,qBAAqB,WAAW;AAAA,MAC3D,QAAQ,UAAU,iBAAiB;AAAA,QACjC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,MAGD,IAAI,QAAQ,UAAU,SAAS,GAAG;AAAA,QAChC,MAAM,gBAAgB,MAAM,sBAC1B,QAAQ,WACR,WACF;AAAA,QAGA,IAAI,cAAc,KAAK,GAAG;AAAA,UACxB,QAAQ,UAAU,kBAAkB;AAAA,YAClC,MAAM;AAAA,YACN,SAAS;AAAA,YACT,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,IAAI,QAAQ,OAAO;AAAA,QACjB,QAAQ,OAAO,QACb,0BAA0B,QAAQ,UAAU,2BAC9C;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA;;AC7DF;AAAA,iBACE;AAAA;AAWF,SAAS,YAAY,CAAC,KAAqB;AAAA,EACzC,MAAM,QAAQ,aAAY,GAAG;AAAA,EAC7B,OAAO,MAAM,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AAAA;AAMtD,SAAS,sBAAqB,CAAC,MAA8B;AAAA,EAC3D,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,MAAM,YAAY,KACf,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,YAAY,aAAY,IAAI,IAAI;AAAA,IACtC,OAAO,GAAG,cAAc,cAAc,GAAG;AAAA,GAC1C,EACA,KAAK,IAAI;AAAA,EAEZ,OAAO,WAAW;AAAA;AAMpB,SAAS,0BAAyB,CAAC,SAAiB,SAAsB;AAAA,EACxE,MAAM,OAAO,QAAQ;AAAA,EAErB,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,WAAW;AAAA,WACf;AAAA,QACH,OAAO,UAAU;AAAA,WACd;AAAA,QACH,OAAO,WAAW;AAAA,WACf;AAAA,WACA;AAAA,QACH,OAAO;AAAA,8BACe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAStB,OAAO,GAAG;AAAA;AAAA,EAEhB;AAAA,EAEA,IAAI,KAAK,iBAAiB;AAAA,IACxB,OAAO,kBAAkB;AAAA,EAC3B;AAAA,EAEA,IAAI,KAAK,gBAAgB;AAAA,IACvB,OAAO,iBAAiB;AAAA,EAC1B;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACb,OAAO;AAAA,sBACW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BpB;AAAA,EAEA,IAAI,KAAK,UAAU;AAAA,IACjB,MAAM,kBAAkB,2BAA0B,SAAS;AAAA,MACzD,MAAM,KAAK;AAAA,IACb,CAAC;AAAA,IACD,OAAO,GAAG,qDAAqD,mBAAmB;AAAA,EACpF;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACb,MAAM,kBAAkB,2BAA0B,QAAQ;AAAA,MACxD,MAAM,KAAK,KAAK;AAAA,IAClB,CAAC;AAAA,IACD,MAAM,YAAY,KAAK,KAAK,UAAU;AAAA,IACtC,OAAO;AAAA,0BACe;AAAA,+BACK;AAAA,yEAC0C;AAAA;AAAA,6CAE5B;AAAA;AAAA,EAE3C;AAAA,EAEA,IAAI,KAAK,OAAO;AAAA,IACd,MAAM,iBAAiB,KAAK,MAAM,IAAI,CAAC,MAAW,EAAE,IAAI;AAAA,IACxD,MAAM,aAAa,KAAK,UAAU,cAAc;AAAA,IAChD,MAAM,SAAS,KAAK,MACjB,IAAI,CAAC,UAAe;AAAA,MACnB,MAAM,iBAAiB,aAAY,MAAM,IAAI;AAAA,MAC7C,MAAM,kBAAkB,2BACtB,cAAc,kBACd,EAAE,MAAM,MAAM,KAAK,CACrB;AAAA,MACA,OAAO,IAAI,MAAM,UAAU;AAAA,KAC5B,EACA,KAAK,IAAI;AAAA,IACZ,OAAO;AAAA,2BACgB;AAAA,+BACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAOL;AAAA;AAAA,EAExB;AAAA,EAEA,IAAI,KAAK,UAAU;AAAA,IACjB,MAAM,eAAe,2BAA0B,oBAAoB;AAAA,MACjE,MAAM,KAAK,SAAS;AAAA,IACtB,CAAC;AAAA,IACD,MAAM,gBAAgB,2BAA0B,qBAAqB;AAAA,MACnE,MAAM,KAAK,SAAS;AAAA,IACtB,CAAC;AAAA,IACD,OAAO;AAAA,8BACmB;AAAA;AAAA;AAAA;AAAA,uBAIP;AAAA;AAAA;AAAA,0BAGG;AAAA;AAAA;AAAA;AAAA,EAIxB;AAAA,EAEA,OAAO,GAAG;AAAA;AAMZ,SAAS,oBAAmB,CAAC,MAA8B;AAAA,EACzD,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,OAAO,KACJ,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,UAAU,QAAQ,aAAY,IAAI,IAAI;AAAA,IAC5C,OAAO,2BAA0B,SAAS,GAAG;AAAA,GAC9C,EACA,KAAK,IAAI;AAAA;AAMd,SAAS,sBAAsB,CAC7B,MACA,YACQ;AAAA,EACR,MAAM,aAAa,aAAY,KAAK,IAAI;AAAA,EACxC,MAAM,gBAAgB,uBAAsB,KAAK,IAAI;AAAA,EACrD,MAAM,cAAc,qBAAoB,KAAK,IAAI;AAAA,EAEjD,OAAO,GAAG,gBAAgB;AAAA;AAAA;AAAA,WAGjB;AAAA,WACA,KAAK;AAAA,WACL;AAAA;AAAA;AAAA;AAAA;AASX,SAAS,wBAAwB,CAC/B,MACA,YACQ;AAAA,EACR,MAAM,aAAa,aAAY,KAAK,IAAI;AAAA,EACxC,MAAM,gBAAgB,uBAAsB,KAAK,IAAI;AAAA,EACrD,MAAM,cAAc,qBAAoB,KAAK,IAAI;AAAA,EAGjD,MAAM,UAAU,KAAK,KAAK,SAAS;AAAA,EACnC,MAAM,YAAY,UAAU,gBAAgB;AAAA,EAE5C,OAAO,GAAG,gBAAgB;AAAA;AAAA,WAEjB;AAAA,WACA,KAAK;AAAA,WACL;AAAA;AAAA;AAAA;AAAA;AASX,SAAS,uBAAuB,CAC9B,MACA,YACQ;AAAA,EACR,MAAM,aAAa,aAAY,KAAK,IAAI;AAAA,EACxC,MAAM,gBAAgB,uBAAsB,KAAK,IAAI;AAAA,EACrD,MAAM,cAAc,qBAAoB,KAAK,IAAI;AAAA,EAEjD,OAAO,GAAG,gBAAgB;AAAA;AAAA;AAAA,WAGjB;AAAA,WACA,KAAK;AAAA,WACL;AAAA;AAAA;AAAA;AAAA;AASX,SAAS,qBAAqB,CAC5B,UACA,YACQ;AAAA,EACR,MAAM,aAAa,aAAY,SAAS,IAAI;AAAA,EAE5C,OAAO,GAAG;AAAA,kCACsB,iBAAiB,SAAS;AAAA;AAAA;AAO5D,SAAS,aAAa,CAAC,SAAsB;AAAA,EAE3C,IAAI,QAAQ,OAAO;AAAA,IACjB,MAAM,SAAS,QAAQ,MACpB,IACC,CAAC,UACC,GAAG,aAAY,MAAM,IAAI,MAAM,cAAc,EAAE,MAAM,MAAM,KAAK,CAAC,GACrE,EACC,KAAK,IAAI;AAAA,IACZ,OAAO,KAAK;AAAA,EACd;AAAA,EAGA,OAAO,cAAc,EAAE,MAAM,QAAQ,CAAC;AAAA;AAMxC,SAAS,yBAAwB,CAAC,SAAsB;AAAA,EAEtD,IAAI,QAAQ,OAAO;AAAA,IACjB,MAAM,SAAS,QAAQ,MACpB,IAAI,CAAC,UAAe;AAAA,MACnB,MAAM,iBAAiB,aAAY,MAAM,IAAI;AAAA,MAC7C,MAAM,kBAAkB,2BACtB,OAAO,kBACP,EAAE,MAAM,MAAM,KAAK,CACrB;AAAA,MACA,OAAO,IAAI,MAAM,UAAU;AAAA,KAC5B,EACA,KAAK,IAAI;AAAA,IACZ,OAAO,cAAc;AAAA,EACvB;AAAA,EAGA,OAAO,2BAA0B,OAAO,EAAE,MAAM,QAAQ,CAAC;AAAA;AAM3D,SAAS,sBAAsB,CAAC,KAAiB,YAA4B;AAAA,EAC3E,MAAM,aAAa,aAAY,IAAI,IAAI;AAAA,EACvC,MAAM,UAAU,cAAc,IAAI,GAAG;AAAA,EACrC,MAAM,gBAAgB,0BAAyB,IAAI,GAAG;AAAA,EAEtD,OAAO,GAAG,qBAAqB;AAAA;AAAA,WAEtB;AAAA,WACA,IAAI;AAAA,UACL;AAAA;AAAA;AAAA;AAQV,SAAS,mBAAkB,CACzB,WACA,YACQ;AAAA,EAER,MAAM,WAAW,UAAU,OAAO,CAAC,MAAM,EAAE,WAAW,UAAU;AAAA,EAEhE,IAAI,SAAS,WAAW,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,SAAS,IAAI,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAAA,EAE3E,OAAO;AAAA,QACD,WAAW,KAAK;AAAA;AAAA,OAAa;AAAA;AAAA;AAOrC,SAAS,mBAAkB,CAAC,MAAoB,YAA4B;AAAA,EAC1E,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,KAAK,IAAI,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAAA,EAExE,OAAO;AAAA,QACD,WAAW,KAAK;AAAA;AAAA,OAAa;AAAA;AAAA;AAOrC,SAAS,sBAAsB,CAC7B,UACA,SACQ;AAAA,EACR,QAAQ,KAAK,MAAM,YAAY;AAAA,EAC/B,MAAM,YAAY,IAAI,aAAa,CAAC;AAAA,EACpC,MAAM,YAA+B,IAAI,aAAa,CAAC;AAAA,EACvD,MAAM,OAAqB,IAAI,QAAQ,CAAC;AAAA,EACxC,MAAM,aAAa,aAAa,IAAI;AAAA,EAGpC,MAAM,YAAY,UAAU,OAC1B,CAAC,MAAuB,EAAE,WAAW,QACvC;AAAA,EACA,MAAM,cAAc,UAAU,OAC5B,CAAC,MACE,EAAE,WAAmB,eAAe,EAAE,WAAW,WACtD;AAAA,EACA,MAAM,aAAa,QAAQ,iBACvB,UAAU,OAAO,CAAC,MAAuB,EAAE,WAAW,SAAS,IAC/D,CAAC;AAAA,EAGL,MAAM,gBAAgB,UAAU,IAAI,CAAC,MACnC,uBAAuB,GAAG,OAAO,CACnC;AAAA,EACA,MAAM,kBAAkB,YAAY,IAAI,CAAC,MACvC,yBAAyB,GAAG,OAAO,CACrC;AAAA,EACA,MAAM,iBAAiB,WAAW,IAAI,CAAC,MACrC,wBAAwB,GAAG,OAAO,CACpC;AAAA,EAGA,MAAM,aAAa,oBAAmB,WAAW,OAAO;AAAA,EACxD,MAAM,aAAa,oBAAmB,MAAM,OAAO;AAAA,EAEnD,MAAM,aAAa,CAAC,GAAG,eAAe,GAAG,iBAAiB,GAAG,cAAc;AAAA,EAG3E,IAAI,YAAY;AAAA,IACd,WAAW,KAAK,UAAU;AAAA,EAC5B;AAAA,EACA,IAAI,YAAY;AAAA,IACd,WAAW,KAAK,UAAU;AAAA,EAC5B;AAAA,EAEA,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,sBAAsB;AAAA;AAAA;AAAA;AAAA,MAIzB,WAAW,KAAK;AAAA;AAAA,KAAW;AAAA;AAAA;AAAA;AAQjC,SAAS,oBAAoB,CAAC,WAAwC;AAAA,EACpE,MAAM,kBAAkB,UACrB,IAAI,CAAC,aAAa;AAAA,IACjB,MAAM,YAAY,aAAY,SAAS,IAAI;AAAA,IAC3C,MAAM,aAAa,aAAa,SAAS,IAAI;AAAA,IAC7C,OAAO,GAAG,iBAAiB;AAAA,GAC5B,EACA,KAAK;AAAA,KAAS;AAAA,EAEjB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAKH;AAAA;AAAA;AAAA;AAQN,SAAS,mBAAmB,CAAC,WAAwC;AAAA,EACnE,MAAM,cAAc,UACjB,IAAI,CAAC,aAAa;AAAA,IACjB,MAAM,aAAa,aAAa,SAAS,IAAI;AAAA,IAC7C,OAAO,eAAe,4CAA4C;AAAA,GACnE,EACA,KAAK;AAAA,CAAI;AAAA,EAEZ,OAAO,GAAG;AAAA;AAAA;AAOZ,eAAsB,sBAAsB,CAC1C,WACA,SACiB;AAAA,EACjB,MAAM,kBAAkB,UACrB,IAAI,CAAC,aAAa,uBAAuB,UAAU,OAAO,CAAC,EAC3D,OAAO,OAAO;AAAA,EAEjB,IAAI,gBAAgB,WAAW,GAAG;AAAA,IAChC,OAAO;AAAA;AAAA,EAET;AAAA,EAEA,MAAM,mBAAmB,qBAAqB,SAAS;AAAA,EACvD,MAAM,cAAc,oBAAoB,SAAS;AAAA,EAEjD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,gBAAgB,KAAK;AAAA;AAAA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA;AAAA;;;ACxeK,IAAM,UAA+C,CAAC,UAAU,CAAC,MAAM;AAAA,EAC5E,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,SAEH,SAAQ,CAAC,SAAyC;AAAA,MACtD,QAAQ,cAAc;AAAA,MAGtB,MAAM,oBAAoB,UAAU,OAAO,CAAC,aAAa;AAAA,QACvD,IAAI,QAAQ,WAAW,CAAC,QAAQ,QAAQ,SAAS,SAAS,IAAI,GAAG;AAAA,UAC/D,OAAO;AAAA,QACT;AAAA,QACA,IAAI,QAAQ,WAAW,QAAQ,QAAQ,SAAS,SAAS,IAAI,GAAG;AAAA,UAC9D,OAAO;AAAA,QACT;AAAA,QACA,OAAO;AAAA,OACR;AAAA,MAED,IAAI,kBAAkB,WAAW,GAAG;AAAA,QAClC,IAAI,QAAQ,OAAO;AAAA,UACjB,QAAQ,OAAO,MAAM,yCAAyC;AAAA,QAChE;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,QAAQ,OAAO;AAAA,QACjB,QAAQ,OAAO,MACb,0CAA0C,kBAAkB,kBAC9D;AAAA,MACF;AAAA,MAGA,MAAM,cAAc,MAAM,uBACxB,mBACA,OACF;AAAA,MAEA,MAAM,aAAa,QAAQ,OAAO;AAAA,MAElC,QAAQ,UAAU,WAAW;AAAA,QAC3B,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,MAED,IAAI,QAAQ,OAAO;AAAA,QACjB,QAAQ,OAAO,MACb,yCAAyC,kBAAkB,kBAC7D;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA;;;ACzCK,SAAS,eAA2C,CACzD,OACA,UAA6B,CAAC,GACzB;AAAA,EACL,IAAI,WAAW;AAAA,EAEf,IAAI,QAAQ,WAAW,QAAQ,QAAQ,SAAS,GAAG;AAAA,IACjD,WAAW,SAAS,OAAO,CAAC,SAC1B,QAAQ,QAAS,KACf,CAAC,YACC,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,CACtE,CACF;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,WAAW,QAAQ,QAAQ,SAAS,GAAG;AAAA,IACjD,WAAW,SAAS,OAClB,CAAC,SACC,CAAC,QAAQ,QAAS,KAChB,CAAC,YACC,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,CACtE,CACJ;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,YAAY,CAC1B,MACA,SACA,gBACmB;AAAA,EACnB,OAAO;AAAA,IACL;AAAA,IACA;AAAA,OACG;AAAA,EACL;AAAA;",
23
- "debugId": "8AEF6558336586B764756E2164756E21",
22
+ "mappings": "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;AAAA;AAAA,SAsCJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA2BJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAgSJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SA6CJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAcJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAwBJ;AAAA,MACH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
23
+ "debugId": "DBBDDA8E89A55EA464756E2164756E21",
24
24
  "names": []
25
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secondlayer/cli",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI for generating type-safe contract interfaces for the Stacks blockchain",
5
5
  "type": "module",
6
6
  "bin": {