stxer 0.3.0 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/batch-api.ts","../src/simulation.ts"],"sourcesContent":["import {\n type ClarityValue,\n type ContractPrincipalCV,\n deserializeCV,\n type OptionalCV,\n serializeCV,\n } from '@stacks/transactions';\n \n export interface BatchReads {\n variables?: {\n contract: ContractPrincipalCV;\n variableName: string;\n }[];\n maps?: {\n contract: ContractPrincipalCV;\n mapName: string;\n mapKey: ClarityValue;\n }[];\n index_block_hash?: string;\n }\n \n export interface BatchReadsResult {\n variables: (ClarityValue | Error)[];\n maps: (OptionalCV | Error)[];\n }\n \n export interface BatchApiOptions {\n stxerApi?: string;\n }\n \n const DEFAULT_STXER_API = 'https://api.stxer.xyz';\n \n export async function batchRead(\n reads: BatchReads,\n options: BatchApiOptions = {}\n ): Promise<BatchReadsResult> {\n const payload: string[][] = [];\n if (reads.variables != null) {\n for (const variable of reads.variables) {\n payload.push([serializeCV(variable.contract), variable.variableName]);\n }\n }\n if (reads.maps != null) {\n for (const map of reads.maps) {\n payload.push([\n serializeCV(map.contract),\n map.mapName,\n serializeCV(map.mapKey),\n ]);\n }\n }\n \n const ibh =\n reads.index_block_hash == null\n ? null\n : reads.index_block_hash.startsWith('0x')\n ? reads.index_block_hash.substring(2)\n : reads.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-reads${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch reads failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: BatchReadsResult = {\n variables: [],\n maps: [],\n };\n let variablesLength = 0;\n if (reads.variables != null) {\n variablesLength = reads.variables.length;\n for (let i = 0; i < variablesLength; i++) {\n const result = results[i];\n if ('Ok' in result) {\n rs.variables.push(deserializeCV(result.Ok));\n } else {\n rs.variables.push(new Error(result.Err));\n }\n }\n }\n if (reads.maps != null) {\n for (let i = 0; i < reads.maps.length; i++) {\n const result = results[i + variablesLength];\n if ('Ok' in result) {\n rs.maps.push(deserializeCV(result.Ok) as OptionalCV);\n } else {\n rs.maps.push(new Error(result.Err));\n }\n }\n }\n return rs;\n }\n \n export interface BatchReadonlyRequest {\n readonly: {\n contract: ContractPrincipalCV;\n functionName: string;\n functionArgs: ClarityValue[];\n }[];\n index_block_hash?: string;\n }\n \n export async function batchReadonly(\n req: BatchReadonlyRequest,\n options: BatchApiOptions = {}\n ): Promise<(ClarityValue | Error)[]> {\n const payload = req.readonly.map((r) => [\n serializeCV(r.contract),\n r.functionName,\n ...r.functionArgs.map((arg) => serializeCV(arg)),\n ]);\n \n const ibh =\n req.index_block_hash == null\n ? null\n : req.index_block_hash.startsWith('0x')\n ? req.index_block_hash.substring(2)\n : req.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-readonly${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch readonly failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: (ClarityValue | Error)[] = [];\n for (const result of results) {\n if ('Ok' in result) {\n rs.push(deserializeCV(result.Ok));\n } else {\n rs.push(new Error(result.Err));\n }\n }\n return rs;\n }\n ","import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport {\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // Replace non-null assertion with null check\n const matches = hashHex.match(/.{1,2}/g);\n if (!matches) {\n throw new Error('Invalid block hash format');\n }\n const hashBytes = new Uint8Array(\n matches.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n clarity_version: ClarityVersion;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n clarity_version?: ClarityVersion;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${\n this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n\n public pipe(transform: (builder: SimulationBuilder) => SimulationBuilder): SimulationBuilder {\n return transform(this);\n }\n}\n"],"names":["DEFAULT_STXER_API","_batchRead","_asyncToGenerator","_regeneratorRuntime","mark","_callee","reads","options","payload","variables","_iterator","_createForOfIteratorHelperLoose","_step","done","push","serializeCV","variable","value","contract","variableName","maps","_iterator2","_step2","map","mapName","mapKey","ibh","index_block_hash","startsWith","substring","url","_options$stxerApi","stxerApi","_context","next","fetch","method","body","JSON","stringify","data","sent","text","includes","Error","results","parse","rs","variablesLength","length","i","result","deserializeCV","Ok","Err","abrupt","stop","apply","this","arguments","_batchReadonly","_callee2","req","readonly","r","functionName","concat","functionArgs","arg","_options$stxerApi2","_context2","_iterator3","_step3","runTx","tx","tupleCV","type","uintCV","bufferCV","serializeBytes","runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","serializeCVBytes","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_x4","_runSimulation","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","hashHex","matches","hashBytes","txBytes","totalLength","offset","wrap","_context5","prev","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","match","byte","Number","parseInt","t","reduce","acc","curr","set","then","_ref3","_callee4","response","_context4","_x6","id","SimulationBuilder","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","getBlockInfo","_getBlockInfo","info","isNaN","getNodeInfo","stacksEndpoint","stacks_tip_height","richFetch","json","height","hash","run","_run","_callee3","nonce_by_address","nextNonce","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_this","_context3","console","log","Map","_ref2","account","get","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","makeUnsignedContractCall","function_name","function_args","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code","pipe","transform"],"mappings":"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"}
1
+ {"version":3,"file":"stxer.cjs.production.min.js","sources":["../src/batch-api.ts","../src/simulation.ts"],"sourcesContent":["import {\n type ClarityValue,\n type ContractPrincipalCV,\n deserializeCV,\n type OptionalCV,\n serializeCV,\n } from '@stacks/transactions';\n \n export interface BatchReads {\n variables?: {\n contract: ContractPrincipalCV;\n variableName: string;\n }[];\n maps?: {\n contract: ContractPrincipalCV;\n mapName: string;\n mapKey: ClarityValue;\n }[];\n index_block_hash?: string;\n }\n \n export interface BatchReadsResult {\n variables: (ClarityValue | Error)[];\n maps: (OptionalCV | Error)[];\n }\n \n export interface BatchApiOptions {\n stxerApi?: string;\n }\n \n const DEFAULT_STXER_API = 'https://api.stxer.xyz';\n \n export async function batchRead(\n reads: BatchReads,\n options: BatchApiOptions = {}\n ): Promise<BatchReadsResult> {\n const payload: string[][] = [];\n if (reads.variables != null) {\n for (const variable of reads.variables) {\n payload.push([serializeCV(variable.contract), variable.variableName]);\n }\n }\n if (reads.maps != null) {\n for (const map of reads.maps) {\n payload.push([\n serializeCV(map.contract),\n map.mapName,\n serializeCV(map.mapKey),\n ]);\n }\n }\n \n const ibh =\n reads.index_block_hash == null\n ? null\n : reads.index_block_hash.startsWith('0x')\n ? reads.index_block_hash.substring(2)\n : reads.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-reads${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch reads failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: BatchReadsResult = {\n variables: [],\n maps: [],\n };\n let variablesLength = 0;\n if (reads.variables != null) {\n variablesLength = reads.variables.length;\n for (let i = 0; i < variablesLength; i++) {\n const result = results[i];\n if ('Ok' in result) {\n rs.variables.push(deserializeCV(result.Ok));\n } else {\n rs.variables.push(new Error(result.Err));\n }\n }\n }\n if (reads.maps != null) {\n for (let i = 0; i < reads.maps.length; i++) {\n const result = results[i + variablesLength];\n if ('Ok' in result) {\n rs.maps.push(deserializeCV(result.Ok) as OptionalCV);\n } else {\n rs.maps.push(new Error(result.Err));\n }\n }\n }\n return rs;\n }\n \n export interface BatchReadonlyRequest {\n readonly: {\n contract: ContractPrincipalCV;\n functionName: string;\n functionArgs: ClarityValue[];\n }[];\n index_block_hash?: string;\n }\n \n export async function batchReadonly(\n req: BatchReadonlyRequest,\n options: BatchApiOptions = {}\n ): Promise<(ClarityValue | Error)[]> {\n const payload = req.readonly.map((r) => [\n serializeCV(r.contract),\n r.functionName,\n ...r.functionArgs.map((arg) => serializeCV(arg)),\n ]);\n \n const ibh =\n req.index_block_hash == null\n ? null\n : req.index_block_hash.startsWith('0x')\n ? req.index_block_hash.substring(2)\n : req.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-readonly${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch readonly failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: (ClarityValue | Error)[] = [];\n for (const result of results) {\n if ('Ok' in result) {\n rs.push(deserializeCV(result.Ok));\n } else {\n rs.push(new Error(result.Err));\n }\n }\n return rs;\n }\n ","import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport {\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n deserializeTransaction,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // Replace non-null assertion with null check\n const matches = hashHex.match(/.{1,2}/g);\n if (!matches) {\n throw new Error('Invalid block hash format');\n }\n const hashBytes = new Uint8Array(\n matches.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // inline simulation\n simulationId: string;\n }\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n clarity_version: ClarityVersion;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public inlineSimulation(simulationId: string) {\n this.steps.push({\n simulationId,\n })\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n clarity_version?: ClarityVersion;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\n for (const step of this.steps) {\n if ('simulationId' in step) {\n const previousSimulation: {steps: ({tx: string} | {code: string, contract: string})[]} = await fetch(`https://api.stxer.xyz/simulations/${step.simulationId}/request`).then(x => x.json())\n for (const step of previousSimulation.steps) {\n if ('tx' in step) {\n txs.push(deserializeTransaction(step.tx));\n } else if ('code' in step && 'contract' in step) {\n txs.push({\n contract_id: step.contract,\n code: step.code,\n });\n }\n }\n } else if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n\n public pipe(transform: (builder: SimulationBuilder) => SimulationBuilder): SimulationBuilder {\n return transform(this);\n }\n}\n"],"names":["DEFAULT_STXER_API","_batchRead","_asyncToGenerator","_regeneratorRuntime","mark","_callee","reads","options","payload","variables","_iterator","_createForOfIteratorHelperLoose","_step","done","push","serializeCV","variable","value","contract","variableName","maps","_iterator2","_step2","map","mapName","mapKey","ibh","index_block_hash","startsWith","substring","url","_options$stxerApi","stxerApi","_context","next","fetch","method","body","JSON","stringify","data","sent","text","includes","Error","results","parse","rs","variablesLength","length","i","result","deserializeCV","Ok","Err","abrupt","stop","apply","this","arguments","_batchReadonly","_callee2","req","readonly","r","functionName","concat","functionArgs","arg","_options$stxerApi2","_context2","_iterator3","_step3","runTx","tx","tupleCV","type","uintCV","bufferCV","serializeBytes","runEval","_ref","code","_contract_id$split","contract_id","split","contract_address","contract_name","serializeCVBytes","contractPrincipalCV","stringAsciiCV","runSimulation","_x","_x2","_x3","_x4","_runSimulation","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","hashHex","matches","hashBytes","txBytes","totalLength","offset","_step4","wrap","_context5","prev","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","match","byte","Number","parseInt","t","reduce","acc","curr","set","then","_ref3","_callee4","response","_context4","_x6","id","SimulationBuilder","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","block","NaN","sender","steps","_proto","prototype","useBlockHeight","withSender","address","inlineSimulation","simulationId","addSTXTransfer","params","_params$sender","_params$fee","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","getBlockInfo","_getBlockInfo","info","isNaN","getNodeInfo","stacksEndpoint","stacks_tip_height","richFetch","json","height","hash","run","_run","_callee3","nonce_by_address","nextNonce","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_this","_context3","console","log","Map","_ref2","account","get","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","x","deserializeTransaction","makeUnsignedContractCall","function_name","function_args","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code","pipe","transform"],"mappings":"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"}
package/dist/stxer.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { deserializeCV, serializeCV, tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, ClarityVersion, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall } from '@stacks/transactions';
1
+ import { deserializeCV, serializeCV, tupleCV, uintCV, bufferCV, serializeCVBytes, contractPrincipalCV, stringAsciiCV, ClarityVersion, makeUnsignedContractDeploy, PostConditionMode, makeUnsignedSTXTokenTransfer, makeUnsignedContractCall, deserializeTransaction } from '@stacks/transactions';
2
2
  import { richFetch, getNodeInfo } from 'ts-clarity';
3
3
  import { STACKS_MAINNET, STACKS_TESTNET } from '@stacks/network';
4
4
  import { c32addressDecode } from 'c32check';
@@ -534,7 +534,7 @@ function runSimulation(_x, _x2, _x3, _x4) {
534
534
  }
535
535
  function _runSimulation() {
536
536
  _runSimulation = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(apiEndpoint, block_hash, block_height, txs) {
537
- var header, heightBytes, view, hashHex, matches, hashBytes, txBytes, totalLength, body, offset, _iterator2, _step2, tx, rs;
537
+ var header, heightBytes, view, hashHex, matches, hashBytes, txBytes, totalLength, body, offset, _iterator3, _step4, tx, rs;
538
538
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
539
539
  while (1) switch (_context5.prev = _context5.next) {
540
540
  case 0:
@@ -571,8 +571,8 @@ function _runSimulation() {
571
571
  offset += heightBytes.length;
572
572
  body.set(hashBytes, offset);
573
573
  offset += hashBytes.length;
574
- for (_iterator2 = _createForOfIteratorHelperLoose(txBytes); !(_step2 = _iterator2()).done;) {
575
- tx = _step2.value;
574
+ for (_iterator3 = _createForOfIteratorHelperLoose(txBytes); !(_step4 = _iterator3()).done;) {
575
+ tx = _step4.value;
576
576
  body.set(tx, offset);
577
577
  offset += tx.length;
578
578
  }
@@ -647,6 +647,12 @@ var SimulationBuilder = /*#__PURE__*/function () {
647
647
  this.sender = address;
648
648
  return this;
649
649
  };
650
+ _proto.inlineSimulation = function inlineSimulation(simulationId) {
651
+ this.steps.push({
652
+ simulationId: simulationId
653
+ });
654
+ return this;
655
+ };
650
656
  _proto.addSTXTransfer = function addSTXTransfer(params) {
651
657
  var _params$sender, _params$fee;
652
658
  if (params.sender == null && this.sender === '') {
@@ -752,7 +758,7 @@ var SimulationBuilder = /*#__PURE__*/function () {
752
758
  _proto.run = /*#__PURE__*/function () {
753
759
  var _run = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
754
760
  var _this = this;
755
- var block, txs, nonce_by_address, nextNonce, _iterator, _step, step, network, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
761
+ var block, txs, nonce_by_address, nextNonce, network, _iterator, _step, step, previousSimulation, _iterator2, _step2, _step3, _step$function_args, nonce, _step$contract_id$spl, contractAddress, contractName, tx, _nonce, _tx, _nonce2, _tx2, id;
756
762
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
757
763
  while (1) switch (_context3.prev = _context3.next) {
758
764
  case 0:
@@ -797,13 +803,6 @@ var SimulationBuilder = /*#__PURE__*/function () {
797
803
  return _ref2.apply(this, arguments);
798
804
  };
799
805
  }();
800
- _iterator = _createForOfIteratorHelperLoose(this.steps);
801
- case 9:
802
- if ((_step = _iterator()).done) {
803
- _context3.next = 50;
804
- break;
805
- }
806
- step = _step.value;
807
806
  network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;
808
807
  if (this.stacksNodeAPI) {
809
808
  network = _extends({}, network, {
@@ -812,16 +811,47 @@ var SimulationBuilder = /*#__PURE__*/function () {
812
811
  })
813
812
  });
814
813
  }
815
- if (!('sender' in step && 'function_name' in step)) {
816
- _context3.next = 25;
814
+ _iterator = _createForOfIteratorHelperLoose(this.steps);
815
+ case 11:
816
+ if ((_step = _iterator()).done) {
817
+ _context3.next = 57;
818
+ break;
819
+ }
820
+ step = _step.value;
821
+ if (!('simulationId' in step)) {
822
+ _context3.next = 20;
817
823
  break;
818
824
  }
819
825
  _context3.next = 16;
820
- return nextNonce(step.sender);
826
+ return fetch("https://api.stxer.xyz/simulations/" + step.simulationId + "/request").then(function (x) {
827
+ return x.json();
828
+ });
821
829
  case 16:
830
+ previousSimulation = _context3.sent;
831
+ for (_iterator2 = _createForOfIteratorHelperLoose(previousSimulation.steps); !(_step2 = _iterator2()).done;) {
832
+ _step3 = _step2.value;
833
+ if ('tx' in _step3) {
834
+ txs.push(deserializeTransaction(_step3.tx));
835
+ } else if ('code' in _step3 && 'contract' in _step3) {
836
+ txs.push({
837
+ contract_id: _step3.contract,
838
+ code: _step3.code
839
+ });
840
+ }
841
+ }
842
+ _context3.next = 55;
843
+ break;
844
+ case 20:
845
+ if (!('sender' in step && 'function_name' in step)) {
846
+ _context3.next = 32;
847
+ break;
848
+ }
849
+ _context3.next = 23;
850
+ return nextNonce(step.sender);
851
+ case 23:
822
852
  nonce = _context3.sent;
823
853
  _step$contract_id$spl = step.contract_id.split('.'), contractAddress = _step$contract_id$spl[0], contractName = _step$contract_id$spl[1];
824
- _context3.next = 20;
854
+ _context3.next = 27;
825
855
  return makeUnsignedContractCall({
826
856
  contractAddress: contractAddress,
827
857
  contractName: contractName,
@@ -833,22 +863,22 @@ var SimulationBuilder = /*#__PURE__*/function () {
833
863
  postConditionMode: PostConditionMode.Allow,
834
864
  fee: step.fee
835
865
  });
836
- case 20:
866
+ case 27:
837
867
  tx = _context3.sent;
838
868
  tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
839
869
  txs.push(tx);
840
- _context3.next = 48;
870
+ _context3.next = 55;
841
871
  break;
842
- case 25:
872
+ case 32:
843
873
  if (!('sender' in step && 'recipient' in step)) {
844
- _context3.next = 36;
874
+ _context3.next = 43;
845
875
  break;
846
876
  }
847
- _context3.next = 28;
877
+ _context3.next = 35;
848
878
  return nextNonce(step.sender);
849
- case 28:
879
+ case 35:
850
880
  _nonce = _context3.sent;
851
- _context3.next = 31;
881
+ _context3.next = 38;
852
882
  return makeUnsignedSTXTokenTransfer({
853
883
  recipient: step.recipient,
854
884
  amount: step.amount,
@@ -857,22 +887,22 @@ var SimulationBuilder = /*#__PURE__*/function () {
857
887
  publicKey: '',
858
888
  fee: step.fee
859
889
  });
860
- case 31:
890
+ case 38:
861
891
  _tx = _context3.sent;
862
892
  _tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];
863
893
  txs.push(_tx);
864
- _context3.next = 48;
894
+ _context3.next = 55;
865
895
  break;
866
- case 36:
896
+ case 43:
867
897
  if (!('deployer' in step)) {
868
- _context3.next = 47;
898
+ _context3.next = 54;
869
899
  break;
870
900
  }
871
- _context3.next = 39;
901
+ _context3.next = 46;
872
902
  return nextNonce(step.deployer);
873
- case 39:
903
+ case 46:
874
904
  _nonce2 = _context3.sent;
875
- _context3.next = 42;
905
+ _context3.next = 49;
876
906
  return makeUnsignedContractDeploy({
877
907
  contractName: step.contract_name,
878
908
  codeBody: step.source_code,
@@ -882,30 +912,30 @@ var SimulationBuilder = /*#__PURE__*/function () {
882
912
  postConditionMode: PostConditionMode.Allow,
883
913
  fee: step.fee
884
914
  });
885
- case 42:
915
+ case 49:
886
916
  _tx2 = _context3.sent;
887
917
  _tx2.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];
888
918
  txs.push(_tx2);
889
- _context3.next = 48;
919
+ _context3.next = 55;
890
920
  break;
891
- case 47:
921
+ case 54:
892
922
  if ('code' in step) {
893
923
  txs.push(step);
894
924
  } else {
895
925
  // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>
896
926
  console.log("Invalid simulation step:", step);
897
927
  }
898
- case 48:
899
- _context3.next = 9;
928
+ case 55:
929
+ _context3.next = 11;
900
930
  break;
901
- case 50:
902
- _context3.next = 52;
931
+ case 57:
932
+ _context3.next = 59;
903
933
  return runSimulation(this.apiEndpoint + "/simulations", block.block_hash, block.block_height, txs);
904
- case 52:
934
+ case 59:
905
935
  id = _context3.sent;
906
936
  console.log("Simulation will be available at: https://stxer.xyz/simulations/" + this.network + "/" + id);
907
937
  return _context3.abrupt("return", id);
908
- case 55:
938
+ case 62:
909
939
  case "end":
910
940
  return _context3.stop();
911
941
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stxer.esm.js","sources":["../src/batch-api.ts","../src/simulation.ts"],"sourcesContent":["import {\n type ClarityValue,\n type ContractPrincipalCV,\n deserializeCV,\n type OptionalCV,\n serializeCV,\n } from '@stacks/transactions';\n \n export interface BatchReads {\n variables?: {\n contract: ContractPrincipalCV;\n variableName: string;\n }[];\n maps?: {\n contract: ContractPrincipalCV;\n mapName: string;\n mapKey: ClarityValue;\n }[];\n index_block_hash?: string;\n }\n \n export interface BatchReadsResult {\n variables: (ClarityValue | Error)[];\n maps: (OptionalCV | Error)[];\n }\n \n export interface BatchApiOptions {\n stxerApi?: string;\n }\n \n const DEFAULT_STXER_API = 'https://api.stxer.xyz';\n \n export async function batchRead(\n reads: BatchReads,\n options: BatchApiOptions = {}\n ): Promise<BatchReadsResult> {\n const payload: string[][] = [];\n if (reads.variables != null) {\n for (const variable of reads.variables) {\n payload.push([serializeCV(variable.contract), variable.variableName]);\n }\n }\n if (reads.maps != null) {\n for (const map of reads.maps) {\n payload.push([\n serializeCV(map.contract),\n map.mapName,\n serializeCV(map.mapKey),\n ]);\n }\n }\n \n const ibh =\n reads.index_block_hash == null\n ? null\n : reads.index_block_hash.startsWith('0x')\n ? reads.index_block_hash.substring(2)\n : reads.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-reads${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch reads failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: BatchReadsResult = {\n variables: [],\n maps: [],\n };\n let variablesLength = 0;\n if (reads.variables != null) {\n variablesLength = reads.variables.length;\n for (let i = 0; i < variablesLength; i++) {\n const result = results[i];\n if ('Ok' in result) {\n rs.variables.push(deserializeCV(result.Ok));\n } else {\n rs.variables.push(new Error(result.Err));\n }\n }\n }\n if (reads.maps != null) {\n for (let i = 0; i < reads.maps.length; i++) {\n const result = results[i + variablesLength];\n if ('Ok' in result) {\n rs.maps.push(deserializeCV(result.Ok) as OptionalCV);\n } else {\n rs.maps.push(new Error(result.Err));\n }\n }\n }\n return rs;\n }\n \n export interface BatchReadonlyRequest {\n readonly: {\n contract: ContractPrincipalCV;\n functionName: string;\n functionArgs: ClarityValue[];\n }[];\n index_block_hash?: string;\n }\n \n export async function batchReadonly(\n req: BatchReadonlyRequest,\n options: BatchApiOptions = {}\n ): Promise<(ClarityValue | Error)[]> {\n const payload = req.readonly.map((r) => [\n serializeCV(r.contract),\n r.functionName,\n ...r.functionArgs.map((arg) => serializeCV(arg)),\n ]);\n \n const ibh =\n req.index_block_hash == null\n ? null\n : req.index_block_hash.startsWith('0x')\n ? req.index_block_hash.substring(2)\n : req.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-readonly${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch readonly failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: (ClarityValue | Error)[] = [];\n for (const result of results) {\n if ('Ok' in result) {\n rs.push(deserializeCV(result.Ok));\n } else {\n rs.push(new Error(result.Err));\n }\n }\n return rs;\n }\n ","import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport {\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // Replace non-null assertion with null check\n const matches = hashHex.match(/.{1,2}/g);\n if (!matches) {\n throw new Error('Invalid block hash format');\n }\n const hashBytes = new Uint8Array(\n matches.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n clarity_version: ClarityVersion;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n clarity_version?: ClarityVersion;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${\n this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n for (const step of this.steps) {\n let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\n if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n\n public pipe(transform: (builder: SimulationBuilder) => SimulationBuilder): SimulationBuilder {\n return transform(this);\n }\n}\n"],"names":["DEFAULT_STXER_API","batchRead","_x","_x2","_batchRead","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","reads","options","payload","variables","_iterator","_createForOfIteratorHelperLoose","_step","done","variable","value","push","serializeCV","contract","variableName","maps","_iterator2","_step2","map","mapName","mapKey","ibh","index_block_hash","startsWith","substring","url","_options$stxerApi","stxerApi","_context","next","fetch","method","body","JSON","stringify","data","sent","text","includes","Error","results","parse","rs","variablesLength","length","i","result","deserializeCV","Ok","Err","abrupt","stop","batchReadonly","_x3","_x4","_batchReadonly","_callee2","req","readonly","r","functionName","concat","functionArgs","arg","_options$stxerApi2","_context2","_iterator3","_step3","runTx","tx","tupleCV","type","uintCV","bufferCV","serializeBytes","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCVBytes","contractPrincipalCV","stringAsciiCV","runSimulation","_runSimulation","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","matches","hashBytes","txBytes","totalLength","offset","wrap","_callee5$","_context5","prev","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","match","byte","Number","parseInt","t","reduce","acc","curr","set","then","_ref3","_callee4","response","_callee4$","_context4","_x6","id","SimulationBuilder","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","addSTXTransfer","params","_params$sender","_params$fee","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","getBlockInfo","_getBlockInfo","_yield$getNodeInfo","stacks_tip_height","info","_callee$","isNaN","getNodeInfo","stacksEndpoint","richFetch","json","height","hash","run","_run","_callee3","_this","nonce_by_address","nextNonce","step","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","account","_callee2$","get","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","makeUnsignedContractCall","function_name","function_args","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code","pipe","transform"],"mappings":"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"}
1
+ {"version":3,"file":"stxer.esm.js","sources":["../src/batch-api.ts","../src/simulation.ts"],"sourcesContent":["import {\n type ClarityValue,\n type ContractPrincipalCV,\n deserializeCV,\n type OptionalCV,\n serializeCV,\n } from '@stacks/transactions';\n \n export interface BatchReads {\n variables?: {\n contract: ContractPrincipalCV;\n variableName: string;\n }[];\n maps?: {\n contract: ContractPrincipalCV;\n mapName: string;\n mapKey: ClarityValue;\n }[];\n index_block_hash?: string;\n }\n \n export interface BatchReadsResult {\n variables: (ClarityValue | Error)[];\n maps: (OptionalCV | Error)[];\n }\n \n export interface BatchApiOptions {\n stxerApi?: string;\n }\n \n const DEFAULT_STXER_API = 'https://api.stxer.xyz';\n \n export async function batchRead(\n reads: BatchReads,\n options: BatchApiOptions = {}\n ): Promise<BatchReadsResult> {\n const payload: string[][] = [];\n if (reads.variables != null) {\n for (const variable of reads.variables) {\n payload.push([serializeCV(variable.contract), variable.variableName]);\n }\n }\n if (reads.maps != null) {\n for (const map of reads.maps) {\n payload.push([\n serializeCV(map.contract),\n map.mapName,\n serializeCV(map.mapKey),\n ]);\n }\n }\n \n const ibh =\n reads.index_block_hash == null\n ? null\n : reads.index_block_hash.startsWith('0x')\n ? reads.index_block_hash.substring(2)\n : reads.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-reads${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch reads failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: BatchReadsResult = {\n variables: [],\n maps: [],\n };\n let variablesLength = 0;\n if (reads.variables != null) {\n variablesLength = reads.variables.length;\n for (let i = 0; i < variablesLength; i++) {\n const result = results[i];\n if ('Ok' in result) {\n rs.variables.push(deserializeCV(result.Ok));\n } else {\n rs.variables.push(new Error(result.Err));\n }\n }\n }\n if (reads.maps != null) {\n for (let i = 0; i < reads.maps.length; i++) {\n const result = results[i + variablesLength];\n if ('Ok' in result) {\n rs.maps.push(deserializeCV(result.Ok) as OptionalCV);\n } else {\n rs.maps.push(new Error(result.Err));\n }\n }\n }\n return rs;\n }\n \n export interface BatchReadonlyRequest {\n readonly: {\n contract: ContractPrincipalCV;\n functionName: string;\n functionArgs: ClarityValue[];\n }[];\n index_block_hash?: string;\n }\n \n export async function batchReadonly(\n req: BatchReadonlyRequest,\n options: BatchApiOptions = {}\n ): Promise<(ClarityValue | Error)[]> {\n const payload = req.readonly.map((r) => [\n serializeCV(r.contract),\n r.functionName,\n ...r.functionArgs.map((arg) => serializeCV(arg)),\n ]);\n \n const ibh =\n req.index_block_hash == null\n ? null\n : req.index_block_hash.startsWith('0x')\n ? req.index_block_hash.substring(2)\n : req.index_block_hash;\n \n const url = `${options.stxerApi ?? DEFAULT_STXER_API}/sidecar/v2/batch-readonly${\n ibh == null ? '' : `?tip=${ibh}`\n }`;\n const data = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(payload),\n });\n const text = await data.text();\n if (!text.includes('Ok') && !text.includes('Err')) {\n throw new Error(\n `Requesting batch readonly failed: ${text}, url: ${url}, payload: ${JSON.stringify(\n payload\n )}`\n );\n }\n const results = JSON.parse(text) as [{ Ok: string } | { Err: string }];\n const rs: (ClarityValue | Error)[] = [];\n for (const result of results) {\n if ('Ok' in result) {\n rs.push(deserializeCV(result.Ok));\n } else {\n rs.push(new Error(result.Err));\n }\n }\n return rs;\n }\n ","import { type AccountDataResponse, getNodeInfo, richFetch } from 'ts-clarity';\nimport type { Block } from '@stacks/stacks-blockchain-api-types';\nimport {\n STACKS_MAINNET,\n STACKS_TESTNET,\n type StacksNetworkName,\n} from '@stacks/network';\nimport {\n type ClarityValue,\n ClarityVersion,\n PostConditionMode,\n type StacksTransactionWire,\n bufferCV,\n contractPrincipalCV,\n deserializeTransaction,\n makeUnsignedContractCall,\n makeUnsignedContractDeploy,\n makeUnsignedSTXTokenTransfer,\n serializeCVBytes,\n stringAsciiCV,\n tupleCV,\n uintCV,\n} from '@stacks/transactions';\nimport { c32addressDecode } from 'c32check';\n\nfunction runTx(tx: StacksTransactionWire) {\n // type 0: run transaction\n return tupleCV({ type: uintCV(0), data: bufferCV(tx.serializeBytes()) });\n}\n\nexport interface SimulationEval {\n contract_id: string;\n code: string;\n}\n\nexport function runEval({ contract_id, code }: SimulationEval) {\n const [contract_address, contract_name] = contract_id.split('.');\n // type 1: eval arbitrary code inside a contract\n return tupleCV({\n type: uintCV(1),\n data: bufferCV(\n serializeCVBytes(\n tupleCV({\n contract: contractPrincipalCV(contract_address, contract_name),\n code: stringAsciiCV(code),\n })\n )\n ),\n });\n}\n\nexport async function runSimulation(\n apiEndpoint: string,\n block_hash: string,\n block_height: number,\n txs: (StacksTransactionWire | SimulationEval)[]\n) {\n // Convert 'sim-v1' to Uint8Array\n const header = new TextEncoder().encode('sim-v1');\n // Create 8 bytes for block height\n const heightBytes = new Uint8Array(8);\n // Convert block height to bytes\n const view = new DataView(heightBytes.buffer);\n view.setBigUint64(0, BigInt(block_height), false); // false for big-endian\n\n // Convert block hash to bytes\n const hashHex = block_hash.startsWith('0x')\n ? block_hash.substring(2)\n : block_hash;\n // Replace non-null assertion with null check\n const matches = hashHex.match(/.{1,2}/g);\n if (!matches) {\n throw new Error('Invalid block hash format');\n }\n const hashBytes = new Uint8Array(\n matches.map((byte) => Number.parseInt(byte, 16))\n );\n\n // Convert transactions to bytes\n const txBytes = txs\n .map((t) => ('contract_id' in t && 'code' in t ? runEval(t) : runTx(t)))\n .map((t) => serializeCVBytes(t));\n\n // Combine all byte arrays\n const totalLength =\n header.length +\n heightBytes.length +\n hashBytes.length +\n txBytes.reduce((acc, curr) => acc + curr.length, 0);\n const body = new Uint8Array(totalLength);\n\n let offset = 0;\n body.set(header, offset);\n offset += header.length;\n body.set(heightBytes, offset);\n offset += heightBytes.length;\n body.set(hashBytes, offset);\n offset += hashBytes.length;\n for (const tx of txBytes) {\n body.set(tx, offset);\n offset += tx.length;\n }\n\n const rs = await fetch(apiEndpoint, {\n method: 'POST',\n body,\n }).then(async (rs) => {\n const response = await rs.text();\n if (!response.startsWith('{')) {\n throw new Error(`failed to submit simulation: ${response}`);\n }\n return JSON.parse(response) as { id: string };\n });\n return rs.id;\n}\n\ninterface SimulationBuilderOptions {\n apiEndpoint?: string;\n stacksNodeAPI?: string;\n network?: StacksNetworkName | string;\n}\n\nexport class SimulationBuilder {\n private apiEndpoint: string;\n private stacksNodeAPI: string;\n private network: StacksNetworkName | string;\n\n private constructor(options: SimulationBuilderOptions = {}) {\n this.apiEndpoint = options.apiEndpoint ?? 'https://api.stxer.xyz';\n this.stacksNodeAPI = options.stacksNodeAPI ?? 'https://api.hiro.so';\n this.network = options.network ?? 'mainnet';\n }\n\n public static new(options?: SimulationBuilderOptions) {\n return new SimulationBuilder(options);\n }\n\n // biome-ignore lint/style/useNumberNamespace: <explanation>\n private block = NaN;\n private sender = '';\n private steps: (\n | {\n // inline simulation\n simulationId: string;\n }\n | {\n // contract call\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender: string;\n fee: number;\n }\n | {\n // contract deploy\n contract_name: string;\n source_code: string;\n deployer: string;\n fee: number;\n clarity_version: ClarityVersion;\n }\n | {\n // STX transfer\n recipient: string;\n amount: number;\n sender: string;\n fee: number;\n }\n | SimulationEval\n )[] = [];\n\n public useBlockHeight(block: number) {\n this.block = block;\n return this;\n }\n public withSender(address: string) {\n this.sender = address;\n return this;\n }\n public inlineSimulation(simulationId: string) {\n this.steps.push({\n simulationId,\n })\n return this;\n }\n public addSTXTransfer(params: {\n recipient: string;\n amount: number;\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractCall(params: {\n contract_id: string;\n function_name: string;\n function_args?: ClarityValue[];\n sender?: string;\n fee?: number;\n }) {\n if (params.sender == null && this.sender === '') {\n throw new Error(\n 'Please specify a sender with useSender or adding a sender paramenter'\n );\n }\n this.steps.push({\n ...params,\n sender: params.sender ?? this.sender,\n fee: params.fee ?? 0,\n });\n return this;\n }\n public addContractDeploy(params: {\n contract_name: string;\n source_code: string;\n deployer?: string;\n fee?: number;\n clarity_version?: ClarityVersion;\n }) {\n if (params.deployer == null && this.sender === '') {\n throw new Error(\n 'Please specify a deployer with useSender or adding a deployer paramenter'\n );\n }\n this.steps.push({\n ...params,\n deployer: params.deployer ?? this.sender,\n fee: params.fee ?? 0,\n clarity_version: params.clarity_version ?? ClarityVersion.Clarity3,\n });\n return this;\n }\n public addEvalCode(inside_contract_id: string, code: string) {\n this.steps.push({\n contract_id: inside_contract_id,\n code,\n });\n return this;\n }\n public addMapRead(contract_id: string, map: string, key: string) {\n this.steps.push({\n contract_id,\n code: `(map-get ${map} ${key})`,\n });\n return this;\n }\n public addVarRead(contract_id: string, variable: string) {\n this.steps.push({\n contract_id,\n code: `(var-get ${variable})`,\n });\n return this;\n }\n\n private async getBlockInfo() {\n if (Number.isNaN(this.block)) {\n const { stacks_tip_height } = await getNodeInfo({\n stacksEndpoint: this.stacksNodeAPI,\n });\n this.block = stacks_tip_height;\n }\n const info: Block = await richFetch(\n `${this.stacksNodeAPI}/extended/v1/block/by_height/${this.block}?unanchored=true`\n ).then((r) => r.json());\n if (\n info.height !== this.block ||\n typeof info.hash !== 'string' ||\n !info.hash.startsWith('0x')\n ) {\n throw new Error(\n `failed to get block info for block height ${this.block}`\n );\n }\n return {\n block_height: this.block,\n block_hash: info.hash.substring(2),\n index_block_hash: info.index_block_hash.substring(2),\n };\n }\n\n public async run() {\n console.log(\n `--------------------------------\nThis product can never exist without your support!\n\nWe receive sponsorship funds with:\nSP212Y5JKN59YP3GYG07K3S8W5SSGE4KH6B5STXER\n\nFeedbacks and feature requests are welcome.\nTo get in touch: contact@stxer.xyz\n--------------------------------`\n );\n const block = await this.getBlockInfo();\n console.log(\n `Using block height ${block.block_height} hash 0x${block.block_hash} to run simulation.`\n );\n const txs: (StacksTransactionWire | SimulationEval)[] = [];\n const nonce_by_address = new Map<string, number>();\n const nextNonce = async (sender: string) => {\n const nonce = nonce_by_address.get(sender);\n if (nonce == null) {\n const url = `${this.stacksNodeAPI\n }/v2/accounts/${sender}?proof=${false}&tip=${block.index_block_hash}`;\n const account: AccountDataResponse = await richFetch(url).then((r) =>\n r.json()\n );\n nonce_by_address.set(sender, account.nonce + 1);\n return account.nonce;\n }\n nonce_by_address.set(sender, nonce + 1);\n return nonce;\n };\n let network = this.network === 'mainnet' ? STACKS_MAINNET : STACKS_TESTNET;\n if (this.stacksNodeAPI) {\n network = {\n ...network,\n client: {\n ...network.client,\n baseUrl: this.stacksNodeAPI,\n },\n };\n }\n for (const step of this.steps) {\n if ('simulationId' in step) {\n const previousSimulation: {steps: ({tx: string} | {code: string, contract: string})[]} = await fetch(`https://api.stxer.xyz/simulations/${step.simulationId}/request`).then(x => x.json())\n for (const step of previousSimulation.steps) {\n if ('tx' in step) {\n txs.push(deserializeTransaction(step.tx));\n } else if ('code' in step && 'contract' in step) {\n txs.push({\n contract_id: step.contract,\n code: step.code,\n });\n }\n }\n } else if ('sender' in step && 'function_name' in step) {\n const nonce = await nextNonce(step.sender);\n const [contractAddress, contractName] = step.contract_id.split('.');\n const tx = await makeUnsignedContractCall({\n contractAddress,\n contractName,\n functionName: step.function_name,\n functionArgs: step.function_args ?? [],\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('sender' in step && 'recipient' in step) {\n const nonce = await nextNonce(step.sender);\n const tx = await makeUnsignedSTXTokenTransfer({\n recipient: step.recipient,\n amount: step.amount,\n nonce,\n network,\n publicKey: '',\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.sender)[1];\n txs.push(tx);\n } else if ('deployer' in step) {\n const nonce = await nextNonce(step.deployer);\n const tx = await makeUnsignedContractDeploy({\n contractName: step.contract_name,\n codeBody: step.source_code,\n nonce,\n network,\n publicKey: '',\n postConditionMode: PostConditionMode.Allow,\n fee: step.fee,\n });\n tx.auth.spendingCondition.signer = c32addressDecode(step.deployer)[1];\n txs.push(tx);\n } else if ('code' in step) {\n txs.push(step);\n } else {\n // biome-ignore lint/style/noUnusedTemplateLiteral: <explanation>\n console.log(`Invalid simulation step:`, step);\n }\n }\n const id = await runSimulation(\n `${this.apiEndpoint}/simulations`,\n block.block_hash,\n block.block_height,\n txs\n );\n console.log(\n `Simulation will be available at: https://stxer.xyz/simulations/${this.network}/${id}`\n );\n return id;\n }\n\n public pipe(transform: (builder: SimulationBuilder) => SimulationBuilder): SimulationBuilder {\n return transform(this);\n }\n}\n"],"names":["DEFAULT_STXER_API","batchRead","_x","_x2","_batchRead","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","reads","options","payload","variables","_iterator","_createForOfIteratorHelperLoose","_step","done","variable","value","push","serializeCV","contract","variableName","maps","_iterator2","_step2","map","mapName","mapKey","ibh","index_block_hash","startsWith","substring","url","_options$stxerApi","stxerApi","_context","next","fetch","method","body","JSON","stringify","data","sent","text","includes","Error","results","parse","rs","variablesLength","length","i","result","deserializeCV","Ok","Err","abrupt","stop","batchReadonly","_x3","_x4","_batchReadonly","_callee2","req","readonly","r","functionName","concat","functionArgs","arg","_options$stxerApi2","_context2","_iterator3","_step3","runTx","tx","tupleCV","type","uintCV","bufferCV","serializeBytes","runEval","_ref","contract_id","code","_contract_id$split","split","contract_address","contract_name","serializeCVBytes","contractPrincipalCV","stringAsciiCV","runSimulation","_runSimulation","_callee5","apiEndpoint","block_hash","block_height","txs","header","heightBytes","view","hashHex","matches","hashBytes","txBytes","totalLength","offset","_step4","wrap","_callee5$","_context5","prev","TextEncoder","encode","Uint8Array","DataView","buffer","setBigUint64","BigInt","match","byte","Number","parseInt","t","reduce","acc","curr","set","then","_ref3","_callee4","response","_callee4$","_context4","_x6","id","SimulationBuilder","_options$apiEndpoint","_options$stacksNodeAP","_options$network","stacksNodeAPI","network","block","NaN","sender","steps","new","_proto","prototype","useBlockHeight","withSender","address","inlineSimulation","simulationId","addSTXTransfer","params","_params$sender","_params$fee","_extends","fee","addContractCall","_params$sender2","_params$fee2","addContractDeploy","_params$deployer","_params$fee3","_params$clarity_versi","deployer","clarity_version","ClarityVersion","Clarity3","addEvalCode","inside_contract_id","addMapRead","key","addVarRead","getBlockInfo","_getBlockInfo","_yield$getNodeInfo","stacks_tip_height","info","_callee$","isNaN","getNodeInfo","stacksEndpoint","richFetch","json","height","hash","run","_run","_callee3","_this","nonce_by_address","nextNonce","step","previousSimulation","_step$function_args","nonce","_step$contract_id$spl","contractAddress","contractName","_nonce","_tx","_nonce2","_tx2","_callee3$","_context3","console","log","Map","_ref2","account","_callee2$","get","_x5","STACKS_MAINNET","STACKS_TESTNET","client","baseUrl","x","deserializeTransaction","makeUnsignedContractCall","function_name","function_args","publicKey","postConditionMode","PostConditionMode","Allow","auth","spendingCondition","signer","c32addressDecode","makeUnsignedSTXTokenTransfer","recipient","amount","makeUnsignedContractDeploy","codeBody","source_code","pipe","transform"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stxer",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "license": "MIT",
5
5
  "author": "Kyle Fang",
6
6
  "main": "dist/index.js",