@clarigen/core 1.0.0-next.23 → 1.0.0-next.26

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.
@@ -332,14 +332,14 @@ interface MakeContractsOptions {
332
332
  }
333
333
  declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
334
334
 
335
- interface EmulatedTransaction {
335
+ interface EmulatedContractPublishTransaction {
336
336
  'emulated-contract-publish': {
337
337
  'contract-name': string;
338
338
  'emulated-sender': string;
339
339
  path: string;
340
340
  };
341
341
  }
342
- interface RequirementTransaction {
342
+ interface RequirementPublishTransaction {
343
343
  'requirement-publish': {
344
344
  'contract-id': string;
345
345
  'remap-sender': string;
@@ -354,7 +354,31 @@ interface ContractPublishTransaction {
354
354
  path: string;
355
355
  };
356
356
  }
357
- declare type Transaction = EmulatedTransaction | RequirementTransaction | ContractPublishTransaction;
357
+ interface ContractCallTransaction {
358
+ 'contract-call': {
359
+ 'contract-id': string;
360
+ 'expected-sender': string;
361
+ parameters: Readonly<string[]>;
362
+ method: string;
363
+ };
364
+ }
365
+ interface EmulatedContractCallTransaction {
366
+ 'emulated-contract-call': {
367
+ 'contract-id': string;
368
+ 'emulated-sender': string;
369
+ parameters: Readonly<string[]>;
370
+ method: string;
371
+ };
372
+ }
373
+ interface BtcTransferTransaction {
374
+ 'btc-transfer': {
375
+ 'expected-sender': string;
376
+ recipient: string;
377
+ 'sats-per-byte': string;
378
+ 'sats-amount': string;
379
+ };
380
+ }
381
+ declare type Transaction = EmulatedContractPublishTransaction | RequirementPublishTransaction | ContractPublishTransaction | EmulatedContractCallTransaction | BtcTransferTransaction | ContractCallTransaction;
358
382
  interface Batch<T extends Transaction> {
359
383
  id: number;
360
384
  transactions: Readonly<T[]>;
@@ -374,16 +398,25 @@ interface SimnetDeploymentPlan {
374
398
  contracts: Readonly<string[]>;
375
399
  };
376
400
  plan: {
377
- batches: Readonly<Batch<EmulatedTransaction>[]>;
401
+ batches: Readonly<Batch<EmulatedContractPublishTransaction | EmulatedContractCallTransaction>[]>;
378
402
  };
379
403
  }
380
404
  interface DevnetDeploymentPlan {
381
405
  network: 'devnet';
382
406
  plan: {
383
- batches: Readonly<Batch<RequirementTransaction | ContractPublishTransaction>[]>;
407
+ batches: Readonly<Batch<RequirementPublishTransaction | ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
408
+ };
409
+ }
410
+ declare type TestnetDeploymentPlan = Omit<DevnetDeploymentPlan, 'network'> & {
411
+ network: 'testnet';
412
+ };
413
+ interface MainnetDeploymentPlan {
414
+ network: 'mainnet';
415
+ plan: {
416
+ batches: Readonly<Batch<ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
384
417
  };
385
418
  }
386
- declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan;
419
+ declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan | TestnetDeploymentPlan | MainnetDeploymentPlan;
387
420
 
388
421
  interface ContractCall<T> {
389
422
  function: ClarityAbiFunction$1;
@@ -407,11 +440,14 @@ declare type FunctionsToContractCalls<T> = T extends ContractFunctions ? {
407
440
  } : never;
408
441
  declare type FullContract<T> = T extends TypedAbi ? T & FunctionsToContractCalls<T['functions']> & {
409
442
  identifier: string;
443
+ } & {
444
+ contractFile: string;
410
445
  } : never;
411
446
  declare type ContractFactory<T extends AllContracts> = {
412
447
  [key in keyof T]: FullContract<T[key]>;
413
448
  };
414
449
  declare function contractFactory<T extends AllContracts>(contracts: T, deployer: string | DeploymentPlan): ContractFactory<T>;
450
+ declare function deploymentFactory<T extends AllContracts>(contracts: T, deployer: DeploymentPlan): ContractFactory<T>;
415
451
 
416
452
  interface PureContractInfo {
417
453
  abi: ClarityAbi;
@@ -449,4 +485,4 @@ declare function broadcast(transaction: StacksTransaction, options: ApiOptions):
449
485
  stacksTransaction: StacksTransaction;
450
486
  }>;
451
487
 
452
- export { AbiPrimitiveTo, AbiTupleTo, AbiTypeTo, AllContracts, ClarityAbi, ClarityAbiFunction, ClarityAbiMap, ClarityAbiType, ClarityAbiTypeBool, ClarityAbiTypeBuffer, ClarityAbiTypeFungibleToken, ClarityAbiTypeInt128, ClarityAbiTypeList, ClarityAbiTypeNonFungibleToken, ClarityAbiTypeNone, ClarityAbiTypeOptional, ClarityAbiTypePrimitive, ClarityAbiTypePrincipal, ClarityAbiTypeResponse, ClarityAbiTypeStringAscii, ClarityAbiTypeStringUtf8, ClarityAbiTypeTraitReference, ClarityAbiTypeTuple, ClarityAbiTypeUInt128, ClarityAbiVariable, Compact, Contract, ContractBuilder, ContractCall, ContractCallFunction, ContractCallTyped, ContractCalls, ContractFactory, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, DeploymentPlan, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, FullContract, FunctionsToContractCalls, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, TypedAbi, TypedAbiFunction, TypedAbiMap, TypedAbiVariable, bootContractIdentifier, broadcast, contractFactory, cvToString, cvToValue, err, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, ok, parseToCV, pureProxy, ro, roErr, roOk, toCamelCase, transformArgsToCV };
488
+ export { AbiPrimitiveTo, AbiTupleTo, AbiTypeTo, AllContracts, ClarityAbi, ClarityAbiFunction, ClarityAbiMap, ClarityAbiType, ClarityAbiTypeBool, ClarityAbiTypeBuffer, ClarityAbiTypeFungibleToken, ClarityAbiTypeInt128, ClarityAbiTypeList, ClarityAbiTypeNonFungibleToken, ClarityAbiTypeNone, ClarityAbiTypeOptional, ClarityAbiTypePrimitive, ClarityAbiTypePrincipal, ClarityAbiTypeResponse, ClarityAbiTypeStringAscii, ClarityAbiTypeStringUtf8, ClarityAbiTypeTraitReference, ClarityAbiTypeTuple, ClarityAbiTypeUInt128, ClarityAbiVariable, Compact, Contract, ContractBuilder, ContractCall, ContractCallFunction, ContractCallTyped, ContractCalls, ContractFactory, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, DeploymentPlan, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, FullContract, FunctionsToContractCalls, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SimnetDeploymentPlan, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, TypedAbi, TypedAbiFunction, TypedAbiMap, TypedAbiVariable, bootContractIdentifier, broadcast, contractFactory, cvToString, cvToValue, deploymentFactory, err, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, ok, parseToCV, pureProxy, ro, roErr, roOk, toCamelCase, transformArgsToCV };
@@ -1,2 +1,2 @@
1
1
  /// <reference path="./index.d.ts" />
2
- import{contractPrincipalCV as _}from"https://deno.land/x/microstacks/clarity.js";var R="ST000000000000000000002AMW42H",w="SP000000000000000000002Q6VF78",d=(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),i=e?`${r[0].toUpperCase()}${r.slice(1)}`:r;return o.forEach(l=>{i+=l[0].toUpperCase()+l.slice(1)}),i},h=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},ut=t=>`${t.address}.${t.name}`,ft=t=>{let e=h(t.contractFile);return _(t.address,e)};function yt(t,e){return`${e?w:R}.${t}`}var O=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(O||{});function Ct(t,e){return t.filter(n=>n.type===e)}function xt(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}import{addressToString as x,ClarityType as a,uintCV as F,contractPrincipalCV as P,intCV as B,stringAsciiCV as V,stringUtf8CV as I,noneCV as $,someCV as M,tupleCV as U,listCV as D,hexToCV as j,bufferCV as L}from"https://deno.land/x/microstacks/clarity.js";import{isClarityAbiList as K,isClarityAbiOptional as H,isClarityAbiStringAscii as q,isClarityAbiStringUtf8 as G,isClarityAbiTuple as J,isClarityAbiBuffer as z,parseToCV as m}from"https://deno.land/x/microstacks/transactions.js";import{bytesToAscii as Q,bytesToHex as W}from"https://deno.land/x/microstacks/common.js";function Z(t){return{isOk:!0,value:t}}function X(t){return{isOk:!1,value:t}}function g(t){if(t.type===a.PrincipalStandard)return x(t.address);if(t.type===a.PrincipalContract)return`${x(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case a.BoolTrue:return!0;case a.BoolFalse:return!1;case a.Int:case a.UInt:return t.value;case a.Buffer:return t.buffer;case a.OptionalNone:return null;case a.OptionalSome:return p(t.value);case a.ResponseErr:return e?X(p(t.value)):p(t.value);case a.ResponseOk:return e?Z(p(t.value)):p(t.value);case a.PrincipalStandard:case a.PrincipalContract:return g(t);case a.List:return t.list.map(o=>p(o));case a.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case a.StringASCII:return t.data;case a.StringUTF8:return t.data}}function wt(t,e=!1){return p(j(t),e)}function v(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function u(t,e){if(J(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=u(o,r.type)}),U(n)}else if(K(e)){let r=t.map(o=>u(o,e.list.type));return D(r)}else{if(H(e))return t?M(u(t,e.optional)):$();if(q(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return V(t)}else if(G(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return I(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return m(n,e)}else if(e==="uint128"){let n=v(t);return F(n.toString())}else if(e==="int128"){let n=v(t);return B(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return P(n,r)}else if(z(e))return L(t)}return m(t,e)}function f(t,e="hex"){switch(t.type){case a.BoolTrue:return"true";case a.BoolFalse:return"false";case a.Int:return t.value.toString();case a.UInt:return`u${t.value.toString()}`;case a.Buffer:if(e==="tryAscii"){let n=Q(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${W(t.buffer)}`;case a.OptionalNone:return"none";case a.OptionalSome:return`(some ${f(t.value,e)})`;case a.ResponseErr:return`(err ${f(t.value,e)})`;case a.ResponseOk:return`(ok ${f(t.value,e)})`;case a.PrincipalStandard:case a.PrincipalContract:return`'${g(t)}`;case a.List:return`(list ${t.list.map(n=>f(n,e)).join(" ")})`;case a.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${f(t.data[n],e)})`).join(" ")})`;case a.StringASCII:return`"${t.data}"`;case a.StringUTF8:return`u"${t.data}"`}}function E(t,e){return e.map((n,r)=>u(n,t.args[r].type))}function b(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function A(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function C(t,e){return E(t,e)}function Y(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:C(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=u(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var tt={get:Y},et=t=>new Proxy(t,tt);import{parseReadOnlyResponse as nt,fetchContractDataMapEntry as rt}from"https://deno.land/x/microstacks/api.js";import{cvToHex as k,hexToCV as ot}from"https://deno.land/x/microstacks/clarity.js";import{fetchPrivate as at}from"https://deno.land/x/microstacks/common.js";import{broadcastTransaction as it}from"https://deno.land/x/microstacks/transactions.js";async function S(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:k(s))}),i=await at(r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch{}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=nt(await i.json());return p(l,!0)}async function Lt(t,e){let n=await S(t,e);return b(n)}async function Kt(t,e){let n=await S(t,e);return A(n)}async function Ht(t,e){let n=k(t.key),r=await rt({contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=ot(r.data);return p(o,!0)}async function qt(t,e){let n=await it(t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function st(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function N(t,e){let n=st(e.plan.batches);for(let r of n)if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return`${r["emulated-contract-publish"]["emulated-sender"]}.${t}`}else if("contract-publish"in r){let o=r["contract-publish"];if(o["contract-name"]===t)return`${o["expected-sender"]}.${o["contract-name"]}`}throw new Error(`Unable to find ID for contract '${t}'`)}function Zt(t,e){let n=t;return Object.keys(t).forEach(r=>{typeof e=="string"?n[r].identifier=`${e}.${r}`:n[r].identifier=N(r,e);let o=t[r];Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...y)=>{let T=o.functions[l];return{functionArgs:C(T,y),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:y}};n[r][l]=s})}),n}export{O as CoreNodeEventType,w as MAINNET_BURN_ADDRESS,R as TESTNET_BURN_ADDRESS,yt as bootContractIdentifier,qt as broadcast,Zt as contractFactory,f as cvToString,p as cvToValue,X as err,A as expectErr,b as expectOk,Ht as fetchMapGet,Ct as filterEvents,ut as getContractIdentifier,h as getContractNameFromPath,ft as getContractPrincipalCV,wt as hexToCvValue,xt as makeContracts,Z as ok,u as parseToCV,et as pureProxy,S as ro,Kt as roErr,Lt as roOk,d as toCamelCase,E as transformArgsToCV};
2
+ import{contractPrincipalCV as $}from"https://deno.land/x/microstacks/clarity.js";var M="ST000000000000000000002AMW42H",D="SP000000000000000000002Q6VF78",d=(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),l=`${e?r[0].toUpperCase():r[0].toLowerCase()}${r.slice(1)}`;return o.forEach(s=>{l+=s[0].toUpperCase()+s.slice(1)}),l},U=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},vt=t=>`${t.address}.${t.name}`,bt=t=>{let e=U(t.contractFile);return $(t.address,e)};function Et(t,e){return`${e?D:M}.${t}`}var j=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(j||{});function ht(t,e){return t.filter(n=>n.type===e)}function St(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}import{addressToString as h,ClarityType as a,uintCV as q,contractPrincipalCV as L,intCV as K,stringAsciiCV as H,stringUtf8CV as G,noneCV as J,someCV as z,tupleCV as Q,listCV as W,hexToCV as Z,bufferCV as X}from"https://deno.land/x/microstacks/clarity.js";import{isClarityAbiList as Y,isClarityAbiOptional as tt,isClarityAbiStringAscii as et,isClarityAbiStringUtf8 as nt,isClarityAbiTuple as rt,isClarityAbiBuffer as ot,parseToCV as k}from"https://deno.land/x/microstacks/transactions.js";import{bytesToAscii as at,bytesToHex as it}from"https://deno.land/x/microstacks/common.js";function st(t){return{isOk:!0,value:t}}function ct(t){return{isOk:!1,value:t}}function N(t){if(t.type===a.PrincipalStandard)return h(t.address);if(t.type===a.PrincipalContract)return`${h(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case a.BoolTrue:return!0;case a.BoolFalse:return!1;case a.Int:case a.UInt:return t.value;case a.Buffer:return t.buffer;case a.OptionalNone:return null;case a.OptionalSome:return p(t.value);case a.ResponseErr:return e?ct(p(t.value)):p(t.value);case a.ResponseOk:return e?st(p(t.value)):p(t.value);case a.PrincipalStandard:case a.PrincipalContract:return N(t);case a.List:return t.list.map(o=>p(o));case a.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case a.StringASCII:return t.data;case a.StringUTF8:return t.data}}function Mt(t,e=!1){return p(Z(t),e)}function S(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function y(t,e){if(rt(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=y(o,r.type)}),Q(n)}else if(Y(e)){let r=t.map(o=>y(o,e.list.type));return W(r)}else{if(tt(e))return t?z(y(t,e.optional)):J();if(et(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return H(t)}else if(nt(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return G(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return k(n,e)}else if(e==="uint128"){let n=S(t);return q(n.toString())}else if(e==="int128"){let n=S(t);return K(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return L(n,r)}else if(ot(e))return X(t)}return k(t,e)}function C(t,e="hex"){switch(t.type){case a.BoolTrue:return"true";case a.BoolFalse:return"false";case a.Int:return t.value.toString();case a.UInt:return`u${t.value.toString()}`;case a.Buffer:if(e==="tryAscii"){let n=at(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${it(t.buffer)}`;case a.OptionalNone:return"none";case a.OptionalSome:return`(some ${C(t.value,e)})`;case a.ResponseErr:return`(err ${C(t.value,e)})`;case a.ResponseOk:return`(ok ${C(t.value,e)})`;case a.PrincipalStandard:case a.PrincipalContract:return`'${N(t)}`;case a.List:return`(list ${t.list.map(n=>C(n,e)).join(" ")})`;case a.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${C(t.data[n],e)})`).join(" ")})`;case a.StringASCII:return`"${t.data}"`;case a.StringUTF8:return`u"${t.data}"`}}function w(t,e){return e.map((n,r)=>y(n,t.args[r].type))}function P(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function R(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function m(t,e){return w(t,e)}function lt(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:m(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=y(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var pt={get:lt},ut=t=>new Proxy(t,pt);import{parseReadOnlyResponse as ft,fetchContractDataMapEntry as yt}from"https://deno.land/x/microstacks/api.js";import{cvToHex as _,hexToCV as dt}from"https://deno.land/x/microstacks/clarity.js";import{fetchPrivate as Ct}from"https://deno.land/x/microstacks/common.js";import{broadcastTransaction as Tt}from"https://deno.land/x/microstacks/transactions.js";async function F(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:_(s))}),i=await Ct(r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch{}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=ft(await i.json());return p(l,!0)}async function Zt(t,e){let n=await F(t,e);return P(n)}async function Xt(t,e){let n=await F(t,e);return R(n)}async function Yt(t,e){let n=_(t.key),r=await yt({contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=dt(r.data);return p(o,!0)}async function te(t,e){let n=await Tt(t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function O(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function B(t){return O(t).filter(x)}function V(t,e){let n=O(e.plan.batches);for(let r of n)if(!!x(r)){if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return r}else if("contract-publish"in r&&r["contract-publish"]["contract-name"]===t)return r}throw new Error(`Unable to find deployment tx for contract '${t}'`)}function g(t){if(!x(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function v(t){if(!x(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let[e,n]=t["requirement-publish"]["contract-id"].split(".");return t["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function x(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}function pe(t,e){let n=t;return Object.keys(t).forEach(r=>{let o=t[r];if(typeof e=="string")n[r].identifier=`${e}.${r}`;else{let i=V(o.contractName,e);n[r].contractFile=g(i),n[r].identifier=v(i)}Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...u)=>{let T=o.functions[l];return{functionArgs:m(T,u),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:u}};n[r][l]=s})}),n}function ue(t,e){let n={};return B(e.plan.batches).forEach(o=>{let i=v(o),[l,s]=i.split("."),u=d(s),T=t[u],f=t[u];n[u]=f,f.contractFile=g(o),f.identifier=i,Object.keys(t[u].functions).forEach(c=>{let b=c,I=(...E)=>{let A=T.functions[b];return{functionArgs:m(A,E),contractAddress:l,contractName:f.contractName,function:A,nativeArgs:E}};f[b]=I})}),n}export{j as CoreNodeEventType,D as MAINNET_BURN_ADDRESS,M as TESTNET_BURN_ADDRESS,Et as bootContractIdentifier,te as broadcast,pe as contractFactory,C as cvToString,p as cvToValue,ue as deploymentFactory,ct as err,R as expectErr,P as expectOk,Yt as fetchMapGet,ht as filterEvents,vt as getContractIdentifier,U as getContractNameFromPath,bt as getContractPrincipalCV,Mt as hexToCvValue,St as makeContracts,st as ok,y as parseToCV,ut as pureProxy,F as ro,Xt as roErr,Zt as roOk,d as toCamelCase,w as transformArgsToCV};
package/dist/index.d.ts CHANGED
@@ -332,14 +332,14 @@ interface MakeContractsOptions {
332
332
  }
333
333
  declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
334
334
 
335
- interface EmulatedTransaction {
335
+ interface EmulatedContractPublishTransaction {
336
336
  'emulated-contract-publish': {
337
337
  'contract-name': string;
338
338
  'emulated-sender': string;
339
339
  path: string;
340
340
  };
341
341
  }
342
- interface RequirementTransaction {
342
+ interface RequirementPublishTransaction {
343
343
  'requirement-publish': {
344
344
  'contract-id': string;
345
345
  'remap-sender': string;
@@ -354,7 +354,31 @@ interface ContractPublishTransaction {
354
354
  path: string;
355
355
  };
356
356
  }
357
- declare type Transaction = EmulatedTransaction | RequirementTransaction | ContractPublishTransaction;
357
+ interface ContractCallTransaction {
358
+ 'contract-call': {
359
+ 'contract-id': string;
360
+ 'expected-sender': string;
361
+ parameters: Readonly<string[]>;
362
+ method: string;
363
+ };
364
+ }
365
+ interface EmulatedContractCallTransaction {
366
+ 'emulated-contract-call': {
367
+ 'contract-id': string;
368
+ 'emulated-sender': string;
369
+ parameters: Readonly<string[]>;
370
+ method: string;
371
+ };
372
+ }
373
+ interface BtcTransferTransaction {
374
+ 'btc-transfer': {
375
+ 'expected-sender': string;
376
+ recipient: string;
377
+ 'sats-per-byte': string;
378
+ 'sats-amount': string;
379
+ };
380
+ }
381
+ declare type Transaction = EmulatedContractPublishTransaction | RequirementPublishTransaction | ContractPublishTransaction | EmulatedContractCallTransaction | BtcTransferTransaction | ContractCallTransaction;
358
382
  interface Batch<T extends Transaction> {
359
383
  id: number;
360
384
  transactions: Readonly<T[]>;
@@ -374,16 +398,25 @@ interface SimnetDeploymentPlan {
374
398
  contracts: Readonly<string[]>;
375
399
  };
376
400
  plan: {
377
- batches: Readonly<Batch<EmulatedTransaction>[]>;
401
+ batches: Readonly<Batch<EmulatedContractPublishTransaction | EmulatedContractCallTransaction>[]>;
378
402
  };
379
403
  }
380
404
  interface DevnetDeploymentPlan {
381
405
  network: 'devnet';
382
406
  plan: {
383
- batches: Readonly<Batch<RequirementTransaction | ContractPublishTransaction>[]>;
407
+ batches: Readonly<Batch<RequirementPublishTransaction | ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
408
+ };
409
+ }
410
+ declare type TestnetDeploymentPlan = Omit<DevnetDeploymentPlan, 'network'> & {
411
+ network: 'testnet';
412
+ };
413
+ interface MainnetDeploymentPlan {
414
+ network: 'mainnet';
415
+ plan: {
416
+ batches: Readonly<Batch<ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
384
417
  };
385
418
  }
386
- declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan;
419
+ declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan | TestnetDeploymentPlan | MainnetDeploymentPlan;
387
420
 
388
421
  interface ContractCall<T> {
389
422
  function: ClarityAbiFunction$1;
@@ -407,11 +440,14 @@ declare type FunctionsToContractCalls<T> = T extends ContractFunctions ? {
407
440
  } : never;
408
441
  declare type FullContract<T> = T extends TypedAbi ? T & FunctionsToContractCalls<T['functions']> & {
409
442
  identifier: string;
443
+ } & {
444
+ contractFile: string;
410
445
  } : never;
411
446
  declare type ContractFactory<T extends AllContracts> = {
412
447
  [key in keyof T]: FullContract<T[key]>;
413
448
  };
414
449
  declare function contractFactory<T extends AllContracts>(contracts: T, deployer: string | DeploymentPlan): ContractFactory<T>;
450
+ declare function deploymentFactory<T extends AllContracts>(contracts: T, deployer: DeploymentPlan): ContractFactory<T>;
415
451
 
416
452
  interface PureContractInfo {
417
453
  abi: ClarityAbi;
@@ -449,4 +485,4 @@ declare function broadcast(transaction: StacksTransaction, options: ApiOptions):
449
485
  stacksTransaction: StacksTransaction;
450
486
  }>;
451
487
 
452
- export { AbiPrimitiveTo, AbiTupleTo, AbiTypeTo, AllContracts, ClarityAbi, ClarityAbiFunction, ClarityAbiMap, ClarityAbiType, ClarityAbiTypeBool, ClarityAbiTypeBuffer, ClarityAbiTypeFungibleToken, ClarityAbiTypeInt128, ClarityAbiTypeList, ClarityAbiTypeNonFungibleToken, ClarityAbiTypeNone, ClarityAbiTypeOptional, ClarityAbiTypePrimitive, ClarityAbiTypePrincipal, ClarityAbiTypeResponse, ClarityAbiTypeStringAscii, ClarityAbiTypeStringUtf8, ClarityAbiTypeTraitReference, ClarityAbiTypeTuple, ClarityAbiTypeUInt128, ClarityAbiVariable, Compact, Contract, ContractBuilder, ContractCall, ContractCallFunction, ContractCallTyped, ContractCalls, ContractFactory, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, DeploymentPlan, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, FullContract, FunctionsToContractCalls, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, TypedAbi, TypedAbiFunction, TypedAbiMap, TypedAbiVariable, bootContractIdentifier, broadcast, contractFactory, cvToString, cvToValue, err, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, ok, parseToCV, pureProxy, ro, roErr, roOk, toCamelCase, transformArgsToCV };
488
+ export { AbiPrimitiveTo, AbiTupleTo, AbiTypeTo, AllContracts, ClarityAbi, ClarityAbiFunction, ClarityAbiMap, ClarityAbiType, ClarityAbiTypeBool, ClarityAbiTypeBuffer, ClarityAbiTypeFungibleToken, ClarityAbiTypeInt128, ClarityAbiTypeList, ClarityAbiTypeNonFungibleToken, ClarityAbiTypeNone, ClarityAbiTypeOptional, ClarityAbiTypePrimitive, ClarityAbiTypePrincipal, ClarityAbiTypeResponse, ClarityAbiTypeStringAscii, ClarityAbiTypeStringUtf8, ClarityAbiTypeTraitReference, ClarityAbiTypeTuple, ClarityAbiTypeUInt128, ClarityAbiVariable, Compact, Contract, ContractBuilder, ContractCall, ContractCallFunction, ContractCallTyped, ContractCalls, ContractFactory, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, DeploymentPlan, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, FullContract, FunctionsToContractCalls, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SimnetDeploymentPlan, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, TypedAbi, TypedAbiFunction, TypedAbiMap, TypedAbiVariable, bootContractIdentifier, broadcast, contractFactory, cvToString, cvToValue, deploymentFactory, err, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, ok, parseToCV, pureProxy, ro, roErr, roOk, toCamelCase, transformArgsToCV };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _clarity = require('micro-stacks/clarity');var R="ST000000000000000000002AMW42H",w= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",d= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),i=e?`${r[0].toUpperCase()}${r.slice(1)}`:r;return o.forEach(l=>{i+=l[0].toUpperCase()+l.slice(1)}),i},h= exports.getContractNameFromPath =t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},ut= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,ft= exports.getContractPrincipalCV =t=>{let e=h(t.contractFile);return _clarity.contractPrincipalCV.call(void 0, t.address,e)};function yt(t,e){return`${e?w:R}.${t}`}var O=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(O||{});function Ct(t,e){return t.filter(n=>n.type===e)}function xt(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}var _transactions = require('micro-stacks/transactions');var _common = require('micro-stacks/common');function Z(t){return{isOk:!0,value:t}}function X(t){return{isOk:!1,value:t}}function g(t){if(t.type===_clarity.ClarityType.PrincipalStandard)return _clarity.addressToString.call(void 0, t.address);if(t.type===_clarity.ClarityType.PrincipalContract)return`${_clarity.addressToString.call(void 0, t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case _clarity.ClarityType.BoolTrue:return!0;case _clarity.ClarityType.BoolFalse:return!1;case _clarity.ClarityType.Int:case _clarity.ClarityType.UInt:return t.value;case _clarity.ClarityType.Buffer:return t.buffer;case _clarity.ClarityType.OptionalNone:return null;case _clarity.ClarityType.OptionalSome:return p(t.value);case _clarity.ClarityType.ResponseErr:return e?X(p(t.value)):p(t.value);case _clarity.ClarityType.ResponseOk:return e?Z(p(t.value)):p(t.value);case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return g(t);case _clarity.ClarityType.List:return t.list.map(o=>p(o));case _clarity.ClarityType.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case _clarity.ClarityType.StringASCII:return t.data;case _clarity.ClarityType.StringUTF8:return t.data}}function wt(t,e=!1){return p(_clarity.hexToCV.call(void 0, t),e)}function v(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function u(t,e){if(_transactions.isClarityAbiTuple.call(void 0, e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=u(o,r.type)}),_clarity.tupleCV.call(void 0, n)}else if(_transactions.isClarityAbiList.call(void 0, e)){let r=t.map(o=>u(o,e.list.type));return _clarity.listCV.call(void 0, r)}else{if(_transactions.isClarityAbiOptional.call(void 0, e))return t?_clarity.someCV.call(void 0, u(t,e.optional)):_clarity.noneCV.call(void 0, );if(_transactions.isClarityAbiStringAscii.call(void 0, e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _clarity.stringAsciiCV.call(void 0, t)}else if(_transactions.isClarityAbiStringUtf8.call(void 0, e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _clarity.stringUtf8CV.call(void 0, t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return _transactions.parseToCV.call(void 0, n,e)}else if(e==="uint128"){let n=v(t);return _clarity.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=v(t);return _clarity.intCV.call(void 0, n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return _clarity.contractPrincipalCV.call(void 0, n,r)}else if(_transactions.isClarityAbiBuffer.call(void 0, e))return _clarity.bufferCV.call(void 0, t)}return _transactions.parseToCV.call(void 0, t,e)}function f(t,e="hex"){switch(t.type){case _clarity.ClarityType.BoolTrue:return"true";case _clarity.ClarityType.BoolFalse:return"false";case _clarity.ClarityType.Int:return t.value.toString();case _clarity.ClarityType.UInt:return`u${t.value.toString()}`;case _clarity.ClarityType.Buffer:if(e==="tryAscii"){let n=_common.bytesToAscii.call(void 0, t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${_common.bytesToHex.call(void 0, t.buffer)}`;case _clarity.ClarityType.OptionalNone:return"none";case _clarity.ClarityType.OptionalSome:return`(some ${f(t.value,e)})`;case _clarity.ClarityType.ResponseErr:return`(err ${f(t.value,e)})`;case _clarity.ClarityType.ResponseOk:return`(ok ${f(t.value,e)})`;case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return`'${g(t)}`;case _clarity.ClarityType.List:return`(list ${t.list.map(n=>f(n,e)).join(" ")})`;case _clarity.ClarityType.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${f(t.data[n],e)})`).join(" ")})`;case _clarity.ClarityType.StringASCII:return`"${t.data}"`;case _clarity.ClarityType.StringUTF8:return`u"${t.data}"`}}function E(t,e){return e.map((n,r)=>u(n,t.args[r].type))}function b(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function A(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function C(t,e){return E(t,e)}function Y(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:C(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=u(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var tt={get:Y},et= exports.pureProxy =t=>new Proxy(t,tt);var _api = require('micro-stacks/api');async function S(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:_clarity.cvToHex.call(void 0, s))}),i=await _common.fetchPrivate.call(void 0, r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch (e2){}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=_api.parseReadOnlyResponse.call(void 0, await i.json());return p(l,!0)}async function Lt(t,e){let n=await S(t,e);return b(n)}async function Kt(t,e){let n=await S(t,e);return A(n)}async function Ht(t,e){let n=_clarity.cvToHex.call(void 0, t.key),r=await _api.fetchContractDataMapEntry.call(void 0, {contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=_clarity.hexToCV.call(void 0, r.data);return p(o,!0)}async function qt(t,e){let n=await _transactions.broadcastTransaction.call(void 0, t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function st(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function N(t,e){let n=st(e.plan.batches);for(let r of n)if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return`${r["emulated-contract-publish"]["emulated-sender"]}.${t}`}else if("contract-publish"in r){let o=r["contract-publish"];if(o["contract-name"]===t)return`${o["expected-sender"]}.${o["contract-name"]}`}throw new Error(`Unable to find ID for contract '${t}'`)}function Zt(t,e){let n=t;return Object.keys(t).forEach(r=>{typeof e=="string"?n[r].identifier=`${e}.${r}`:n[r].identifier=N(r,e);let o=t[r];Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...y)=>{let T=o.functions[l];return{functionArgs:C(T,y),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:y}};n[r][l]=s})}),n}exports.CoreNodeEventType = O; exports.MAINNET_BURN_ADDRESS = w; exports.TESTNET_BURN_ADDRESS = R; exports.bootContractIdentifier = yt; exports.broadcast = qt; exports.contractFactory = Zt; exports.cvToString = f; exports.cvToValue = p; exports.err = X; exports.expectErr = A; exports.expectOk = b; exports.fetchMapGet = Ht; exports.filterEvents = Ct; exports.getContractIdentifier = ut; exports.getContractNameFromPath = h; exports.getContractPrincipalCV = ft; exports.hexToCvValue = wt; exports.makeContracts = xt; exports.ok = Z; exports.parseToCV = u; exports.pureProxy = et; exports.ro = S; exports.roErr = Kt; exports.roOk = Lt; exports.toCamelCase = d; exports.transformArgsToCV = E;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _clarity = require('micro-stacks/clarity');var M="ST000000000000000000002AMW42H",D= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",d= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),l=`${e?r[0].toUpperCase():r[0].toLowerCase()}${r.slice(1)}`;return o.forEach(s=>{l+=s[0].toUpperCase()+s.slice(1)}),l},U= exports.getContractNameFromPath =t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},vt= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,bt= exports.getContractPrincipalCV =t=>{let e=U(t.contractFile);return _clarity.contractPrincipalCV.call(void 0, t.address,e)};function Et(t,e){return`${e?D:M}.${t}`}var j=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(j||{});function ht(t,e){return t.filter(n=>n.type===e)}function St(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}var _transactions = require('micro-stacks/transactions');var _common = require('micro-stacks/common');function st(t){return{isOk:!0,value:t}}function ct(t){return{isOk:!1,value:t}}function N(t){if(t.type===_clarity.ClarityType.PrincipalStandard)return _clarity.addressToString.call(void 0, t.address);if(t.type===_clarity.ClarityType.PrincipalContract)return`${_clarity.addressToString.call(void 0, t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case _clarity.ClarityType.BoolTrue:return!0;case _clarity.ClarityType.BoolFalse:return!1;case _clarity.ClarityType.Int:case _clarity.ClarityType.UInt:return t.value;case _clarity.ClarityType.Buffer:return t.buffer;case _clarity.ClarityType.OptionalNone:return null;case _clarity.ClarityType.OptionalSome:return p(t.value);case _clarity.ClarityType.ResponseErr:return e?ct(p(t.value)):p(t.value);case _clarity.ClarityType.ResponseOk:return e?st(p(t.value)):p(t.value);case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return N(t);case _clarity.ClarityType.List:return t.list.map(o=>p(o));case _clarity.ClarityType.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case _clarity.ClarityType.StringASCII:return t.data;case _clarity.ClarityType.StringUTF8:return t.data}}function Mt(t,e=!1){return p(_clarity.hexToCV.call(void 0, t),e)}function S(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function y(t,e){if(_transactions.isClarityAbiTuple.call(void 0, e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=y(o,r.type)}),_clarity.tupleCV.call(void 0, n)}else if(_transactions.isClarityAbiList.call(void 0, e)){let r=t.map(o=>y(o,e.list.type));return _clarity.listCV.call(void 0, r)}else{if(_transactions.isClarityAbiOptional.call(void 0, e))return t?_clarity.someCV.call(void 0, y(t,e.optional)):_clarity.noneCV.call(void 0, );if(_transactions.isClarityAbiStringAscii.call(void 0, e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _clarity.stringAsciiCV.call(void 0, t)}else if(_transactions.isClarityAbiStringUtf8.call(void 0, e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _clarity.stringUtf8CV.call(void 0, t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return _transactions.parseToCV.call(void 0, n,e)}else if(e==="uint128"){let n=S(t);return _clarity.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=S(t);return _clarity.intCV.call(void 0, n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return _clarity.contractPrincipalCV.call(void 0, n,r)}else if(_transactions.isClarityAbiBuffer.call(void 0, e))return _clarity.bufferCV.call(void 0, t)}return _transactions.parseToCV.call(void 0, t,e)}function C(t,e="hex"){switch(t.type){case _clarity.ClarityType.BoolTrue:return"true";case _clarity.ClarityType.BoolFalse:return"false";case _clarity.ClarityType.Int:return t.value.toString();case _clarity.ClarityType.UInt:return`u${t.value.toString()}`;case _clarity.ClarityType.Buffer:if(e==="tryAscii"){let n=_common.bytesToAscii.call(void 0, t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${_common.bytesToHex.call(void 0, t.buffer)}`;case _clarity.ClarityType.OptionalNone:return"none";case _clarity.ClarityType.OptionalSome:return`(some ${C(t.value,e)})`;case _clarity.ClarityType.ResponseErr:return`(err ${C(t.value,e)})`;case _clarity.ClarityType.ResponseOk:return`(ok ${C(t.value,e)})`;case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return`'${N(t)}`;case _clarity.ClarityType.List:return`(list ${t.list.map(n=>C(n,e)).join(" ")})`;case _clarity.ClarityType.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${C(t.data[n],e)})`).join(" ")})`;case _clarity.ClarityType.StringASCII:return`"${t.data}"`;case _clarity.ClarityType.StringUTF8:return`u"${t.data}"`}}function w(t,e){return e.map((n,r)=>y(n,t.args[r].type))}function P(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function R(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function m(t,e){return w(t,e)}function lt(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:m(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=y(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var pt={get:lt},ut= exports.pureProxy =t=>new Proxy(t,pt);var _api = require('micro-stacks/api');async function F(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:_clarity.cvToHex.call(void 0, s))}),i=await _common.fetchPrivate.call(void 0, r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch (e2){}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=_api.parseReadOnlyResponse.call(void 0, await i.json());return p(l,!0)}async function Zt(t,e){let n=await F(t,e);return P(n)}async function Xt(t,e){let n=await F(t,e);return R(n)}async function Yt(t,e){let n=_clarity.cvToHex.call(void 0, t.key),r=await _api.fetchContractDataMapEntry.call(void 0, {contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=_clarity.hexToCV.call(void 0, r.data);return p(o,!0)}async function te(t,e){let n=await _transactions.broadcastTransaction.call(void 0, t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function O(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function B(t){return O(t).filter(x)}function V(t,e){let n=O(e.plan.batches);for(let r of n)if(!!x(r)){if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return r}else if("contract-publish"in r&&r["contract-publish"]["contract-name"]===t)return r}throw new Error(`Unable to find deployment tx for contract '${t}'`)}function g(t){if(!x(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function v(t){if(!x(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let[e,n]=t["requirement-publish"]["contract-id"].split(".");return t["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function x(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}function pe(t,e){let n=t;return Object.keys(t).forEach(r=>{let o=t[r];if(typeof e=="string")n[r].identifier=`${e}.${r}`;else{let i=V(o.contractName,e);n[r].contractFile=g(i),n[r].identifier=v(i)}Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...u)=>{let T=o.functions[l];return{functionArgs:m(T,u),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:u}};n[r][l]=s})}),n}function ue(t,e){let n={};return B(e.plan.batches).forEach(o=>{let i=v(o),[l,s]=i.split("."),u=d(s),T=t[u],f=t[u];n[u]=f,f.contractFile=g(o),f.identifier=i,Object.keys(t[u].functions).forEach(c=>{let b=c,I=(...E)=>{let A=T.functions[b];return{functionArgs:m(A,E),contractAddress:l,contractName:f.contractName,function:A,nativeArgs:E}};f[b]=I})}),n}exports.CoreNodeEventType = j; exports.MAINNET_BURN_ADDRESS = D; exports.TESTNET_BURN_ADDRESS = M; exports.bootContractIdentifier = Et; exports.broadcast = te; exports.contractFactory = pe; exports.cvToString = C; exports.cvToValue = p; exports.deploymentFactory = ue; exports.err = ct; exports.expectErr = R; exports.expectOk = P; exports.fetchMapGet = Yt; exports.filterEvents = ht; exports.getContractIdentifier = vt; exports.getContractNameFromPath = U; exports.getContractPrincipalCV = bt; exports.hexToCvValue = Mt; exports.makeContracts = St; exports.ok = st; exports.parseToCV = y; exports.pureProxy = ut; exports.ro = F; exports.roErr = Xt; exports.roOk = Zt; exports.toCamelCase = d; exports.transformArgsToCV = w;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{contractPrincipalCV as _}from"micro-stacks/clarity";var R="ST000000000000000000002AMW42H",w="SP000000000000000000002Q6VF78",d=(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),i=e?`${r[0].toUpperCase()}${r.slice(1)}`:r;return o.forEach(l=>{i+=l[0].toUpperCase()+l.slice(1)}),i},h=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},ut=t=>`${t.address}.${t.name}`,ft=t=>{let e=h(t.contractFile);return _(t.address,e)};function yt(t,e){return`${e?w:R}.${t}`}var O=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(O||{});function Ct(t,e){return t.filter(n=>n.type===e)}function xt(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}import{addressToString as x,ClarityType as a,uintCV as F,contractPrincipalCV as P,intCV as B,stringAsciiCV as V,stringUtf8CV as I,noneCV as $,someCV as M,tupleCV as U,listCV as D,hexToCV as j,bufferCV as L}from"micro-stacks/clarity";import{isClarityAbiList as K,isClarityAbiOptional as H,isClarityAbiStringAscii as q,isClarityAbiStringUtf8 as G,isClarityAbiTuple as J,isClarityAbiBuffer as z,parseToCV as m}from"micro-stacks/transactions";import{bytesToAscii as Q,bytesToHex as W}from"micro-stacks/common";function Z(t){return{isOk:!0,value:t}}function X(t){return{isOk:!1,value:t}}function g(t){if(t.type===a.PrincipalStandard)return x(t.address);if(t.type===a.PrincipalContract)return`${x(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case a.BoolTrue:return!0;case a.BoolFalse:return!1;case a.Int:case a.UInt:return t.value;case a.Buffer:return t.buffer;case a.OptionalNone:return null;case a.OptionalSome:return p(t.value);case a.ResponseErr:return e?X(p(t.value)):p(t.value);case a.ResponseOk:return e?Z(p(t.value)):p(t.value);case a.PrincipalStandard:case a.PrincipalContract:return g(t);case a.List:return t.list.map(o=>p(o));case a.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case a.StringASCII:return t.data;case a.StringUTF8:return t.data}}function wt(t,e=!1){return p(j(t),e)}function v(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function u(t,e){if(J(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=u(o,r.type)}),U(n)}else if(K(e)){let r=t.map(o=>u(o,e.list.type));return D(r)}else{if(H(e))return t?M(u(t,e.optional)):$();if(q(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return V(t)}else if(G(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return I(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return m(n,e)}else if(e==="uint128"){let n=v(t);return F(n.toString())}else if(e==="int128"){let n=v(t);return B(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return P(n,r)}else if(z(e))return L(t)}return m(t,e)}function f(t,e="hex"){switch(t.type){case a.BoolTrue:return"true";case a.BoolFalse:return"false";case a.Int:return t.value.toString();case a.UInt:return`u${t.value.toString()}`;case a.Buffer:if(e==="tryAscii"){let n=Q(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${W(t.buffer)}`;case a.OptionalNone:return"none";case a.OptionalSome:return`(some ${f(t.value,e)})`;case a.ResponseErr:return`(err ${f(t.value,e)})`;case a.ResponseOk:return`(ok ${f(t.value,e)})`;case a.PrincipalStandard:case a.PrincipalContract:return`'${g(t)}`;case a.List:return`(list ${t.list.map(n=>f(n,e)).join(" ")})`;case a.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${f(t.data[n],e)})`).join(" ")})`;case a.StringASCII:return`"${t.data}"`;case a.StringUTF8:return`u"${t.data}"`}}function E(t,e){return e.map((n,r)=>u(n,t.args[r].type))}function b(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function A(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function C(t,e){return E(t,e)}function Y(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:C(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=u(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var tt={get:Y},et=t=>new Proxy(t,tt);import{parseReadOnlyResponse as nt,fetchContractDataMapEntry as rt}from"micro-stacks/api";import{cvToHex as k,hexToCV as ot}from"micro-stacks/clarity";import{fetchPrivate as at}from"micro-stacks/common";import{broadcastTransaction as it}from"micro-stacks/transactions";async function S(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:k(s))}),i=await at(r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch{}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=nt(await i.json());return p(l,!0)}async function Lt(t,e){let n=await S(t,e);return b(n)}async function Kt(t,e){let n=await S(t,e);return A(n)}async function Ht(t,e){let n=k(t.key),r=await rt({contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=ot(r.data);return p(o,!0)}async function qt(t,e){let n=await it(t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function st(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function N(t,e){let n=st(e.plan.batches);for(let r of n)if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return`${r["emulated-contract-publish"]["emulated-sender"]}.${t}`}else if("contract-publish"in r){let o=r["contract-publish"];if(o["contract-name"]===t)return`${o["expected-sender"]}.${o["contract-name"]}`}throw new Error(`Unable to find ID for contract '${t}'`)}function Zt(t,e){let n=t;return Object.keys(t).forEach(r=>{typeof e=="string"?n[r].identifier=`${e}.${r}`:n[r].identifier=N(r,e);let o=t[r];Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...y)=>{let T=o.functions[l];return{functionArgs:C(T,y),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:y}};n[r][l]=s})}),n}export{O as CoreNodeEventType,w as MAINNET_BURN_ADDRESS,R as TESTNET_BURN_ADDRESS,yt as bootContractIdentifier,qt as broadcast,Zt as contractFactory,f as cvToString,p as cvToValue,X as err,A as expectErr,b as expectOk,Ht as fetchMapGet,Ct as filterEvents,ut as getContractIdentifier,h as getContractNameFromPath,ft as getContractPrincipalCV,wt as hexToCvValue,xt as makeContracts,Z as ok,u as parseToCV,et as pureProxy,S as ro,Kt as roErr,Lt as roOk,d as toCamelCase,E as transformArgsToCV};
1
+ import{contractPrincipalCV as $}from"micro-stacks/clarity";var M="ST000000000000000000002AMW42H",D="SP000000000000000000002Q6VF78",d=(t,e)=>{let n=typeof t=="string"?t:String(t),[r,...o]=n.replace("!","").replace("?","").split("-"),l=`${e?r[0].toUpperCase():r[0].toLowerCase()}${r.slice(1)}`;return o.forEach(s=>{l+=s[0].toUpperCase()+s.slice(1)}),l},U=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},vt=t=>`${t.address}.${t.name}`,bt=t=>{let e=U(t.contractFile);return $(t.address,e)};function Et(t,e){return`${e?D:M}.${t}`}var j=(c=>(c.ContractEvent="contract_event",c.StxTransferEvent="stx_transfer_event",c.StxMintEvent="stx_mint_event",c.StxBurnEvent="stx_burn_event",c.StxLockEvent="stx_lock_event",c.NftTransferEvent="nft_transfer_event",c.NftMintEvent="nft_mint_event",c.NftBurnEvent="nft_burn_event",c.FtTransferEvent="ft_transfer_event",c.FtMintEvent="ft_mint_event",c.FtBurnEvent="ft_burn_event",c))(j||{});function ht(t,e){return t.filter(n=>n.type===e)}function St(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,l=`${i}.${o.name}`,s=o.contract(i,o.name);n[r]={identifier:l,contract:s}}return n}import{addressToString as h,ClarityType as a,uintCV as q,contractPrincipalCV as L,intCV as K,stringAsciiCV as H,stringUtf8CV as G,noneCV as J,someCV as z,tupleCV as Q,listCV as W,hexToCV as Z,bufferCV as X}from"micro-stacks/clarity";import{isClarityAbiList as Y,isClarityAbiOptional as tt,isClarityAbiStringAscii as et,isClarityAbiStringUtf8 as nt,isClarityAbiTuple as rt,isClarityAbiBuffer as ot,parseToCV as k}from"micro-stacks/transactions";import{bytesToAscii as at,bytesToHex as it}from"micro-stacks/common";function st(t){return{isOk:!0,value:t}}function ct(t){return{isOk:!1,value:t}}function N(t){if(t.type===a.PrincipalStandard)return h(t.address);if(t.type===a.PrincipalContract)return`${h(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function p(t,e=!1){switch(t.type){case a.BoolTrue:return!0;case a.BoolFalse:return!1;case a.Int:case a.UInt:return t.value;case a.Buffer:return t.buffer;case a.OptionalNone:return null;case a.OptionalSome:return p(t.value);case a.ResponseErr:return e?ct(p(t.value)):p(t.value);case a.ResponseOk:return e?st(p(t.value)):p(t.value);case a.PrincipalStandard:case a.PrincipalContract:return N(t);case a.List:return t.list.map(o=>p(o));case a.Tuple:let n={};return Object.keys(t.data).map(o=>[o,p(t.data[o])]).forEach(([o,i])=>{n[o]=i}),n;case a.StringASCII:return t.data;case a.StringUTF8:return t.data}}function Mt(t,e=!1){return p(Z(t),e)}function S(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function y(t,e){if(rt(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=t[r.name];n[r.name]=y(o,r.type)}),Q(n)}else if(Y(e)){let r=t.map(o=>y(o,e.list.type));return W(r)}else{if(tt(e))return t?z(y(t,e.optional)):J();if(et(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return H(t)}else if(nt(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return G(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return k(n,e)}else if(e==="uint128"){let n=S(t);return q(n.toString())}else if(e==="int128"){let n=S(t);return K(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,r]=t.split(".");return L(n,r)}else if(ot(e))return X(t)}return k(t,e)}function C(t,e="hex"){switch(t.type){case a.BoolTrue:return"true";case a.BoolFalse:return"false";case a.Int:return t.value.toString();case a.UInt:return`u${t.value.toString()}`;case a.Buffer:if(e==="tryAscii"){let n=at(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${it(t.buffer)}`;case a.OptionalNone:return"none";case a.OptionalSome:return`(some ${C(t.value,e)})`;case a.ResponseErr:return`(err ${C(t.value,e)})`;case a.ResponseOk:return`(ok ${C(t.value,e)})`;case a.PrincipalStandard:case a.PrincipalContract:return`'${N(t)}`;case a.List:return`(list ${t.list.map(n=>C(n,e)).join(" ")})`;case a.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${C(t.data[n],e)})`).join(" ")})`;case a.StringASCII:return`"${t.data}"`;case a.StringUTF8:return`u"${t.data}"`}}function w(t,e){return e.map((n,r)=>y(n,t.args[r].type))}function P(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function R(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function m(t,e){return w(t,e)}function lt(t,e){let n=t.abi.functions.find(o=>d(o.name)===e);if(n)return function(...o){return{functionArgs:m(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:o}};let r=t.abi.maps.find(o=>d(o.name)===e);if(r)return o=>{let i=y(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var pt={get:lt},ut=t=>new Proxy(t,pt);import{parseReadOnlyResponse as ft,fetchContractDataMapEntry as yt}from"micro-stacks/api";import{cvToHex as _,hexToCV as dt}from"micro-stacks/clarity";import{fetchPrivate as Ct}from"micro-stacks/common";import{broadcastTransaction as Tt}from"micro-stacks/transactions";async function F(t,e){let r=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,o=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:_(s))}),i=await Ct(r,{method:"POST",body:o,headers:{"Content-Type":"application/json"}});if(!i.ok){let s="";try{s=await i.text()}catch{}throw new Error(`Error calling read-only function. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${s}"`)}let l=ft(await i.json());return p(l,!0)}async function Zt(t,e){let n=await F(t,e);return P(n)}async function Xt(t,e){let n=await F(t,e);return R(n)}async function Yt(t,e){let n=_(t.key),r=await yt({contract_address:t.contractAddress,contract_name:t.contractName,map_name:t.map.name,lookup_key:n,tip:"latest",url:e.network.getCoreApiUrl(),proof:0}),o=dt(r.data);return p(o,!0)}async function te(t,e){let n=await Tt(t,e.network);if("error"in n)throw new Error(`Error broadcasting tx: ${n.error} - ${n.reason} - ${n.reason_data}`);return{txId:n.txid,stacksTransaction:t}}function O(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function B(t){return O(t).filter(x)}function V(t,e){let n=O(e.plan.batches);for(let r of n)if(!!x(r)){if("requirement-publish"in r){let[o,i]=r["requirement-publish"]["contract-id"].split(".");if(i===t)return r}else if("emulated-contract-publish"in r){if(r["emulated-contract-publish"]["contract-name"]===t)return r}else if("contract-publish"in r&&r["contract-publish"]["contract-name"]===t)return r}throw new Error(`Unable to find deployment tx for contract '${t}'`)}function g(t){if(!x(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function v(t){if(!x(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let[e,n]=t["requirement-publish"]["contract-id"].split(".");return t["requirement-publish"]["contract-id"]}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function x(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}function pe(t,e){let n=t;return Object.keys(t).forEach(r=>{let o=t[r];if(typeof e=="string")n[r].identifier=`${e}.${r}`;else{let i=V(o.contractName,e);n[r].contractFile=g(i),n[r].identifier=v(i)}Object.keys(t[r].functions).forEach(i=>{let l=i,s=(...u)=>{let T=o.functions[l];return{functionArgs:m(T,u),contractAddress:e,contractName:o.contractName,function:T,nativeArgs:u}};n[r][l]=s})}),n}function ue(t,e){let n={};return B(e.plan.batches).forEach(o=>{let i=v(o),[l,s]=i.split("."),u=d(s),T=t[u],f=t[u];n[u]=f,f.contractFile=g(o),f.identifier=i,Object.keys(t[u].functions).forEach(c=>{let b=c,I=(...E)=>{let A=T.functions[b];return{functionArgs:m(A,E),contractAddress:l,contractName:f.contractName,function:A,nativeArgs:E}};f[b]=I})}),n}export{j as CoreNodeEventType,D as MAINNET_BURN_ADDRESS,M as TESTNET_BURN_ADDRESS,Et as bootContractIdentifier,te as broadcast,pe as contractFactory,C as cvToString,p as cvToValue,ue as deploymentFactory,ct as err,R as expectErr,P as expectOk,Yt as fetchMapGet,ht as filterEvents,vt as getContractIdentifier,U as getContractNameFromPath,bt as getContractPrincipalCV,Mt as hexToCvValue,St as makeContracts,st as ok,y as parseToCV,ut as pureProxy,F as ro,Xt as roErr,Zt as roOk,d as toCamelCase,w as transformArgsToCV};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0-next.23",
2
+ "version": "1.0.0-next.26",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -26,6 +26,7 @@
26
26
  "build": "shx rm -rf ./dist && tsup && node make-deno.js",
27
27
  "test": "jest",
28
28
  "lint": "eslint \"src/**/*.{ts,tsx}\" && prettier --check src/**/*.ts",
29
- "typecheck": "tsc --noEmit"
29
+ "typecheck": "tsc --noEmit",
30
+ "publish:dev": "pnpm build && yalc publish --push"
30
31
  }
31
32
  }