@clarigen/core 1.0.0-next.18 → 1.0.0-next.22

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.
@@ -103,18 +103,18 @@ declare type TypedAbi = Readonly<{
103
103
  contractName: string;
104
104
  contractFile?: string;
105
105
  }>;
106
- interface ResponseOk<T> {
106
+ interface ResponseOk<T, E> {
107
107
  value: T;
108
108
  isOk: true;
109
109
  }
110
- interface ResponseErr<T> {
111
- value: T;
110
+ interface ResponseErr<T, E> {
111
+ value: E;
112
112
  isOk: false;
113
113
  }
114
- declare type Response<Ok, Err> = ResponseOk<Ok> | ResponseErr<Err>;
114
+ declare type Response<Ok, Err> = ResponseOk<Ok, Err> | ResponseErr<Ok, Err>;
115
115
 
116
- declare function ok<T>(value: T): ResponseOk<T>;
117
- declare function err<T>(value: T): ResponseErr<T>;
116
+ declare function ok<T, Err = never>(value: T): ResponseOk<T, Err>;
117
+ declare function err<Ok = never, T = unknown>(value: T): ResponseErr<Ok, T>;
118
118
  interface ClarityAbi extends Omit<ClarityAbi$1, 'maps'> {
119
119
  maps: ClarityAbiMap[];
120
120
  clarity_version?: string;
@@ -332,6 +332,59 @@ interface MakeContractsOptions {
332
332
  }
333
333
  declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
334
334
 
335
+ interface EmulatedTransaction {
336
+ 'emulated-contract-publish': {
337
+ 'contract-name': string;
338
+ 'emulated-sender': string;
339
+ path: string;
340
+ };
341
+ }
342
+ interface RequirementTransaction {
343
+ 'requirement-publish': {
344
+ 'contract-id': string;
345
+ 'remap-sender': string;
346
+ 'remap-principals': Record<string, string>;
347
+ path: string;
348
+ };
349
+ }
350
+ interface ContractPublishTransaction {
351
+ 'contract-publish': {
352
+ 'contract-name': string;
353
+ 'expected-sender': string;
354
+ path: string;
355
+ };
356
+ }
357
+ declare type Transaction = EmulatedTransaction | RequirementTransaction | ContractPublishTransaction;
358
+ interface Batch<T extends Transaction> {
359
+ id: number;
360
+ transactions: Readonly<T[]>;
361
+ }
362
+ interface SimnetAccount {
363
+ address: string;
364
+ name: string;
365
+ balance: string;
366
+ }
367
+ interface SimnetAccountDeployer extends SimnetAccount {
368
+ name: 'deployer';
369
+ }
370
+ interface SimnetDeploymentPlan {
371
+ network: 'simnet';
372
+ genesis: {
373
+ wallets: Readonly<[SimnetAccountDeployer, ...SimnetAccount[]]>;
374
+ contracts: Readonly<string[]>;
375
+ };
376
+ plan: {
377
+ batches: Readonly<Batch<EmulatedTransaction>[]>;
378
+ };
379
+ }
380
+ interface DevnetDeploymentPlan {
381
+ network: 'devnet';
382
+ plan: {
383
+ batches: Readonly<Batch<RequirementTransaction | ContractPublishTransaction>[]>;
384
+ };
385
+ }
386
+ declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan;
387
+
335
388
  interface ContractCall<T> {
336
389
  function: ClarityAbiFunction$1;
337
390
  nativeArgs: any[];
@@ -345,21 +398,19 @@ interface ContractCallTyped<Args, R> extends Omit<ContractCall<R>, 'nativeArgs'>
345
398
  declare type ContractFunctions = {
346
399
  [key: string]: TypedAbiFunction<unknown[], unknown>;
347
400
  };
348
- declare type AllContracts = {
349
- [contractName: string]: {
350
- functions: ContractFunctions;
351
- [key: string]: any;
352
- };
353
- };
401
+ declare type AllContracts = Record<string, TypedAbi>;
354
402
  declare type ContractCallFunction<Args extends any[], R> = (...args: Args) => ContractCallTyped<Args, R>;
355
403
  declare type FnToContractCall<T> = T extends TypedAbiFunction<infer Arg, infer R> ? ContractCallFunction<Arg, R> : never;
356
404
  declare type FunctionsToContractCalls<T> = T extends ContractFunctions ? {
357
405
  [key in keyof T]: FnToContractCall<T[key]>;
358
406
  } : never;
359
- declare type ContractsToContractCalls<T> = T extends AllContracts ? {
360
- [key in keyof T]: FunctionsToContractCalls<T[key]['functions']>;
407
+ declare type FullContract<T> = T extends TypedAbi ? T & FunctionsToContractCalls<T['functions']> & {
408
+ identifier: string;
361
409
  } : never;
362
- declare function contractFactory<T extends AllContracts>(contracts: T): ContractsToContractCalls<T>;
410
+ declare type ContractFactory<T extends AllContracts> = {
411
+ [key in keyof T]: FullContract<T[key]>;
412
+ };
413
+ declare function contractFactory<T extends AllContracts>(contracts: T, deployer: string | DeploymentPlan): ContractFactory<T>;
363
414
 
364
415
  interface PureContractInfo {
365
416
  abi: ClarityAbi;
@@ -397,4 +448,4 @@ declare function broadcast(transaction: StacksTransaction, options: ApiOptions):
397
448
  stacksTransaction: StacksTransaction;
398
449
  }>;
399
450
 
400
- 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, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, ContractsToContractCalls, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, 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 };
451
+ 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 };
@@ -1,2 +1,2 @@
1
1
  /// <reference path="./index.d.ts" />
2
- import{contractPrincipalCV as S}from"https://deno.land/x/microstacks/clarity.js";var _="ST000000000000000000002AMW42H",w="SP000000000000000000002Q6VF78",T=(t,e)=>{let n=typeof t=="string"?t:String(t),[o,...r]=n.replace("!","").replace("?","").split("-"),a=e?`${o[0].toUpperCase()}${o.slice(1)}`:o;return r.forEach(l=>{a+=l[0].toUpperCase()+l.slice(1)}),a},F=t=>{let e=t.split("/"),n=e[e.length-1],[o]=n.split(".");return o},pt=t=>`${t.address}.${t.name}`,lt=t=>{let e=F(t.contractFile);return S(t.address,e)};function yt(t,e){return`${e?w:_}.${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 Tt(t,e={}){let n={};for(let o in t){let r=t[o],a=e.deployerAddress||r.address,l=`${a}.${r.name}`,s=r.contract(a,r.name);n[o]={identifier:l,contract:s}}return n}import{addressToString as x,ClarityType as i,uintCV as V,contractPrincipalCV as B,intCV as I,stringAsciiCV as P,stringUtf8CV as h,noneCV as M,someCV as $,tupleCV as U,listCV as j,hexToCV as L,bufferCV as K}from"https://deno.land/x/microstacks/clarity.js";import{isClarityAbiList as H,isClarityAbiOptional as G,isClarityAbiStringAscii as D,isClarityAbiStringUtf8 as J,isClarityAbiTuple as z,isClarityAbiBuffer as Q,parseToCV as b}from"https://deno.land/x/microstacks/transactions.js";import{bytesToAscii as W,bytesToHex as Z}from"https://deno.land/x/microstacks/common.js";function q(t){return{isOk:!0,value:t}}function X(t){return{isOk:!1,value:t}}function v(t){if(t.type===i.PrincipalStandard)return x(t.address);if(t.type===i.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 i.BoolTrue:return!0;case i.BoolFalse:return!1;case i.Int:case i.UInt:return t.value;case i.Buffer:return t.buffer;case i.OptionalNone:return null;case i.OptionalSome:return p(t.value);case i.ResponseErr:return e?X(p(t.value)):p(t.value);case i.ResponseOk:return e?q(p(t.value)):p(t.value);case i.PrincipalStandard:case i.PrincipalContract:return v(t);case i.List:return t.list.map(r=>p(r));case i.Tuple:let n={};return Object.keys(t.data).map(r=>[r,p(t.data[r])]).forEach(([r,a])=>{n[r]=a}),n;case i.StringASCII:return t.data;case i.StringUTF8:return t.data}}function St(t,e=!1){return p(L(t),e)}function A(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function C(t,e){if(z(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(o=>{let r=t[o.name];n[o.name]=C(r,o.type)}),U(n)}else if(H(e)){let o=t.map(r=>C(r,e.list.type));return j(o)}else{if(G(e))return t?$(C(t,e.optional)):M();if(D(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return P(t)}else if(J(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return h(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return b(n,e)}else if(e==="uint128"){let n=A(t);return V(n.toString())}else if(e==="int128"){let n=A(t);return I(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,o]=t.split(".");return B(n,o)}else if(Q(e))return K(t)}return b(t,e)}function f(t,e="hex"){switch(t.type){case i.BoolTrue:return"true";case i.BoolFalse:return"false";case i.Int:return t.value.toString();case i.UInt:return`u${t.value.toString()}`;case i.Buffer:if(e==="tryAscii"){let n=W(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${Z(t.buffer)}`;case i.OptionalNone:return"none";case i.OptionalSome:return`(some ${f(t.value,e)})`;case i.ResponseErr:return`(err ${f(t.value,e)})`;case i.ResponseOk:return`(ok ${f(t.value,e)})`;case i.PrincipalStandard:case i.PrincipalContract:return`'${v(t)}`;case i.List:return`(list ${t.list.map(n=>f(n,e)).join(" ")})`;case i.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${f(t.data[n],e)})`).join(" ")})`;case i.StringASCII:return`"${t.data}"`;case i.StringUTF8:return`u"${t.data}"`}}function g(t,e){return e.map((n,o)=>C(n,t.args[o].type))}function m(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function E(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function d(t,e){return g(t,e)}function Y(t,e){let n=t.abi.functions.find(r=>T(r.name)===e);if(n)return function(...r){return{functionArgs:d(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let o=t.abi.maps.find(r=>T(r.name)===e);if(o)return r=>{let a=C(r,o.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:o,nativeKey:r,key:a}};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 it}from"https://deno.land/x/microstacks/common.js";import{broadcastTransaction as at}from"https://deno.land/x/microstacks/transactions.js";async function N(t,e){let o=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:k(s))}),a=await it(o,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!a.ok){let s="";try{s=await a.text()}catch{}throw new Error(`Error calling read-only function. Response ${a.status}: ${a.statusText}. Attempted to fetch ${o} and failed with the message: "${s}"`)}let l=nt(await a.json());return p(l,!0)}async function jt(t,e){let n=await N(t,e);return m(n)}async function Lt(t,e){let n=await N(t,e);return E(n)}async function Kt(t,e){let n=k(t.key),o=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}),r=ot(o.data);return p(r,!0)}async function Ht(t,e){let n=await at(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 Jt(t){let e={};return Object.keys(t).forEach(n=>{e[n]={};let o=t[n];Object.keys(t[n].functions).forEach(r=>{let a=(...l)=>{let s=o.functions[r];return{functionArgs:d(s,l),contractAddress:"",contractName:o.contractName,function:s,nativeArgs:l}};e[n][r]=a})}),e}export{O as CoreNodeEventType,w as MAINNET_BURN_ADDRESS,_ as TESTNET_BURN_ADDRESS,yt as bootContractIdentifier,Ht as broadcast,Jt as contractFactory,f as cvToString,p as cvToValue,X as err,E as expectErr,m as expectOk,Kt as fetchMapGet,Ct as filterEvents,pt as getContractIdentifier,F as getContractNameFromPath,lt as getContractPrincipalCV,St as hexToCvValue,Tt as makeContracts,q as ok,C as parseToCV,et as pureProxy,N as ro,Lt as roErr,jt as roOk,T as toCamelCase,g as transformArgsToCV};
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};
package/dist/index.d.ts CHANGED
@@ -103,18 +103,18 @@ declare type TypedAbi = Readonly<{
103
103
  contractName: string;
104
104
  contractFile?: string;
105
105
  }>;
106
- interface ResponseOk<T> {
106
+ interface ResponseOk<T, E> {
107
107
  value: T;
108
108
  isOk: true;
109
109
  }
110
- interface ResponseErr<T> {
111
- value: T;
110
+ interface ResponseErr<T, E> {
111
+ value: E;
112
112
  isOk: false;
113
113
  }
114
- declare type Response<Ok, Err> = ResponseOk<Ok> | ResponseErr<Err>;
114
+ declare type Response<Ok, Err> = ResponseOk<Ok, Err> | ResponseErr<Ok, Err>;
115
115
 
116
- declare function ok<T>(value: T): ResponseOk<T>;
117
- declare function err<T>(value: T): ResponseErr<T>;
116
+ declare function ok<T, Err = never>(value: T): ResponseOk<T, Err>;
117
+ declare function err<Ok = never, T = unknown>(value: T): ResponseErr<Ok, T>;
118
118
  interface ClarityAbi extends Omit<ClarityAbi$1, 'maps'> {
119
119
  maps: ClarityAbiMap[];
120
120
  clarity_version?: string;
@@ -332,6 +332,59 @@ interface MakeContractsOptions {
332
332
  }
333
333
  declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
334
334
 
335
+ interface EmulatedTransaction {
336
+ 'emulated-contract-publish': {
337
+ 'contract-name': string;
338
+ 'emulated-sender': string;
339
+ path: string;
340
+ };
341
+ }
342
+ interface RequirementTransaction {
343
+ 'requirement-publish': {
344
+ 'contract-id': string;
345
+ 'remap-sender': string;
346
+ 'remap-principals': Record<string, string>;
347
+ path: string;
348
+ };
349
+ }
350
+ interface ContractPublishTransaction {
351
+ 'contract-publish': {
352
+ 'contract-name': string;
353
+ 'expected-sender': string;
354
+ path: string;
355
+ };
356
+ }
357
+ declare type Transaction = EmulatedTransaction | RequirementTransaction | ContractPublishTransaction;
358
+ interface Batch<T extends Transaction> {
359
+ id: number;
360
+ transactions: Readonly<T[]>;
361
+ }
362
+ interface SimnetAccount {
363
+ address: string;
364
+ name: string;
365
+ balance: string;
366
+ }
367
+ interface SimnetAccountDeployer extends SimnetAccount {
368
+ name: 'deployer';
369
+ }
370
+ interface SimnetDeploymentPlan {
371
+ network: 'simnet';
372
+ genesis: {
373
+ wallets: Readonly<[SimnetAccountDeployer, ...SimnetAccount[]]>;
374
+ contracts: Readonly<string[]>;
375
+ };
376
+ plan: {
377
+ batches: Readonly<Batch<EmulatedTransaction>[]>;
378
+ };
379
+ }
380
+ interface DevnetDeploymentPlan {
381
+ network: 'devnet';
382
+ plan: {
383
+ batches: Readonly<Batch<RequirementTransaction | ContractPublishTransaction>[]>;
384
+ };
385
+ }
386
+ declare type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan;
387
+
335
388
  interface ContractCall<T> {
336
389
  function: ClarityAbiFunction$1;
337
390
  nativeArgs: any[];
@@ -345,21 +398,19 @@ interface ContractCallTyped<Args, R> extends Omit<ContractCall<R>, 'nativeArgs'>
345
398
  declare type ContractFunctions = {
346
399
  [key: string]: TypedAbiFunction<unknown[], unknown>;
347
400
  };
348
- declare type AllContracts = {
349
- [contractName: string]: {
350
- functions: ContractFunctions;
351
- [key: string]: any;
352
- };
353
- };
401
+ declare type AllContracts = Record<string, TypedAbi>;
354
402
  declare type ContractCallFunction<Args extends any[], R> = (...args: Args) => ContractCallTyped<Args, R>;
355
403
  declare type FnToContractCall<T> = T extends TypedAbiFunction<infer Arg, infer R> ? ContractCallFunction<Arg, R> : never;
356
404
  declare type FunctionsToContractCalls<T> = T extends ContractFunctions ? {
357
405
  [key in keyof T]: FnToContractCall<T[key]>;
358
406
  } : never;
359
- declare type ContractsToContractCalls<T> = T extends AllContracts ? {
360
- [key in keyof T]: FunctionsToContractCalls<T[key]['functions']>;
407
+ declare type FullContract<T> = T extends TypedAbi ? T & FunctionsToContractCalls<T['functions']> & {
408
+ identifier: string;
361
409
  } : never;
362
- declare function contractFactory<T extends AllContracts>(contracts: T): ContractsToContractCalls<T>;
410
+ declare type ContractFactory<T extends AllContracts> = {
411
+ [key in keyof T]: FullContract<T[key]>;
412
+ };
413
+ declare function contractFactory<T extends AllContracts>(contracts: T, deployer: string | DeploymentPlan): ContractFactory<T>;
363
414
 
364
415
  interface PureContractInfo {
365
416
  abi: ClarityAbi;
@@ -397,4 +448,4 @@ declare function broadcast(transaction: StacksTransaction, options: ApiOptions):
397
448
  stacksTransaction: StacksTransaction;
398
449
  }>;
399
450
 
400
- 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, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, ContractsToContractCalls, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, 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 };
451
+ 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 };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _clarity = require('micro-stacks/clarity');var S="ST000000000000000000002AMW42H",_= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",f= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t),[o,...r]=n.replace("!","").replace("?","").split("-"),a=e?`${o[0].toUpperCase()}${o.slice(1)}`:o;return r.forEach(l=>{a+=l[0].toUpperCase()+l.slice(1)}),a},w= exports.getContractNameFromPath =t=>{let e=t.split("/"),n=e[e.length-1],[o]=n.split(".");return o},ct= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,pt= exports.getContractPrincipalCV =t=>{let e=w(t.contractFile);return _clarity.contractPrincipalCV.call(void 0, t.address,e)};function lt(t,e){return`${e?_:S}.${t}`}var F=(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))(F||{});function ut(t,e){return t.filter(n=>n.type===e)}function ft(t,e={}){let n={};for(let o in t){let r=t[o],a=e.deployerAddress||r.address,l=`${a}.${r.name}`,s=r.contract(a,r.name);n[o]={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 q(t){return{isOk:!1,value:t}}function A(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?q(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 A(t);case _clarity.ClarityType.List:return t.list.map(r=>p(r));case _clarity.ClarityType.Tuple:let n={};return Object.keys(t.data).map(r=>[r,p(t.data[r])]).forEach(([r,a])=>{n[r]=a}),n;case _clarity.ClarityType.StringASCII:return t.data;case _clarity.ClarityType.StringUTF8:return t.data}}function Rt(t,e=!1){return p(_clarity.hexToCV.call(void 0, t),e)}function b(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(o=>{let r=t[o.name];n[o.name]=u(r,o.type)}),_clarity.tupleCV.call(void 0, n)}else if(_transactions.isClarityAbiList.call(void 0, e)){let o=t.map(r=>u(r,e.list.type));return _clarity.listCV.call(void 0, o)}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=b(t);return _clarity.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=b(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,o]=t.split(".");return _clarity.contractPrincipalCV.call(void 0, n,o)}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`'${A(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 v(t,e){return e.map((n,o)=>u(n,t.args[o].type))}function g(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function m(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function T(t,e){return v(t,e)}function X(t,e){let n=t.abi.functions.find(r=>f(r.name)===e);if(n)return function(...r){return{functionArgs:T(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let o=t.abi.maps.find(r=>f(r.name)===e);if(o)return r=>{let a=u(r,o.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:o,nativeKey:r,key:a}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Y={get:X},tt= exports.pureProxy =t=>new Proxy(t,Y);var _api = require('micro-stacks/api');async function k(t,e){let o=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:_clarity.cvToHex.call(void 0, s))}),a=await _common.fetchPrivate.call(void 0, o,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!a.ok){let s="";try{s=await a.text()}catch (e2){}throw new Error(`Error calling read-only function. Response ${a.status}: ${a.statusText}. Attempted to fetch ${o} and failed with the message: "${s}"`)}let l=_api.parseReadOnlyResponse.call(void 0, await a.json());return p(l,!0)}async function Ut(t,e){let n=await k(t,e);return g(n)}async function jt(t,e){let n=await k(t,e);return m(n)}async function Lt(t,e){let n=_clarity.cvToHex.call(void 0, t.key),o=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}),r=_clarity.hexToCV.call(void 0, o.data);return p(r,!0)}async function Kt(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 Dt(t){let e={};return Object.keys(t).forEach(n=>{e[n]={};let o=t[n];Object.keys(t[n].functions).forEach(r=>{let a=(...l)=>{let s=o.functions[r];return{functionArgs:T(s,l),contractAddress:"",contractName:o.contractName,function:s,nativeArgs:l}};e[n][r]=a})}),e}exports.CoreNodeEventType = F; exports.MAINNET_BURN_ADDRESS = _; exports.TESTNET_BURN_ADDRESS = S; exports.bootContractIdentifier = lt; exports.broadcast = Kt; exports.contractFactory = Dt; exports.cvToString = C; exports.cvToValue = p; exports.err = q; exports.expectErr = m; exports.expectOk = g; exports.fetchMapGet = Lt; exports.filterEvents = ut; exports.getContractIdentifier = ct; exports.getContractNameFromPath = w; exports.getContractPrincipalCV = pt; exports.hexToCvValue = Rt; exports.makeContracts = ft; exports.ok = Z; exports.parseToCV = u; exports.pureProxy = tt; exports.ro = k; exports.roErr = jt; exports.roOk = Ut; exports.toCamelCase = f; exports.transformArgsToCV = v;
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;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{contractPrincipalCV as S}from"micro-stacks/clarity";var _="ST000000000000000000002AMW42H",w="SP000000000000000000002Q6VF78",T=(t,e)=>{let n=typeof t=="string"?t:String(t),[o,...r]=n.replace("!","").replace("?","").split("-"),a=e?`${o[0].toUpperCase()}${o.slice(1)}`:o;return r.forEach(l=>{a+=l[0].toUpperCase()+l.slice(1)}),a},F=t=>{let e=t.split("/"),n=e[e.length-1],[o]=n.split(".");return o},pt=t=>`${t.address}.${t.name}`,lt=t=>{let e=F(t.contractFile);return S(t.address,e)};function yt(t,e){return`${e?w:_}.${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 Tt(t,e={}){let n={};for(let o in t){let r=t[o],a=e.deployerAddress||r.address,l=`${a}.${r.name}`,s=r.contract(a,r.name);n[o]={identifier:l,contract:s}}return n}import{addressToString as x,ClarityType as i,uintCV as V,contractPrincipalCV as B,intCV as I,stringAsciiCV as P,stringUtf8CV as h,noneCV as M,someCV as $,tupleCV as U,listCV as j,hexToCV as L,bufferCV as K}from"micro-stacks/clarity";import{isClarityAbiList as H,isClarityAbiOptional as G,isClarityAbiStringAscii as D,isClarityAbiStringUtf8 as J,isClarityAbiTuple as z,isClarityAbiBuffer as Q,parseToCV as b}from"micro-stacks/transactions";import{bytesToAscii as W,bytesToHex as Z}from"micro-stacks/common";function q(t){return{isOk:!0,value:t}}function X(t){return{isOk:!1,value:t}}function v(t){if(t.type===i.PrincipalStandard)return x(t.address);if(t.type===i.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 i.BoolTrue:return!0;case i.BoolFalse:return!1;case i.Int:case i.UInt:return t.value;case i.Buffer:return t.buffer;case i.OptionalNone:return null;case i.OptionalSome:return p(t.value);case i.ResponseErr:return e?X(p(t.value)):p(t.value);case i.ResponseOk:return e?q(p(t.value)):p(t.value);case i.PrincipalStandard:case i.PrincipalContract:return v(t);case i.List:return t.list.map(r=>p(r));case i.Tuple:let n={};return Object.keys(t.data).map(r=>[r,p(t.data[r])]).forEach(([r,a])=>{n[r]=a}),n;case i.StringASCII:return t.data;case i.StringUTF8:return t.data}}function St(t,e=!1){return p(L(t),e)}function A(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function C(t,e){if(z(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(o=>{let r=t[o.name];n[o.name]=C(r,o.type)}),U(n)}else if(H(e)){let o=t.map(r=>C(r,e.list.type));return j(o)}else{if(G(e))return t?$(C(t,e.optional)):M();if(D(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return P(t)}else if(J(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return h(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return b(n,e)}else if(e==="uint128"){let n=A(t);return V(n.toString())}else if(e==="int128"){let n=A(t);return I(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,o]=t.split(".");return B(n,o)}else if(Q(e))return K(t)}return b(t,e)}function f(t,e="hex"){switch(t.type){case i.BoolTrue:return"true";case i.BoolFalse:return"false";case i.Int:return t.value.toString();case i.UInt:return`u${t.value.toString()}`;case i.Buffer:if(e==="tryAscii"){let n=W(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${Z(t.buffer)}`;case i.OptionalNone:return"none";case i.OptionalSome:return`(some ${f(t.value,e)})`;case i.ResponseErr:return`(err ${f(t.value,e)})`;case i.ResponseOk:return`(ok ${f(t.value,e)})`;case i.PrincipalStandard:case i.PrincipalContract:return`'${v(t)}`;case i.List:return`(list ${t.list.map(n=>f(n,e)).join(" ")})`;case i.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${f(t.data[n],e)})`).join(" ")})`;case i.StringASCII:return`"${t.data}"`;case i.StringUTF8:return`u"${t.data}"`}}function g(t,e){return e.map((n,o)=>C(n,t.args[o].type))}function m(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function E(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function d(t,e){return g(t,e)}function Y(t,e){let n=t.abi.functions.find(r=>T(r.name)===e);if(n)return function(...r){return{functionArgs:d(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let o=t.abi.maps.find(r=>T(r.name)===e);if(o)return r=>{let a=C(r,o.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:o,nativeKey:r,key:a}};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 it}from"micro-stacks/common";import{broadcastTransaction as at}from"micro-stacks/transactions";async function N(t,e){let o=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(s=>typeof s=="string"?s:k(s))}),a=await it(o,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!a.ok){let s="";try{s=await a.text()}catch{}throw new Error(`Error calling read-only function. Response ${a.status}: ${a.statusText}. Attempted to fetch ${o} and failed with the message: "${s}"`)}let l=nt(await a.json());return p(l,!0)}async function jt(t,e){let n=await N(t,e);return m(n)}async function Lt(t,e){let n=await N(t,e);return E(n)}async function Kt(t,e){let n=k(t.key),o=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}),r=ot(o.data);return p(r,!0)}async function Ht(t,e){let n=await at(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 Jt(t){let e={};return Object.keys(t).forEach(n=>{e[n]={};let o=t[n];Object.keys(t[n].functions).forEach(r=>{let a=(...l)=>{let s=o.functions[r];return{functionArgs:d(s,l),contractAddress:"",contractName:o.contractName,function:s,nativeArgs:l}};e[n][r]=a})}),e}export{O as CoreNodeEventType,w as MAINNET_BURN_ADDRESS,_ as TESTNET_BURN_ADDRESS,yt as bootContractIdentifier,Ht as broadcast,Jt as contractFactory,f as cvToString,p as cvToValue,X as err,E as expectErr,m as expectOk,Kt as fetchMapGet,Ct as filterEvents,pt as getContractIdentifier,F as getContractNameFromPath,lt as getContractPrincipalCV,St as hexToCvValue,Tt as makeContracts,q as ok,C as parseToCV,et as pureProxy,N as ro,Lt as roErr,jt as roOk,T as toCamelCase,g as transformArgsToCV};
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};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0-next.18",
2
+ "version": "1.0.0-next.22",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -11,23 +11,21 @@
11
11
  "engines": {
12
12
  "node": ">=10"
13
13
  },
14
- "scripts": {
15
- "start": "tsup --watch",
16
- "dev": "tsup --watch",
17
- "build": "shx rm -rf ./dist && tsup && node make-deno.js",
18
- "test": "jest",
19
- "lint": "eslint \"src/**/*.{ts,tsx}\" && prettier --check src/**/*.ts",
20
- "prepublishOnly": "yarn build",
21
- "typecheck": "tsc --noEmit"
22
- },
23
14
  "prettier": "@stacks/prettier-config",
24
15
  "name": "@clarigen/core",
25
16
  "author": "Hank Stoever",
26
17
  "dependencies": {
27
- "micro-stacks": "^0.2.0"
18
+ "micro-stacks": "^0.5.2"
28
19
  },
29
20
  "publishConfig": {
30
21
  "access": "public"
31
22
  },
32
- "gitHead": "597b4b53e6c876336126bf40b4b8850d1385af8f"
33
- }
23
+ "scripts": {
24
+ "start": "tsup --watch",
25
+ "dev": "tsup --watch",
26
+ "build": "shx rm -rf ./dist && tsup && node make-deno.js",
27
+ "test": "jest",
28
+ "lint": "eslint \"src/**/*.{ts,tsx}\" && prettier --check src/**/*.ts",
29
+ "typecheck": "tsc --noEmit"
30
+ }
31
+ }