stxer 0.2.4 → 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
@@ -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;
@@ -610,7 +610,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
610
610
  _proto.run = /*#__PURE__*/function () {
611
611
  var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
612
612
  var _this = this;
613
- 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;
614
614
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
615
615
  while (1) switch (_context3.prev = _context3.next) {
616
616
  case 0:
@@ -658,104 +658,112 @@ var SimulationBuilder = /*#__PURE__*/function () {
658
658
  _iterator = _createForOfIteratorHelperLoose(this.steps);
659
659
  case 9:
660
660
  if ((_step = _iterator()).done) {
661
- _context3.next = 48;
661
+ _context3.next = 50;
662
662
  break;
663
663
  }
664
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
+ }
665
673
  if (!('sender' in step && 'function_name' in step)) {
666
- _context3.next = 23;
674
+ _context3.next = 25;
667
675
  break;
668
676
  }
669
- _context3.next = 14;
677
+ _context3.next = 16;
670
678
  return nextNonce(step.sender);
671
- case 14:
679
+ case 16:
672
680
  nonce = _context3.sent;
673
681
  _step$contract_id$spl = step.contract_id.split('.'), contractAddress = _step$contract_id$spl[0], contractName = _step$contract_id$spl[1];
674
- _context3.next = 18;
682
+ _context3.next = 20;
675
683
  return transactions.makeUnsignedContractCall({
676
684
  contractAddress: contractAddress,
677
685
  contractName: contractName,
678
686
  functionName: step.function_name,
679
687
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
680
688
  nonce: nonce,
681
- network: network.networkFrom(this.network),
689
+ network: network$1,
682
690
  publicKey: '',
683
691
  postConditionMode: transactions.PostConditionMode.Allow,
684
692
  fee: step.fee
685
693
  });
686
- case 18:
694
+ case 20:
687
695
  tx = _context3.sent;
688
696
  tx.auth.spendingCondition.signer = c32check.c32addressDecode(step.sender)[1];
689
697
  txs.push(tx);
690
- _context3.next = 46;
698
+ _context3.next = 48;
691
699
  break;
692
- case 23:
700
+ case 25:
693
701
  if (!('sender' in step && 'recipient' in step)) {
694
- _context3.next = 34;
702
+ _context3.next = 36;
695
703
  break;
696
704
  }
697
- _context3.next = 26;
705
+ _context3.next = 28;
698
706
  return nextNonce(step.sender);
699
- case 26:
707
+ case 28:
700
708
  _nonce = _context3.sent;
701
- _context3.next = 29;
709
+ _context3.next = 31;
702
710
  return transactions.makeUnsignedSTXTokenTransfer({
703
711
  recipient: step.recipient,
704
712
  amount: step.amount,
705
713
  nonce: _nonce,
706
- network: network.networkFrom(this.network),
714
+ network: network$1,
707
715
  publicKey: '',
708
716
  fee: step.fee
709
717
  });
710
- case 29:
718
+ case 31:
711
719
  _tx = _context3.sent;
712
720
  _tx.auth.spendingCondition.signer = c32check.c32addressDecode(step.sender)[1];
713
721
  txs.push(_tx);
714
- _context3.next = 46;
722
+ _context3.next = 48;
715
723
  break;
716
- case 34:
724
+ case 36:
717
725
  if (!('deployer' in step)) {
718
- _context3.next = 45;
726
+ _context3.next = 47;
719
727
  break;
720
728
  }
721
- _context3.next = 37;
729
+ _context3.next = 39;
722
730
  return nextNonce(step.deployer);
723
- case 37:
731
+ case 39:
724
732
  _nonce2 = _context3.sent;
725
- _context3.next = 40;
733
+ _context3.next = 42;
726
734
  return transactions.makeUnsignedContractDeploy({
727
735
  contractName: step.contract_name,
728
736
  codeBody: step.source_code,
729
737
  nonce: _nonce2,
730
- network: network.networkFrom(this.network),
738
+ network: network$1,
731
739
  publicKey: '',
732
740
  postConditionMode: transactions.PostConditionMode.Allow,
733
741
  fee: step.fee
734
742
  });
735
- case 40:
743
+ case 42:
736
744
  _tx2 = _context3.sent;
737
745
  _tx2.auth.spendingCondition.signer = c32check.c32addressDecode(step.deployer)[1];
738
746
  txs.push(_tx2);
739
- _context3.next = 46;
747
+ _context3.next = 48;
740
748
  break;
741
- case 45:
749
+ case 47:
742
750
  if ('code' in step) {
743
751
  txs.push(step);
744
752
  } else {
745
753
  // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
746
754
  console.log("Invalid simulation step:", step);
747
755
  }
748
- case 46:
756
+ case 48:
749
757
  _context3.next = 9;
750
758
  break;
751
- case 48:
752
- _context3.next = 50;
753
- return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
754
759
  case 50:
760
+ _context3.next = 52;
761
+ return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
762
+ case 52:
755
763
  id = _context3.sent;
756
764
  console.log("Simulation will be available at: https://stxer.xyz/simulations/" + this.network + "/" + id);
757
765
  return _context3.abrupt("return", id);
758
- case 53:
766
+ case 55:
759
767
  case "end":
760
768
  return _context3.stop();
761
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 {\n networkFrom,\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;\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 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 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","_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","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.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:S(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 C(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,s){var c=f(t[o],t,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function S(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}},C(L.prototype),h(L.prototype,s,(function(){return this})),e.AsyncIterator=L,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},C(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,n,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!=(n=t.fee)?n:0,clarity_version:null!=(o=t.clarity_version)?o:r.ClarityVersion.Clarity3})),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,C,L,S=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=S.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:(C=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(C),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 L=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/"+this.network+"/"+L),o.abrupt("return",L);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 {\n networkFrom,\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;\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 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 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","_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","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,5 +1,5 @@
1
1
  import { richFetch, getNodeInfo } from 'ts-clarity';
2
- import { networkFrom } from '@stacks/network';
2
+ import { STACKS_MAINNET, STACKS_TESTNET } from '@stacks/network';
3
3
  import { tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, ClarityVersion, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
4
4
  import { c32addressDecode } from 'c32check';
5
5
 
@@ -606,7 +606,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
606
606
  _proto.run = /*#__PURE__*/function () {
607
607
  var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
608
608
  var _this = this;
609
- 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;
610
610
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
611
611
  while (1) switch (_context3.prev = _context3.next) {
612
612
  case 0:
@@ -654,104 +654,112 @@ var SimulationBuilder = /*#__PURE__*/function () {
654
654
  _iterator = _createForOfIteratorHelperLoose(this.steps);
655
655
  case 9:
656
656
  if ((_step = _iterator()).done) {
657
- _context3.next = 48;
657
+ _context3.next = 50;
658
658
  break;
659
659
  }
660
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
+ }
661
669
  if (!('sender' in step && 'function_name' in step)) {
662
- _context3.next = 23;
670
+ _context3.next = 25;
663
671
  break;
664
672
  }
665
- _context3.next = 14;
673
+ _context3.next = 16;
666
674
  return nextNonce(step.sender);
667
- case 14:
675
+ case 16:
668
676
  nonce = _context3.sent;
669
677
  _step$contract_id$spl = step.contract_id.split('.'), contractAddress = _step$contract_id$spl[0], contractName = _step$contract_id$spl[1];
670
- _context3.next = 18;
678
+ _context3.next = 20;
671
679
  return makeUnsignedContractCall({
672
680
  contractAddress: contractAddress,
673
681
  contractName: contractName,
674
682
  functionName: step.function_name,
675
683
  functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
676
684
  nonce: nonce,
677
- network: networkFrom(this.network),
685
+ network: network,
678
686
  publicKey: '',
679
687
  postConditionMode: PostConditionMode.Allow,
680
688
  fee: step.fee
681
689
  });
682
- case 18:
690
+ case 20:
683
691
  tx = _context3.sent;
684
692
  tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
685
693
  txs.push(tx);
686
- _context3.next = 46;
694
+ _context3.next = 48;
687
695
  break;
688
- case 23:
696
+ case 25:
689
697
  if (!('sender' in step && 'recipient' in step)) {
690
- _context3.next = 34;
698
+ _context3.next = 36;
691
699
  break;
692
700
  }
693
- _context3.next = 26;
701
+ _context3.next = 28;
694
702
  return nextNonce(step.sender);
695
- case 26:
703
+ case 28:
696
704
  _nonce = _context3.sent;
697
- _context3.next = 29;
705
+ _context3.next = 31;
698
706
  return makeUnsignedSTXTokenTransfer({
699
707
  recipient: step.recipient,
700
708
  amount: step.amount,
701
709
  nonce: _nonce,
702
- network: networkFrom(this.network),
710
+ network: network,
703
711
  publicKey: '',
704
712
  fee: step.fee
705
713
  });
706
- case 29:
714
+ case 31:
707
715
  _tx = _context3.sent;
708
716
  _tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
709
717
  txs.push(_tx);
710
- _context3.next = 46;
718
+ _context3.next = 48;
711
719
  break;
712
- case 34:
720
+ case 36:
713
721
  if (!('deployer' in step)) {
714
- _context3.next = 45;
722
+ _context3.next = 47;
715
723
  break;
716
724
  }
717
- _context3.next = 37;
725
+ _context3.next = 39;
718
726
  return nextNonce(step.deployer);
719
- case 37:
727
+ case 39:
720
728
  _nonce2 = _context3.sent;
721
- _context3.next = 40;
729
+ _context3.next = 42;
722
730
  return makeUnsignedContractDeploy({
723
731
  contractName: step.contract_name,
724
732
  codeBody: step.source_code,
725
733
  nonce: _nonce2,
726
- network: networkFrom(this.network),
734
+ network: network,
727
735
  publicKey: '',
728
736
  postConditionMode: PostConditionMode.Allow,
729
737
  fee: step.fee
730
738
  });
731
- case 40:
739
+ case 42:
732
740
  _tx2 = _context3.sent;
733
741
  _tx2.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
734
742
  txs.push(_tx2);
735
- _context3.next = 46;
743
+ _context3.next = 48;
736
744
  break;
737
- case 45:
745
+ case 47:
738
746
  if ('code' in step) {
739
747
  txs.push(step);
740
748
  } else {
741
749
  // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
742
750
  console.log("Invalid simulation step:", step);
743
751
  }
744
- case 46:
752
+ case 48:
745
753
  _context3.next = 9;
746
754
  break;
747
- case 48:
748
- _context3.next = 50;
749
- return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
750
755
  case 50:
756
+ _context3.next = 52;
757
+ return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
758
+ case 52:
751
759
  id = _context3.sent;
752
760
  console.log("Simulation will be available at: https://stxer.xyz/simulations/" + this.network + "/" + id);
753
761
  return _context3.abrupt("return", id);
754
- case 53:
762
+ case 55:
755
763
  case "end":
756
764
  return _context3.stop();
757
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 {\n networkFrom,\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;\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 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 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","_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","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.4",
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
@@ -2,6 +2,8 @@ import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';
2
2
  import type { Block } from '@stacks/stacks-blockchain-api-types';
3
3
  import {
4
4
  networkFrom,
5
+ STACKS_MAINNET,
6
+ STACKS_TESTNET,
5
7
  type StacksNetworkName,
6
8
  } from '@stacks/network';
7
9
  import {
@@ -111,13 +113,13 @@ export async function runSimulation(
111
113
  interface SimulationBuilderOptions {
112
114
  apiEndpoint?: string;
113
115
  stacksNodeAPI?: string;
114
- network?: StacksNetworkName;
116
+ network?: StacksNetworkName | string;
115
117
  }
116
118
 
117
119
  export class SimulationBuilder {
118
120
  private apiEndpoint: string;
119
121
  private stacksNodeAPI: string;
120
- private network: StacksNetworkName;
122
+ private network: StacksNetworkName | string;
121
123
 
122
124
  private constructor(options: SimulationBuilderOptions = {}) {
123
125
  this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';
@@ -306,6 +308,16 @@ To get in touch: contact@stxer.xyz
306
308
  return nonce;
307
309
  };
308
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
+ }
309
321
  if ('sender' in step && 'function_name' in step) {
310
322
  const nonce = await nextNonce(step.sender);
311
323
  const [contractAddress, contractName] = step.contract_id.split('.');
@@ -315,7 +327,7 @@ To get in touch: contact@stxer.xyz
315
327
  functionName: step.function_name,
316
328
  functionArgs: step.function_args ?? [],
317
329
  nonce,
318
- network: networkFrom(this.network),
330
+ network,
319
331
  publicKey: '',
320
332
  postConditionMode: PostConditionMode.Allow,
321
333
  fee: step.fee,
@@ -328,7 +340,7 @@ To get in touch: contact@stxer.xyz
328
340
  recipient: step.recipient,
329
341
  amount: step.amount,
330
342
  nonce,
331
- network: networkFrom(this.network),
343
+ network,
332
344
  publicKey: '',
333
345
  fee: step.fee,
334
346
  });
@@ -340,7 +352,7 @@ To get in touch: contact@stxer.xyz
340
352
  contractName: step.contract_name,
341
353
  codeBody: step.source_code,
342
354
  nonce,
343
- network: networkFrom(this.network),
355
+ network,
344
356
  publicKey: '',
345
357
  postConditionMode: PostConditionMode.Allow,
346
358
  fee: step.fee,