stxer 0.2.3 → 0.2.5

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/README.md CHANGED
@@ -1,103 +1,9 @@
1
- # DTS User Guide
1
+ stxer SDK
2
+ ----
2
3
 
3
- Congrats! You just saved yourself hours of work by bootstrapping this project with DTS. Let’s get you oriented with what’s here and how to use it.
4
4
 
5
- > This DTS setup is meant for developing libraries (not apps!) that can be published to NPM. If you’re looking to build a Node app, you could use `ts-node-dev`, plain `ts-node`, or simple `tsc`.
5
+ Quick start
6
6
 
7
- > If you’re new to TypeScript, checkout [this handy cheatsheet](https://devhints.io/typescript)
8
-
9
- ## Commands
10
-
11
- DTS scaffolds your new library inside `/src`.
12
-
13
- To run DTS, use:
14
-
15
- ```bash
16
- npm start # or yarn start
17
- ```
18
-
19
- This builds to `/dist` and runs the project in watch mode so any edits you save inside `src` causes a rebuild to `/dist`.
20
-
21
- To do a one-off build, use `npm run build` or `yarn build`.
22
-
23
- To run tests, use `npm test` or `yarn test`.
24
-
25
- ## Configuration
26
-
27
- Code quality is set up for you with `prettier`, `husky`, and `lint-staged`. Adjust the respective fields in `package.json` accordingly.
28
-
29
- ### Jest
30
-
31
- Jest tests are set up to run with `npm test` or `yarn test`.
32
-
33
- ### Bundle Analysis
34
-
35
- [`size-limit`](https://github.com/ai/size-limit) is set up to calculate the real cost of your library with `npm run size` and visualize the bundle with `npm run analyze`.
36
-
37
- #### Setup Files
38
-
39
- This is the folder structure we set up for you:
40
-
41
- ```txt
42
- /src
43
- index.ts # EDIT THIS
44
- /test
45
- index.test.ts # EDIT THIS
46
- .gitignore
47
- package.json
48
- README.md # EDIT THIS
49
- tsconfig.json
50
- ```
51
-
52
- ### Rollup
53
-
54
- DTS uses [Rollup](https://rollupjs.org) as a bundler and generates multiple rollup configs for various module formats and build settings. See [Optimizations](#optimizations) for details.
55
-
56
- ### TypeScript
57
-
58
- `tsconfig.json` is set up to interpret `dom` and `esnext` types, as well as `react` for `jsx`. Adjust according to your needs.
59
-
60
- ## Continuous Integration
61
-
62
- ### GitHub Actions
63
-
64
- Two actions are added by default:
65
-
66
- - `main` which installs deps w/ cache, lints, tests, and builds on all pushes against a Node and OS matrix
67
- - `size` which comments cost comparison of your library on every pull request using [`size-limit`](https://github.com/ai/size-limit)
68
-
69
- ## Optimizations
70
-
71
- Please see the main `dts` [optimizations docs](https://github.com/weiran-zsd/dts-cli#optimizations). In particular, know that you can take advantage of development-only optimizations:
72
-
73
- ```js
74
- // ./types/index.d.ts
75
- declare var __DEV__: boolean;
76
-
77
- // inside your code...
78
- if (__DEV__) {
79
- console.log('foo');
80
- }
81
7
  ```
82
8
 
83
- You can also choose to install and use [invariant](https://github.com/weiran-zsd/dts-cli#invariant) and [warning](https://github.com/weiran-zsd/dts-cli#warning) functions.
84
-
85
- ## Module Formats
86
-
87
- CJS, ESModules, and UMD module formats are supported.
88
-
89
- The appropriate paths are configured in `package.json` and `dist/index.js` accordingly. Please report if any issues are found.
90
-
91
- ## Named Exports
92
-
93
- Per Palmer Group guidelines, [always use named exports.](https://github.com/palmerhq/typescript#exports) Code split inside your React app instead of your React library.
94
-
95
- ## Including Styles
96
-
97
- There are many ways to ship styles, including with CSS-in-JS. DTS has no opinion on this, configure how you like.
98
-
99
- For vanilla CSS, you can include it at the root directory and add it to the `files` section in your `package.json`, so that it can be imported separately by your users and run through their bundler's loader.
100
-
101
- ## Publishing to NPM
102
-
103
- We recommend using [np](https://github.com/sindresorhus/np).
9
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type StacksNetworkName } from '@stacks/network';
2
- import { type ClarityValue, type StacksTransactionWire } from '@stacks/transactions';
2
+ import { type ClarityValue, ClarityVersion, type StacksTransactionWire } from '@stacks/transactions';
3
3
  export interface SimulationEval {
4
4
  contract_id: string;
5
5
  code: string;
@@ -9,7 +9,7 @@ export declare function runSimulation(apiEndpoint: string, block_hash: string, b
9
9
  interface SimulationBuilderOptions {
10
10
  apiEndpoint?: string;
11
11
  stacksNodeAPI?: string;
12
- network?: StacksNetworkName;
12
+ network?: StacksNetworkName | string;
13
13
  }
14
14
  export declare class SimulationBuilder {
15
15
  private apiEndpoint;
@@ -40,6 +40,7 @@ export declare class SimulationBuilder {
40
40
  source_code: string;
41
41
  deployer?: string;
42
42
  fee?: number;
43
+ clarity_version?: ClarityVersion;
43
44
  }): this;
44
45
  addEvalCode(inside_contract_id: string, code: string): this;
45
46
  addMapRead(contract_id: string, map: string, key: string): this;
@@ -528,13 +528,14 @@ var SimulationBuilder = /*#__PURE__*/function () {
528
528
  return this;
529
529
  };
530
530
  _proto.addContractDeploy = function addContractDeploy(params) {
531
- var _params$deployer, _params$fee3;
531
+ var _params$deployer, _params$fee3, _params$clarity_versi;
532
532
  if (params.deployer == null && this.sender === '') {
533
533
  throw new Error('Please specify a deployer with useSender or adding a deployer paramenter');
534
534
  }
535
535
  this.steps.push(_extends({}, params, {
536
536
  deployer: (_params$deployer = params.deployer) != null ? _params$deployer : this.sender,
537
- fee: (_params$fee3 = params.fee) != null ? _params$fee3 : 0
537
+ fee: (_params$fee3 = params.fee) != null ? _params$fee3 : 0,
538
+ clarity_version: (_params$clarity_versi = params.clarity_version) != null ? _params$clarity_versi : transactions.ClarityVersion.Clarity3
538
539
  }));
539
540
  return this;
540
541
  };
@@ -609,7 +610,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
609
610
  _proto.run = /*#__PURE__*/function () {
610
611
  var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
611
612
  var _this = this;
612
- var block, txs, nonce_by_address, nextNonce, _iterator, _step, step, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
613
+ var block, txs, nonce_by_address, nextNonce, _iterator, _step, step, network$1, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
613
614
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
614
615
  while (1) switch (_context3.prev = _context3.next) {
615
616
  case 0:
@@ -657,104 +658,112 @@ var SimulationBuilder = /*#__PURE__*/function () {
657
658
  _iterator = _createForOfIteratorHelperLoose(this.steps);
658
659
  case 9:
659
660
  if ((_step = _iterator()).done) {
660
- _context3.next = 48;
661
+ _context3.next = 50;
661
662
  break;
662
663
  }
663
664
  step = _step.value;
665
+ network$1 = this.network === 'mainnet' ? network.STACKS_MAINNET : network.STACKS_TESTNET;
666
+ if (this.stacksNodeAPI) {
667
+ network$1 = _extends({}, network$1, {
668
+ client: _extends({}, network$1.client, {
669
+ baseUrl: this.stacksNodeAPI
670
+ })
671
+ });
672
+ }
664
673
  if (!('sender' in step && 'function_name' in step)) {
665
- _context3.next = 23;
674
+ _context3.next = 25;
666
675
  break;
667
676
  }
668
- _context3.next = 14;
677
+ _context3.next = 16;
669
678
  return nextNonce(step.sender);
670
- case 14:
679
+ case 16:
671
680
  nonce = _context3.sent;
672
681
  _step$contract_id$spl = step.contract_id.split('.'), contractAddress = _step$contract_id$spl[0], contractName = _step$contract_id$spl[1];
673
- _context3.next = 18;
682
+ _context3.next = 20;
674
683
  return transactions.makeUnsignedContractCall({
675
684
  contractAddress: contractAddress,
676
685
  contractName: contractName,
677
686
  functionName: step.function_name,
678
687
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
679
688
  nonce: nonce,
680
- network: network.networkFrom(this.network),
689
+ network: network$1,
681
690
  publicKey: '',
682
691
  postConditionMode: transactions.PostConditionMode.Allow,
683
692
  fee: step.fee
684
693
  });
685
- case 18:
694
+ case 20:
686
695
  tx = _context3.sent;
687
696
  tx.auth.spendingCondition.signer = c32check.c32addressDecode(step.sender)[1];
688
697
  txs.push(tx);
689
- _context3.next = 46;
698
+ _context3.next = 48;
690
699
  break;
691
- case 23:
700
+ case 25:
692
701
  if (!('sender' in step && 'recipient' in step)) {
693
- _context3.next = 34;
702
+ _context3.next = 36;
694
703
  break;
695
704
  }
696
- _context3.next = 26;
705
+ _context3.next = 28;
697
706
  return nextNonce(step.sender);
698
- case 26:
707
+ case 28:
699
708
  _nonce = _context3.sent;
700
- _context3.next = 29;
709
+ _context3.next = 31;
701
710
  return transactions.makeUnsignedSTXTokenTransfer({
702
711
  recipient: step.recipient,
703
712
  amount: step.amount,
704
713
  nonce: _nonce,
705
- network: network.networkFrom(this.network),
714
+ network: network$1,
706
715
  publicKey: '',
707
716
  fee: step.fee
708
717
  });
709
- case 29:
718
+ case 31:
710
719
  _tx = _context3.sent;
711
720
  _tx.auth.spendingCondition.signer = c32check.c32addressDecode(step.sender)[1];
712
721
  txs.push(_tx);
713
- _context3.next = 46;
722
+ _context3.next = 48;
714
723
  break;
715
- case 34:
724
+ case 36:
716
725
  if (!('deployer' in step)) {
717
- _context3.next = 45;
726
+ _context3.next = 47;
718
727
  break;
719
728
  }
720
- _context3.next = 37;
729
+ _context3.next = 39;
721
730
  return nextNonce(step.deployer);
722
- case 37:
731
+ case 39:
723
732
  _nonce2 = _context3.sent;
724
- _context3.next = 40;
733
+ _context3.next = 42;
725
734
  return transactions.makeUnsignedContractDeploy({
726
735
  contractName: step.contract_name,
727
736
  codeBody: step.source_code,
728
737
  nonce: _nonce2,
729
- network: network.networkFrom(this.network),
738
+ network: network$1,
730
739
  publicKey: '',
731
740
  postConditionMode: transactions.PostConditionMode.Allow,
732
741
  fee: step.fee
733
742
  });
734
- case 40:
743
+ case 42:
735
744
  _tx2 = _context3.sent;
736
745
  _tx2.auth.spendingCondition.signer = c32check.c32addressDecode(step.deployer)[1];
737
746
  txs.push(_tx2);
738
- _context3.next = 46;
747
+ _context3.next = 48;
739
748
  break;
740
- case 45:
749
+ case 47:
741
750
  if ('code' in step) {
742
751
  txs.push(step);
743
752
  } else {
744
753
  // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
745
754
  console.log("Invalid simulation step:", step);
746
755
  }
747
- case 46:
756
+ case 48:
748
757
  _context3.next = 9;
749
758
  break;
750
- case 48:
751
- _context3.next = 50;
752
- return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
753
759
  case 50:
760
+ _context3.next = 52;
761
+ return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
762
+ case 52:
754
763
  id = _context3.sent;
755
764
  console.log("Simulation will be available at: https://stxer.xyz/simulations/" + this.network + "/" + id);
756
765
  return _context3.abrupt("return", id);
757
- case 53:
766
+ case 55:
758
767
  case "end":
759
768
  return _context3.stop();
760
769
  }
@@ -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 { networkFrom, STACKS_MAINNET, type StacksNetwork, type StacksNetworkName } 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 serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(hashHex.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)));\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength = header.length + heightBytes.length + hashBytes.length + \n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${this.stacksNodeAPI}/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: networkFrom(this.network),\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: networkFrom(this.network),\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: networkFrom(this.network),\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["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","_x4","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","rs","wrap","_callee5$","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","isNaN","getNodeInfo","stacksEndpoint","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","_this","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","_x5","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","networkFrom","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,SAASA,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;AAEsBS,SAAAA,aAAaA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AAoDlC,SAAAF,cAAA,GAAA;AAAAA,EAAAA,cAAA,GAAAG,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CApDM,SAAAC,QAAAA,CACLC,WAAmB,EACnBC,UAAkB,EAClBC,YAAoB,EACpBC,GAA+C,EAAA;IAAA,IAAAC,MAAA,EAAAC,WAAA,EAAAC,IAAA,EAAAC,OAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,WAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,UAAA,EAAAC,MAAA,EAAA7C,EAAA,EAAA8C,EAAA,CAAA;AAAA,IAAA,OAAAlB,mBAAA,EAAA,CAAAmB,IAAA,CAAA,SAAAC,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;AAE/C;UACMhB,MAAM,GAAG,IAAIiB,WAAW,EAAE,CAACC,MAAM,CAAC,QAAQ,CAAC,CACjD;AACMjB,UAAAA,WAAW,GAAG,IAAIkB,UAAU,CAAC,CAAC,CAAC,CACrC;AACMjB,UAAAA,IAAI,GAAG,IAAIkB,QAAQ,CAACnB,WAAW,CAACoB,MAAM,CAAC,CAAA;AAC7CnB,UAAAA,IAAI,CAACoB,YAAY,CAAC,CAAC,EAAEC,MAAM,CAACzB,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AAElD;AACMK,UAAAA,OAAO,GAAGN,UAAU,CAAC2B,UAAU,CAAC,IAAI,CAAC,GAAG3B,UAAU,CAAC4B,SAAS,CAAC,CAAC,CAAC,GAAG5B,UAAU,CAClF;AACMO,UAAAA,SAAS,GAAG,IAAIe,UAAU,CAAChB,OAAO,CAACuB,KAAK,CAAC,SAAS,CAAE,CAACC,GAAG,CAAC,UAAAC,KAAI,EAAA;AAAA,YAAA,OAAIC,MAAM,CAACC,QAAQ,CAACF,KAAI,EAAE,EAAE,CAAC,CAAA;AAAA,WAAA,CAAC,CAAC,CAElG;AACMvB,UAAAA,OAAO,GAAGN,GAAG,CAChB4B,GAAG,CAAC,UAACI,CAAC,EAAA;AAAA,YAAA,OAAK,aAAa,IAAIA,CAAC,IAAI,MAAM,IAAIA,CAAC,GAAG3D,OAAO,CAAC2D,CAAC,CAAC,GAAGnE,KAAK,CAACmE,CAAC,CAAC,CAAA;AAAA,WAAA,CAAC,CACrEJ,GAAG,CAAC,UAACI,CAAC,EAAA;YAAA,OAAKnD,6BAAgB,CAACmD,CAAC,CAAC,CAAA;AAAA,WAAA,CAAC,CAElC;UACMzB,WAAW,GAAGN,MAAM,CAACgC,MAAM,GAAG/B,WAAW,CAAC+B,MAAM,GAAG5B,SAAS,CAAC4B,MAAM,GACvE3B,OAAO,CAAC4B,MAAM,CAAC,UAACC,GAAG,EAAEC,IAAI,EAAA;AAAA,YAAA,OAAKD,GAAG,GAAGC,IAAI,CAACH,MAAM,CAAA;AAAA,WAAA,EAAE,CAAC,CAAC,CAAA;AAC/CzB,UAAAA,IAAI,GAAG,IAAIY,UAAU,CAACb,WAAW,CAAC,CAAA;AAEpCE,UAAAA,MAAM,GAAG,CAAC,CAAA;AACdD,UAAAA,IAAI,CAAC6B,GAAG,CAACpC,MAAM,EAAEQ,MAAM,CAAC,CAAA;UACxBA,MAAM,IAAIR,MAAM,CAACgC,MAAM,CAAA;AACvBzB,UAAAA,IAAI,CAAC6B,GAAG,CAACnC,WAAW,EAAEO,MAAM,CAAC,CAAA;UAC7BA,MAAM,IAAIP,WAAW,CAAC+B,MAAM,CAAA;AAC5BzB,UAAAA,IAAI,CAAC6B,GAAG,CAAChC,SAAS,EAAEI,MAAM,CAAC,CAAA;UAC3BA,MAAM,IAAIJ,SAAS,CAAC4B,MAAM,CAAA;UAC1B,KAAAvB,UAAA,GAAA4B,+BAAA,CAAiBhC,OAAO,CAAAK,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,EAAA6B,EAAAA,IAAA,GAAE;YAAfzE,EAAE,GAAA6C,MAAA,CAAA6B,KAAA,CAAA;AACXhC,YAAAA,IAAI,CAAC6B,GAAG,CAACvE,EAAE,EAAE2C,MAAM,CAAC,CAAA;YACpBA,MAAM,IAAI3C,EAAE,CAACmE,MAAM,CAAA;AACrB,WAAA;AAAClB,UAAAA,SAAA,CAAAE,IAAA,GAAA,EAAA,CAAA;UAAA,OAEgBwB,KAAK,CAAC5C,WAAW,EAAE;AAClC6C,YAAAA,MAAM,EAAE,MAAM;AACdlC,YAAAA,IAAI,EAAJA,IAAAA;WACD,CAAC,CAACmC,IAAI,cAAA,YAAA;YAAA,IAAAC,KAAA,GAAAnD,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAAkD,QAAAA,CAAOjC,EAAE,EAAA;AAAA,cAAA,IAAAkC,QAAA,CAAA;AAAA,cAAA,OAAApD,mBAAA,EAAA,CAAAmB,IAAA,CAAA,SAAAkC,UAAAC,SAAA,EAAA;AAAA,gBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;AAAA,kBAAA,KAAA,CAAA;AAAA+B,oBAAAA,SAAA,CAAA/B,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,OACQL,EAAE,CAACqC,IAAI,EAAE,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAA1BH,QAAQ,GAAAE,SAAA,CAAAE,IAAA,CAAA;AAAA,oBAAA,IACTJ,QAAQ,CAACrB,UAAU,CAAC,GAAG,CAAC,EAAA;AAAAuB,sBAAAA,SAAA,CAAA/B,IAAA,GAAA,CAAA,CAAA;AAAA,sBAAA,MAAA;AAAA,qBAAA;AAAA,oBAAA,MACrB,IAAIkC,KAAK,CAAiCL,+BAAAA,GAAAA,QAAU,CAAC,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAAA,OAAAE,SAAA,CAAAI,MAAA,CAAA,QAAA,EAEtDC,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,CAAArD,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,aAAA,CAAA;WAAC,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA;UATIoB,EAAE,GAAAG,SAAA,CAAAmC,IAAA,CAAA;AAAA,UAAA,OAAAnC,SAAA,CAAAqC,MAAA,CAUDxC,QAAAA,EAAAA,EAAE,CAAC6C,EAAE,CAAA,CAAA;AAAA,QAAA,KAAA,EAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA1C,SAAA,CAAAwC,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAA3D,QAAA,CAAA,CAAA;GACb,CAAA,CAAA,CAAA;AAAA,EAAA,OAAAN,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AAQD,IAAakE,iBAAiB,gBAAA,YAAA;EAK5B,SAAAA,iBAAAA,CAAoBC,SAAsC;AAAA,IAAA,IAAAC,oBAAA,EAAAC,qBAAA,EAAAC,gBAAA,CAAA;AAAA,IAAA,IAAtCH;MAAAA,UAAoC,EAAE,CAAA;AAAA,KAAA;AAAA,IAAA,IAAA,CAJlD9D,WAAW,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACXkE,aAAa,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACbC,OAAO,GAAA,KAAA,CAAA,CAAA;AAYf;IAAA,IACQC,CAAAA,KAAK,GAAGC,GAAG,CAAA;IAAA,IACXC,CAAAA,MAAM,GAAG,EAAE,CAAA;IAAA,IACXC,CAAAA,KAAK,GAwBP,EAAE,CAAA;IApCN,IAAI,CAACvE,WAAW,GAAA,CAAA+D,oBAAA,GAAGD,OAAO,CAAC9D,WAAW,KAAA,IAAA,GAAA+D,oBAAA,GAAI,uBAAuB,CAAA;IACjE,IAAI,CAACG,aAAa,GAAA,CAAAF,qBAAA,GAAGF,OAAO,CAACI,aAAa,KAAA,IAAA,GAAAF,qBAAA,GAAI,qBAAqB,CAAA;IACnE,IAAI,CAACG,OAAO,GAAA,CAAAF,gBAAA,GAAGH,OAAO,CAACK,OAAO,KAAA,IAAA,GAAAF,gBAAA,GAAI,SAAS,CAAA;AAC7C,GAAA;AAACJ,EAAAA,iBAAA,CAEM,KAAA,CAAA,GAAA,SAAOW,IAAGA,CAACV,OAAkC,EAAA;AAClD,IAAA,OAAO,IAAID,iBAAiB,CAACC,OAAO,CAAC,CAAA;GACtC,CAAA;AAAA,EAAA,IAAAW,MAAA,GAAAZ,iBAAA,CAAAa,SAAA,CAAA;AAAAD,EAAAA,MAAA,CA+BME,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,IAAIhB,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACiB,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,IAAIhB,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACiB,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,IAAIhB,KAAK,CACb,0EAA0E,CAC3E,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACiB,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,EAAElH,IAAY,EAAA;AACzD,IAAA,IAAI,CAAC4F,KAAK,CAACW,IAAI,CAAC;AACdxG,MAAAA,WAAW,EAAEmH,kBAAkB;AAC/BlH,MAAAA,IAAI,EAAJA,IAAAA;AACD,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAA8F,MAAA,CACMqB,UAAU,GAAV,SAAAA,UAAUA,CAACpH,WAAmB,EAAEqD,GAAW,EAAEgE,GAAW,EAAA;AAC7D,IAAA,IAAI,CAACxB,KAAK,CAACW,IAAI,CAAC;AACdxG,MAAAA,WAAW,EAAXA,WAAW;MACXC,IAAI,EAAA,WAAA,GAAcoD,GAAG,GAAA,GAAA,GAAIgE,GAAG,GAAA,GAAA;AAC7B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAtB,MAAA,CACMuB,UAAU,GAAV,SAAAA,UAAUA,CAACtH,WAAmB,EAAEuH,QAAgB,EAAA;AACrD,IAAA,IAAI,CAAC1B,KAAK,CAACW,IAAI,CAAC;AACdxG,MAAAA,WAAW,EAAXA,WAAW;AACXC,MAAAA,IAAI,gBAAcsH,QAAQ,GAAA,GAAA;AAC3B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAxB,EAAAA,MAAA,CAEayB,YAAY,gBAAA,YAAA;IAAA,IAAAC,aAAA,gBAAAvG,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAlB,SAAAsG,OAAA,GAAA;AAAA,MAAA,IAAAC,kBAAA,EAAAC,iBAAA,EAAAC,IAAA,CAAA;AAAA,MAAA,OAAA1G,mBAAA,EAAA,CAAAmB,IAAA,CAAA,SAAAwF,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAtF,IAAA,GAAAsF,QAAA,CAAArF,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CACFa,MAAM,CAACyE,KAAK,CAAC,IAAI,CAACtC,KAAK,CAAC,EAAA;AAAAqC,cAAAA,QAAA,CAAArF,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAqF,YAAAA,QAAA,CAAArF,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACUuF,qBAAW,CAAC;cAC9CC,cAAc,EAAE,IAAI,CAAC1C,aAAAA;AACtB,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAmC,kBAAA,GAAAI,QAAA,CAAApD,IAAA,CAAA;YAFMiD,iBAAiB,GAAAD,kBAAA,CAAjBC,iBAAiB,CAAA;YAGzB,IAAI,CAAClC,KAAK,GAAGkC,iBAAiB,CAAA;AAAC,UAAA,KAAA,CAAA;AAAAG,YAAAA,QAAA,CAAArF,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OAEPyF,mBAAS,CAC9B,IAAI,CAAC3C,aAAa,GAAgC,+BAAA,GAAA,IAAI,CAACE,KAAK,qBAAkB,CAClF,CAACtB,IAAI,CAAC,UAACgE,CAAC,EAAA;AAAA,cAAA,OAAKA,CAAC,CAACC,IAAI,EAAE,CAAA;aAAC,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;YAFjBR,IAAI,GAAAE,QAAA,CAAApD,IAAA,CAAA;YAAA,IAIRkD,EAAAA,IAAI,CAACS,MAAM,KAAK,IAAI,CAAC5C,KAAK,IAC1B,OAAOmC,IAAI,CAACU,IAAI,KAAK,QAAQ,IAC7B,CAACV,IAAI,CAACU,IAAI,CAACrF,UAAU,CAAC,IAAI,CAAC,CAAA,EAAA;AAAA6E,cAAAA,QAAA,CAAArF,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAErB,IAAIkC,KAAK,CAAA,4CAAA,GACgC,IAAI,CAACc,KAAO,CAC1D,CAAA;AAAA,UAAA,KAAA,EAAA;YAAA,OAAAqC,QAAA,CAAAlD,MAAA,CAEI,QAAA,EAAA;cACLrD,YAAY,EAAE,IAAI,CAACkE,KAAK;cACxBnE,UAAU,EAAEsG,IAAI,CAACU,IAAI,CAACpF,SAAS,CAAC,CAAC,CAAC;AAClCqF,cAAAA,gBAAgB,EAAEX,IAAI,CAACW,gBAAgB,CAACrF,SAAS,CAAC,CAAC,CAAA;aACpD,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA4E,QAAA,CAAA/C,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA0C,OAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,SAxBaF,YAAYA,GAAA;AAAA,MAAA,OAAAC,aAAA,CAAAzG,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAZuG,YAAY,CAAA;AAAA,GAAA,EAAA,CAAA;AAAAzB,EAAAA,MAAA,CA0Bb0C,GAAG,gBAAA,YAAA;IAAA,IAAAC,IAAA,gBAAAxH,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAT,SAAAuH,QAAA,GAAA;AAAA,MAAA,IAAAC,KAAA,GAAA,IAAA,CAAA;AAAA,MAAA,IAAAlD,KAAA,EAAAjE,GAAA,EAAAoH,gBAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,YAAA,EAAA/J,EAAA,EAAAgK,MAAA,EAAAC,GAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAxE,EAAA,CAAA;AAAA,MAAA,OAAA/D,mBAAA,EAAA,CAAAmB,IAAA,CAAA,SAAAqH,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAAlH,IAAA;AAAA,UAAA,KAAA,CAAA;YACLmH,OAAO,CAACC,GAAG,CAAA,4RASkB,CAC5B,CAAA;AAACF,YAAAA,SAAA,CAAAlH,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACkB,IAAI,CAAC8E,YAAY,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAjC9B,KAAK,GAAAkE,SAAA,CAAAjF,IAAA,CAAA;YACXkF,OAAO,CAACC,GAAG,CAAA,qBAAA,GACapE,KAAK,CAAClE,YAAY,GAAA,UAAA,GAAWkE,KAAK,CAACnE,UAAU,GAAA,qBAAqB,CACzF,CAAA;AACKE,YAAAA,GAAG,GAA+C,EAAE,CAAA;AACpDoH,YAAAA,gBAAgB,GAAG,IAAIkB,GAAG,EAAkB,CAAA;YAC5CjB,SAAS,gBAAA,YAAA;cAAA,IAAAkB,KAAA,GAAA9I,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA6I,QAAAA,CAAOrE,MAAc,EAAA;AAAA,gBAAA,IAAAuD,KAAA,EAAAe,GAAA,EAAAC,OAAA,CAAA;AAAA,gBAAA,OAAAhJ,mBAAA,EAAA,CAAAmB,IAAA,CAAA,SAAA8H,UAAAC,SAAA,EAAA;AAAA,kBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA5H,IAAA,GAAA4H,SAAA,CAAA3H,IAAA;AAAA,oBAAA,KAAA,CAAA;AAC/ByG,sBAAAA,KAAK,GAAGN,gBAAgB,CAACyB,GAAG,CAAC1E,MAAM,CAAC,CAAA;sBAAA,IACtCuD,EAAAA,KAAK,IAAI,IAAI,CAAA,EAAA;AAAAkB,wBAAAA,SAAA,CAAA3H,IAAA,GAAA,CAAA,CAAA;AAAA,wBAAA,MAAA;AAAA,uBAAA;sBACTwH,GAAG,GAAMtB,KAAI,CAACpD,aAAa,GAAA,eAAA,GAAgBI,MAAM,GAAA,SAAA,GAAU,KAAK,GAAA,OAAA,GACpEF,KAAK,CAAC8C,gBACR,CAAA;AAAA6B,sBAAAA,SAAA,CAAA3H,IAAA,GAAA,CAAA,CAAA;sBAAA,OAC2CyF,mBAAS,CAAC+B,GAAG,CAAC,CAAC9F,IAAI,CAAC,UAACgE,CAAC,EAAA;AAAA,wBAAA,OAC/DA,CAAC,CAACC,IAAI,EAAE,CAAA;uBACT,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAFK8B,OAAO,GAAAE,SAAA,CAAA1F,IAAA,CAAA;sBAGbkE,gBAAgB,CAAC/E,GAAG,CAAC8B,MAAM,EAAEuE,OAAO,CAAChB,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAxF,MAAA,CACzCsF,QAAAA,EAAAA,OAAO,CAAChB,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAEtBN,gBAAgB,CAAC/E,GAAG,CAAC8B,MAAM,EAAEuD,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAxF,MAAA,CAAA,QAAA,EACjCsE,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,EAAA,CAAA;AAAA,oBAAA,KAAA,KAAA;sBAAA,OAAAkB,SAAA,CAAArF,IAAA,EAAA,CAAA;AAAA,mBAAA;AAAA,iBAAA,EAAAiF,QAAA,CAAA,CAAA;eACb,CAAA,CAAA,CAAA;cAAA,OAdKnB,SAAAA,SAASA,CAAAyB,GAAA,EAAA;AAAA,gBAAA,OAAAP,KAAA,CAAAhJ,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,eAAA,CAAA;AAAA,aAAA,EAAA,CAAA;AAAA8H,YAAAA,SAAA,GAAAhF,+BAAA,CAeI,IAAI,CAAC8B,KAAK,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CAAAmD,KAAA,GAAAD,SAAA,EAAA,EAAA/E,IAAA,EAAA;AAAA4F,cAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAlBuG,IAAI,GAAAD,KAAA,CAAA/E,KAAA,CAAA;AAAA,YAAA,IAAA,EACT,QAAQ,IAAIgF,IAAI,IAAI,eAAe,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkH,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACzBoG,SAAS,CAACG,IAAI,CAACrD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCuD,KAAK,GAAAS,SAAA,CAAAjF,IAAA,CAAA;AAAAyE,YAAAA,qBAAA,GAC6BH,IAAI,CAACjJ,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC,EAA5DkJ,eAAe,GAAAD,qBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,qBAAA,CAAA,CAAA,CAAA,CAAA;AAAAQ,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACnB8H,qCAAwB,CAAC;AACxCnB,cAAAA,eAAe,EAAfA,eAAe;AACfC,cAAAA,YAAY,EAAZA,YAAY;cACZmB,YAAY,EAAExB,IAAI,CAACyB,aAAa;cAChCC,YAAY,EAAA,CAAAzB,mBAAA,GAAED,IAAI,CAAC2B,aAAa,KAAA,IAAA,GAAA1B,mBAAA,GAAI,EAAE;AACtCC,cAAAA,KAAK,EAALA,KAAK;AACL1D,cAAAA,OAAO,EAAEoF,mBAAW,CAAC,IAAI,CAACpF,OAAO,CAAC;AAClCqF,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,8BAAiB,CAACC,KAAK;cAC1CvE,GAAG,EAAEuC,IAAI,CAACvC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAVInH,EAAE,GAAAqK,SAAA,CAAAjF,IAAA,CAAA;AAWRpF,YAAAA,EAAE,CAAC2L,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACpC,IAAI,CAACrD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEnE,YAAAA,GAAG,CAAC+E,IAAI,CAACjH,EAAE,CAAC,CAAA;AAACqK,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,IAAA,EACJ,QAAQ,IAAIuG,IAAI,IAAI,WAAW,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkH,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAC5BoG,SAAS,CAACG,IAAI,CAACrD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCuD,MAAK,GAAAS,SAAA,CAAAjF,IAAA,CAAA;AAAAiF,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACM4I,yCAA4B,CAAC;cAC5CC,SAAS,EAAEtC,IAAI,CAACsC,SAAS;cACzBC,MAAM,EAAEvC,IAAI,CAACuC,MAAM;AACnBrC,cAAAA,KAAK,EAALA,MAAK;AACL1D,cAAAA,OAAO,EAAEoF,mBAAW,CAAC,IAAI,CAACpF,OAAO,CAAC;AAClCqF,cAAAA,SAAS,EAAE,EAAE;cACbpE,GAAG,EAAEuC,IAAI,CAACvC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAPInH,GAAE,GAAAqK,SAAA,CAAAjF,IAAA,CAAA;AAQRpF,YAAAA,GAAE,CAAC2L,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACpC,IAAI,CAACrD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEnE,YAAAA,GAAG,CAAC+E,IAAI,CAACjH,GAAE,CAAC,CAAA;AAACqK,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YAAA,IACJ,EAAA,UAAU,IAAIuG,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkH,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACPoG,SAAS,CAACG,IAAI,CAAChC,QAAQ,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAtCkC,OAAK,GAAAS,SAAA,CAAAjF,IAAA,CAAA;AAAAiF,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACM+I,uCAA0B,CAAC;cAC1CnC,YAAY,EAAEL,IAAI,CAAC5I,aAAa;cAChCqL,QAAQ,EAAEzC,IAAI,CAAC0C,WAAW;AAC1BxC,cAAAA,KAAK,EAALA,OAAK;AACL1D,cAAAA,OAAO,EAAEoF,mBAAW,CAAC,IAAI,CAACpF,OAAO,CAAC;AAClCqF,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,8BAAiB,CAACC,KAAK;cAC1CvE,GAAG,EAAEuC,IAAI,CAACvC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YARInH,IAAE,GAAAqK,SAAA,CAAAjF,IAAA,CAAA;AASRpF,YAAAA,IAAE,CAAC2L,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,yBAAgB,CAACpC,IAAI,CAAChC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrExF,YAAAA,GAAG,CAAC+E,IAAI,CAACjH,IAAE,CAAC,CAAA;AAACqK,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YACR,IAAI,MAAM,IAAIuG,IAAI,EAAE;AACzBxH,cAAAA,GAAG,CAAC+E,IAAI,CAACyC,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,CAAAlH,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAAkH,YAAAA,SAAA,CAAAlH,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAEchC,aAAa,CACzB,IAAI,CAACY,WAAW,GACnBoE,cAAAA,EAAAA,KAAK,CAACnE,UAAU,EAChBmE,KAAK,CAAClE,YAAY,EAClBC,GAAG,CACJ,CAAA;AAAA,UAAA,KAAA,EAAA;YALKyD,EAAE,GAAA0E,SAAA,CAAAjF,IAAA,CAAA;YAMRkF,OAAO,CAACC,GAAG,CACyD,iEAAA,GAAA,IAAI,CAACrE,OAAO,GAAA,GAAA,GAAIP,EAAI,CACvF,CAAA;AAAC,YAAA,OAAA0E,SAAA,CAAA/E,MAAA,CAAA,QAAA,EACKK,EAAE,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA0E,SAAA,CAAA5E,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAA2D,QAAA,EAAA,IAAA,CAAA,CAAA;KACV,CAAA,CAAA,CAAA;AAAA,IAAA,SA5FYF,GAAGA,GAAA;AAAA,MAAA,OAAAC,IAAA,CAAA1H,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAHwH,GAAG,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAAtD,iBAAA,CAAA;AAAA,CAAA;;;;;;"}
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 {\n networkFrom,\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(\n hashHex.match(/.{1,2}/g)!.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 clarity_version: ClarityVersion;\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 clarity_version?: ClarityVersion;\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 clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${\n this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\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 let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\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,\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,\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,\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["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","_x4","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","rs","wrap","_callee5$","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","isNaN","getNodeInfo","stacksEndpoint","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","_this","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","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
@@ -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 O(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 w(){}function b(){}var k={};h(k,a,(function(){return this}));var x=Object.getPrototypeOf,_=x&&x(x(j([])));_&&_!==r&&n.call(_,a)&&(k=_);var E=b.prototype=m.prototype=Object.create(k);function L(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function S(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=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 P(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 A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function j(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 w.prototype=b,o(E,"constructor",{value:b,configurable:!0}),o(b,"constructor",{value:w,configurable:!0}),w.displayName=h(b,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,h(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},L(S.prototype),h(S.prototype,s,(function(){return this})),e.AsyncIterator=S,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new S(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(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=j,O.prototype={constructor:O,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(A),!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),A(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;A(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function h(t){return r.tupleCV({type:r.uintCV(0),data:r.bufferCV(t.serializeBytes())})}function l(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 f(t,e,r,n){return p.apply(this,arguments)}function p(){return p=a(u().mark((function t(e,n,o,i){var c,f,p,d,y,v,g,m,w,b,k;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(c=(new TextEncoder).encode("sim-v1"),f=new Uint8Array(8),new DataView(f.buffer).setBigUint64(0,BigInt(o),!1),p=n.startsWith("0x")?n.substring(2):n,d=new Uint8Array(p.match(/.{1,2}/g).map((function(t){return Number.parseInt(t,16)}))),y=i.map((function(t){return"contract_id"in t&&"code"in t?l(t):h(t)})).map((function(t){return r.serializeCVBytes(t)})),v=c.length+f.length+d.length+y.reduce((function(t,e){return t+e.length}),0),(g=new Uint8Array(v)).set(c,m=0),g.set(f,m+=c.length),g.set(d,m+=f.length),m+=d.length,w=s(y);!(b=w()).done;)g.set(k=b.value,m),m+=k.length;return t.next=19,fetch(e,{method:"POST",body:g}).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 19:return t.abrupt("return",t.sent.id);case 21:case"end":return t.stop()}}),t)}))),p.apply(this,arguments)}exports.SimulationBuilder=function(){function o(t){var e,r,n;void 0===t&&(t={}),this.apiEndpoint=void 0,this.stacksNodeAPI=void 0,this.network=void 0,this.block=NaN,this.sender="",this.steps=[],this.apiEndpoint=null!=(e=t.apiEndpoint)?e:"https://api.stxer.xyz",this.stacksNodeAPI=null!=(r=t.stacksNodeAPI)?r:"https://api.hiro.so",this.network=null!=(n=t.network)?n:"mainnet"}o.new=function(t){return new o(t)};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({stacksEndpoint:this.stacksNodeAPI});case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch(this.stacksNodeAPI+"/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,l,p,d,y,v,g,m,w,b,k,x,_,E,L,S,C=this;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,l=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=C.stacksNodeAPI+"/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,l(y.sender);case 14:return g=o.sent,m=y.contract_id.split("."),w=m[0],b=m[1],o.next=18,r.makeUnsignedContractCall({contractAddress:w,contractName:b,functionName:y.function_name,functionArgs:null!=(v=y.function_args)?v:[],nonce:g,network:e.networkFrom(this.network),publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 18:(k=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(k),o.next=46;break;case 23:if(!("sender"in y)||!("recipient"in y)){o.next=34;break}return o.next=26,l(y.sender);case 26:return x=o.sent,o.next=29,r.makeUnsignedSTXTokenTransfer({recipient:y.recipient,amount:y.amount,nonce:x,network:e.networkFrom(this.network),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,l(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.networkFrom(this.network),publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 40:(L=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(L),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,f(this.apiEndpoint+"/simulations",i.block_hash,i.block_height,c);case 50:return S=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/"+this.network+"/"+S),o.abrupt("return",S);case 53:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=l,exports.runSimulation=f;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("ts-clarity"),e=require("@stacks/network"),n=require("@stacks/transactions"),r=require("c32check");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function i(t,e,n,r,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(r,o)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function s(t){i(a,r,o,s,c,"next",t)}function c(t){i(a,r,o,s,c,"throw",t)}s(void 0)}))}}function s(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return o(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}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 n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},c.apply(null,arguments)}function u(){u=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function h(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var i=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new T(r||[]);return o(i,"_invoke",{value:C(t,n,a)}),i}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}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 k={};h(k,a,(function(){return this}));var x=Object.getPrototypeOf,_=x&&x(x(I([])));_&&_!==n&&r.call(_,a)&&(k=_);var E=w.prototype=m.prototype=Object.create(k);function S(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function n(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&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return n("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return i=i?i.then(o,o):o()}})}function C(e,n,r){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(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var c=L(s,r);if(c){if(c===g)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===p)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=y;var u=f(e,n,r);if("normal"===u.type){if(o=r.done?v:d,u.arg===g)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(o=v,r.method="throw",r.arg=u.arg)}}}function L(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,L(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var i=f(o,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var a=i.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,g):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function P(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 A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function I(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],n.done=!1,n;return n.value=t,n.done=!0,n};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(N.prototype),h(N.prototype,s,(function(){return this})),e.AsyncIterator=N,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new N(l(t,n,r,o),i);return e.isGeneratorFunction(n)?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),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=I,T.prototype={constructor:T,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(A),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=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 n=this;function o(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.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=r.call(a,"catchLoc"),u=r.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 n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.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 n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;A(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:I(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),g}},e}function h(t){return n.tupleCV({type:n.uintCV(0),data:n.bufferCV(t.serializeBytes())})}function l(t){var e=t.code,r=t.contract_id.split("."),o=r[0],i=r[1];return n.tupleCV({type:n.uintCV(1),data:n.bufferCV(n.serializeCVBytes(n.tupleCV({contract:n.contractPrincipalCV(o,i),code:n.stringAsciiCV(e)})))})}function f(t,e,n,r){return p.apply(this,arguments)}function p(){return p=a(u().mark((function t(e,r,o,i){var c,f,p,d,y,v,g,m,b,w,k;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(c=(new TextEncoder).encode("sim-v1"),f=new Uint8Array(8),new DataView(f.buffer).setBigUint64(0,BigInt(o),!1),p=r.startsWith("0x")?r.substring(2):r,d=new Uint8Array(p.match(/.{1,2}/g).map((function(t){return Number.parseInt(t,16)}))),y=i.map((function(t){return"contract_id"in t&&"code"in t?l(t):h(t)})).map((function(t){return n.serializeCVBytes(t)})),v=c.length+f.length+d.length+y.reduce((function(t,e){return t+e.length}),0),(g=new Uint8Array(v)).set(c,m=0),g.set(f,m+=c.length),g.set(d,m+=f.length),m+=d.length,b=s(y);!(w=b()).done;)g.set(k=w.value,m),m+=k.length;return t.next=19,fetch(e,{method:"POST",body:g}).then(function(){var t=a(u().mark((function t(e){var n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.text();case 2:if((n=t.sent).startsWith("{")){t.next=5;break}throw new Error("failed to submit simulation: "+n);case 5:return t.abrupt("return",JSON.parse(n));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());case 19:return t.abrupt("return",t.sent.id);case 21:case"end":return t.stop()}}),t)}))),p.apply(this,arguments)}exports.SimulationBuilder=function(){function o(t){var e,n,r;void 0===t&&(t={}),this.apiEndpoint=void 0,this.stacksNodeAPI=void 0,this.network=void 0,this.block=NaN,this.sender="",this.steps=[],this.apiEndpoint=null!=(e=t.apiEndpoint)?e:"https://api.stxer.xyz",this.stacksNodeAPI=null!=(n=t.stacksNodeAPI)?n:"https://api.hiro.so",this.network=null!=(r=t.network)?r:"mainnet"}o.new=function(t){return new o(t)};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,n;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!=(n=t.fee)?n:0})),this},i.addContractCall=function(t){var e,n;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!=(n=t.fee)?n:0})),this},i.addContractDeploy=function(t){var e,r,o;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,clarity_version:null!=(o=t.clarity_version)?o:n.ClarityVersion.Clarity3})),this},i.addEvalCode=function(t,e){return this.steps.push({contract_id:t,code:e}),this},i.addMapRead=function(t,e,n){return this.steps.push({contract_id:t,code:"(map-get "+e+" "+n+")"}),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 n;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({stacksEndpoint:this.stacksNodeAPI});case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch(this.stacksNodeAPI+"/extended/v1/block/by_height/"+this.block+"?unanchored=true").then((function(t){return t.json()}));case 8:if((n=e.sent).height===this.block&&"string"==typeof n.hash&&n.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:n.hash.substring(2),index_block_hash:n.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,h,l,p,d,y,v,g,m,b,w,k,x,_,E,S,N,C,L,P=this;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."),h=[],l=new Map,p=function(){var e=a(u().mark((function e(n){var r,o,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(r=l.get(n))){e.next=8;break}return o=P.stacksNodeAPI+"/v2/accounts/"+n+"?proof="+!1+"&tip="+i.index_block_hash,e.next=5,t.richFetch(o).then((function(t){return t.json()}));case 5:return l.set(n,(a=e.sent).nonce+1),e.abrupt("return",a.nonce);case 8:return l.set(n,r+1),e.abrupt("return",r);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),d=s(this.steps);case 9:if((y=d()).done){o.next=50;break}if(v=y.value,g="mainnet"===this.network?e.STACKS_MAINNET:e.STACKS_TESTNET,this.stacksNodeAPI&&(g=c({},g,{client:c({},g.client,{baseUrl:this.stacksNodeAPI})})),!("sender"in v)||!("function_name"in v)){o.next=25;break}return o.next=16,p(v.sender);case 16:return b=o.sent,w=v.contract_id.split("."),k=w[0],x=w[1],o.next=20,n.makeUnsignedContractCall({contractAddress:k,contractName:x,functionName:v.function_name,functionArgs:null!=(m=v.function_args)?m:[],nonce:b,network:g,publicKey:"",postConditionMode:n.PostConditionMode.Allow,fee:v.fee});case 20:(_=o.sent).auth.spendingCondition.signer=r.c32addressDecode(v.sender)[1],h.push(_),o.next=48;break;case 25:if(!("sender"in v)||!("recipient"in v)){o.next=36;break}return o.next=28,p(v.sender);case 28:return E=o.sent,o.next=31,n.makeUnsignedSTXTokenTransfer({recipient:v.recipient,amount:v.amount,nonce:E,network:g,publicKey:"",fee:v.fee});case 31:(S=o.sent).auth.spendingCondition.signer=r.c32addressDecode(v.sender)[1],h.push(S),o.next=48;break;case 36:if(!("deployer"in v)){o.next=47;break}return o.next=39,p(v.deployer);case 39:return N=o.sent,o.next=42,n.makeUnsignedContractDeploy({contractName:v.contract_name,codeBody:v.source_code,nonce:N,network:g,publicKey:"",postConditionMode:n.PostConditionMode.Allow,fee:v.fee});case 42:(C=o.sent).auth.spendingCondition.signer=r.c32addressDecode(v.deployer)[1],h.push(C),o.next=48;break;case 47:"code"in v?h.push(v):console.log("Invalid simulation step:",v);case 48:o.next=9;break;case 50:return o.next=52,f(this.apiEndpoint+"/simulations",i.block_hash,i.block_height,h);case 52:return L=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/"+this.network+"/"+L),o.abrupt("return",L);case 55:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=l,exports.runSimulation=f;
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 { networkFrom, STACKS_MAINNET, type StacksNetwork, type StacksNetworkName } 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 serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(hashHex.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)));\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength = header.length + heightBytes.length + hashBytes.length + \n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${this.stacksNodeAPI}/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: networkFrom(this.network),\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: networkFrom(this.network),\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: networkFrom(this.network),\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["runTx","tx","tupleCV","type","uintCV","data","bufferCV","serializeBytes","runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_x4","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","wrap","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","isNaN","getNodeInfo","stacksEndpoint","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","_this","_context3","console","log","Map","_ref2","_callee2","url","account","_context2","get","_x5","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","networkFrom","publicKey","postConditionMode","PostConditionMode","Allow","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 {\n networkFrom,\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(\n hashHex.match(/.{1,2}/g)!.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 clarity_version: ClarityVersion;\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 clarity_version?: ClarityVersion;\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 clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${\n this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\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 let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\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,\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,\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,\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["runTx","tx","tupleCV","type","uintCV","data","bufferCV","serializeBytes","runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_x4","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","wrap","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","info","_context","isNaN","getNodeInfo","stacksEndpoint","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","_this","_context3","console","log","Map","_ref2","_callee2","url","account","_context2","get","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","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 { networkFrom } from '@stacks/network';
3
- import { tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
2
+ import { STACKS_MAINNET, STACKS_TESTNET } from '@stacks/network';
3
+ import { tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, ClarityVersion, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
4
4
  import { c32addressDecode } from 'c32check';
5
5
 
6
6
  function _arrayLikeToArray(r, a) {
@@ -524,13 +524,14 @@ var SimulationBuilder = /*#__PURE__*/function () {
524
524
  return this;
525
525
  };
526
526
  _proto.addContractDeploy = function addContractDeploy(params) {
527
- var _params$deployer, _params$fee3;
527
+ var _params$deployer, _params$fee3, _params$clarity_versi;
528
528
  if (params.deployer == null && this.sender === '') {
529
529
  throw new Error('Please specify a deployer with useSender or adding a deployer paramenter');
530
530
  }
531
531
  this.steps.push(_extends({}, params, {
532
532
  deployer: (_params$deployer = params.deployer) != null ? _params$deployer : this.sender,
533
- fee: (_params$fee3 = params.fee) != null ? _params$fee3 : 0
533
+ fee: (_params$fee3 = params.fee) != null ? _params$fee3 : 0,
534
+ clarity_version: (_params$clarity_versi = params.clarity_version) != null ? _params$clarity_versi : ClarityVersion.Clarity3
534
535
  }));
535
536
  return this;
536
537
  };
@@ -605,7 +606,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
605
606
  _proto.run = /*#__PURE__*/function () {
606
607
  var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
607
608
  var _this = this;
608
- var block, txs, nonce_by_address, nextNonce, _iterator, _step, step, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
609
+ var block, txs, nonce_by_address, nextNonce, _iterator, _step, step, network, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
609
610
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
610
611
  while (1) switch (_context3.prev = _context3.next) {
611
612
  case 0:
@@ -653,104 +654,112 @@ var SimulationBuilder = /*#__PURE__*/function () {
653
654
  _iterator = _createForOfIteratorHelperLoose(this.steps);
654
655
  case 9:
655
656
  if ((_step = _iterator()).done) {
656
- _context3.next = 48;
657
+ _context3.next = 50;
657
658
  break;
658
659
  }
659
660
  step = _step.value;
661
+ network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;
662
+ if (this.stacksNodeAPI) {
663
+ network = _extends({}, network, {
664
+ client: _extends({}, network.client, {
665
+ baseUrl: this.stacksNodeAPI
666
+ })
667
+ });
668
+ }
660
669
  if (!('sender' in step && 'function_name' in step)) {
661
- _context3.next = 23;
670
+ _context3.next = 25;
662
671
  break;
663
672
  }
664
- _context3.next = 14;
673
+ _context3.next = 16;
665
674
  return nextNonce(step.sender);
666
- case 14:
675
+ case 16:
667
676
  nonce = _context3.sent;
668
677
  _step$contract_id$spl = step.contract_id.split('.'), contractAddress = _step$contract_id$spl[0], contractName = _step$contract_id$spl[1];
669
- _context3.next = 18;
678
+ _context3.next = 20;
670
679
  return makeUnsignedContractCall({
671
680
  contractAddress: contractAddress,
672
681
  contractName: contractName,
673
682
  functionName: step.function_name,
674
683
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
675
684
  nonce: nonce,
676
- network: networkFrom(this.network),
685
+ network: network,
677
686
  publicKey: '',
678
687
  postConditionMode: PostConditionMode.Allow,
679
688
  fee: step.fee
680
689
  });
681
- case 18:
690
+ case 20:
682
691
  tx = _context3.sent;
683
692
  tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
684
693
  txs.push(tx);
685
- _context3.next = 46;
694
+ _context3.next = 48;
686
695
  break;
687
- case 23:
696
+ case 25:
688
697
  if (!('sender' in step && 'recipient' in step)) {
689
- _context3.next = 34;
698
+ _context3.next = 36;
690
699
  break;
691
700
  }
692
- _context3.next = 26;
701
+ _context3.next = 28;
693
702
  return nextNonce(step.sender);
694
- case 26:
703
+ case 28:
695
704
  _nonce = _context3.sent;
696
- _context3.next = 29;
705
+ _context3.next = 31;
697
706
  return makeUnsignedSTXTokenTransfer({
698
707
  recipient: step.recipient,
699
708
  amount: step.amount,
700
709
  nonce: _nonce,
701
- network: networkFrom(this.network),
710
+ network: network,
702
711
  publicKey: '',
703
712
  fee: step.fee
704
713
  });
705
- case 29:
714
+ case 31:
706
715
  _tx = _context3.sent;
707
716
  _tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
708
717
  txs.push(_tx);
709
- _context3.next = 46;
718
+ _context3.next = 48;
710
719
  break;
711
- case 34:
720
+ case 36:
712
721
  if (!('deployer' in step)) {
713
- _context3.next = 45;
722
+ _context3.next = 47;
714
723
  break;
715
724
  }
716
- _context3.next = 37;
725
+ _context3.next = 39;
717
726
  return nextNonce(step.deployer);
718
- case 37:
727
+ case 39:
719
728
  _nonce2 = _context3.sent;
720
- _context3.next = 40;
729
+ _context3.next = 42;
721
730
  return makeUnsignedContractDeploy({
722
731
  contractName: step.contract_name,
723
732
  codeBody: step.source_code,
724
733
  nonce: _nonce2,
725
- network: networkFrom(this.network),
734
+ network: network,
726
735
  publicKey: '',
727
736
  postConditionMode: PostConditionMode.Allow,
728
737
  fee: step.fee
729
738
  });
730
- case 40:
739
+ case 42:
731
740
  _tx2 = _context3.sent;
732
741
  _tx2.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
733
742
  txs.push(_tx2);
734
- _context3.next = 46;
743
+ _context3.next = 48;
735
744
  break;
736
- case 45:
745
+ case 47:
737
746
  if ('code' in step) {
738
747
  txs.push(step);
739
748
  } else {
740
749
  // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
741
750
  console.log("Invalid simulation step:", step);
742
751
  }
743
- case 46:
752
+ case 48:
744
753
  _context3.next = 9;
745
754
  break;
746
- case 48:
747
- _context3.next = 50;
748
- return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
749
755
  case 50:
756
+ _context3.next = 52;
757
+ return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
758
+ case 52:
750
759
  id = _context3.sent;
751
760
  console.log("Simulation will be available at: https://stxer.xyz/simulations/" + this.network + "/" + id);
752
761
  return _context3.abrupt("return", id);
753
- case 53:
762
+ case 55:
754
763
  case "end":
755
764
  return _context3.stop();
756
765
  }
@@ -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 { networkFrom, STACKS_MAINNET, type StacksNetwork, type StacksNetworkName } 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 serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(hashHex.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)));\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength = header.length + heightBytes.length + hashBytes.length + \n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${this.stacksNodeAPI}/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: networkFrom(this.network),\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: networkFrom(this.network),\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: networkFrom(this.network),\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["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","_x4","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","rs","wrap","_callee5$","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","isNaN","getNodeInfo","stacksEndpoint","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","_this","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","_x5","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","networkFrom","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
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 {\n networkFrom,\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\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 apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n const hashBytes = new Uint8Array(\n hashHex.match(/.{1,2}/g)!.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\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 return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\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 clarity_version: ClarityVersion;\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 clarity_version?: ClarityVersion;\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 clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\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 stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/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 = `${\n this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\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 let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\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,\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,\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,\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(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n}\n"],"names":["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","_x4","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","hashBytes","txBytes","totalLength","body","offset","_iterator2","_step2","rs","wrap","_callee5$","_context5","prev","next","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","startsWith","substring","match","map","byte","Number","parseInt","t","length","reduce","acc","curr","set","_createForOfIteratorHelperLoose","done","value","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","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","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","isNaN","getNodeInfo","stacksEndpoint","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","_this","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","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","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.2.3",
3
+ "version": "0.2.5",
4
4
  "license": "MIT",
5
5
  "author": "Kyle Fang",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';
2
2
  import type { Block } from '@stacks/stacks-blockchain-api-types';
3
- import { networkFrom, STACKS_MAINNET, type StacksNetwork, type StacksNetworkName } from '@stacks/network';
4
3
  import {
5
- AnchorMode,
4
+ networkFrom,
5
+ STACKS_MAINNET,
6
+ STACKS_TESTNET,
7
+ type StacksNetworkName,
8
+ } from '@stacks/network';
9
+ import {
6
10
  type ClarityValue,
11
+ ClarityVersion,
7
12
  PostConditionMode,
8
13
  type StacksTransactionWire,
9
14
  bufferCV,
@@ -59,17 +64,24 @@ export async function runSimulation(
59
64
  view.setBigUint64(0, BigInt(block_height), false); // false for big-endian
60
65
 
61
66
  // Convert block hash to bytes
62
- const hashHex = block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash;
67
+ const hashHex = block_hash.startsWith('0x')
68
+ ? block_hash.substring(2)
69
+ : block_hash;
63
70
  // biome-ignore lint/style/noNonNullAssertion: <explanation>
64
- const hashBytes = new Uint8Array(hashHex.match(/.{1,2}/g)!.map(byte => Number.parseInt(byte, 16)));
71
+ const hashBytes = new Uint8Array(
72
+ hashHex.match(/.{1,2}/g)!.map((byte) => Number.parseInt(byte, 16))
73
+ );
65
74
 
66
75
  // Convert transactions to bytes
67
76
  const txBytes = txs
68
- .map((t) => 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t))
77
+ .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))
69
78
  .map((t) => serializeCVBytes(t));
70
79
 
71
80
  // Combine all byte arrays
72
- const totalLength = header.length + heightBytes.length + hashBytes.length +
81
+ const totalLength =
82
+ header.length +
83
+ heightBytes.length +
84
+ hashBytes.length +
73
85
  txBytes.reduce((acc, curr) => acc + curr.length, 0);
74
86
  const body = new Uint8Array(totalLength);
75
87
 
@@ -101,13 +113,13 @@ export async function runSimulation(
101
113
  interface SimulationBuilderOptions {
102
114
  apiEndpoint?: string;
103
115
  stacksNodeAPI?: string;
104
- network?: StacksNetworkName;
116
+ network?: StacksNetworkName | string;
105
117
  }
106
118
 
107
119
  export class SimulationBuilder {
108
120
  private apiEndpoint: string;
109
121
  private stacksNodeAPI: string;
110
- private network: StacksNetworkName;
122
+ private network: StacksNetworkName | string;
111
123
 
112
124
  private constructor(options: SimulationBuilderOptions = {}) {
113
125
  this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';
@@ -137,6 +149,7 @@ export class SimulationBuilder {
137
149
  source_code: string;
138
150
  deployer: string;
139
151
  fee: number;
152
+ clarity_version: ClarityVersion;
140
153
  }
141
154
  | {
142
155
  // STX transfer
@@ -198,6 +211,7 @@ export class SimulationBuilder {
198
211
  source_code: string;
199
212
  deployer?: string;
200
213
  fee?: number;
214
+ clarity_version?: ClarityVersion;
201
215
  }) {
202
216
  if (params.deployer == null && this.sender === '') {
203
217
  throw new Error(
@@ -208,6 +222,7 @@ export class SimulationBuilder {
208
222
  ...params,
209
223
  deployer: params.deployer ?? this.sender,
210
224
  fee: params.fee ?? 0,
225
+ clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,
211
226
  });
212
227
  return this;
213
228
  }
@@ -280,9 +295,9 @@ To get in touch: contact@stxer.xyz
280
295
  const nextNonce = async (sender: string) => {
281
296
  const nonce = nonce_by_address.get(sender);
282
297
  if (nonce == null) {
283
- const url = `${this.stacksNodeAPI}/v2/accounts/${sender}?proof=${false}&tip=${
284
- block.index_block_hash
285
- }`;
298
+ const url = `${
299
+ this.stacksNodeAPI
300
+ }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;
286
301
  const account: AccountDataResponse = await richFetch(url).then((r) =>
287
302
  r.json()
288
303
  );
@@ -293,6 +308,16 @@ To get in touch: contact@stxer.xyz
293
308
  return nonce;
294
309
  };
295
310
  for (const step of this.steps) {
311
+ let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;
312
+ if (this.stacksNodeAPI) {
313
+ network = {
314
+ ...network,
315
+ client: {
316
+ ...network.client,
317
+ baseUrl: this.stacksNodeAPI,
318
+ },
319
+ };
320
+ }
296
321
  if ('sender' in step && 'function_name' in step) {
297
322
  const nonce = await nextNonce(step.sender);
298
323
  const [contractAddress, contractName] = step.contract_id.split('.');
@@ -302,7 +327,7 @@ To get in touch: contact@stxer.xyz
302
327
  functionName: step.function_name,
303
328
  functionArgs: step.function_args ?? [],
304
329
  nonce,
305
- network: networkFrom(this.network),
330
+ network,
306
331
  publicKey: '',
307
332
  postConditionMode: PostConditionMode.Allow,
308
333
  fee: step.fee,
@@ -315,7 +340,7 @@ To get in touch: contact@stxer.xyz
315
340
  recipient: step.recipient,
316
341
  amount: step.amount,
317
342
  nonce,
318
- network: networkFrom(this.network),
343
+ network,
319
344
  publicKey: '',
320
345
  fee: step.fee,
321
346
  });
@@ -327,7 +352,7 @@ To get in touch: contact@stxer.xyz
327
352
  contractName: step.contract_name,
328
353
  codeBody: step.source_code,
329
354
  nonce,
330
- network: networkFrom(this.network),
355
+ network,
331
356
  publicKey: '',
332
357
  postConditionMode: PostConditionMode.Allow,
333
358
  fee: step.fee,
@@ -343,8 +368,8 @@ To get in touch: contact@stxer.xyz
343
368
  }
344
369
  const id = await runSimulation(
345
370
  `${this.apiEndpoint}/simulations`,
346
- block.block_hash,
347
- block.block_height,
371
+ block.block_hash,
372
+ block.block_height,
348
373
  txs
349
374
  );
350
375
  console.log(
@@ -1,5 +1,5 @@
1
- import { uintCV } from "@stacks/transactions";
2
- import { SimulationBuilder } from "..";
1
+ import { uintCV } from '@stacks/transactions';
2
+ import { SimulationBuilder } from '..';
3
3
 
4
4
  SimulationBuilder.new()
5
5
  .withSender('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER')
@@ -23,25 +23,31 @@ SimulationBuilder.new()
23
23
  (ok (var-get counter)))
24
24
  `,
25
25
  })
26
- .addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
26
+ .addEvalCode(
27
+ 'SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation',
28
+ '(get-counter)'
29
+ )
27
30
  .addContractCall({
28
31
  contract_id: 'SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation',
29
32
  function_name: 'increment',
30
33
  function_args: [uintCV(10)],
31
34
  })
32
- .addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
35
+ .addEvalCode(
36
+ 'SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation',
37
+ '(get-counter)'
38
+ )
33
39
  .run()
34
40
  .catch(console.error);
35
41
 
36
42
  SimulationBuilder.new({
37
- apiEndpoint: 'https://testnet-api.stxer.xyz',
38
- stacksNodeAPI: 'https://api.testnet.hiro.so',
39
- network: 'testnet'
40
- })
41
- .withSender('ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ')
42
- .addContractDeploy({
43
- contract_name: 'test-simulation',
44
- source_code: `
43
+ apiEndpoint: 'https://testnet-api.stxer.xyz',
44
+ stacksNodeAPI: 'https://api.testnet.hiro.so',
45
+ network: 'testnet',
46
+ })
47
+ .withSender('ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ')
48
+ .addContractDeploy({
49
+ contract_name: 'test-simulation',
50
+ source_code: `
45
51
  ;; counter example
46
52
  (define-data-var counter uint u0)
47
53
 
@@ -58,13 +64,19 @@ SimulationBuilder.new({
58
64
  (define-read-only (get-counter)
59
65
  (ok (var-get counter)))
60
66
  `,
61
- })
62
- .addEvalCode('ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation', '(get-counter)')
63
- .addContractCall({
64
- contract_id: 'ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation',
65
- function_name: 'increment',
66
- function_args: [uintCV(10)],
67
- })
68
- .addEvalCode('ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation', '(get-counter)')
69
- .run()
70
- .catch(console.error);
67
+ })
68
+ .addEvalCode(
69
+ 'ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation',
70
+ '(get-counter)'
71
+ )
72
+ .addContractCall({
73
+ contract_id: 'ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation',
74
+ function_name: 'increment',
75
+ function_args: [uintCV(10)],
76
+ })
77
+ .addEvalCode(
78
+ 'ST3MZM9WJ34Y4311XBJDBKQ41SXX5DY68406J26WJ.test-simulation',
79
+ '(get-counter)'
80
+ )
81
+ .run()
82
+ .catch(console.error);