stxer 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -6
- package/dist/sample/counter.d.ts +1 -0
- package/dist/stxer.cjs.development.js +30 -23
- package/dist/stxer.cjs.development.js.map +1 -1
- package/dist/stxer.cjs.production.min.js +1 -1
- package/dist/stxer.cjs.production.min.js.map +1 -1
- package/dist/stxer.esm.js +32 -25
- package/dist/stxer.esm.js.map +1 -1
- package/package.json +7 -5
- package/src/index.ts +43 -26
- package/src/sample/counter.ts +34 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { type ClarityValue, type
|
|
1
|
+
import { type ClarityValue, type StacksTransactionWire } from '@stacks/transactions';
|
|
2
2
|
export interface SimulationEval {
|
|
3
3
|
contract_id: string;
|
|
4
4
|
code: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function runEval({ contract_id, code }: SimulationEval): import("@stacks/transactions").TupleCV<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export declare function runEval({ contract_id, code }: SimulationEval): import("@stacks/transactions").TupleCV<import("@stacks/transactions").TupleData<import("@stacks/transactions").BufferCV | import("@stacks/transactions").UIntCV>>;
|
|
7
|
+
export declare function runSimulation(apiEndpoint: string, block_hash: string, block_height: number, txs: (StacksTransactionWire | SimulationEval)[]): Promise<string>;
|
|
8
|
+
interface SimulationBuilderOptions {
|
|
9
|
+
apiEndpoint?: string;
|
|
10
|
+
stacksNodeAPI?: string;
|
|
11
|
+
}
|
|
10
12
|
export declare class SimulationBuilder {
|
|
11
|
-
|
|
13
|
+
private apiEndpoint;
|
|
14
|
+
private stacksNodeAPI;
|
|
15
|
+
private constructor();
|
|
16
|
+
static new(options?: SimulationBuilderOptions): SimulationBuilder;
|
|
12
17
|
private block;
|
|
13
18
|
private sender;
|
|
14
19
|
private steps;
|
|
@@ -39,3 +44,4 @@ export declare class SimulationBuilder {
|
|
|
39
44
|
private getBlockInfo;
|
|
40
45
|
run(): Promise<string>;
|
|
41
46
|
}
|
|
47
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -372,13 +372,11 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
-
// current beta api endpoint
|
|
376
|
-
var SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';
|
|
377
375
|
function runTx(tx) {
|
|
378
376
|
// type 0: run transaction
|
|
379
377
|
return transactions.tupleCV({
|
|
380
378
|
type: transactions.uintCV(0),
|
|
381
|
-
data: transactions.bufferCV(tx.
|
|
379
|
+
data: transactions.bufferCV(tx.serializeBytes())
|
|
382
380
|
});
|
|
383
381
|
}
|
|
384
382
|
function runEval(_ref) {
|
|
@@ -390,17 +388,17 @@ function runEval(_ref) {
|
|
|
390
388
|
// type 1: eval arbitrary code inside a contract
|
|
391
389
|
return transactions.tupleCV({
|
|
392
390
|
type: transactions.uintCV(1),
|
|
393
|
-
data: transactions.bufferCV(transactions.
|
|
391
|
+
data: transactions.bufferCV(transactions.serializeCVBytes(transactions.tupleCV({
|
|
394
392
|
contract: transactions.contractPrincipalCV(contract_address, contract_name),
|
|
395
393
|
code: transactions.stringAsciiCV(code)
|
|
396
394
|
})))
|
|
397
395
|
});
|
|
398
396
|
}
|
|
399
|
-
function runSimulation(_x, _x2, _x3) {
|
|
397
|
+
function runSimulation(_x, _x2, _x3, _x4) {
|
|
400
398
|
return _runSimulation.apply(this, arguments);
|
|
401
399
|
}
|
|
402
400
|
function _runSimulation() {
|
|
403
|
-
_runSimulation = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(block_hash, block_height, txs) {
|
|
401
|
+
_runSimulation = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(apiEndpoint, block_hash, block_height, txs) {
|
|
404
402
|
var body, rs;
|
|
405
403
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
406
404
|
while (1) switch (_context5.prev = _context5.next) {
|
|
@@ -408,11 +406,11 @@ function _runSimulation() {
|
|
|
408
406
|
body = Buffer.concat([Buffer.from('sim-v1'), Buffer.alloc(8), Buffer.from(block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash, 'hex')].concat(txs.map(function (t) {
|
|
409
407
|
return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
|
|
410
408
|
}).map(function (t) {
|
|
411
|
-
return transactions.
|
|
409
|
+
return transactions.serializeCVBytes(t);
|
|
412
410
|
})));
|
|
413
411
|
body.writeBigUInt64BE(BigInt(block_height), 6);
|
|
414
412
|
_context5.next = 4;
|
|
415
|
-
return fetch(
|
|
413
|
+
return fetch(apiEndpoint, {
|
|
416
414
|
method: 'POST',
|
|
417
415
|
body: body
|
|
418
416
|
}).then(/*#__PURE__*/function () {
|
|
@@ -438,7 +436,7 @@ function _runSimulation() {
|
|
|
438
436
|
}
|
|
439
437
|
}, _callee4);
|
|
440
438
|
}));
|
|
441
|
-
return function (
|
|
439
|
+
return function (_x6) {
|
|
442
440
|
return _ref3.apply(this, arguments);
|
|
443
441
|
};
|
|
444
442
|
}());
|
|
@@ -454,14 +452,22 @@ function _runSimulation() {
|
|
|
454
452
|
return _runSimulation.apply(this, arguments);
|
|
455
453
|
}
|
|
456
454
|
var SimulationBuilder = /*#__PURE__*/function () {
|
|
457
|
-
function SimulationBuilder() {
|
|
455
|
+
function SimulationBuilder(options) {
|
|
456
|
+
var _options$apiEndpoint, _options$stacksNodeAP;
|
|
457
|
+
if (options === void 0) {
|
|
458
|
+
options = {};
|
|
459
|
+
}
|
|
460
|
+
this.apiEndpoint = void 0;
|
|
461
|
+
this.stacksNodeAPI = void 0;
|
|
458
462
|
// biome-ignore lint/style/useNumberNamespace: <explanation>
|
|
459
463
|
this.block = NaN;
|
|
460
464
|
this.sender = '';
|
|
461
465
|
this.steps = [];
|
|
466
|
+
this.apiEndpoint = (_options$apiEndpoint = options.apiEndpoint) != null ? _options$apiEndpoint : 'https://api.stxer.xyz/simulations';
|
|
467
|
+
this.stacksNodeAPI = (_options$stacksNodeAP = options.stacksNodeAPI) != null ? _options$stacksNodeAP : 'https://api.hiro.so';
|
|
462
468
|
}
|
|
463
|
-
SimulationBuilder["new"] = function _new() {
|
|
464
|
-
return new SimulationBuilder();
|
|
469
|
+
SimulationBuilder["new"] = function _new(options) {
|
|
470
|
+
return new SimulationBuilder(options);
|
|
465
471
|
};
|
|
466
472
|
var _proto = SimulationBuilder.prototype;
|
|
467
473
|
_proto.useBlockHeight = function useBlockHeight(block) {
|
|
@@ -537,14 +543,16 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
537
543
|
break;
|
|
538
544
|
}
|
|
539
545
|
_context.next = 3;
|
|
540
|
-
return tsClarity.getNodeInfo(
|
|
546
|
+
return tsClarity.getNodeInfo({
|
|
547
|
+
stacksEndpoint: this.stacksNodeAPI
|
|
548
|
+
});
|
|
541
549
|
case 3:
|
|
542
550
|
_yield$getNodeInfo = _context.sent;
|
|
543
551
|
stacks_tip_height = _yield$getNodeInfo.stacks_tip_height;
|
|
544
552
|
this.block = stacks_tip_height;
|
|
545
553
|
case 6:
|
|
546
554
|
_context.next = 8;
|
|
547
|
-
return tsClarity.richFetch("
|
|
555
|
+
return tsClarity.richFetch(this.stacksNodeAPI + "/extended/v1/block/by_height/" + this.block + "?unanchored=true").then(function (r) {
|
|
548
556
|
return r.json();
|
|
549
557
|
});
|
|
550
558
|
case 8:
|
|
@@ -573,6 +581,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
573
581
|
}();
|
|
574
582
|
_proto.run = /*#__PURE__*/function () {
|
|
575
583
|
var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
584
|
+
var _this = this;
|
|
576
585
|
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;
|
|
577
586
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
578
587
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -596,7 +605,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
596
605
|
_context2.next = 8;
|
|
597
606
|
break;
|
|
598
607
|
}
|
|
599
|
-
url = "
|
|
608
|
+
url = _this.stacksNodeAPI + "/v2/accounts/" + sender + "?proof=" + false + "&tip=" + block.index_block_hash;
|
|
600
609
|
_context2.next = 5;
|
|
601
610
|
return tsClarity.richFetch(url).then(function (r) {
|
|
602
611
|
return r.json();
|
|
@@ -614,7 +623,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
614
623
|
}
|
|
615
624
|
}, _callee2);
|
|
616
625
|
}));
|
|
617
|
-
return function nextNonce(
|
|
626
|
+
return function nextNonce(_x5) {
|
|
618
627
|
return _ref2.apply(this, arguments);
|
|
619
628
|
};
|
|
620
629
|
}();
|
|
@@ -641,10 +650,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
641
650
|
functionName: step.function_name,
|
|
642
651
|
functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
|
|
643
652
|
nonce: nonce,
|
|
644
|
-
network:
|
|
653
|
+
network: network.STACKS_MAINNET,
|
|
645
654
|
publicKey: '',
|
|
646
655
|
postConditionMode: transactions.PostConditionMode.Allow,
|
|
647
|
-
anchorMode: transactions.AnchorMode.Any,
|
|
648
656
|
fee: step.fee
|
|
649
657
|
});
|
|
650
658
|
case 18:
|
|
@@ -667,9 +675,8 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
667
675
|
recipient: step.recipient,
|
|
668
676
|
amount: step.amount,
|
|
669
677
|
nonce: _nonce,
|
|
670
|
-
network:
|
|
678
|
+
network: network.STACKS_MAINNET,
|
|
671
679
|
publicKey: '',
|
|
672
|
-
anchorMode: transactions.AnchorMode.Any,
|
|
673
680
|
fee: step.fee
|
|
674
681
|
});
|
|
675
682
|
case 29:
|
|
@@ -692,10 +699,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
692
699
|
contractName: step.contract_name,
|
|
693
700
|
codeBody: step.source_code,
|
|
694
701
|
nonce: _nonce2,
|
|
695
|
-
network:
|
|
702
|
+
network: network.STACKS_MAINNET,
|
|
696
703
|
publicKey: '',
|
|
697
704
|
postConditionMode: transactions.PostConditionMode.Allow,
|
|
698
|
-
anchorMode: transactions.AnchorMode.Any,
|
|
699
705
|
fee: step.fee
|
|
700
706
|
});
|
|
701
707
|
case 40:
|
|
@@ -708,6 +714,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
708
714
|
if ('code' in step) {
|
|
709
715
|
txs.push(step);
|
|
710
716
|
} else {
|
|
717
|
+
// biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
|
|
711
718
|
console.log("Invalid simulation step:", step);
|
|
712
719
|
}
|
|
713
720
|
case 46:
|
|
@@ -715,7 +722,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
715
722
|
break;
|
|
716
723
|
case 48:
|
|
717
724
|
_context3.next = 50;
|
|
718
|
-
return runSimulation(block.block_hash, block.block_height, txs);
|
|
725
|
+
return runSimulation(this.apiEndpoint, block.block_hash, block.block_height, txs);
|
|
719
726
|
case 50:
|
|
720
727
|
id = _context3.sent;
|
|
721
728
|
console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/" + id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stxer.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serialize","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stxer.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n 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 const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(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 // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz/simulations';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${this.stacksNodeAPI}/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n this.apiEndpoint,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${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","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","stacksNodeAPI","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","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","set","_x5","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("ts-clarity"),e=require("@stacks/network"),r=require("@stacks/transactions"),n=require("c32check");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(t){i(a,n,o,s,c,"next",t)}function c(t){i(a,n,o,s,c,"throw",t)}s(void 0)}))}}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return c=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},c.apply(null,arguments)}function u(){u=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new A(n||[]);return o(i,"_invoke",{value:C(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",g={};function m(){}function b(){}function w(){}var x={};h(x,a,(function(){return this}));var k=Object.getPrototypeOf,_=k&&k(k(N([])));_&&_!==r&&n.call(_,a)&&(x=_);var E=w.prototype=m.prototype=Object.create(x);function S(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,s){var c=f(t[o],t,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function C(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=O(s,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=f(e,r,n);if("normal"===u.type){if(o=n.done?v:d,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=v,n.method="throw",n.arg=u.arg)}}}function O(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,g):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function N(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return b.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:b,configurable:!0}),b.displayName=h(w,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,h(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},S(L.prototype),h(L.prototype,s,(function(){return this})),e.AsyncIterator=L,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},S(E),h(E,c,"Generator"),h(E,a,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=N,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return s.type="throw",s.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),g},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function h(t){var e=t.code,n=t.contract_id.split("."),o=n[0],i=n[1];return r.tupleCV({type:r.uintCV(1),data:r.bufferCV(r.serializeCV(r.tupleCV({contract:r.contractPrincipalCV(o,i),code:r.stringAsciiCV(e)})))})}function l(t,e,r){return f.apply(this,arguments)}function f(){return f=a(u().mark((function t(e,n,o){var i;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(i=Buffer.concat([Buffer.from("sim-v1"),Buffer.alloc(8),Buffer.from(e.startsWith("0x")?e.substring(2):e,"hex")].concat(o.map((function(t){return"contract_id"in t&&"code"in t?h(t):(e=t,r.tupleCV({type:r.uintCV(0),data:r.bufferCV(e.serialize())}));var e})).map((function(t){return r.serializeCV(t)}))))).writeBigUInt64BE(BigInt(n),6),t.next=4,fetch("https://api.stxer.xyz/simulations",{method:"POST",body:i}).then(function(){var t=a(u().mark((function t(e){var r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.text();case 2:if((r=t.sent).startsWith("{")){t.next=5;break}throw new Error("failed to submit simulation: "+r);case 5:return t.abrupt("return",JSON.parse(r));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());case 4:return t.abrupt("return",t.sent.id);case 6:case"end":return t.stop()}}),t)}))),f.apply(this,arguments)}exports.SimulationBuilder=function(){function o(){this.block=NaN,this.sender="",this.steps=[]}o.new=function(){return new o};var i=o.prototype;return i.useBlockHeight=function(t){return this.block=t,this},i.withSender=function(t){return this.sender=t,this},i.addSTXTransfer=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractCall=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractDeploy=function(t){var e,r;if(null==t.deployer&&""===this.sender)throw new Error("Please specify a deployer with useSender or adding a deployer paramenter");return this.steps.push(c({},t,{deployer:null!=(e=t.deployer)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addEvalCode=function(t,e){return this.steps.push({contract_id:t,code:e}),this},i.addMapRead=function(t,e,r){return this.steps.push({contract_id:t,code:"(map-get "+e+" "+r+")"}),this},i.addVarRead=function(t,e){return this.steps.push({contract_id:t,code:"(var-get "+e+")"}),this},i.getBlockInfo=function(){var e=a(u().mark((function e(){var r;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Number.isNaN(this.block)){e.next=6;break}return e.next=3,t.getNodeInfo();case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch("https://api.hiro.so/extended/v1/block/by_height/"+this.block+"?unanchored=true").then((function(t){return t.json()}));case 8:if((r=e.sent).height===this.block&&"string"==typeof r.hash&&r.hash.startsWith("0x")){e.next=11;break}throw new Error("failed to get block info for block height "+this.block);case 11:return e.abrupt("return",{block_height:this.block,block_hash:r.hash.substring(2),index_block_hash:r.index_block_hash.substring(2)});case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),i.run=function(){var o=a(u().mark((function o(){var i,c,h,f,p,d,y,v,g,m,b,w,x,k,_,E,S,L;return u().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------"),o.next=3,this.getBlockInfo();case 3:i=o.sent,console.log("Using block height "+i.block_height+" hash 0x"+i.block_hash+" to run simulation."),c=[],h=new Map,f=function(){var e=a(u().mark((function e(r){var n,o,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=h.get(r))){e.next=8;break}return o="https://api.hiro.so/v2/accounts/"+r+"?proof="+!1+"&tip="+i.index_block_hash,e.next=5,t.richFetch(o).then((function(t){return t.json()}));case 5:return h.set(r,(a=e.sent).nonce+1),e.abrupt("return",a.nonce);case 8:return h.set(r,n+1),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),p=s(this.steps);case 9:if((d=p()).done){o.next=48;break}if(!("sender"in(y=d.value))||!("function_name"in y)){o.next=23;break}return o.next=14,f(y.sender);case 14:return g=o.sent,m=y.contract_id.split("."),b=m[0],w=m[1],o.next=18,r.makeUnsignedContractCall({contractAddress:b,contractName:w,functionName:y.function_name,functionArgs:null!=(v=y.function_args)?v:[],nonce:g,network:new e.StacksMainnet,publicKey:"",postConditionMode:r.PostConditionMode.Allow,anchorMode:r.AnchorMode.Any,fee:y.fee});case 18:(x=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(x),o.next=46;break;case 23:if(!("sender"in y)||!("recipient"in y)){o.next=34;break}return o.next=26,f(y.sender);case 26:return k=o.sent,o.next=29,r.makeUnsignedSTXTokenTransfer({recipient:y.recipient,amount:y.amount,nonce:k,network:new e.StacksMainnet,publicKey:"",anchorMode:r.AnchorMode.Any,fee:y.fee});case 29:(_=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(_),o.next=46;break;case 34:if(!("deployer"in y)){o.next=45;break}return o.next=37,f(y.deployer);case 37:return E=o.sent,o.next=40,r.makeUnsignedContractDeploy({contractName:y.contract_name,codeBody:y.source_code,nonce:E,network:new e.StacksMainnet,publicKey:"",postConditionMode:r.PostConditionMode.Allow,anchorMode:r.AnchorMode.Any,fee:y.fee});case 40:(S=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(S),o.next=46;break;case 45:"code"in y?c.push(y):console.log("Invalid simulation step:",y);case 46:o.next=9;break;case 48:return o.next=50,l(i.block_hash,i.block_height,c);case 50:return L=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/"+L),o.abrupt("return",L);case 53:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=h,exports.runSimulation=l;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("ts-clarity"),e=require("@stacks/network"),r=require("@stacks/transactions"),n=require("c32check");function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function i(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function s(t){i(a,n,o,s,c,"next",t)}function c(t){i(a,n,o,s,c,"throw",t)}s(void 0)}))}}function s(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return o(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(){return c=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},c.apply(null,arguments)}function u(){u=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=Object.create((e&&e.prototype instanceof m?e:m).prototype),a=new T(n||[]);return o(i,"_invoke",{value:C(t,r,a)}),i}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",g={};function m(){}function b(){}function w(){}var x={};h(x,a,(function(){return this}));var k=Object.getPrototypeOf,_=k&&k(k(I([])));_&&_!==r&&n.call(_,a)&&(x=_);var E=w.prototype=m.prototype=Object.create(x);function S(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(o,i,a,s){var c=f(t[o],t,i);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function C(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=L(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 L(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,L(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 T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return b.prototype=w,o(E,"constructor",{value:w,configurable:!0}),o(w,"constructor",{value:b,configurable:!0}),b.displayName=h(w,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,h(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},S(N.prototype),h(N.prototype,s,(function(){return this})),e.AsyncIterator=N,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new N(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},S(E),h(E,c,"Generator"),h(E,a,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=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 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:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function h(t){var e=t.code,n=t.contract_id.split("."),o=n[0],i=n[1];return r.tupleCV({type:r.uintCV(1),data:r.bufferCV(r.serializeCVBytes(r.tupleCV({contract:r.contractPrincipalCV(o,i),code:r.stringAsciiCV(e)})))})}function l(t,e,r,n){return f.apply(this,arguments)}function f(){return f=a(u().mark((function t(e,n,o,i){var s;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(s=Buffer.concat([Buffer.from("sim-v1"),Buffer.alloc(8),Buffer.from(n.startsWith("0x")?n.substring(2):n,"hex")].concat(i.map((function(t){return"contract_id"in t&&"code"in t?h(t):(e=t,r.tupleCV({type:r.uintCV(0),data:r.bufferCV(e.serializeBytes())}));var e})).map((function(t){return r.serializeCVBytes(t)}))))).writeBigUInt64BE(BigInt(o),6),t.next=4,fetch(e,{method:"POST",body:s}).then(function(){var t=a(u().mark((function t(e){var r;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.text();case 2:if((r=t.sent).startsWith("{")){t.next=5;break}throw new Error("failed to submit simulation: "+r);case 5:return t.abrupt("return",JSON.parse(r));case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}());case 4:return t.abrupt("return",t.sent.id);case 6:case"end":return t.stop()}}),t)}))),f.apply(this,arguments)}exports.SimulationBuilder=function(){function o(t){var e,r;void 0===t&&(t={}),this.apiEndpoint=void 0,this.stacksNodeAPI=void 0,this.block=NaN,this.sender="",this.steps=[],this.apiEndpoint=null!=(e=t.apiEndpoint)?e:"https://api.stxer.xyz/simulations",this.stacksNodeAPI=null!=(r=t.stacksNodeAPI)?r:"https://api.hiro.so"}o.new=function(t){return new o(t)};var i=o.prototype;return i.useBlockHeight=function(t){return this.block=t,this},i.withSender=function(t){return this.sender=t,this},i.addSTXTransfer=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractCall=function(t){var e,r;if(null==t.sender&&""===this.sender)throw new Error("Please specify a sender with useSender or adding a sender paramenter");return this.steps.push(c({},t,{sender:null!=(e=t.sender)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addContractDeploy=function(t){var e,r;if(null==t.deployer&&""===this.sender)throw new Error("Please specify a deployer with useSender or adding a deployer paramenter");return this.steps.push(c({},t,{deployer:null!=(e=t.deployer)?e:this.sender,fee:null!=(r=t.fee)?r:0})),this},i.addEvalCode=function(t,e){return this.steps.push({contract_id:t,code:e}),this},i.addMapRead=function(t,e,r){return this.steps.push({contract_id:t,code:"(map-get "+e+" "+r+")"}),this},i.addVarRead=function(t,e){return this.steps.push({contract_id:t,code:"(var-get "+e+")"}),this},i.getBlockInfo=function(){var e=a(u().mark((function e(){var r;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Number.isNaN(this.block)){e.next=6;break}return e.next=3,t.getNodeInfo({stacksEndpoint:this.stacksNodeAPI});case 3:this.block=e.sent.stacks_tip_height;case 6:return e.next=8,t.richFetch(this.stacksNodeAPI+"/extended/v1/block/by_height/"+this.block+"?unanchored=true").then((function(t){return t.json()}));case 8:if((r=e.sent).height===this.block&&"string"==typeof r.hash&&r.hash.startsWith("0x")){e.next=11;break}throw new Error("failed to get block info for block height "+this.block);case 11:return e.abrupt("return",{block_height:this.block,block_hash:r.hash.substring(2),index_block_hash:r.index_block_hash.substring(2)});case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),i.run=function(){var o=a(u().mark((function o(){var i,c,h,f,p,d,y,v,g,m,b,w,x,k,_,E,S,N,C=this;return u().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------"),o.next=3,this.getBlockInfo();case 3:i=o.sent,console.log("Using block height "+i.block_height+" hash 0x"+i.block_hash+" to run simulation."),c=[],h=new Map,f=function(){var e=a(u().mark((function e(r){var n,o,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(n=h.get(r))){e.next=8;break}return o=C.stacksNodeAPI+"/v2/accounts/"+r+"?proof="+!1+"&tip="+i.index_block_hash,e.next=5,t.richFetch(o).then((function(t){return t.json()}));case 5:return h.set(r,(a=e.sent).nonce+1),e.abrupt("return",a.nonce);case 8:return h.set(r,n+1),e.abrupt("return",n);case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),p=s(this.steps);case 9:if((d=p()).done){o.next=48;break}if(!("sender"in(y=d.value))||!("function_name"in y)){o.next=23;break}return o.next=14,f(y.sender);case 14:return g=o.sent,m=y.contract_id.split("."),b=m[0],w=m[1],o.next=18,r.makeUnsignedContractCall({contractAddress:b,contractName:w,functionName:y.function_name,functionArgs:null!=(v=y.function_args)?v:[],nonce:g,network:e.STACKS_MAINNET,publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 18:(x=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(x),o.next=46;break;case 23:if(!("sender"in y)||!("recipient"in y)){o.next=34;break}return o.next=26,f(y.sender);case 26:return k=o.sent,o.next=29,r.makeUnsignedSTXTokenTransfer({recipient:y.recipient,amount:y.amount,nonce:k,network:e.STACKS_MAINNET,publicKey:"",fee:y.fee});case 29:(_=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.sender)[1],c.push(_),o.next=46;break;case 34:if(!("deployer"in y)){o.next=45;break}return o.next=37,f(y.deployer);case 37:return E=o.sent,o.next=40,r.makeUnsignedContractDeploy({contractName:y.contract_name,codeBody:y.source_code,nonce:E,network:e.STACKS_MAINNET,publicKey:"",postConditionMode:r.PostConditionMode.Allow,fee:y.fee});case 40:(S=o.sent).auth.spendingCondition.signer=n.c32addressDecode(y.deployer)[1],c.push(S),o.next=46;break;case 45:"code"in y?c.push(y):console.log("Invalid simulation step:",y);case 46:o.next=9;break;case 48:return o.next=50,l(this.apiEndpoint,i.block_hash,i.block_height,c);case 50:return N=o.sent,console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/"+N),o.abrupt("return",N);case 53:case"end":return o.stop()}}),o,this)})));return function(){return o.apply(this,arguments)}}(),o}(),exports.runEval=h,exports.runSimulation=l;
|
|
2
2
|
//# sourceMappingURL=stxer.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","tupleCV","type","uintCV","data","bufferCV","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","wrap","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","tx","serialize","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","info","_context","Number","isNaN","getNodeInfo","stacks_tip_height","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_context3","console","log","Map","_ref2","_callee2","url","account","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n 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 const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(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 // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz/simulations';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${this.stacksNodeAPI}/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n this.apiEndpoint,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","tupleCV","type","uintCV","data","bufferCV","serializeCVBytes","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_x4","_runSimulation","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","apiEndpoint","block_hash","block_height","txs","body","wrap","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","tx","serializeBytes","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","rs","response","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","stacksNodeAPI","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","info","_context","Number","isNaN","getNodeInfo","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","set","_x5","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
|
package/dist/stxer.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { richFetch, getNodeInfo } from 'ts-clarity';
|
|
2
|
-
import {
|
|
3
|
-
import { tupleCV, uintCV, bufferCV,
|
|
2
|
+
import { STACKS_MAINNET } from '@stacks/network';
|
|
3
|
+
import { tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
|
|
4
4
|
import { c32addressDecode } from 'c32check';
|
|
5
5
|
|
|
6
6
|
function _arrayLikeToArray(r, a) {
|
|
@@ -368,13 +368,11 @@ function _unsupportedIterableToArray(r, a) {
|
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
// current beta api endpoint
|
|
372
|
-
var SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';
|
|
373
371
|
function runTx(tx) {
|
|
374
372
|
// type 0: run transaction
|
|
375
373
|
return tupleCV({
|
|
376
374
|
type: uintCV(0),
|
|
377
|
-
data: bufferCV(tx.
|
|
375
|
+
data: bufferCV(tx.serializeBytes())
|
|
378
376
|
});
|
|
379
377
|
}
|
|
380
378
|
function runEval(_ref) {
|
|
@@ -386,17 +384,17 @@ function runEval(_ref) {
|
|
|
386
384
|
// type 1: eval arbitrary code inside a contract
|
|
387
385
|
return tupleCV({
|
|
388
386
|
type: uintCV(1),
|
|
389
|
-
data: bufferCV(
|
|
387
|
+
data: bufferCV(serializeCVBytes(tupleCV({
|
|
390
388
|
contract: contractPrincipalCV(contract_address, contract_name),
|
|
391
389
|
code: stringAsciiCV(code)
|
|
392
390
|
})))
|
|
393
391
|
});
|
|
394
392
|
}
|
|
395
|
-
function runSimulation(_x, _x2, _x3) {
|
|
393
|
+
function runSimulation(_x, _x2, _x3, _x4) {
|
|
396
394
|
return _runSimulation.apply(this, arguments);
|
|
397
395
|
}
|
|
398
396
|
function _runSimulation() {
|
|
399
|
-
_runSimulation = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(block_hash, block_height, txs) {
|
|
397
|
+
_runSimulation = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(apiEndpoint, block_hash, block_height, txs) {
|
|
400
398
|
var body, rs;
|
|
401
399
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
402
400
|
while (1) switch (_context5.prev = _context5.next) {
|
|
@@ -404,11 +402,11 @@ function _runSimulation() {
|
|
|
404
402
|
body = Buffer.concat([Buffer.from('sim-v1'), Buffer.alloc(8), Buffer.from(block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash, 'hex')].concat(txs.map(function (t) {
|
|
405
403
|
return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
|
|
406
404
|
}).map(function (t) {
|
|
407
|
-
return
|
|
405
|
+
return serializeCVBytes(t);
|
|
408
406
|
})));
|
|
409
407
|
body.writeBigUInt64BE(BigInt(block_height), 6);
|
|
410
408
|
_context5.next = 4;
|
|
411
|
-
return fetch(
|
|
409
|
+
return fetch(apiEndpoint, {
|
|
412
410
|
method: 'POST',
|
|
413
411
|
body: body
|
|
414
412
|
}).then(/*#__PURE__*/function () {
|
|
@@ -434,7 +432,7 @@ function _runSimulation() {
|
|
|
434
432
|
}
|
|
435
433
|
}, _callee4);
|
|
436
434
|
}));
|
|
437
|
-
return function (
|
|
435
|
+
return function (_x6) {
|
|
438
436
|
return _ref3.apply(this, arguments);
|
|
439
437
|
};
|
|
440
438
|
}());
|
|
@@ -450,14 +448,22 @@ function _runSimulation() {
|
|
|
450
448
|
return _runSimulation.apply(this, arguments);
|
|
451
449
|
}
|
|
452
450
|
var SimulationBuilder = /*#__PURE__*/function () {
|
|
453
|
-
function SimulationBuilder() {
|
|
451
|
+
function SimulationBuilder(options) {
|
|
452
|
+
var _options$apiEndpoint, _options$stacksNodeAP;
|
|
453
|
+
if (options === void 0) {
|
|
454
|
+
options = {};
|
|
455
|
+
}
|
|
456
|
+
this.apiEndpoint = void 0;
|
|
457
|
+
this.stacksNodeAPI = void 0;
|
|
454
458
|
// biome-ignore lint/style/useNumberNamespace: <explanation>
|
|
455
459
|
this.block = NaN;
|
|
456
460
|
this.sender = '';
|
|
457
461
|
this.steps = [];
|
|
462
|
+
this.apiEndpoint = (_options$apiEndpoint = options.apiEndpoint) != null ? _options$apiEndpoint : 'https://api.stxer.xyz/simulations';
|
|
463
|
+
this.stacksNodeAPI = (_options$stacksNodeAP = options.stacksNodeAPI) != null ? _options$stacksNodeAP : 'https://api.hiro.so';
|
|
458
464
|
}
|
|
459
|
-
SimulationBuilder["new"] = function _new() {
|
|
460
|
-
return new SimulationBuilder();
|
|
465
|
+
SimulationBuilder["new"] = function _new(options) {
|
|
466
|
+
return new SimulationBuilder(options);
|
|
461
467
|
};
|
|
462
468
|
var _proto = SimulationBuilder.prototype;
|
|
463
469
|
_proto.useBlockHeight = function useBlockHeight(block) {
|
|
@@ -533,14 +539,16 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
533
539
|
break;
|
|
534
540
|
}
|
|
535
541
|
_context.next = 3;
|
|
536
|
-
return getNodeInfo(
|
|
542
|
+
return getNodeInfo({
|
|
543
|
+
stacksEndpoint: this.stacksNodeAPI
|
|
544
|
+
});
|
|
537
545
|
case 3:
|
|
538
546
|
_yield$getNodeInfo = _context.sent;
|
|
539
547
|
stacks_tip_height = _yield$getNodeInfo.stacks_tip_height;
|
|
540
548
|
this.block = stacks_tip_height;
|
|
541
549
|
case 6:
|
|
542
550
|
_context.next = 8;
|
|
543
|
-
return richFetch("
|
|
551
|
+
return richFetch(this.stacksNodeAPI + "/extended/v1/block/by_height/" + this.block + "?unanchored=true").then(function (r) {
|
|
544
552
|
return r.json();
|
|
545
553
|
});
|
|
546
554
|
case 8:
|
|
@@ -569,6 +577,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
569
577
|
}();
|
|
570
578
|
_proto.run = /*#__PURE__*/function () {
|
|
571
579
|
var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
580
|
+
var _this = this;
|
|
572
581
|
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;
|
|
573
582
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
574
583
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -592,7 +601,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
592
601
|
_context2.next = 8;
|
|
593
602
|
break;
|
|
594
603
|
}
|
|
595
|
-
url = "
|
|
604
|
+
url = _this.stacksNodeAPI + "/v2/accounts/" + sender + "?proof=" + false + "&tip=" + block.index_block_hash;
|
|
596
605
|
_context2.next = 5;
|
|
597
606
|
return richFetch(url).then(function (r) {
|
|
598
607
|
return r.json();
|
|
@@ -610,7 +619,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
610
619
|
}
|
|
611
620
|
}, _callee2);
|
|
612
621
|
}));
|
|
613
|
-
return function nextNonce(
|
|
622
|
+
return function nextNonce(_x5) {
|
|
614
623
|
return _ref2.apply(this, arguments);
|
|
615
624
|
};
|
|
616
625
|
}();
|
|
@@ -637,10 +646,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
637
646
|
functionName: step.function_name,
|
|
638
647
|
functionArgs: (_step$function_args = step.function_args) != null ? _step$function_args : [],
|
|
639
648
|
nonce: nonce,
|
|
640
|
-
network:
|
|
649
|
+
network: STACKS_MAINNET,
|
|
641
650
|
publicKey: '',
|
|
642
651
|
postConditionMode: PostConditionMode.Allow,
|
|
643
|
-
anchorMode: AnchorMode.Any,
|
|
644
652
|
fee: step.fee
|
|
645
653
|
});
|
|
646
654
|
case 18:
|
|
@@ -663,9 +671,8 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
663
671
|
recipient: step.recipient,
|
|
664
672
|
amount: step.amount,
|
|
665
673
|
nonce: _nonce,
|
|
666
|
-
network:
|
|
674
|
+
network: STACKS_MAINNET,
|
|
667
675
|
publicKey: '',
|
|
668
|
-
anchorMode: AnchorMode.Any,
|
|
669
676
|
fee: step.fee
|
|
670
677
|
});
|
|
671
678
|
case 29:
|
|
@@ -688,10 +695,9 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
688
695
|
contractName: step.contract_name,
|
|
689
696
|
codeBody: step.source_code,
|
|
690
697
|
nonce: _nonce2,
|
|
691
|
-
network:
|
|
698
|
+
network: STACKS_MAINNET,
|
|
692
699
|
publicKey: '',
|
|
693
700
|
postConditionMode: PostConditionMode.Allow,
|
|
694
|
-
anchorMode: AnchorMode.Any,
|
|
695
701
|
fee: step.fee
|
|
696
702
|
});
|
|
697
703
|
case 40:
|
|
@@ -704,6 +710,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
704
710
|
if ('code' in step) {
|
|
705
711
|
txs.push(step);
|
|
706
712
|
} else {
|
|
713
|
+
// biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
|
|
707
714
|
console.log("Invalid simulation step:", step);
|
|
708
715
|
}
|
|
709
716
|
case 46:
|
|
@@ -711,7 +718,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
|
|
|
711
718
|
break;
|
|
712
719
|
case 48:
|
|
713
720
|
_context3.next = 50;
|
|
714
|
-
return runSimulation(block.block_hash, block.block_height, txs);
|
|
721
|
+
return runSimulation(this.apiEndpoint, block.block_hash, block.block_height, txs);
|
|
715
722
|
case 50:
|
|
716
723
|
id = _context3.sent;
|
|
717
724
|
console.log("Simulation will be available at: https://stxer.xyz/simulations/mainnet/" + id);
|
package/dist/stxer.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stxer.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { StacksMainnet } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransaction,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCV,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\n// current beta api endpoint\nconst SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';\n\nfunction runTx(tx: StacksTransaction) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serialize()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCV(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n block_hash: string,\n block_height: number,\n txs: (StacksTransaction | SimulationEval)[]\n) {\n const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCV(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(SIMULATION_API_ENDPOINT, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\nexport class SimulationBuilder {\n public static new() {\n return new SimulationBuilder();\n }\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo();\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `https://api.hiro.so/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransaction | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n let nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `https://api.hiro.so/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: new StacksMainnet(),\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n anchorMode: AnchorMode.Any,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(block.block_hash, block.block_height, txs);\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`\n );\n return id;\n }\n}\n"],"names":["SIMULATION_API_ENDPOINT","runTx","tx","tupleCV","type","uintCV","data","bufferCV","serialize","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCV","contract","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_runSimulation","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee5","block_hash","block_height","txs","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x5","id","SimulationBuilder","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","richFetch","r","json","height","hash","index_block_hash","run","_run","_callee3","nonce_by_address","nextNonce","_iterator","_step","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","_callee2","url","account","_callee2$","_context2","get","set","_x4","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","StacksMainnet","publicKey","postConditionMode","PostConditionMode","Allow","anchorMode","AnchorMode","Any","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA;AACA,IAAMA,uBAAuB,GAAG,mCAAmC,CAAA;AAEnE,SAASC,KAAKA,CAACC,EAAqB,EAAA;AAClC;AACA,EAAA,OAAOC,OAAO,CAAC;AAAEC,IAAAA,IAAI,EAAEC,MAAM,CAAC,CAAC,CAAC;AAAEC,IAAAA,IAAI,EAAEC,QAAQ,CAACL,EAAE,CAACM,SAAS,EAAE,CAAA;AAAG,GAAA,CAAC,CAAA;AACrE,CAAA;SAOgBC,OAAOA,CAAAC,IAAA,EAAsC;AAAA,EAAA,IAAnCC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI,CAAA;AACzC,EAAA,IAAAC,kBAAA,GAA0CF,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC;AAAzDC,IAAAA,gBAAgB,GAAAF,kBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,aAAa,GAAAH,kBAAA,CAAA,CAAA,CAAA,CAAA;AACtC;AACA,EAAA,OAAOV,OAAO,CAAC;AACbC,IAAAA,IAAI,EAAEC,MAAM,CAAC,CAAC,CAAC;AACfC,IAAAA,IAAI,EAAEC,QAAQ,CACZU,WAAW,CACTd,OAAO,CAAC;AACNe,MAAAA,QAAQ,EAAEC,mBAAmB,CAACJ,gBAAgB,EAAEC,aAAa,CAAC;MAC9DJ,IAAI,EAAEQ,aAAa,CAACR,IAAI,CAAA;AACzB,KAAA,CAAC,CACH,CAAA;AAEJ,GAAA,CAAC,CAAA;AACJ,CAAA;AAEA,SAAsBS,aAAaA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAA;AAAA,EAAA,OAAAC,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AA+BlC,SAAAF,cAAA,GAAA;AAAAA,EAAAA,cAAA,GAAAG,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CA/BM,SAAAC,QACLC,CAAAA,UAAkB,EAClBC,YAAoB,EACpBC,GAA2C,EAAA;IAAA,IAAAC,IAAA,EAAAC,EAAA,CAAA;AAAA,IAAA,OAAAP,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAC,UAAAC,SAAA,EAAA;AAAA,MAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;AAAA,QAAA,KAAA,CAAA;UAErCN,IAAI,GAAGO,MAAM,CAACC,MAAM,EACxBD,MAAM,CAACE,IAAI,CAAC,QAAQ,CAAC,EACrBF,MAAM,CAACG,KAAK,CAAC,CAAC,CAAC,EACfH,MAAM,CAACE,IAAI,CACTZ,UAAU,CAACc,UAAU,CAAC,IAAI,CAAC,GAAGd,UAAU,CAACe,SAAS,CAAC,CAAC,CAAC,GAAGf,UAAU,EAClE,KAAK,CACN,CAAAW,CAAAA,MAAA,CACET,GAAG,CACHc,GAAG,CAAC,UAACC,CAAC,EAAI;AACT,YAAA,OAAO,aAAa,IAAIA,CAAC,IAAI,MAAM,IAAIA,CAAC,GAAGxC,OAAO,CAACwC,CAAC,CAAC,GAAGhD,KAAK,CAACgD,CAAC,CAAC,CAAA;AAClE,WAAC,CAAC,CACDD,GAAG,CAAC,UAACC,CAAC,EAAA;YAAA,OAAKhC,WAAW,CAACgC,CAAC,CAAC,CAAA;AAAA,WAAA,CAAC,CAC9B,CAAC,CAAA;UACFd,IAAI,CAACe,gBAAgB,CAACC,MAAM,CAAClB,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;AAACM,UAAAA,SAAA,CAAAE,IAAA,GAAA,CAAA,CAAA;UAAA,OAC9BW,KAAK,CAACpD,uBAAuB,EAAE;AAC9CqD,YAAAA,MAAM,EAAE,MAAM;AACdlB,YAAAA,IAAI,EAAJA,IAAAA;WACD,CAAC,CAACmB,IAAI,cAAA,YAAA;YAAA,IAAAC,KAAA,GAAA3B,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAC,SAAA0B,QAAAA,CAAOpB,EAAE,EAAA;AAAA,cAAA,IAAAqB,QAAA,CAAA;AAAA,cAAA,OAAA5B,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqB,UAAAC,SAAA,EAAA;AAAA,gBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAnB,IAAA,GAAAmB,SAAA,CAAAlB,IAAA;AAAA,kBAAA,KAAA,CAAA;AAAAkB,oBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,oBAAA,OACQL,EAAE,CAACwB,IAAI,EAAE,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAA1BH,QAAQ,GAAAE,SAAA,CAAAE,IAAA,CAAA;AAAA,oBAAA,IACTJ,QAAQ,CAACX,UAAU,CAAC,GAAG,CAAC,EAAA;AAAAa,sBAAAA,SAAA,CAAAlB,IAAA,GAAA,CAAA,CAAA;AAAA,sBAAA,MAAA;AAAA,qBAAA;AAAA,oBAAA,MACrB,IAAIqB,KAAK,CAAiCL,+BAAAA,GAAAA,QAAU,CAAC,CAAA;AAAA,kBAAA,KAAA,CAAA;oBAAA,OAAAE,SAAA,CAAAI,MAAA,CAAA,QAAA,EAGtDC,IAAI,CAACC,KAAK,CAACR,QAAQ,CAAmB,CAAA,CAAA;AAAA,kBAAA,KAAA,CAAA,CAAA;AAAA,kBAAA,KAAA,KAAA;oBAAA,OAAAE,SAAA,CAAAO,IAAA,EAAA,CAAA;AAAA,iBAAA;AAAA,eAAA,EAAAV,QAAA,CAAA,CAAA;aAC9C,CAAA,CAAA,CAAA;AAAA,YAAA,OAAA,UAAAW,GAAA,EAAA;AAAA,cAAA,OAAAZ,KAAA,CAAA7B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,aAAA,CAAA;WAAC,EAAA,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA;UAVIS,EAAE,GAAAG,SAAA,CAAAsB,IAAA,CAAA;AAAA,UAAA,OAAAtB,SAAA,CAAAwB,MAAA,CAWD3B,QAAAA,EAAAA,EAAE,CAACgC,EAAE,CAAA,CAAA;AAAA,QAAA,KAAA,CAAA,CAAA;AAAA,QAAA,KAAA,KAAA;UAAA,OAAA7B,SAAA,CAAA2B,IAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA,EAAAnC,QAAA,CAAA,CAAA;GACb,CAAA,CAAA,CAAA;AAAA,EAAA,OAAAN,cAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,CAAA;AAED,IAAa0C,iBAAiB,gBAAA,YAAA;AAAA,EAAA,SAAAA,iBAAA,GAAA;AAI5B;IAAA,IACQC,CAAAA,KAAK,GAAGC,GAAG,CAAA;IAAA,IACXC,CAAAA,MAAM,GAAG,EAAE,CAAA;IAAA,IACXC,CAAAA,KAAK,GAwBP,EAAE,CAAA;AAAA,GAAA;AAAAJ,EAAAA,iBAAA,CA9BD,KAAA,CAAA,GAAA,SAAOK,IAAGA,GAAA;IACf,OAAO,IAAIL,iBAAiB,EAAE,CAAA;GAC/B,CAAA;AAAA,EAAA,IAAAM,MAAA,GAAAN,iBAAA,CAAAO,SAAA,CAAA;AAAAD,EAAAA,MAAA,CA8BME,cAAc,GAAd,SAAAA,cAAcA,CAACP,KAAa,EAAA;IACjC,IAAI,CAACA,KAAK,GAAGA,KAAK,CAAA;AAClB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAK,EAAAA,MAAA,CACMG,UAAU,GAAV,SAAAA,UAAUA,CAACC,OAAe,EAAA;IAC/B,IAAI,CAACP,MAAM,GAAGO,OAAO,CAAA;AACrB,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAJ,EAAAA,MAAA,CACMK,cAAc,GAAd,SAAAA,cAAcA,CAACC,MAKrB,EAAA;IAAA,IAAAC,cAAA,EAAAC,WAAA,CAAA;IACC,IAAIF,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAU,cAAA,GAAED,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAU,cAAA,GAAI,IAAI,CAACV,MAAM;MACpCc,GAAG,EAAA,CAAAH,WAAA,GAAEF,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAH,WAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAR,EAAAA,MAAA,CACMY,eAAe,GAAf,SAAAA,eAAeA,CAACN,MAMtB,EAAA;IAAA,IAAAO,eAAA,EAAAC,YAAA,CAAA;IACC,IAAIR,MAAM,CAACT,MAAM,IAAI,IAAI,IAAI,IAAI,CAACA,MAAM,KAAK,EAAE,EAAE;AAC/C,MAAA,MAAM,IAAIV,KAAK,CACb,sEAAsE,CACvE,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTT,MAAM,EAAA,CAAAgB,eAAA,GAAEP,MAAM,CAACT,MAAM,KAAA,IAAA,GAAAgB,eAAA,GAAI,IAAI,CAAChB,MAAM;MACpCc,GAAG,EAAA,CAAAG,YAAA,GAAER,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAG,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAd,EAAAA,MAAA,CACMe,iBAAiB,GAAjB,SAAAA,iBAAiBA,CAACT,MAKxB,EAAA;IAAA,IAAAU,gBAAA,EAAAC,YAAA,CAAA;IACC,IAAIX,MAAM,CAACY,QAAQ,IAAI,IAAI,IAAI,IAAI,CAACrB,MAAM,KAAK,EAAE,EAAE;AACjD,MAAA,MAAM,IAAIV,KAAK,CACb,0EAA0E,CAC3E,CAAA;AACH,KAAA;AACA,IAAA,IAAI,CAACW,KAAK,CAACW,IAAI,CAAAC,QAAA,KACVJ,MAAM,EAAA;MACTY,QAAQ,EAAA,CAAAF,gBAAA,GAAEV,MAAM,CAACY,QAAQ,KAAA,IAAA,GAAAF,gBAAA,GAAI,IAAI,CAACnB,MAAM;MACxCc,GAAG,EAAA,CAAAM,YAAA,GAAEX,MAAM,CAACK,GAAG,KAAA,IAAA,GAAAM,YAAA,GAAI,CAAA;AAAC,KAAA,CACrB,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAjB,MAAA,CACMmB,WAAW,GAAX,SAAAA,WAAWA,CAACC,kBAA0B,EAAEnF,IAAY,EAAA;AACzD,IAAA,IAAI,CAAC6D,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAEoF,kBAAkB;AAC/BnF,MAAAA,IAAI,EAAJA,IAAAA;AACD,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAA+D,MAAA,CACMqB,UAAU,GAAV,SAAAA,UAAUA,CAACrF,WAAmB,EAAEqC,GAAW,EAAEiD,GAAW,EAAA;AAC7D,IAAA,IAAI,CAACxB,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;MACXC,IAAI,EAAA,WAAA,GAAcoC,GAAG,GAAA,GAAA,GAAIiD,GAAG,GAAA,GAAA;AAC7B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;EAAAtB,MAAA,CACMuB,UAAU,GAAV,SAAAA,UAAUA,CAACvF,WAAmB,EAAEwF,QAAgB,EAAA;AACrD,IAAA,IAAI,CAAC1B,KAAK,CAACW,IAAI,CAAC;AACdzE,MAAAA,WAAW,EAAXA,WAAW;AACXC,MAAAA,IAAI,gBAAcuF,QAAQ,GAAA,GAAA;AAC3B,KAAA,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,CAAA;GACZ,CAAA;AAAAxB,EAAAA,MAAA,CAEayB,YAAY,gBAAA,YAAA;IAAA,IAAAC,aAAA,gBAAAzE,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAlB,SAAAwE,OAAA,GAAA;AAAA,MAAA,IAAAC,kBAAA,EAAAC,iBAAA,EAAAC,IAAA,CAAA;AAAA,MAAA,OAAA5E,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAqE,SAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAnE,IAAA,GAAAmE,QAAA,CAAAlE,IAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CACFmE,MAAM,CAACC,KAAK,CAAC,IAAI,CAACvC,KAAK,CAAC,EAAA;AAAAqC,cAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAAkE,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OACUqE,WAAW,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAAP,kBAAA,GAAAI,QAAA,CAAA9C,IAAA,CAAA;YAAzC2C,iBAAiB,GAAAD,kBAAA,CAAjBC,iBAAiB,CAAA;YACzB,IAAI,CAAClC,KAAK,GAAGkC,iBAAiB,CAAA;AAAC,UAAA,KAAA,CAAA;AAAAG,YAAAA,QAAA,CAAAlE,IAAA,GAAA,CAAA,CAAA;YAAA,OAEPsE,SAAS,CACkB,kDAAA,GAAA,IAAI,CAACzC,KAAK,GAAkB,kBAAA,CAChF,CAAChB,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,cAAA,OAAKA,CAAC,CAACC,IAAI,EAAE,CAAA;aAAC,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;YAFjBR,IAAI,GAAAE,QAAA,CAAA9C,IAAA,CAAA;YAAA,IAIR4C,EAAAA,IAAI,CAACS,MAAM,KAAK,IAAI,CAAC5C,KAAK,IAC1B,OAAOmC,IAAI,CAACU,IAAI,KAAK,QAAQ,IAC7B,CAACV,IAAI,CAACU,IAAI,CAACrE,UAAU,CAAC,IAAI,CAAC,CAAA,EAAA;AAAA6D,cAAAA,QAAA,CAAAlE,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA,YAAA,MAErB,IAAIqB,KAAK,CAAA,4CAAA,GACgC,IAAI,CAACQ,KAAO,CAC1D,CAAA;AAAA,UAAA,KAAA,EAAA;YAAA,OAAAqC,QAAA,CAAA5C,MAAA,CAEI,QAAA,EAAA;cACL9B,YAAY,EAAE,IAAI,CAACqC,KAAK;cACxBtC,UAAU,EAAEyE,IAAI,CAACU,IAAI,CAACpE,SAAS,CAAC,CAAC,CAAC;AAClCqE,cAAAA,gBAAgB,EAAEX,IAAI,CAACW,gBAAgB,CAACrE,SAAS,CAAC,CAAC,CAAA;aACpD,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAA4D,QAAA,CAAAzC,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAoC,OAAA,EAAA,IAAA,CAAA,CAAA;KACF,CAAA,CAAA,CAAA;AAAA,IAAA,SAtBaF,YAAYA,GAAA;AAAA,MAAA,OAAAC,aAAA,CAAA3E,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAZyE,YAAY,CAAA;AAAA,GAAA,EAAA,CAAA;AAAAzB,EAAAA,MAAA,CAwBb0C,GAAG,gBAAA,YAAA;IAAA,IAAAC,IAAA,gBAAA1F,iBAAA,cAAAC,mBAAA,EAAAC,CAAAA,IAAA,CAAT,SAAAyF,QAAA,GAAA;AAAA,MAAA,IAAAjD,KAAA,EAAApC,GAAA,EAAAsF,gBAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,YAAA,EAAA/H,EAAA,EAAAgI,MAAA,EAAAC,GAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAjE,EAAA,CAAA;AAAA,MAAA,OAAAvC,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAAiG,UAAAC,SAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAA9F,IAAA;AAAA,UAAA,KAAA,CAAA;YACL+F,OAAO,CAACC,GAAG,CAAA,4RASkB,CAC5B,CAAA;AAACF,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,OACkB,IAAI,CAAC2D,YAAY,EAAE,CAAA;AAAA,UAAA,KAAA,CAAA;YAAjC9B,KAAK,GAAAiE,SAAA,CAAA1E,IAAA,CAAA;YACX2E,OAAO,CAACC,GAAG,CAAA,qBAAA,GACanE,KAAK,CAACrC,YAAY,GAAA,UAAA,GAAWqC,KAAK,CAACtC,UAAU,GAAA,qBAAqB,CACzF,CAAA;AACKE,YAAAA,GAAG,GAA2C,EAAE,CAAA;AAChDsF,YAAAA,gBAAgB,GAAG,IAAIkB,GAAG,EAAkB,CAAA;YAC5CjB,SAAS,gBAAA,YAAA;cAAA,IAAAkB,KAAA,GAAA/G,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8G,QAAAA,CAAOpE,MAAc,EAAA;AAAA,gBAAA,IAAAsD,KAAA,EAAAe,GAAA,EAAAC,OAAA,CAAA;AAAA,gBAAA,OAAAjH,mBAAA,EAAA,CAAAQ,IAAA,CAAA,SAAA0G,UAAAC,SAAA,EAAA;AAAA,kBAAA,OAAA,CAAA,EAAA,QAAAA,SAAA,CAAAxG,IAAA,GAAAwG,SAAA,CAAAvG,IAAA;AAAA,oBAAA,KAAA,CAAA;AACjCqF,sBAAAA,KAAK,GAAGN,gBAAgB,CAACyB,GAAG,CAACzE,MAAM,CAAC,CAAA;sBAAA,IACpCsD,EAAAA,KAAK,IAAI,IAAI,CAAA,EAAA;AAAAkB,wBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;AAAA,wBAAA,MAAA;AAAA,uBAAA;AACToG,sBAAAA,GAAG,wCAAsCrE,MAAM,GAAA,SAAA,GAAU,KAAK,GAClEF,OAAAA,GAAAA,KAAK,CAAC8C,gBACR,CAAA;AAAA4B,sBAAAA,SAAA,CAAAvG,IAAA,GAAA,CAAA,CAAA;sBAAA,OAC2CsE,SAAS,CAAC8B,GAAG,CAAC,CAACvF,IAAI,CAAC,UAAC0D,CAAC,EAAA;AAAA,wBAAA,OAC/DA,CAAC,CAACC,IAAI,EAAE,CAAA;uBACT,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAFK6B,OAAO,GAAAE,SAAA,CAAAnF,IAAA,CAAA;sBAGb2D,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsE,OAAO,CAAChB,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CACzC+E,QAAAA,EAAAA,OAAO,CAAChB,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,CAAA;sBAEtBN,gBAAgB,CAAC0B,GAAG,CAAC1E,MAAM,EAAEsD,KAAK,GAAG,CAAC,CAAC,CAAA;AAAC,sBAAA,OAAAkB,SAAA,CAAAjF,MAAA,CAAA,QAAA,EACjC+D,KAAK,CAAA,CAAA;AAAA,oBAAA,KAAA,EAAA,CAAA;AAAA,oBAAA,KAAA,KAAA;sBAAA,OAAAkB,SAAA,CAAA9E,IAAA,EAAA,CAAA;AAAA,mBAAA;AAAA,iBAAA,EAAA0E,QAAA,CAAA,CAAA;eACb,CAAA,CAAA,CAAA;cAAA,OAdKnB,SAAAA,SAASA,CAAA0B,GAAA,EAAA;AAAA,gBAAA,OAAAR,KAAA,CAAAjH,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,eAAA,CAAA;AAAA,aAAA,EAAA,CAAA;AAAA+F,YAAAA,SAAA,GAAA0B,+BAAA,CAeI,IAAI,CAAC3E,KAAK,CAAA,CAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CAAAkD,KAAA,GAAAD,SAAA,EAAA,EAAA2B,IAAA,EAAA;AAAAd,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;YAAlBmF,IAAI,GAAAD,KAAA,CAAA2B,KAAA,CAAA;AAAA,YAAA,IAAA,EACT,QAAQ,IAAI1B,IAAI,IAAI,eAAe,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACzBgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,KAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAAkE,YAAAA,qBAAA,GAC6BH,IAAI,CAACjH,WAAW,CAACG,KAAK,CAAC,GAAG,CAAC,EAA5DkH,eAAe,GAAAD,qBAAA,CAAEE,CAAAA,CAAAA,EAAAA,YAAY,GAAAF,qBAAA,CAAA,CAAA,CAAA,CAAA;AAAAQ,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACnB8G,wBAAwB,CAAC;AACxCvB,cAAAA,eAAe,EAAfA,eAAe;AACfC,cAAAA,YAAY,EAAZA,YAAY;cACZuB,YAAY,EAAE5B,IAAI,CAAC6B,aAAa;cAChCC,YAAY,EAAA,CAAA7B,mBAAA,GAAED,IAAI,CAAC+B,aAAa,KAAA,IAAA,GAAA9B,mBAAA,GAAI,EAAE;AACtCC,cAAAA,KAAK,EAALA,KAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,iBAAiB,CAACC,KAAK;cAC1CC,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAXIpF,EAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAYR3D,YAAAA,EAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,EAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA,YAAA,IAAA,EACJ,QAAQ,IAAImF,IAAI,IAAI,WAAW,IAAIA,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OAC5BgF,SAAS,CAACG,IAAI,CAACpD,MAAM,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAApCsD,MAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACMgI,4BAA4B,CAAC;cAC5CC,SAAS,EAAE9C,IAAI,CAAC8C,SAAS;cACzBC,MAAM,EAAE/C,IAAI,CAAC+C,MAAM;AACnB7C,cAAAA,KAAK,EAALA,MAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbI,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YARIpF,GAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AASR3D,YAAAA,GAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAACpD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnEtC,YAAAA,GAAG,CAACkD,IAAI,CAAClF,GAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YAAA,IACJ,EAAA,UAAU,IAAImF,IAAI,CAAA,EAAA;AAAAW,cAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,cAAA,MAAA;AAAA,aAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACPgF,SAAS,CAACG,IAAI,CAAC/B,QAAQ,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAtCiC,OAAK,GAAAS,SAAA,CAAA1E,IAAA,CAAA;AAAA0E,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,OACMmI,0BAA0B,CAAC;cAC1C3C,YAAY,EAAEL,IAAI,CAAC5G,aAAa;cAChC6J,QAAQ,EAAEjD,IAAI,CAACkD,WAAW;AAC1BhD,cAAAA,KAAK,EAALA,OAAK;AACL8B,cAAAA,OAAO,EAAE,IAAIC,aAAa,EAAE;AAC5BC,cAAAA,SAAS,EAAE,EAAE;cACbC,iBAAiB,EAAEC,iBAAiB,CAACC,KAAK;cAC1CC,UAAU,EAAEC,UAAU,CAACC,GAAG;cAC1B9E,GAAG,EAAEsC,IAAI,CAACtC,GAAAA;AACX,aAAA,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YATIpF,IAAE,GAAAqI,SAAA,CAAA1E,IAAA,CAAA;AAUR3D,YAAAA,IAAE,CAACmK,IAAI,CAACC,iBAAiB,CAACC,MAAM,GAAGC,gBAAgB,CAAC5C,IAAI,CAAC/B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACrE3D,YAAAA,GAAG,CAACkD,IAAI,CAAClF,IAAE,CAAC,CAAA;AAACqI,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;YACR,IAAI,MAAM,IAAImF,IAAI,EAAE;AACzB1F,cAAAA,GAAG,CAACkD,IAAI,CAACwC,IAAI,CAAC,CAAA;AAChB,aAAC,MAAM;AACLY,cAAAA,OAAO,CAACC,GAAG,CAA6Bb,0BAAAA,EAAAA,IAAI,CAAC,CAAA;AAC/C,aAAA;AAAC,UAAA,KAAA,EAAA;AAAAW,YAAAA,SAAA,CAAA9F,IAAA,GAAA,CAAA,CAAA;AAAA,YAAA,MAAA;AAAA,UAAA,KAAA,EAAA;AAAA8F,YAAAA,SAAA,CAAA9F,IAAA,GAAA,EAAA,CAAA;YAAA,OAEcpB,aAAa,CAACiD,KAAK,CAACtC,UAAU,EAAEsC,KAAK,CAACrC,YAAY,EAAEC,GAAG,CAAC,CAAA;AAAA,UAAA,KAAA,EAAA;YAAnEkC,EAAE,GAAAmE,SAAA,CAAA1E,IAAA,CAAA;AACR2E,YAAAA,OAAO,CAACC,GAAG,CACiErE,yEAAAA,GAAAA,EAAI,CAC/E,CAAA;AAAC,YAAA,OAAAmE,SAAA,CAAAxE,MAAA,CAAA,QAAA,EACKK,EAAE,CAAA,CAAA;AAAA,UAAA,KAAA,EAAA,CAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAmE,SAAA,CAAArE,IAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OAAA,EAAAqD,QAAA,EAAA,IAAA,CAAA,CAAA;KACV,CAAA,CAAA,CAAA;AAAA,IAAA,SAzFYF,GAAGA,GAAA;AAAA,MAAA,OAAAC,IAAA,CAAA5F,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,OAAH0F,GAAG,CAAA;AAAA,GAAA,EAAA,CAAA;AAAA,EAAA,OAAAhD,iBAAA,CAAA;AAAA,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"stxer.esm.js","sources":["../src/index.ts"],"sourcesContent":["import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport { STACKS_MAINNET } from '@stacks/network';\nimport {\n AnchorMode,\n type ClarityValue,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n 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 const body = Buffer.concat([\n Buffer.from('sim-v1'),\n Buffer.alloc(8),\n Buffer.from(\n block_hash.startsWith('0x') ? block_hash.substring(2) : block_hash,\n 'hex'\n ),\n ...txs\n .map((t) => {\n return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);\n })\n .map((t) => serializeCVBytes(t)),\n ]);\n body.writeBigUInt64BE(BigInt(block_height), 6);\n const rs = await fetch(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 // console.log(response);\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz/simulations';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${this.stacksNodeAPI}/v2/accounts/${sender}?proof=${false}&tip=${\n block.index_block_hash\n }`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network: STACKS_MAINNET,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n this.apiEndpoint,\n block.block_hash, \n block.block_height, \n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/mainnet/${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","body","rs","wrap","_callee5$","_context5","prev","next","Buffer","concat","from","alloc","startsWith","substring","map","t","writeBigUInt64BE","BigInt","fetch","method","then","_ref3","_callee4","response","_callee4$","_context4","text","sent","Error","abrupt","JSON","parse","stop","_x6","id","SimulationBuilder","options","_options$apiEndpoint","_options$stacksNodeAP","stacksNodeAPI","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","push","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","deployer","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","variable","getBlockInfo","_getBlockInfo","_callee","_yield$getNodeInfo","stacks_tip_height","info","_callee$","_context","Number","isNaN","getNodeInfo","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","set","_x5","_createForOfIteratorHelperLoose","done","value","makeUnsignedContractCall","functionName","function_name","functionArgs","function_args","network","STACKS_MAINNET","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stxer",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Kyle Fang",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -44,12 +44,13 @@
|
|
|
44
44
|
"husky": "^9.1.6",
|
|
45
45
|
"size-limit": "^11.1.5",
|
|
46
46
|
"tslib": "^2.7.0",
|
|
47
|
-
"typescript": "^5.6.2"
|
|
47
|
+
"typescript": "^5.6.2",
|
|
48
|
+
"tsx": "^4.19.2"
|
|
48
49
|
},
|
|
49
50
|
"dependencies": {
|
|
50
|
-
"@stacks/network": "^
|
|
51
|
+
"@stacks/network": "^7.0.0",
|
|
51
52
|
"@stacks/stacks-blockchain-api-types": "^7.14.1",
|
|
52
|
-
"@stacks/transactions": "^
|
|
53
|
+
"@stacks/transactions": "^7.0.0",
|
|
53
54
|
"c32check": "^2.0.0",
|
|
54
55
|
"ts-clarity": "^0.0.26"
|
|
55
56
|
},
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"lint": "dts lint",
|
|
60
61
|
"size": "size-limit",
|
|
61
62
|
"start": "dts watch",
|
|
62
|
-
"test": "dts test"
|
|
63
|
+
"test": "dts test",
|
|
64
|
+
"sample": "tsx src/sample/counter.ts"
|
|
63
65
|
}
|
|
64
66
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';
|
|
2
2
|
import type { Block } from '@stacks/stacks-blockchain-api-types';
|
|
3
|
-
import {
|
|
3
|
+
import { STACKS_MAINNET } from '@stacks/network';
|
|
4
4
|
import {
|
|
5
5
|
AnchorMode,
|
|
6
6
|
type ClarityValue,
|
|
7
7
|
PostConditionMode,
|
|
8
|
-
type
|
|
8
|
+
type StacksTransactionWire,
|
|
9
9
|
bufferCV,
|
|
10
10
|
contractPrincipalCV,
|
|
11
11
|
makeUnsignedContractCall,
|
|
12
12
|
makeUnsignedContractDeploy,
|
|
13
13
|
makeUnsignedSTXTokenTransfer,
|
|
14
|
-
|
|
14
|
+
serializeCVBytes,
|
|
15
15
|
stringAsciiCV,
|
|
16
16
|
tupleCV,
|
|
17
17
|
uintCV,
|
|
18
18
|
} from '@stacks/transactions';
|
|
19
19
|
import { c32addressDecode } from 'c32check';
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
const SIMULATION_API_ENDPOINT = 'https://api.stxer.xyz/simulations';
|
|
23
|
-
|
|
24
|
-
function runTx(tx: StacksTransaction) {
|
|
21
|
+
function runTx(tx: StacksTransactionWire) {
|
|
25
22
|
// type 0: run transaction
|
|
26
|
-
return tupleCV({ type: uintCV(0), data: bufferCV(tx.
|
|
23
|
+
return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
export interface SimulationEval {
|
|
@@ -37,7 +34,7 @@ export function runEval({ contract_id, code }: SimulationEval) {
|
|
|
37
34
|
return tupleCV({
|
|
38
35
|
type: uintCV(1),
|
|
39
36
|
data: bufferCV(
|
|
40
|
-
|
|
37
|
+
serializeCVBytes(
|
|
41
38
|
tupleCV({
|
|
42
39
|
contract: contractPrincipalCV(contract_address, contract_name),
|
|
43
40
|
code: stringAsciiCV(code),
|
|
@@ -48,9 +45,10 @@ export function runEval({ contract_id, code }: SimulationEval) {
|
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
export async function runSimulation(
|
|
48
|
+
apiEndpoint: string,
|
|
51
49
|
block_hash: string,
|
|
52
50
|
block_height: number,
|
|
53
|
-
txs: (
|
|
51
|
+
txs: (StacksTransactionWire | SimulationEval)[]
|
|
54
52
|
) {
|
|
55
53
|
const body = Buffer.concat([
|
|
56
54
|
Buffer.from('sim-v1'),
|
|
@@ -63,10 +61,10 @@ export async function runSimulation(
|
|
|
63
61
|
.map((t) => {
|
|
64
62
|
return 'contract_id' in t && 'code' in t ? runEval(t) : runTx(t);
|
|
65
63
|
})
|
|
66
|
-
.map((t) =>
|
|
64
|
+
.map((t) => serializeCVBytes(t)),
|
|
67
65
|
]);
|
|
68
66
|
body.writeBigUInt64BE(BigInt(block_height), 6);
|
|
69
|
-
const rs = await fetch(
|
|
67
|
+
const rs = await fetch(apiEndpoint, {
|
|
70
68
|
method: 'POST',
|
|
71
69
|
body,
|
|
72
70
|
}).then(async (rs) => {
|
|
@@ -80,10 +78,24 @@ export async function runSimulation(
|
|
|
80
78
|
return rs.id;
|
|
81
79
|
}
|
|
82
80
|
|
|
81
|
+
interface SimulationBuilderOptions {
|
|
82
|
+
apiEndpoint?: string;
|
|
83
|
+
stacksNodeAPI?: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
83
86
|
export class SimulationBuilder {
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
private apiEndpoint: string;
|
|
88
|
+
private stacksNodeAPI: string;
|
|
89
|
+
|
|
90
|
+
private constructor(options: SimulationBuilderOptions = {}) {
|
|
91
|
+
this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz/simulations';
|
|
92
|
+
this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';
|
|
86
93
|
}
|
|
94
|
+
|
|
95
|
+
public static new(options?: SimulationBuilderOptions) {
|
|
96
|
+
return new SimulationBuilder(options);
|
|
97
|
+
}
|
|
98
|
+
|
|
87
99
|
// biome-ignore lint/style/useNumberNamespace: <explanation>
|
|
88
100
|
private block = NaN;
|
|
89
101
|
private sender = '';
|
|
@@ -200,11 +212,13 @@ export class SimulationBuilder {
|
|
|
200
212
|
|
|
201
213
|
private async getBlockInfo() {
|
|
202
214
|
if (Number.isNaN(this.block)) {
|
|
203
|
-
const { stacks_tip_height } = await getNodeInfo(
|
|
215
|
+
const { stacks_tip_height } = await getNodeInfo({
|
|
216
|
+
stacksEndpoint: this.stacksNodeAPI,
|
|
217
|
+
});
|
|
204
218
|
this.block = stacks_tip_height;
|
|
205
219
|
}
|
|
206
220
|
const info: Block = await richFetch(
|
|
207
|
-
|
|
221
|
+
`${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`
|
|
208
222
|
).then((r) => r.json());
|
|
209
223
|
if (
|
|
210
224
|
info.height !== this.block ||
|
|
@@ -238,12 +252,12 @@ To get in touch: contact@stxer.xyz
|
|
|
238
252
|
console.log(
|
|
239
253
|
`Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`
|
|
240
254
|
);
|
|
241
|
-
const txs: (
|
|
255
|
+
const txs: (StacksTransactionWire | SimulationEval)[] = [];
|
|
242
256
|
const nonce_by_address = new Map<string, number>();
|
|
243
257
|
const nextNonce = async (sender: string) => {
|
|
244
|
-
|
|
258
|
+
const nonce = nonce_by_address.get(sender);
|
|
245
259
|
if (nonce == null) {
|
|
246
|
-
const url =
|
|
260
|
+
const url = `${this.stacksNodeAPI}/v2/accounts/${sender}?proof=${false}&tip=${
|
|
247
261
|
block.index_block_hash
|
|
248
262
|
}`;
|
|
249
263
|
const account: AccountDataResponse = await richFetch(url).then((r) =>
|
|
@@ -265,10 +279,9 @@ To get in touch: contact@stxer.xyz
|
|
|
265
279
|
functionName: step.function_name,
|
|
266
280
|
functionArgs: step.function_args ?? [],
|
|
267
281
|
nonce,
|
|
268
|
-
network:
|
|
282
|
+
network: STACKS_MAINNET,
|
|
269
283
|
publicKey: '',
|
|
270
284
|
postConditionMode: PostConditionMode.Allow,
|
|
271
|
-
anchorMode: AnchorMode.Any,
|
|
272
285
|
fee: step.fee,
|
|
273
286
|
});
|
|
274
287
|
tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
|
|
@@ -279,9 +292,8 @@ To get in touch: contact@stxer.xyz
|
|
|
279
292
|
recipient: step.recipient,
|
|
280
293
|
amount: step.amount,
|
|
281
294
|
nonce,
|
|
282
|
-
network:
|
|
295
|
+
network: STACKS_MAINNET,
|
|
283
296
|
publicKey: '',
|
|
284
|
-
anchorMode: AnchorMode.Any,
|
|
285
297
|
fee: step.fee,
|
|
286
298
|
});
|
|
287
299
|
tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
|
|
@@ -292,10 +304,9 @@ To get in touch: contact@stxer.xyz
|
|
|
292
304
|
contractName: step.contract_name,
|
|
293
305
|
codeBody: step.source_code,
|
|
294
306
|
nonce,
|
|
295
|
-
network:
|
|
307
|
+
network: STACKS_MAINNET,
|
|
296
308
|
publicKey: '',
|
|
297
309
|
postConditionMode: PostConditionMode.Allow,
|
|
298
|
-
anchorMode: AnchorMode.Any,
|
|
299
310
|
fee: step.fee,
|
|
300
311
|
});
|
|
301
312
|
tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
|
|
@@ -303,10 +314,16 @@ To get in touch: contact@stxer.xyz
|
|
|
303
314
|
} else if ('code' in step) {
|
|
304
315
|
txs.push(step);
|
|
305
316
|
} else {
|
|
317
|
+
// biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
|
|
306
318
|
console.log(`Invalid simulation step:`, step);
|
|
307
319
|
}
|
|
308
320
|
}
|
|
309
|
-
const id = await runSimulation(
|
|
321
|
+
const id = await runSimulation(
|
|
322
|
+
this.apiEndpoint,
|
|
323
|
+
block.block_hash,
|
|
324
|
+
block.block_height,
|
|
325
|
+
txs
|
|
326
|
+
);
|
|
310
327
|
console.log(
|
|
311
328
|
`Simulation will be available at: https://stxer.xyz/simulations/mainnet/${id}`
|
|
312
329
|
);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { uintCV } from "@stacks/transactions";
|
|
2
|
+
import { SimulationBuilder } from "..";
|
|
3
|
+
|
|
4
|
+
SimulationBuilder.new()
|
|
5
|
+
.withSender('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER')
|
|
6
|
+
.addContractDeploy({
|
|
7
|
+
contract_name: 'test-simulation',
|
|
8
|
+
source_code: `
|
|
9
|
+
;; counter example
|
|
10
|
+
(define-data-var counter uint u0)
|
|
11
|
+
|
|
12
|
+
(define-public (increment (delta uint))
|
|
13
|
+
(begin
|
|
14
|
+
(var-set counter (+ (var-get counter) delta))
|
|
15
|
+
(ok (var-get counter))))
|
|
16
|
+
|
|
17
|
+
(define-public (decrement)
|
|
18
|
+
(begin
|
|
19
|
+
(var-set counter (- (var-get counter) u1))
|
|
20
|
+
(ok (var-get counter))))
|
|
21
|
+
|
|
22
|
+
(define-read-only (get-counter)
|
|
23
|
+
(ok (var-get counter)))
|
|
24
|
+
`,
|
|
25
|
+
})
|
|
26
|
+
.addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
|
|
27
|
+
.addContractCall({
|
|
28
|
+
contract_id: 'SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation',
|
|
29
|
+
function_name: 'increment',
|
|
30
|
+
function_args: [uintCV(10)],
|
|
31
|
+
})
|
|
32
|
+
.addEvalCode('SP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER.test-simulation', '(get-counter)')
|
|
33
|
+
.run()
|
|
34
|
+
.catch(console.error);
|