stxer 0.1.0 → 0.2.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
@@ -1,12 +1,10 @@
1
- import { type ClarityValue, type StacksTransaction } from '@stacks/transactions';
1
+ import { type ClarityValue, type StacksTransactionWire } from '@stacks/transactions';
2
2
  export interface SimulationEval {
3
3
  contract_id: string;
4
4
  code: string;
5
5
  }
6
- export declare function runEval({ contract_id, code }: SimulationEval): import("@stacks/transactions").TupleCV<{
7
- [key: string]: import("@stacks/transactions").BufferCV | import("@stacks/transactions").UIntCV;
8
- }>;
9
- export declare function runSimulation(block_hash: string, block_height: number, txs: (StacksTransaction | SimulationEval)[]): Promise<string>;
6
+ export declare function runEval({ contract_id, code }: SimulationEval): import("@stacks/transactions").TupleCV<import("@stacks/transactions").TupleData<import("@stacks/transactions").BufferCV | import("@stacks/transactions").UIntCV>>;
7
+ export declare function runSimulation(block_hash: string, block_height: number, txs: (StacksTransactionWire | SimulationEval)[]): Promise<string>;
10
8
  export declare class SimulationBuilder {
11
9
  static new(): SimulationBuilder;
12
10
  private block;
@@ -0,0 +1 @@
1
+ export {};
@@ -378,7 +378,7 @@ function runTx(tx) {
378
378
  // type 0: run transaction
379
379
  return transactions.tupleCV({
380
380
  type: transactions.uintCV(0),
381
- data: transactions.bufferCV(tx.serialize())
381
+ data: transactions.bufferCV(tx.serializeBytes())
382
382
  });
383
383
  }
384
384
  function runEval(_ref) {
@@ -390,7 +390,7 @@ function runEval(_ref) {
390
390
  // type 1: eval arbitrary code inside a contract
391
391
  return transactions.tupleCV({
392
392
  type: transactions.uintCV(1),
393
- data: transactions.bufferCV(transactions.serializeCV(transactions.tupleCV({
393
+ data: transactions.bufferCV(transactions.serializeCVBytes(transactions.tupleCV({
394
394
  contract: transactions.contractPrincipalCV(contract_address, contract_name),
395
395
  code: transactions.stringAsciiCV(code)
396
396
  })))
@@ -408,7 +408,7 @@ function _runSimulation() {
408
408
  body = Buffer.concat([Buffer.from('sim-v1'), Buffer.alloc(8), Buffer.from(block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash, 'hex')].concat(txs.map(function (t) {
409
409
  return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
410
410
  }).map(function (t) {
411
- return transactions.serializeCV(t);
411
+ return transactions.serializeCVBytes(t);
412
412
  })));
413
413
  body.writeBigUInt64BE(BigInt(block_height), 6);
414
414
  _context5.next = 4;
@@ -641,10 +641,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
641
641
  functionName: step.function_name,
642
642
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
643
643
  nonce: nonce,
644
- network: new network.StacksMainnet(),
644
+ network: network.STACKS_MAINNET,
645
645
  publicKey: '',
646
646
  postConditionMode: transactions.PostConditionMode.Allow,
647
- anchorMode: transactions.AnchorMode.Any,
648
647
  fee: step.fee
649
648
  });
650
649
  case 18:
@@ -667,9 +666,8 @@ var SimulationBuilder = /*#__PURE__*/function () {
667
666
  recipient: step.recipient,
668
667
  amount: step.amount,
669
668
  nonce: _nonce,
670
- network: new network.StacksMainnet(),
669
+ network: network.STACKS_MAINNET,
671
670
  publicKey: '',
672
- anchorMode: transactions.AnchorMode.Any,
673
671
  fee: step.fee
674
672
  });
675
673
  case 29:
@@ -692,10 +690,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
692
690
  contractName: step.contract_name,
693
691
  codeBody: step.source_code,
694
692
  nonce: _nonce2,
695
- network: new network.StacksMainnet(),
693
+ network: network.STACKS_MAINNET,
696
694
  publicKey: '',
697
695
  postConditionMode: transactions.PostConditionMode.Allow,
698
- anchorMode: transactions.AnchorMode.Any,
699
696
  fee: step.fee
700
697
  });
701
698
  case 40:
@@ -708,6 +705,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
708
705
  if ('code' in step) {
709
706
  txs.push(step);
710
707
  } else {
708
+ // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
711
709
  console.log("Invalid simulation step:", step);
712
710
  }
713
711
  case 46:
@@ -1 +1 @@
1
- {"version":3,"file":"stxer.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serialize","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
1
+ {"version":3,"file":"stxer.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serializeBytes","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA;AACA,IAAMA,uBAAuB,GAAG,mCAAmC,CAAA;AAEnE,SAASC,KAAKA,CAACC,EAAyB,EAAA;AACtC;AACA,EAAA,OAAOC,oBAAO,CAAC;AAAEC,IAAAA,IAAI,EAAEC,mBAAM,CAAC,CAAC,CAAC;AAAEC,IAAAA,IAAI,EAAEC,qBAAQ,CAACL,EAAE,CAACM,cAAc,EAAE,CAAA;AAAG,GAAA,CAAC,CAAA;AAC1E,CAAA;SAOgBC,OAAOA,CAAAC,IAAA,EAAsC;AAAA,EAAA,IAAnCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI,CAAA;AACzC,EAAA,IAAAC,kBAAA,GAA0CF,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC;AAAzDC,IAAAA,gBAAgB,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AACtC;AACA,EAAA,OAAOV,oBAAO,CAAC;AACbC,IAAAA,IAAI,EAAEC,mBAAM,CAAC,CAAC,CAAC;AACfC,IAAAA,IAAI,EAAEC,qBAAQ,CACZU,6BAAgB,CACdd,oBAAO,CAAC;AACNe,MAAAA,QAAQ,EAAEC,gCAAmB,CAACJ,gBAAgB,EAAEC,aAAa,CAAC;MAC9DJ,IAAI,EAAEQ,0BAAa,CAACR,IAAI,CAAA;AACzB,KAAA,CAAC,CACH,CAAA;AAEJ,GAAA,CAAC,CAAA;AACJ,CAAA;AAEA,SAAsBS,aAAaA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AA+BlC,SAAAF,cAAA,GAAA;AAAAA,EAAAA,cAAA,GAAAG,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CA/BM,SAAAC,QACLC,CAAAA,UAAkB,EAClBC,YAAoB,EACpBC,GAA+C,EAAA;IAAA,IAAAC,IAAA,EAAAC,EAAA,CAAA;AAAA,IAAA,OAAAP,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAC,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;UAEzCN,IAAI,GAAGO,MAAM,CAACC,MAAM,EACxBD,MAAM,CAACE,IAAI,CAAC,QAAQ,CAAC,EACrBF,MAAM,CAACG,KAAK,CAAC,CAAC,CAAC,EACfH,MAAM,CAACE,IAAI,CACTZ,UAAU,CAACc,UAAU,CAAC,IAAI,CAAC,GAAGd,UAAU,CAACe,SAAS,CAAC,CAAC,CAAC,GAAGf,UAAU,EAClE,KAAK,CACN,CAAAW,CAAAA,MAAA,CACET,GAAG,CACHc,GAAG,CAAC,UAACC,CAAC,EAAI;AACT,YAAA,OAAO,aAAa,IAAIA,CAAC,IAAI,MAAM,IAAIA,CAAC,GAAGxC,OAAO,CAACwC,CAAC,CAAC,GAAGhD,KAAK,CAACgD,CAAC,CAAC,CAAA;AAClE,WAAC,CAAC,CACDD,GAAG,CAAC,UAACC,CAAC,EAAA;YAAA,OAAKhC,6BAAgB,CAACgC,CAAC,CAAC,CAAA;AAAA,WAAA,CAAC,CACnC,CAAC,CAAA;UACFd,IAAI,CAACe,gBAAgB,CAACC,MAAM,CAAClB,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;AAACM,UAAAA,SAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BW,KAAK,CAACpD,uBAAuB,EAAE;AAC9CqD,YAAAA,MAAM,EAAE,MAAM;AACdlB,YAAAA,IAAI,EAAJA,IAAAA;WACD,CAAC,CAACmB,IAAI,cAAA,YAAA;YAAA,IAAAC,KAAA,GAAA3B,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAA0B,QAAAA,CAAOpB,EAAE,EAAA;AAAA,cAAA,IAAAqB,QAAA,CAAA;AAAA,cAAA,OAAA5B,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqB,UAAAC,SAAA,EAAA;AAAA,gBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;AAAA,kBAAA,KAAA,CAAA;AAAAkB,oBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,OACQL,EAAE,CAACwB,IAAI,EAAE,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAA1BH,QAAQ,GAAAE,SAAA,CAAAE,IAAA,CAAA;AAAA,oBAAA,IACTJ,QAAQ,CAACX,UAAU,CAAC,GAAG,CAAC,EAAA;AAAAa,sBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,sBAAA,MAAA;AAAA,qBAAA;AAAA,oBAAA,MACrB,IAAIqB,KAAK,CAAiCL,+BAAAA,GAAAA,QAAU,CAAC,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAAA,OAAAE,SAAA,CAAAI,MAAA,CAAA,QAAA,EAGtDC,IAAI,CAACC,KAAK,CAACR,QAAQ,CAAmB,CAAA,CAAA;AAAA,kBAAA,KAAA,CAAA,CAAA;AAAA,kBAAA,KAAA,KAAA;oBAAA,OAAAE,SAAA,CAAAO,IAAA,EAAA,CAAA;AAAA,iBAAA;AAAA,eAAA,EAAAV,QAAA,CAAA,CAAA;aAC9C,CAAA,CAAA,CAAA;AAAA,YAAA,OAAA,UAAAW,GAAA,EAAA;AAAA,cAAA,OAAAZ,KAAA,CAAA7B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,aAAA,CAAA;WAAC,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAVIS,EAAE,GAAAG,SAAA,CAAAsB,IAAA,CAAA;AAAA,UAAA,OAAAtB,SAAA,CAAAwB,MAAA,CAWD3B,QAAAA,EAAAA,EAAE,CAACgC,EAAE,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA7B,SAAA,CAAA2B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAnC,QAAA,CAAA,CAAA;GACb,CAAA,CAAA,CAAA;AAAA,EAAA,OAAAN,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AAED,IAAa0C,iBAAiB,gBAAA,YAAA;AAAA,EAAA,SAAAA,iBAAA,GAAA;AAI5B;IAAA,IACQC,CAAAA,KAAK,GAAGC,GAAG,CAAA;IAAA,IACXC,CAAAA,MAAM,GAAG,EAAE,CAAA;IAAA,IACXC,CAAAA,KAAK,GAwBP,EAAE,CAAA;AAAA,GAAA;AAAAJ,EAAAA,iBAAA,CA9BD,KAAA,CAAA,GAAA,SAAOK,IAAGA,GAAA;IACf,OAAO,IAAIL,iBAAiB,EAAE,CAAA;GAC/B,CAAA;AAAA,EAAA,IAAAM,MAAA,GAAAN,iBAAA,CAAAO,SAAA,CAAA;AAAAD,EAAAA,MAAA,CA8BME,cAAc,GAAd,SAAAA,cAAcA,CAACP,KAAa,EAAA;IACjC,IAAI,CAACA,KAAK,GAAGA,KAAK,CAAA;AAClB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAK,EAAAA,MAAA,CACMG,UAAU,GAAV,SAAAA,UAAUA,CAACC,OAAe,EAAA;IAC/B,IAAI,CAACP,MAAM,GAAGO,OAAO,CAAA;AACrB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAJ,EAAAA,MAAA,CACMK,cAAc,GAAd,SAAAA,cAAcA,CAACC,MAKrB,EAAA;IAAA,IAAAC,cAAA,EAAAC,WAAA,CAAA;IACC,IAAIF,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAU,cAAA,GAAED,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAU,cAAA,GAAI,IAAI,CAACV,MAAM;MACpCc,GAAG,EAAA,CAAAH,WAAA,GAAEF,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAH,WAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAR,EAAAA,MAAA,CACMY,eAAe,GAAf,SAAAA,eAAeA,CAACN,MAMtB,EAAA;IAAA,IAAAO,eAAA,EAAAC,YAAA,CAAA;IACC,IAAIR,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAgB,eAAA,GAAEP,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAgB,eAAA,GAAI,IAAI,CAAChB,MAAM;MACpCc,GAAG,EAAA,CAAAG,YAAA,GAAER,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAG,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAd,EAAAA,MAAA,CACMe,iBAAiB,GAAjB,SAAAA,iBAAiBA,CAACT,MAKxB,EAAA;IAAA,IAAAU,gBAAA,EAAAC,YAAA,CAAA;IACC,IAAIX,MAAM,CAACY,QAAQ,IAAI,IAAI,IAAI,IAAI,CAACrB,MAAM,KAAK,EAAE,EAAE;AACjD,MAAA,MAAM,IAAIV,KAAK,CACb,0EAA0E,CAC3E,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTY,QAAQ,EAAA,CAAAF,gBAAA,GAAEV,MAAM,CAACY,QAAQ,KAAA,IAAA,GAAAF,gBAAA,GAAI,IAAI,CAACnB,MAAM;MACxCc,GAAG,EAAA,CAAAM,YAAA,GAAEX,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAM,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAjB,MAAA,CACMmB,WAAW,GAAX,SAAAA,WAAWA,CAACC,kBAA0B,EAAEnF,IAAY,EAAA;AACzD,IAAA,IAAI,CAAC6D,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAEoF,kBAAkB;AAC/BnF,MAAAA,IAAI,EAAJA,IAAAA;AACD,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAA+D,MAAA,CACMqB,UAAU,GAAV,SAAAA,UAAUA,CAACrF,WAAmB,EAAEqC,GAAW,EAAEiD,GAAW,EAAA;AAC7D,IAAA,IAAI,CAACxB,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;MACXC,IAAI,EAAA,WAAA,GAAcoC,GAAG,GAAA,GAAA,GAAIiD,GAAG,GAAA,GAAA;AAC7B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAtB,MAAA,CACMuB,UAAU,GAAV,SAAAA,UAAUA,CAACvF,WAAmB,EAAEwF,QAAgB,EAAA;AACrD,IAAA,IAAI,CAAC1B,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;AACXC,MAAAA,IAAI,gBAAcuF,QAAQ,GAAA,GAAA;AAC3B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAxB,EAAAA,MAAA,CAEayB,YAAY,gBAAA,YAAA;IAAA,IAAAC,aAAA,gBAAAzE,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAlB,SAAAwE,OAAA,GAAA;AAAA,MAAA,IAAAC,kBAAA,EAAAC,iBAAA,EAAAC,IAAA,CAAA;AAAA,MAAA,OAAA5E,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqE,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAnE,IAAA,GAAAmE,QAAA,CAAAlE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CACFmE,MAAM,CAACC,KAAK,CAAC,IAAI,CAACvC,KAAK,CAAC,EAAA;AAAAqC,cAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkE,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OACUqE,qBAAW,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAP,kBAAA,GAAAI,QAAA,CAAA9C,IAAA,CAAA;YAAzC2C,iBAAiB,GAAAD,kBAAA,CAAjBC,iBAAiB,CAAA;YACzB,IAAI,CAAClC,KAAK,GAAGkC,iBAAiB,CAAA;AAAC,UAAA,KAAA,CAAA;AAAAG,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OAEPsE,mBAAS,CACkB,kDAAA,GAAA,IAAI,CAACzC,KAAK,GAAkB,kBAAA,CAChF,CAAChB,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,cAAA,OAAKA,CAAC,CAACC,IAAI,EAAE,CAAA;aAAC,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;YAFjBR,IAAI,GAAAE,QAAA,CAAA9C,IAAA,CAAA;YAAA,IAIR4C,EAAAA,IAAI,CAACS,MAAM,KAAK,IAAI,CAAC5C,KAAK,IAC1B,OAAOmC,IAAI,CAACU,IAAI,KAAK,QAAQ,IAC7B,CAACV,IAAI,CAACU,IAAI,CAACrE,UAAU,CAAC,IAAI,CAAC,CAAA,EAAA;AAAA6D,cAAAA,QAAA,CAAAlE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAErB,IAAIqB,KAAK,CAAA,4CAAA,GACgC,IAAI,CAACQ,KAAO,CAC1D,CAAA;AAAA,UAAA,KAAA,EAAA;YAAA,OAAAqC,QAAA,CAAA5C,MAAA,CAEI,QAAA,EAAA;cACL9B,YAAY,EAAE,IAAI,CAACqC,KAAK;cACxBtC,UAAU,EAAEyE,IAAI,CAACU,IAAI,CAACpE,SAAS,CAAC,CAAC,CAAC;AAClCqE,cAAAA,gBAAgB,EAAEX,IAAI,CAACW,gBAAgB,CAACrE,SAAS,CAAC,CAAC,CAAA;aACpD,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA4D,QAAA,CAAAzC,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAoC,OAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,SAtBaF,YAAYA,GAAA;AAAA,MAAA,OAAAC,aAAA,CAAA3E,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAZyE,YAAY,CAAA;AAAA,GAAA,EAAA,CAAA;AAAAzB,EAAAA,MAAA,CAwBb0C,GAAG,gBAAA,YAAA;IAAA,IAAAC,IAAA,gBAAA1F,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAT,SAAAyF,QAAA,GAAA;AAAA,MAAA,IAAAjD,KAAA,EAAApC,GAAA,EAAAsF,gBAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,YAAA,EAAA/H,EAAA,EAAAgI,MAAA,EAAAC,GAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAjE,EAAA,CAAA;AAAA,MAAA,OAAAvC,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAiG,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAA9F,IAAA;AAAA,UAAA,KAAA,CAAA;YACL+F,OAAO,CAACC,GAAG,CAAA,4RASkB,CAC5B,CAAA;AAACF,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACkB,IAAI,CAAC2D,YAAY,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAjC9B,KAAK,GAAAiE,SAAA,CAAA1E,IAAA,CAAA;YACX2E,OAAO,CAACC,GAAG,CAAA,qBAAA,GACanE,KAAK,CAACrC,YAAY,GAAA,UAAA,GAAWqC,KAAK,CAACtC,UAAU,GAAA,qBAAqB,CACzF,CAAA;AACKE,YAAAA,GAAG,GAA+C,EAAE,CAAA;AACpDsF,YAAAA,gBAAgB,GAAG,IAAIkB,GAAG,EAAkB,CAAA;YAC5CjB,SAAS,gBAAA,YAAA;cAAA,IAAAkB,KAAA,GAAA/G,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8G,QAAAA,CAAOpE,MAAc,EAAA;AAAA,gBAAA,IAAAsD,KAAA,EAAAe,GAAA,EAAAC,OAAA,CAAA;AAAA,gBAAA,OAAAjH,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAA0G,UAAAC,SAAA,EAAA;AAAA,kBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxG,IAAA,GAAAwG,SAAA,CAAAvG,IAAA;AAAA,oBAAA,KAAA,CAAA;AAC/BqF,sBAAAA,KAAK,GAAGN,gBAAgB,CAACyB,GAAG,CAACzE,MAAM,CAAC,CAAA;sBAAA,IACtCsD,EAAAA,KAAK,IAAI,IAAI,CAAA,EAAA;AAAAkB,wBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;AAAA,wBAAA,MAAA;AAAA,uBAAA;AACToG,sBAAAA,GAAG,wCAAsCrE,MAAM,GAAA,SAAA,GAAU,KAAK,GAClEF,OAAAA,GAAAA,KAAK,CAAC8C,gBACR,CAAA;AAAA4B,sBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;sBAAA,OAC2CsE,mBAAS,CAAC8B,GAAG,CAAC,CAACvF,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,wBAAA,OAC/DA,CAAC,CAACC,IAAI,EAAE,CAAA;uBACT,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAFK6B,OAAO,GAAAE,SAAA,CAAAnF,IAAA,CAAA;sBAGb2D,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsE,OAAO,CAAChB,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CACzC+E,QAAAA,EAAAA,OAAO,CAAChB,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAEtBN,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsD,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CAAA,QAAA,EACjC+D,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,EAAA,CAAA;AAAA,oBAAA,KAAA,KAAA;sBAAA,OAAAkB,SAAA,CAAA9E,IAAA,EAAA,CAAA;AAAA,mBAAA;AAAA,iBAAA,EAAA0E,QAAA,CAAA,CAAA;eACb,CAAA,CAAA,CAAA;cAAA,OAdKnB,SAAAA,SAASA,CAAA0B,GAAA,EAAA;AAAA,gBAAA,OAAAR,KAAA,CAAAjH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,eAAA,CAAA;AAAA,aAAA,EAAA,CAAA;AAAA+F,YAAAA,SAAA,GAAA0B,+BAAA,CAeI,IAAI,CAAC3E,KAAK,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CAAAkD,KAAA,GAAAD,SAAA,EAAA,EAAA2B,IAAA,EAAA;AAAAd,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAlBmF,IAAI,GAAAD,KAAA,CAAA2B,KAAA,CAAA;AAAA,YAAA,IAAA,EACT,QAAQ,IAAI1B,IAAI,IAAI,eAAe,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACzBgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,KAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAAkE,YAAAA,qBAAA,GAC6BH,IAAI,CAACjH,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC,EAA5DkH,eAAe,GAAAD,qBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,qBAAA,CAAA,CAAA,CAAA,CAAA;AAAAQ,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACnB8G,qCAAwB,CAAC;AACxCvB,cAAAA,eAAe,EAAfA,eAAe;AACfC,cAAAA,YAAY,EAAZA,YAAY;cACZuB,YAAY,EAAE5B,IAAI,CAAC6B,aAAa;cAChCC,YAAY,EAAA,CAAA7B,mBAAA,GAAED,IAAI,CAAC+B,aAAa,KAAA,IAAA,GAAA9B,mBAAA,GAAI,EAAE;AACtCC,cAAAA,KAAK,EAALA,KAAK;AACL8B,cAAAA,OAAO,EAAEC,sBAAc;AACvBC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,8BAAiB,CAACC,KAAK;cAC1C3E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAVIpF,EAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAWR3D,YAAAA,EAAE,CAACgK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACzC,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,EAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,IAAA,EACJ,QAAQ,IAAImF,IAAI,IAAI,WAAW,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAC5BgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,MAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACM6H,yCAA4B,CAAC;cAC5CC,SAAS,EAAE3C,IAAI,CAAC2C,SAAS;cACzBC,MAAM,EAAE5C,IAAI,CAAC4C,MAAM;AACnB1C,cAAAA,KAAK,EAALA,MAAK;AACL8B,cAAAA,OAAO,EAAEC,sBAAc;AACvBC,cAAAA,SAAS,EAAE,EAAE;cACbxE,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAPIpF,GAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAQR3D,YAAAA,GAAE,CAACgK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACzC,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,GAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YAAA,IACJ,EAAA,UAAU,IAAImF,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACPgF,SAAS,CAACG,IAAI,CAAC/B,QAAQ,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAtCiC,OAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACMgI,uCAA0B,CAAC;cAC1CxC,YAAY,EAAEL,IAAI,CAAC5G,aAAa;cAChC0J,QAAQ,EAAE9C,IAAI,CAAC+C,WAAW;AAC1B7C,cAAAA,KAAK,EAALA,OAAK;AACL8B,cAAAA,OAAO,EAAEC,sBAAc;AACvBC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,8BAAiB,CAACC,KAAK;cAC1C3E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YARIpF,IAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AASR3D,YAAAA,IAAE,CAACgK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACzC,IAAI,CAAC/B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrE3D,YAAAA,GAAG,CAACkD,IAAI,CAAClF,IAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YACR,IAAI,MAAM,IAAImF,IAAI,EAAE;AACzB1F,cAAAA,GAAG,CAACkD,IAAI,CAACwC,IAAI,CAAC,CAAA;AAChB,aAAC,MAAM;AACL;AACAY,cAAAA,OAAO,CAACC,GAAG,CAA6Bb,0BAAAA,EAAAA,IAAI,CAAC,CAAA;AAC/C,aAAA;AAAC,UAAA,KAAA,EAAA;AAAAW,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;YAAA,OAEcpB,aAAa,CAACiD,KAAK,CAACtC,UAAU,EAAEsC,KAAK,CAACrC,YAAY,EAAEC,GAAG,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAnEkC,EAAE,GAAAmE,SAAA,CAAA1E,IAAA,CAAA;AACR2E,YAAAA,OAAO,CAACC,GAAG,CACiErE,yEAAAA,GAAAA,EAAI,CAC/E,CAAA;AAAC,YAAA,OAAAmE,SAAA,CAAAxE,MAAA,CAAA,QAAA,EACKK,EAAE,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmE,SAAA,CAAArE,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAqD,QAAA,EAAA,IAAA,CAAA,CAAA;KACV,CAAA,CAAA,CAAA;AAAA,IAAA,SAvFYF,GAAGA,GAAA;AAAA,MAAA,OAAAC,IAAA,CAAA5F,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAH0F,GAAG,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAAhD,iBAAA,CAAA;AAAA,CAAA;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("ts-clarity"),e=require("@stacks/network"),r=require("@stacks/transactions"),n=require("c32check");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(t){i(a,n,o,s,c,"next",t)}function c(t){i(a,n,o,s,c,"throw",t)}s(void 0)}))}}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return c=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},c.apply(null,arguments)}function u(){u=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new A(n||[]);return o(i,"_invoke",{value:C(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",g={};function m(){}function b(){}function w(){}var x={};h(x,a,(function(){return this}));var k=Object.getPrototypeOf,_=k&&k(k(N([])));_&&_!==r&&n.call(_,a)&&(x=_);var E=w.prototype=m.prototype=Object.create(x);function S(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,s){var c=f(t[o],t,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function C(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=O(s,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=f(e,r,n);if("normal"===u.type){if(o=n.done?v:d,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=v,n.method="throw",n.arg=u.arg)}}}function O(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,g):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return b.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:b,configurable:!0}),b.displayName=h(w,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,h(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},S(L.prototype),h(L.prototype,s,(function(){return this})),e.AsyncIterator=L,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},S(E),h(E,c,"Generator"),h(E,a,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return s.type="throw",s.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function h(t){var e=t.code,n=t.contract_id.split("."),o=n[0],i=n[1];return r.tupleCV({type:r.uintCV(1),data:r.bufferCV(r.serializeCV(r.tupleCV({contract:r.contractPrincipalCV(o,i),code:r.stringAsciiCV(e)})))})}function l(t,e,r){return f.apply(this,arguments)}function f(){return f=a(u().mark((function t(e,n,o){var i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i=Buffer.concat([Buffer.from("sim-v1"),Buffer.alloc(8),Buffer.from(e.startsWith("0x")?e.substring(2):e,"hex")].concat(o.map((function(t){return"contract_id"in t&&"code"in t?h(t):(e=t,r.tupleCV({type:r.uintCV(0),data:r.bufferCV(e.serialize())}));var e})).map((function(t){return r.serializeCV(t)}))))).writeBigUInt64BE(BigInt(n),6),t.next=4,fetch("https://api.stxer.xyz/simulations",{method:"POST",body:i}).then(function(){var t=a(u().mark((function t(e){var r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.text();case 2:if((r=t.sent).startsWith("{")){t.next=5;break}throw new Error("failed to submit simulation: "+r);case 5:return t.abrupt("return",JSON.parse(r));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());case 4:return t.abrupt("return",t.sent.id);case 6:case"end":return t.stop()}}),t)}))),f.apply(this,arguments)}exports.SimulationBuilder=function(){function o(){this.block=NaN,this.sender="",this.steps=[]}o.new=function(){return new o};var i=o.prototype;return i.useBlockHeight=function(t){return this.block=t,this},i.withSender=function(t){return this.sender=t,this},i.addSTXTransfer=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractCall=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractDeploy=function(t){var e,r;if(null==t.deployer&&""===this.sender)throw new Error("Please specify a deployer with useSender or adding a deployer paramenter");return this.steps.push(c({},t,{deployer:null!=(e=t.deployer)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addEvalCode=function(t,e){return this.steps.push({contract_id:t,code:e}),this},i.addMapRead=function(t,e,r){return this.steps.push({contract_id:t,code:"(map-get "+e+" "+r+")"}),this},i.addVarRead=function(t,e){return this.steps.push({contract_id:t,code:"(var-get "+e+")"}),this},i.getBlockInfo=function(){var e=a(u().mark((function e(){var r;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Number.isNaN(this.block)){e.next=6;break}return e.next=3,t.getNodeInfo();case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch("https://api.hiro.so/extended/v1/block/by_height/"+this.block+"?unanchored=true").then((function(t){return t.json()}));case 8:if((r=e.sent).height===this.block&&"string"==typeof r.hash&&r.hash.startsWith("0x")){e.next=11;break}throw new Error("failed to get block info for block height "+this.block);case 11:return e.abrupt("return",{block_height:this.block,block_hash:r.hash.substring(2),index_block_hash:r.index_block_hash.substring(2)});case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),i.run=function(){var o=a(u().mark((function o(){var i,c,h,f,p,d,y,v,g,m,b,w,x,k,_,E,S,L;return u().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------"),o.next=3,this.getBlockInfo();case 3:i=o.sent,console.log("Using block height "+i.block_height+" hash 0x"+i.block_hash+" to run simulation."),c=[],h=new Map,f=function(){var e=a(u().mark((function e(r){var n,o,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=h.get(r))){e.next=8;break}return o="https://api.hiro.so/v2/accounts/"+r+"?proof="+!1+"&tip="+i.index_block_hash,e.next=5,t.richFetch(o).then((function(t){return t.json()}));case 5:return h.set(r,(a=e.sent).nonce+1),e.abrupt("return",a.nonce);case 8:return h.set(r,n+1),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),p=s(this.steps);case 9:if((d=p()).done){o.next=48;break}if(!("sender"in(y=d.value))||!("function_name"in y)){o.next=23;break}return o.next=14,f(y.sender);case 14:return g=o.sent,m=y.contract_id.split("."),b=m[0],w=m[1],o.next=18,r.makeUnsignedContractCall({contractAddress:b,contractName:w,functionName:y.function_name,functionArgs:null!=(v=y.function_args)?v:[],nonce:g,network:new e.StacksMainnet,publicKey:"",postConditionMode:r.PostConditionMode.Allow,anchorMode:r.AnchorMode.Any,fee:y.fee});case 18:(x=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(x),o.next=46;break;case 23:if(!("sender"in y)||!("recipient"in y)){o.next=34;break}return o.next=26,f(y.sender);case 26:return k=o.sent,o.next=29,r.makeUnsignedSTXTokenTransfer({recipient:y.recipient,amount:y.amount,nonce:k,network:new e.StacksMainnet,publicKey:"",anchorMode:r.AnchorMode.Any,fee:y.fee});case 29:(_=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(_),o.next=46;break;case 34:if(!("deployer"in y)){o.next=45;break}return o.next=37,f(y.deployer);case 37:return E=o.sent,o.next=40,r.makeUnsignedContractDeploy({contractName:y.contract_name,codeBody:y.source_code,nonce:E,network:new e.StacksMainnet,publicKey:"",postConditionMode:r.PostConditionMode.Allow,anchorMode:r.AnchorMode.Any,fee:y.fee});case 40:(S=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(S),o.next=46;break;case 45:"code"in y?c.push(y):console.log("Invalid simulation step:",y);case 46:o.next=9;break;case 48:return o.next=50,l(i.block_hash,i.block_height,c);case 50:return L=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/"+L),o.abrupt("return",L);case 53:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=h,exports.runSimulation=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("ts-clarity"),e=require("@stacks/network"),r=require("@stacks/transactions"),n=require("c32check");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(t){i(a,n,o,s,c,"next",t)}function c(t){i(a,n,o,s,c,"throw",t)}s(void 0)}))}}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return c=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},c.apply(null,arguments)}function u(){u=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new j(n||[]);return o(i,"_invoke",{value:L(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",g={};function m(){}function b(){}function w(){}var x={};h(x,a,(function(){return this}));var k=Object.getPrototypeOf,_=k&&k(k(P([])));_&&_!==r&&n.call(_,a)&&(x=_);var E=w.prototype=m.prototype=Object.create(x);function S(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function C(t,e){function r(o,i,a,s){var c=f(t[o],t,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function L(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=N(s,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=f(e,r,n);if("normal"===u.type){if(o=n.done?v:d,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=v,n.method="throw",n.arg=u.arg)}}}function N(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,N(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,g):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function P(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return b.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:b,configurable:!0}),b.displayName=h(w,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,h(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},S(C.prototype),h(C.prototype,s,(function(){return this})),e.AsyncIterator=C,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new C(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},S(E),h(E,c,"Generator"),h(E,a,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=P,j.prototype={constructor:j,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(O),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return s.type="throw",s.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:P(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function h(t){var e=t.code,n=t.contract_id.split("."),o=n[0],i=n[1];return r.tupleCV({type:r.uintCV(1),data:r.bufferCV(r.serializeCVBytes(r.tupleCV({contract:r.contractPrincipalCV(o,i),code:r.stringAsciiCV(e)})))})}function l(t,e,r){return f.apply(this,arguments)}function f(){return f=a(u().mark((function t(e,n,o){var i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i=Buffer.concat([Buffer.from("sim-v1"),Buffer.alloc(8),Buffer.from(e.startsWith("0x")?e.substring(2):e,"hex")].concat(o.map((function(t){return"contract_id"in t&&"code"in t?h(t):(e=t,r.tupleCV({type:r.uintCV(0),data:r.bufferCV(e.serializeBytes())}));var e})).map((function(t){return r.serializeCVBytes(t)}))))).writeBigUInt64BE(BigInt(n),6),t.next=4,fetch("https://api.stxer.xyz/simulations",{method:"POST",body:i}).then(function(){var t=a(u().mark((function t(e){var r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.text();case 2:if((r=t.sent).startsWith("{")){t.next=5;break}throw new Error("failed to submit simulation: "+r);case 5:return t.abrupt("return",JSON.parse(r));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());case 4:return t.abrupt("return",t.sent.id);case 6:case"end":return t.stop()}}),t)}))),f.apply(this,arguments)}exports.SimulationBuilder=function(){function o(){this.block=NaN,this.sender="",this.steps=[]}o.new=function(){return new o};var i=o.prototype;return i.useBlockHeight=function(t){return this.block=t,this},i.withSender=function(t){return this.sender=t,this},i.addSTXTransfer=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractCall=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractDeploy=function(t){var e,r;if(null==t.deployer&&""===this.sender)throw new Error("Please specify a deployer with useSender or adding a deployer paramenter");return this.steps.push(c({},t,{deployer:null!=(e=t.deployer)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addEvalCode=function(t,e){return this.steps.push({contract_id:t,code:e}),this},i.addMapRead=function(t,e,r){return this.steps.push({contract_id:t,code:"(map-get "+e+" "+r+")"}),this},i.addVarRead=function(t,e){return this.steps.push({contract_id:t,code:"(var-get "+e+")"}),this},i.getBlockInfo=function(){var e=a(u().mark((function e(){var r;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Number.isNaN(this.block)){e.next=6;break}return e.next=3,t.getNodeInfo();case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch("https://api.hiro.so/extended/v1/block/by_height/"+this.block+"?unanchored=true").then((function(t){return t.json()}));case 8:if((r=e.sent).height===this.block&&"string"==typeof r.hash&&r.hash.startsWith("0x")){e.next=11;break}throw new Error("failed to get block info for block height "+this.block);case 11:return e.abrupt("return",{block_height:this.block,block_hash:r.hash.substring(2),index_block_hash:r.index_block_hash.substring(2)});case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),i.run=function(){var o=a(u().mark((function o(){var i,c,h,f,p,d,y,v,g,m,b,w,x,k,_,E,S,C;return u().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------"),o.next=3,this.getBlockInfo();case 3:i=o.sent,console.log("Using block height "+i.block_height+" hash 0x"+i.block_hash+" to run simulation."),c=[],h=new Map,f=function(){var e=a(u().mark((function e(r){var n,o,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=h.get(r))){e.next=8;break}return o="https://api.hiro.so/v2/accounts/"+r+"?proof="+!1+"&tip="+i.index_block_hash,e.next=5,t.richFetch(o).then((function(t){return t.json()}));case 5:return h.set(r,(a=e.sent).nonce+1),e.abrupt("return",a.nonce);case 8:return h.set(r,n+1),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),p=s(this.steps);case 9:if((d=p()).done){o.next=48;break}if(!("sender"in(y=d.value))||!("function_name"in y)){o.next=23;break}return o.next=14,f(y.sender);case 14:return g=o.sent,m=y.contract_id.split("."),b=m[0],w=m[1],o.next=18,r.makeUnsignedContractCall({contractAddress:b,contractName:w,functionName:y.function_name,functionArgs:null!=(v=y.function_args)?v:[],nonce:g,network:e.STACKS_MAINNET,publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 18:(x=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(x),o.next=46;break;case 23:if(!("sender"in y)||!("recipient"in y)){o.next=34;break}return o.next=26,f(y.sender);case 26:return k=o.sent,o.next=29,r.makeUnsignedSTXTokenTransfer({recipient:y.recipient,amount:y.amount,nonce:k,network:e.STACKS_MAINNET,publicKey:"",fee:y.fee});case 29:(_=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(_),o.next=46;break;case 34:if(!("deployer"in y)){o.next=45;break}return o.next=37,f(y.deployer);case 37:return E=o.sent,o.next=40,r.makeUnsignedContractDeploy({contractName:y.contract_name,codeBody:y.source_code,nonce:E,network:e.STACKS_MAINNET,publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 40:(S=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(S),o.next=46;break;case 45:"code"in y?c.push(y):console.log("Invalid simulation step:",y);case 46:o.next=9;break;case 48:return o.next=50,l(i.block_hash,i.block_height,c);case 50:return C=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/"+C),o.abrupt("return",C);case 53:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=h,exports.runSimulation=l;
2
2
  //# sourceMappingURL=stxer.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","tupleCV","type","uintCV","data","bufferCV","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","wrap","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","tx","serialize","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","info","_context","Number","isNaN","getNodeInfo","stacks_tip_height","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_context3","console","log","Map","_ref2","_callee2","url","account","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
1
+ {"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","tupleCV","type","uintCV","data","bufferCV","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","wrap","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","tx","serializeBytes","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","info","_context","Number","isNaN","getNodeInfo","stacks_tip_height","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_context3","console","log","Map","_ref2","_callee2","url","account","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
package/dist/stxer.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { richFetch, getNodeInfo } from 'ts-clarity';
2
- import { StacksMainnet } from '@stacks/network';
3
- import { tupleCV, uintCV, bufferCV, serializeCV, contractPrincipalCV, stringAsciiCV, makeUnsignedContractDeploy, PostConditionMode, AnchorMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
2
+ import { STACKS_MAINNET } from '@stacks/network';
3
+ import { tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
4
4
  import { c32addressDecode } from 'c32check';
5
5
 
6
6
  function _arrayLikeToArray(r, a) {
@@ -374,7 +374,7 @@ function runTx(tx) {
374
374
  // type 0: run transaction
375
375
  return tupleCV({
376
376
  type: uintCV(0),
377
- data: bufferCV(tx.serialize())
377
+ data: bufferCV(tx.serializeBytes())
378
378
  });
379
379
  }
380
380
  function runEval(_ref) {
@@ -386,7 +386,7 @@ function runEval(_ref) {
386
386
  // type 1: eval arbitrary code inside a contract
387
387
  return tupleCV({
388
388
  type: uintCV(1),
389
- data: bufferCV(serializeCV(tupleCV({
389
+ data: bufferCV(serializeCVBytes(tupleCV({
390
390
  contract: contractPrincipalCV(contract_address, contract_name),
391
391
  code: stringAsciiCV(code)
392
392
  })))
@@ -404,7 +404,7 @@ function _runSimulation() {
404
404
  body = Buffer.concat([Buffer.from('sim-v1'), Buffer.alloc(8), Buffer.from(block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash, 'hex')].concat(txs.map(function (t) {
405
405
  return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
406
406
  }).map(function (t) {
407
- return serializeCV(t);
407
+ return serializeCVBytes(t);
408
408
  })));
409
409
  body.writeBigUInt64BE(BigInt(block_height), 6);
410
410
  _context5.next = 4;
@@ -637,10 +637,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
637
637
  functionName: step.function_name,
638
638
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
639
639
  nonce: nonce,
640
- network: new StacksMainnet(),
640
+ network: STACKS_MAINNET,
641
641
  publicKey: '',
642
642
  postConditionMode: PostConditionMode.Allow,
643
- anchorMode: AnchorMode.Any,
644
643
  fee: step.fee
645
644
  });
646
645
  case 18:
@@ -663,9 +662,8 @@ var SimulationBuilder = /*#__PURE__*/function () {
663
662
  recipient: step.recipient,
664
663
  amount: step.amount,
665
664
  nonce: _nonce,
666
- network: new StacksMainnet(),
665
+ network: STACKS_MAINNET,
667
666
  publicKey: '',
668
- anchorMode: AnchorMode.Any,
669
667
  fee: step.fee
670
668
  });
671
669
  case 29:
@@ -688,10 +686,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
688
686
  contractName: step.contract_name,
689
687
  codeBody: step.source_code,
690
688
  nonce: _nonce2,
691
- network: new StacksMainnet(),
689
+ network: STACKS_MAINNET,
692
690
  publicKey: '',
693
691
  postConditionMode: PostConditionMode.Allow,
694
- anchorMode: AnchorMode.Any,
695
692
  fee: step.fee
696
693
  });
697
694
  case 40:
@@ -704,6 +701,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
704
701
  if ('code' in step) {
705
702
  txs.push(step);
706
703
  } else {
704
+ // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
707
705
  console.log("Invalid simulation step:", step);
708
706
  }
709
707
  case 46:
@@ -1 +1 @@
1
- {"version":3,"file":"stxer.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serialize","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;AACA,IAAMA,uBAAuB,GAAG,mCAAmC,CAAA;AAEnE,SAASC,KAAKA,CAACC,EAAqB,EAAA;AAClC;AACA,EAAA,OAAOC,OAAO,CAAC;AAAEC,IAAAA,IAAI,EAAEC,MAAM,CAAC,CAAC,CAAC;AAAEC,IAAAA,IAAI,EAAEC,QAAQ,CAACL,EAAE,CAACM,SAAS,EAAE,CAAA;AAAG,GAAA,CAAC,CAAA;AACrE,CAAA;SAOgBC,OAAOA,CAAAC,IAAA,EAAsC;AAAA,EAAA,IAAnCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI,CAAA;AACzC,EAAA,IAAAC,kBAAA,GAA0CF,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC;AAAzDC,IAAAA,gBAAgB,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AACtC;AACA,EAAA,OAAOV,OAAO,CAAC;AACbC,IAAAA,IAAI,EAAEC,MAAM,CAAC,CAAC,CAAC;AACfC,IAAAA,IAAI,EAAEC,QAAQ,CACZU,WAAW,CACTd,OAAO,CAAC;AACNe,MAAAA,QAAQ,EAAEC,mBAAmB,CAACJ,gBAAgB,EAAEC,aAAa,CAAC;MAC9DJ,IAAI,EAAEQ,aAAa,CAACR,IAAI,CAAA;AACzB,KAAA,CAAC,CACH,CAAA;AAEJ,GAAA,CAAC,CAAA;AACJ,CAAA;AAEA,SAAsBS,aAAaA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AA+BlC,SAAAF,cAAA,GAAA;AAAAA,EAAAA,cAAA,GAAAG,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CA/BM,SAAAC,QACLC,CAAAA,UAAkB,EAClBC,YAAoB,EACpBC,GAA2C,EAAA;IAAA,IAAAC,IAAA,EAAAC,EAAA,CAAA;AAAA,IAAA,OAAAP,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAC,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;UAErCN,IAAI,GAAGO,MAAM,CAACC,MAAM,EACxBD,MAAM,CAACE,IAAI,CAAC,QAAQ,CAAC,EACrBF,MAAM,CAACG,KAAK,CAAC,CAAC,CAAC,EACfH,MAAM,CAACE,IAAI,CACTZ,UAAU,CAACc,UAAU,CAAC,IAAI,CAAC,GAAGd,UAAU,CAACe,SAAS,CAAC,CAAC,CAAC,GAAGf,UAAU,EAClE,KAAK,CACN,CAAAW,CAAAA,MAAA,CACET,GAAG,CACHc,GAAG,CAAC,UAACC,CAAC,EAAI;AACT,YAAA,OAAO,aAAa,IAAIA,CAAC,IAAI,MAAM,IAAIA,CAAC,GAAGxC,OAAO,CAACwC,CAAC,CAAC,GAAGhD,KAAK,CAACgD,CAAC,CAAC,CAAA;AAClE,WAAC,CAAC,CACDD,GAAG,CAAC,UAACC,CAAC,EAAA;YAAA,OAAKhC,WAAW,CAACgC,CAAC,CAAC,CAAA;AAAA,WAAA,CAAC,CAC9B,CAAC,CAAA;UACFd,IAAI,CAACe,gBAAgB,CAACC,MAAM,CAAClB,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;AAACM,UAAAA,SAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BW,KAAK,CAACpD,uBAAuB,EAAE;AAC9CqD,YAAAA,MAAM,EAAE,MAAM;AACdlB,YAAAA,IAAI,EAAJA,IAAAA;WACD,CAAC,CAACmB,IAAI,cAAA,YAAA;YAAA,IAAAC,KAAA,GAAA3B,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAA0B,QAAAA,CAAOpB,EAAE,EAAA;AAAA,cAAA,IAAAqB,QAAA,CAAA;AAAA,cAAA,OAAA5B,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqB,UAAAC,SAAA,EAAA;AAAA,gBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;AAAA,kBAAA,KAAA,CAAA;AAAAkB,oBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,OACQL,EAAE,CAACwB,IAAI,EAAE,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAA1BH,QAAQ,GAAAE,SAAA,CAAAE,IAAA,CAAA;AAAA,oBAAA,IACTJ,QAAQ,CAACX,UAAU,CAAC,GAAG,CAAC,EAAA;AAAAa,sBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,sBAAA,MAAA;AAAA,qBAAA;AAAA,oBAAA,MACrB,IAAIqB,KAAK,CAAiCL,+BAAAA,GAAAA,QAAU,CAAC,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAAA,OAAAE,SAAA,CAAAI,MAAA,CAAA,QAAA,EAGtDC,IAAI,CAACC,KAAK,CAACR,QAAQ,CAAmB,CAAA,CAAA;AAAA,kBAAA,KAAA,CAAA,CAAA;AAAA,kBAAA,KAAA,KAAA;oBAAA,OAAAE,SAAA,CAAAO,IAAA,EAAA,CAAA;AAAA,iBAAA;AAAA,eAAA,EAAAV,QAAA,CAAA,CAAA;aAC9C,CAAA,CAAA,CAAA;AAAA,YAAA,OAAA,UAAAW,GAAA,EAAA;AAAA,cAAA,OAAAZ,KAAA,CAAA7B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,aAAA,CAAA;WAAC,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAVIS,EAAE,GAAAG,SAAA,CAAAsB,IAAA,CAAA;AAAA,UAAA,OAAAtB,SAAA,CAAAwB,MAAA,CAWD3B,QAAAA,EAAAA,EAAE,CAACgC,EAAE,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA7B,SAAA,CAAA2B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAnC,QAAA,CAAA,CAAA;GACb,CAAA,CAAA,CAAA;AAAA,EAAA,OAAAN,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AAED,IAAa0C,iBAAiB,gBAAA,YAAA;AAAA,EAAA,SAAAA,iBAAA,GAAA;AAI5B;IAAA,IACQC,CAAAA,KAAK,GAAGC,GAAG,CAAA;IAAA,IACXC,CAAAA,MAAM,GAAG,EAAE,CAAA;IAAA,IACXC,CAAAA,KAAK,GAwBP,EAAE,CAAA;AAAA,GAAA;AAAAJ,EAAAA,iBAAA,CA9BD,KAAA,CAAA,GAAA,SAAOK,IAAGA,GAAA;IACf,OAAO,IAAIL,iBAAiB,EAAE,CAAA;GAC/B,CAAA;AAAA,EAAA,IAAAM,MAAA,GAAAN,iBAAA,CAAAO,SAAA,CAAA;AAAAD,EAAAA,MAAA,CA8BME,cAAc,GAAd,SAAAA,cAAcA,CAACP,KAAa,EAAA;IACjC,IAAI,CAACA,KAAK,GAAGA,KAAK,CAAA;AAClB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAK,EAAAA,MAAA,CACMG,UAAU,GAAV,SAAAA,UAAUA,CAACC,OAAe,EAAA;IAC/B,IAAI,CAACP,MAAM,GAAGO,OAAO,CAAA;AACrB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAJ,EAAAA,MAAA,CACMK,cAAc,GAAd,SAAAA,cAAcA,CAACC,MAKrB,EAAA;IAAA,IAAAC,cAAA,EAAAC,WAAA,CAAA;IACC,IAAIF,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAU,cAAA,GAAED,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAU,cAAA,GAAI,IAAI,CAACV,MAAM;MACpCc,GAAG,EAAA,CAAAH,WAAA,GAAEF,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAH,WAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAR,EAAAA,MAAA,CACMY,eAAe,GAAf,SAAAA,eAAeA,CAACN,MAMtB,EAAA;IAAA,IAAAO,eAAA,EAAAC,YAAA,CAAA;IACC,IAAIR,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAgB,eAAA,GAAEP,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAgB,eAAA,GAAI,IAAI,CAAChB,MAAM;MACpCc,GAAG,EAAA,CAAAG,YAAA,GAAER,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAG,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAd,EAAAA,MAAA,CACMe,iBAAiB,GAAjB,SAAAA,iBAAiBA,CAACT,MAKxB,EAAA;IAAA,IAAAU,gBAAA,EAAAC,YAAA,CAAA;IACC,IAAIX,MAAM,CAACY,QAAQ,IAAI,IAAI,IAAI,IAAI,CAACrB,MAAM,KAAK,EAAE,EAAE;AACjD,MAAA,MAAM,IAAIV,KAAK,CACb,0EAA0E,CAC3E,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTY,QAAQ,EAAA,CAAAF,gBAAA,GAAEV,MAAM,CAACY,QAAQ,KAAA,IAAA,GAAAF,gBAAA,GAAI,IAAI,CAACnB,MAAM;MACxCc,GAAG,EAAA,CAAAM,YAAA,GAAEX,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAM,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAjB,MAAA,CACMmB,WAAW,GAAX,SAAAA,WAAWA,CAACC,kBAA0B,EAAEnF,IAAY,EAAA;AACzD,IAAA,IAAI,CAAC6D,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAEoF,kBAAkB;AAC/BnF,MAAAA,IAAI,EAAJA,IAAAA;AACD,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAA+D,MAAA,CACMqB,UAAU,GAAV,SAAAA,UAAUA,CAACrF,WAAmB,EAAEqC,GAAW,EAAEiD,GAAW,EAAA;AAC7D,IAAA,IAAI,CAACxB,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;MACXC,IAAI,EAAA,WAAA,GAAcoC,GAAG,GAAA,GAAA,GAAIiD,GAAG,GAAA,GAAA;AAC7B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAtB,MAAA,CACMuB,UAAU,GAAV,SAAAA,UAAUA,CAACvF,WAAmB,EAAEwF,QAAgB,EAAA;AACrD,IAAA,IAAI,CAAC1B,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;AACXC,MAAAA,IAAI,gBAAcuF,QAAQ,GAAA,GAAA;AAC3B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAxB,EAAAA,MAAA,CAEayB,YAAY,gBAAA,YAAA;IAAA,IAAAC,aAAA,gBAAAzE,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAlB,SAAAwE,OAAA,GAAA;AAAA,MAAA,IAAAC,kBAAA,EAAAC,iBAAA,EAAAC,IAAA,CAAA;AAAA,MAAA,OAAA5E,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqE,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAnE,IAAA,GAAAmE,QAAA,CAAAlE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CACFmE,MAAM,CAACC,KAAK,CAAC,IAAI,CAACvC,KAAK,CAAC,EAAA;AAAAqC,cAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkE,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OACUqE,WAAW,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAP,kBAAA,GAAAI,QAAA,CAAA9C,IAAA,CAAA;YAAzC2C,iBAAiB,GAAAD,kBAAA,CAAjBC,iBAAiB,CAAA;YACzB,IAAI,CAAClC,KAAK,GAAGkC,iBAAiB,CAAA;AAAC,UAAA,KAAA,CAAA;AAAAG,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OAEPsE,SAAS,CACkB,kDAAA,GAAA,IAAI,CAACzC,KAAK,GAAkB,kBAAA,CAChF,CAAChB,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,cAAA,OAAKA,CAAC,CAACC,IAAI,EAAE,CAAA;aAAC,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;YAFjBR,IAAI,GAAAE,QAAA,CAAA9C,IAAA,CAAA;YAAA,IAIR4C,EAAAA,IAAI,CAACS,MAAM,KAAK,IAAI,CAAC5C,KAAK,IAC1B,OAAOmC,IAAI,CAACU,IAAI,KAAK,QAAQ,IAC7B,CAACV,IAAI,CAACU,IAAI,CAACrE,UAAU,CAAC,IAAI,CAAC,CAAA,EAAA;AAAA6D,cAAAA,QAAA,CAAAlE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAErB,IAAIqB,KAAK,CAAA,4CAAA,GACgC,IAAI,CAACQ,KAAO,CAC1D,CAAA;AAAA,UAAA,KAAA,EAAA;YAAA,OAAAqC,QAAA,CAAA5C,MAAA,CAEI,QAAA,EAAA;cACL9B,YAAY,EAAE,IAAI,CAACqC,KAAK;cACxBtC,UAAU,EAAEyE,IAAI,CAACU,IAAI,CAACpE,SAAS,CAAC,CAAC,CAAC;AAClCqE,cAAAA,gBAAgB,EAAEX,IAAI,CAACW,gBAAgB,CAACrE,SAAS,CAAC,CAAC,CAAA;aACpD,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA4D,QAAA,CAAAzC,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAoC,OAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,SAtBaF,YAAYA,GAAA;AAAA,MAAA,OAAAC,aAAA,CAAA3E,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAZyE,YAAY,CAAA;AAAA,GAAA,EAAA,CAAA;AAAAzB,EAAAA,MAAA,CAwBb0C,GAAG,gBAAA,YAAA;IAAA,IAAAC,IAAA,gBAAA1F,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAT,SAAAyF,QAAA,GAAA;AAAA,MAAA,IAAAjD,KAAA,EAAApC,GAAA,EAAAsF,gBAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,YAAA,EAAA/H,EAAA,EAAAgI,MAAA,EAAAC,GAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAjE,EAAA,CAAA;AAAA,MAAA,OAAAvC,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAiG,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAA9F,IAAA;AAAA,UAAA,KAAA,CAAA;YACL+F,OAAO,CAACC,GAAG,CAAA,4RASkB,CAC5B,CAAA;AAACF,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACkB,IAAI,CAAC2D,YAAY,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAjC9B,KAAK,GAAAiE,SAAA,CAAA1E,IAAA,CAAA;YACX2E,OAAO,CAACC,GAAG,CAAA,qBAAA,GACanE,KAAK,CAACrC,YAAY,GAAA,UAAA,GAAWqC,KAAK,CAACtC,UAAU,GAAA,qBAAqB,CACzF,CAAA;AACKE,YAAAA,GAAG,GAA2C,EAAE,CAAA;AAChDsF,YAAAA,gBAAgB,GAAG,IAAIkB,GAAG,EAAkB,CAAA;YAC5CjB,SAAS,gBAAA,YAAA;cAAA,IAAAkB,KAAA,GAAA/G,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8G,QAAAA,CAAOpE,MAAc,EAAA;AAAA,gBAAA,IAAAsD,KAAA,EAAAe,GAAA,EAAAC,OAAA,CAAA;AAAA,gBAAA,OAAAjH,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAA0G,UAAAC,SAAA,EAAA;AAAA,kBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxG,IAAA,GAAAwG,SAAA,CAAAvG,IAAA;AAAA,oBAAA,KAAA,CAAA;AACjCqF,sBAAAA,KAAK,GAAGN,gBAAgB,CAACyB,GAAG,CAACzE,MAAM,CAAC,CAAA;sBAAA,IACpCsD,EAAAA,KAAK,IAAI,IAAI,CAAA,EAAA;AAAAkB,wBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;AAAA,wBAAA,MAAA;AAAA,uBAAA;AACToG,sBAAAA,GAAG,wCAAsCrE,MAAM,GAAA,SAAA,GAAU,KAAK,GAClEF,OAAAA,GAAAA,KAAK,CAAC8C,gBACR,CAAA;AAAA4B,sBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;sBAAA,OAC2CsE,SAAS,CAAC8B,GAAG,CAAC,CAACvF,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,wBAAA,OAC/DA,CAAC,CAACC,IAAI,EAAE,CAAA;uBACT,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAFK6B,OAAO,GAAAE,SAAA,CAAAnF,IAAA,CAAA;sBAGb2D,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsE,OAAO,CAAChB,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CACzC+E,QAAAA,EAAAA,OAAO,CAAChB,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAEtBN,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsD,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CAAA,QAAA,EACjC+D,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,EAAA,CAAA;AAAA,oBAAA,KAAA,KAAA;sBAAA,OAAAkB,SAAA,CAAA9E,IAAA,EAAA,CAAA;AAAA,mBAAA;AAAA,iBAAA,EAAA0E,QAAA,CAAA,CAAA;eACb,CAAA,CAAA,CAAA;cAAA,OAdKnB,SAAAA,SAASA,CAAA0B,GAAA,EAAA;AAAA,gBAAA,OAAAR,KAAA,CAAAjH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,eAAA,CAAA;AAAA,aAAA,EAAA,CAAA;AAAA+F,YAAAA,SAAA,GAAA0B,+BAAA,CAeI,IAAI,CAAC3E,KAAK,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CAAAkD,KAAA,GAAAD,SAAA,EAAA,EAAA2B,IAAA,EAAA;AAAAd,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAlBmF,IAAI,GAAAD,KAAA,CAAA2B,KAAA,CAAA;AAAA,YAAA,IAAA,EACT,QAAQ,IAAI1B,IAAI,IAAI,eAAe,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACzBgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,KAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAAkE,YAAAA,qBAAA,GAC6BH,IAAI,CAACjH,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC,EAA5DkH,eAAe,GAAAD,qBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,qBAAA,CAAA,CAAA,CAAA,CAAA;AAAAQ,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACnB8G,wBAAwB,CAAC;AACxCvB,cAAAA,eAAe,EAAfA,eAAe;AACfC,cAAAA,YAAY,EAAZA,YAAY;cACZuB,YAAY,EAAE5B,IAAI,CAAC6B,aAAa;cAChCC,YAAY,EAAA,CAAA7B,mBAAA,GAAED,IAAI,CAAC+B,aAAa,KAAA,IAAA,GAAA9B,mBAAA,GAAI,EAAE;AACtCC,cAAAA,KAAK,EAALA,KAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,iBAAiB,CAACC,KAAK;cAC1CC,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAXIpF,EAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAYR3D,YAAAA,EAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,EAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,IAAA,EACJ,QAAQ,IAAImF,IAAI,IAAI,WAAW,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAC5BgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,MAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACMgI,4BAA4B,CAAC;cAC5CC,SAAS,EAAE9C,IAAI,CAAC8C,SAAS;cACzBC,MAAM,EAAE/C,IAAI,CAAC+C,MAAM;AACnB7C,cAAAA,KAAK,EAALA,MAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbI,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YARIpF,GAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AASR3D,YAAAA,GAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,GAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YAAA,IACJ,EAAA,UAAU,IAAImF,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACPgF,SAAS,CAACG,IAAI,CAAC/B,QAAQ,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAtCiC,OAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACMmI,0BAA0B,CAAC;cAC1C3C,YAAY,EAAEL,IAAI,CAAC5G,aAAa;cAChC6J,QAAQ,EAAEjD,IAAI,CAACkD,WAAW;AAC1BhD,cAAAA,KAAK,EAALA,OAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,iBAAiB,CAACC,KAAK;cAC1CC,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YATIpF,IAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAUR3D,YAAAA,IAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAAC/B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrE3D,YAAAA,GAAG,CAACkD,IAAI,CAAClF,IAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YACR,IAAI,MAAM,IAAImF,IAAI,EAAE;AACzB1F,cAAAA,GAAG,CAACkD,IAAI,CAACwC,IAAI,CAAC,CAAA;AAChB,aAAC,MAAM;AACLY,cAAAA,OAAO,CAACC,GAAG,CAA6Bb,0BAAAA,EAAAA,IAAI,CAAC,CAAA;AAC/C,aAAA;AAAC,UAAA,KAAA,EAAA;AAAAW,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;YAAA,OAEcpB,aAAa,CAACiD,KAAK,CAACtC,UAAU,EAAEsC,KAAK,CAACrC,YAAY,EAAEC,GAAG,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAnEkC,EAAE,GAAAmE,SAAA,CAAA1E,IAAA,CAAA;AACR2E,YAAAA,OAAO,CAACC,GAAG,CACiErE,yEAAAA,GAAAA,EAAI,CAC/E,CAAA;AAAC,YAAA,OAAAmE,SAAA,CAAAxE,MAAA,CAAA,QAAA,EACKK,EAAE,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmE,SAAA,CAAArE,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAqD,QAAA,EAAA,IAAA,CAAA,CAAA;KACV,CAAA,CAAA,CAAA;AAAA,IAAA,SAzFYF,GAAGA,GAAA;AAAA,MAAA,OAAAC,IAAA,CAAA5F,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAH0F,GAAG,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAAhD,iBAAA,CAAA;AAAA,CAAA;;;;"}
1
+ {"version":3,"file":"stxer.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serializeBytes","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stxer",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "author": "Kyle Fang",
6
6
  "main": "dist/index.js",
@@ -44,12 +44,13 @@
44
44
  "husky": "^9.1.6",
45
45
  "size-limit": "^11.1.5",
46
46
  "tslib": "^2.7.0",
47
- "typescript": "^5.6.2"
47
+ "typescript": "^5.6.2",
48
+ "tsx": "^4.19.2"
48
49
  },
49
50
  "dependencies": {
50
- "@stacks/network": "^6.16.0",
51
+ "@stacks/network": "^7.0.0",
51
52
  "@stacks/stacks-blockchain-api-types": "^7.14.1",
52
- "@stacks/transactions": "^6.16.1",
53
+ "@stacks/transactions": "^7.0.0",
53
54
  "c32check": "^2.0.0",
54
55
  "ts-clarity": "^0.0.26"
55
56
  },
@@ -59,6 +60,7 @@
59
60
  "lint": "dts lint",
60
61
  "size": "size-limit",
61
62
  "start": "dts watch",
62
- "test": "dts test"
63
+ "test": "dts test",
64
+ "sample": "tsx src/sample/counter.ts"
63
65
  }
64
66
  }
package/src/index.ts CHANGED
@@ -1,17 +1,18 @@
1
1
  import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';
2
2
  import type { Block } from '@stacks/stacks-blockchain-api-types';
3
- import { StacksMainnet } from '@stacks/network';
3
+ import { STACKS_MAINNET } from '@stacks/network';
4
4
  import {
5
5
  AnchorMode,
6
6
  type ClarityValue,
7
7
  PostConditionMode,
8
- type StacksTransaction,
8
+ type StacksTransactionWire,
9
9
  bufferCV,
10
10
  contractPrincipalCV,
11
11
  makeUnsignedContractCall,
12
12
  makeUnsignedContractDeploy,
13
13
  makeUnsignedSTXTokenTransfer,
14
14
  serializeCV,
15
+ serializeCVBytes,
15
16
  stringAsciiCV,
16
17
  tupleCV,
17
18
  uintCV,
@@ -21,9 +22,9 @@ import { c32addressDecode } from 'c32check';
21
22
  // current beta api endpoint
22
23
  const SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';
23
24
 
24
- function runTx(tx: StacksTransaction) {
25
+ function runTx(tx: StacksTransactionWire) {
25
26
  // type 0: run transaction
26
- return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });
27
+ return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });
27
28
  }
28
29
 
29
30
  export interface SimulationEval {
@@ -37,7 +38,7 @@ export function runEval({ contract_id, code }: SimulationEval) {
37
38
  return tupleCV({
38
39
  type: uintCV(1),
39
40
  data: bufferCV(
40
- serializeCV(
41
+ serializeCVBytes(
41
42
  tupleCV({
42
43
  contract: contractPrincipalCV(contract_address, contract_name),
43
44
  code: stringAsciiCV(code),
@@ -50,7 +51,7 @@ export function runEval({ contract_id, code }: SimulationEval) {
50
51
  export async function runSimulation(
51
52
  block_hash: string,
52
53
  block_height: number,
53
- txs: (StacksTransaction | SimulationEval)[]
54
+ txs: (StacksTransactionWire | SimulationEval)[]
54
55
  ) {
55
56
  const body = Buffer.concat([
56
57
  Buffer.from('sim-v1'),
@@ -63,7 +64,7 @@ export async function runSimulation(
63
64
  .map((t) => {
64
65
  return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
65
66
  })
66
- .map((t) => serializeCV(t)),
67
+ .map((t) => serializeCVBytes(t)),
67
68
  ]);
68
69
  body.writeBigUInt64BE(BigInt(block_height), 6);
69
70
  const rs = await fetch(SIMULATION_API_ENDPOINT, {
@@ -238,10 +239,10 @@ To get in touch: contact@stxer.xyz
238
239
  console.log(
239
240
  `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`
240
241
  );
241
- const txs: (StacksTransaction | SimulationEval)[] = [];
242
+ const txs: (StacksTransactionWire | SimulationEval)[] = [];
242
243
  const nonce_by_address = new Map<string, number>();
243
244
  const nextNonce = async (sender: string) => {
244
- let nonce = nonce_by_address.get(sender);
245
+ const nonce = nonce_by_address.get(sender);
245
246
  if (nonce == null) {
246
247
  const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${
247
248
  block.index_block_hash
@@ -265,10 +266,9 @@ To get in touch: contact@stxer.xyz
265
266
  functionName: step.function_name,
266
267
  functionArgs: step.function_args ?? [],
267
268
  nonce,
268
- network: new StacksMainnet(),
269
+ network: STACKS_MAINNET,
269
270
  publicKey: '',
270
271
  postConditionMode: PostConditionMode.Allow,
271
- anchorMode: AnchorMode.Any,
272
272
  fee: step.fee,
273
273
  });
274
274
  tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
@@ -279,9 +279,8 @@ To get in touch: contact@stxer.xyz
279
279
  recipient: step.recipient,
280
280
  amount: step.amount,
281
281
  nonce,
282
- network: new StacksMainnet(),
282
+ network: STACKS_MAINNET,
283
283
  publicKey: '',
284
- anchorMode: AnchorMode.Any,
285
284
  fee: step.fee,
286
285
  });
287
286
  tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
@@ -292,10 +291,9 @@ To get in touch: contact@stxer.xyz
292
291
  contractName: step.contract_name,
293
292
  codeBody: step.source_code,
294
293
  nonce,
295
- network: new StacksMainnet(),
294
+ network: STACKS_MAINNET,
296
295
  publicKey: '',
297
296
  postConditionMode: PostConditionMode.Allow,
298
- anchorMode: AnchorMode.Any,
299
297
  fee: step.fee,
300
298
  });
301
299
  tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
@@ -303,6 +301,7 @@ To get in touch: contact@stxer.xyz
303
301
  } else if ('code' in step) {
304
302
  txs.push(step);
305
303
  } else {
304
+ // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
306
305
  console.log(`Invalid simulation step:`, step);
307
306
  }
308
307
  }
@@ -0,0 +1,34 @@
1
+ import { uintCV } from "@stacks/transactions";
2
+ import { SimulationBuilder } from "..";
3
+
4
+ SimulationBuilder.new()
5
+ .withSender('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER')
6
+ .addContractDeploy({
7
+ contract_name: 'test-simulation',
8
+ source_code: `
9
+ ;; counter example
10
+ (define-data-var counter uint u0)
11
+
12
+ (define-public (increment (delta uint))
13
+ (begin
14
+ (var-set counter (+ (var-get counter) delta))
15
+ (ok (var-get counter))))
16
+
17
+ (define-public (decrement)
18
+ (begin
19
+ (var-set counter (- (var-get counter) u1))
20
+ (ok (var-get counter))))
21
+
22
+ (define-read-only (get-counter)
23
+ (ok (var-get counter)))
24
+ `,
25
+ })
26
+ .addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
27
+ .addContractCall({
28
+ contract_id: 'SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation',
29
+ function_name: 'increment',
30
+ function_args: [uintCV(10)],
31
+ })
32
+ .addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
33
+ .run()
34
+ .catch(console.error);