@clarigen/core 1.0.0-next.11 → 1.0.0-next.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deno/index.d.ts +268 -0
- package/dist/deno/index.js +2 -0
- package/dist/index.d.ts +57 -116
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -5
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { ClarityAbiType, ClarityAbi as ClarityAbi$1, ClarityValue, ClarityAbiFunction, ContractPrincipalCV } from 'https://deno.land/x/microstacks/clarity.js';
|
|
2
|
+
import { StacksNetwork } from 'https://deno.land/x/microstacks/network.js';
|
|
3
|
+
import { StacksTransaction } from 'https://deno.land/x/microstacks/transactions.js';
|
|
4
|
+
|
|
5
|
+
interface ResponseOk<T> {
|
|
6
|
+
value: T;
|
|
7
|
+
isOk: true;
|
|
8
|
+
}
|
|
9
|
+
interface ResponseErr<T> {
|
|
10
|
+
value: T;
|
|
11
|
+
isOk: false;
|
|
12
|
+
}
|
|
13
|
+
declare type Response<Ok, Err> = ResponseOk<Ok> | ResponseErr<Err>;
|
|
14
|
+
declare function ok<T>(value: T): ResponseOk<T>;
|
|
15
|
+
declare function err<T>(value: T): ResponseErr<T>;
|
|
16
|
+
interface ClarityAbiMap {
|
|
17
|
+
name: string;
|
|
18
|
+
key: ClarityAbiType;
|
|
19
|
+
value: ClarityAbiType;
|
|
20
|
+
}
|
|
21
|
+
interface ClarityAbi extends Omit<ClarityAbi$1, 'maps'> {
|
|
22
|
+
maps: ClarityAbiMap[];
|
|
23
|
+
clarity_version?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @param val - ClarityValue
|
|
27
|
+
* @param returnResponse - if true, this will return a "response" object.
|
|
28
|
+
* Otherwise, it returns the inner value of the response (whether ok or err)
|
|
29
|
+
*/
|
|
30
|
+
declare function cvToValue<T = any>(val: ClarityValue, returnResponse?: boolean): T;
|
|
31
|
+
/**
|
|
32
|
+
* Converts a hex encoded string to the javascript clarity value object {type: string; value: any}
|
|
33
|
+
* @param hex - the hex encoded string with or without `0x` prefix
|
|
34
|
+
* @param jsonCompat - enable to serialize bigints to strings
|
|
35
|
+
*/
|
|
36
|
+
declare function hexToCvValue<T>(hex: string, jsonCompat?: boolean): any;
|
|
37
|
+
declare type TupleInput = Record<string, any>;
|
|
38
|
+
declare type CVInput = string | boolean | TupleInput | number | bigint;
|
|
39
|
+
declare function parseToCV(input: CVInput, type: ClarityAbiType): ClarityValue;
|
|
40
|
+
declare function cvToString(val: ClarityValue, encoding?: 'tryAscii' | 'hex'): string;
|
|
41
|
+
declare function transformArgsToCV(func: ClarityAbiFunction, args: any[]): ClarityValue[];
|
|
42
|
+
declare function expectOk<Ok>(response: Response<Ok, any>): Ok;
|
|
43
|
+
declare function expectErr<Err>(response: Response<any, Err>): Err;
|
|
44
|
+
|
|
45
|
+
interface ResultAssets {
|
|
46
|
+
stx: Record<string, string>;
|
|
47
|
+
burns: Record<string, string>;
|
|
48
|
+
tokens: Record<string, Record<string, string>>;
|
|
49
|
+
assets: Record<string, Record<string, string>>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare type ContractBuilder<T> = (contractAddress: string, contractName: string) => T;
|
|
53
|
+
interface Contract<T> {
|
|
54
|
+
address: string;
|
|
55
|
+
contractFile: string;
|
|
56
|
+
contract: ContractBuilder<T>;
|
|
57
|
+
abi: ClarityAbi;
|
|
58
|
+
name: string;
|
|
59
|
+
}
|
|
60
|
+
interface Contracts<T> {
|
|
61
|
+
[key: string]: Contract<T>;
|
|
62
|
+
}
|
|
63
|
+
interface ContractInstance<T> {
|
|
64
|
+
identifier: string;
|
|
65
|
+
contract: T;
|
|
66
|
+
}
|
|
67
|
+
declare type ContractInstances<T extends Contracts<any>> = {
|
|
68
|
+
[Name in keyof T]: ContractInstance<ReturnType<T[Name]['contract']>>;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
declare const TESTNET_BURN_ADDRESS = "ST000000000000000000002AMW42H";
|
|
72
|
+
declare const MAINNET_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
|
|
73
|
+
declare const toCamelCase: (input: string | number | symbol, titleCase?: boolean | undefined) => string;
|
|
74
|
+
declare const getContractNameFromPath: (path: string) => string;
|
|
75
|
+
declare const getContractIdentifier: <T>(contract: Contract<T>) => string;
|
|
76
|
+
declare const getContractPrincipalCV: <T>(contract: Contract<T>) => ContractPrincipalCV;
|
|
77
|
+
declare function bootContractIdentifier(name: string, mainnet: boolean): string;
|
|
78
|
+
|
|
79
|
+
declare enum CoreNodeEventType {
|
|
80
|
+
ContractEvent = "contract_event",
|
|
81
|
+
StxTransferEvent = "stx_transfer_event",
|
|
82
|
+
StxMintEvent = "stx_mint_event",
|
|
83
|
+
StxBurnEvent = "stx_burn_event",
|
|
84
|
+
StxLockEvent = "stx_lock_event",
|
|
85
|
+
NftTransferEvent = "nft_transfer_event",
|
|
86
|
+
NftMintEvent = "nft_mint_event",
|
|
87
|
+
NftBurnEvent = "nft_burn_event",
|
|
88
|
+
FtTransferEvent = "ft_transfer_event",
|
|
89
|
+
FtMintEvent = "ft_mint_event",
|
|
90
|
+
FtBurnEvent = "ft_burn_event"
|
|
91
|
+
}
|
|
92
|
+
declare type NonStandardClarityValue = unknown;
|
|
93
|
+
interface CoreNodeEventBase {
|
|
94
|
+
/** 0x-prefix transaction hash. */
|
|
95
|
+
txid: string;
|
|
96
|
+
event_index: number;
|
|
97
|
+
committed: boolean;
|
|
98
|
+
}
|
|
99
|
+
interface SmartContractEvent extends CoreNodeEventBase {
|
|
100
|
+
type: CoreNodeEventType.ContractEvent;
|
|
101
|
+
contract_event: {
|
|
102
|
+
/** Fully qualified contract ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.kv-store" */
|
|
103
|
+
contract_identifier: string;
|
|
104
|
+
topic: string;
|
|
105
|
+
value: NonStandardClarityValue;
|
|
106
|
+
/** Hex encoded Clarity value. */
|
|
107
|
+
raw_value: string;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
interface StxTransferEvent extends CoreNodeEventBase {
|
|
111
|
+
type: CoreNodeEventType.StxTransferEvent;
|
|
112
|
+
stx_transfer_event: {
|
|
113
|
+
recipient: string;
|
|
114
|
+
sender: string;
|
|
115
|
+
amount: string;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
interface StxMintEvent extends CoreNodeEventBase {
|
|
119
|
+
type: CoreNodeEventType.StxMintEvent;
|
|
120
|
+
stx_mint_event: {
|
|
121
|
+
recipient: string;
|
|
122
|
+
amount: string;
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
interface StxBurnEvent extends CoreNodeEventBase {
|
|
126
|
+
type: CoreNodeEventType.StxBurnEvent;
|
|
127
|
+
stx_burn_event: {
|
|
128
|
+
sender: string;
|
|
129
|
+
amount: string;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
interface StxLockEvent extends CoreNodeEventBase {
|
|
133
|
+
type: CoreNodeEventType.StxLockEvent;
|
|
134
|
+
/** TODO: what dis? */
|
|
135
|
+
committed: boolean;
|
|
136
|
+
stx_lock_event: {
|
|
137
|
+
/** String quoted base10 integer. */
|
|
138
|
+
locked_amount: string;
|
|
139
|
+
/** String quoted base10 integer. */
|
|
140
|
+
unlock_height: string;
|
|
141
|
+
/** STX principal associated with the locked tokens. */
|
|
142
|
+
locked_address: string;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
interface NftTransferEvent extends CoreNodeEventBase {
|
|
146
|
+
type: CoreNodeEventType.NftTransferEvent;
|
|
147
|
+
nft_transfer_event: {
|
|
148
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
149
|
+
asset_identifier: string;
|
|
150
|
+
recipient: string;
|
|
151
|
+
sender: string;
|
|
152
|
+
value: NonStandardClarityValue;
|
|
153
|
+
/** Hex encoded Clarity value. */
|
|
154
|
+
raw_value: string;
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
interface NftMintEvent extends CoreNodeEventBase {
|
|
158
|
+
type: CoreNodeEventType.NftMintEvent;
|
|
159
|
+
nft_mint_event: {
|
|
160
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
161
|
+
asset_identifier: string;
|
|
162
|
+
recipient: string;
|
|
163
|
+
value: NonStandardClarityValue;
|
|
164
|
+
/** Hex encoded Clarity value. */
|
|
165
|
+
raw_value: string;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
interface NftBurnEvent extends CoreNodeEventBase {
|
|
169
|
+
type: CoreNodeEventType.NftBurnEvent;
|
|
170
|
+
nft_burn_event: {
|
|
171
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
172
|
+
asset_identifier: string;
|
|
173
|
+
sender: string;
|
|
174
|
+
value: NonStandardClarityValue;
|
|
175
|
+
/** Hex encoded Clarity value. */
|
|
176
|
+
raw_value: string;
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
interface FtTransferEvent extends CoreNodeEventBase {
|
|
180
|
+
type: CoreNodeEventType.FtTransferEvent;
|
|
181
|
+
ft_transfer_event: {
|
|
182
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
183
|
+
asset_identifier: string;
|
|
184
|
+
recipient: string;
|
|
185
|
+
sender: string;
|
|
186
|
+
amount: string;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
interface FtMintEvent extends CoreNodeEventBase {
|
|
190
|
+
type: CoreNodeEventType.FtMintEvent;
|
|
191
|
+
ft_mint_event: {
|
|
192
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
193
|
+
asset_identifier: string;
|
|
194
|
+
recipient: string;
|
|
195
|
+
amount: string;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
interface FtBurnEvent extends CoreNodeEventBase {
|
|
199
|
+
type: CoreNodeEventType.FtBurnEvent;
|
|
200
|
+
ft_burn_event: {
|
|
201
|
+
/** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
|
|
202
|
+
asset_identifier: string;
|
|
203
|
+
sender: string;
|
|
204
|
+
amount: string;
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
declare type CoreNodeEvent = SmartContractEvent | StxTransferEvent | StxMintEvent | StxBurnEvent | StxLockEvent | FtTransferEvent | FtMintEvent | FtBurnEvent | NftTransferEvent | NftMintEvent | NftBurnEvent;
|
|
208
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.ContractEvent): SmartContractEvent[];
|
|
209
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxTransferEvent): StxTransferEvent[];
|
|
210
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxMintEvent): StxMintEvent[];
|
|
211
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxBurnEvent): StxBurnEvent[];
|
|
212
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxLockEvent): StxLockEvent[];
|
|
213
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftTransferEvent): NftTransferEvent[];
|
|
214
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftMintEvent): NftMintEvent[];
|
|
215
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftBurnEvent): NftBurnEvent[];
|
|
216
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtTransferEvent): FtTransferEvent[];
|
|
217
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtMintEvent): FtMintEvent[];
|
|
218
|
+
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtBurnEvent): FtBurnEvent[];
|
|
219
|
+
|
|
220
|
+
interface MakeContractsOptions {
|
|
221
|
+
deployerAddress?: string;
|
|
222
|
+
}
|
|
223
|
+
declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
|
|
224
|
+
|
|
225
|
+
interface ContractCall<T> {
|
|
226
|
+
function: ClarityAbiFunction;
|
|
227
|
+
nativeArgs: any[];
|
|
228
|
+
functionArgs: ClarityValue[];
|
|
229
|
+
contractAddress: string;
|
|
230
|
+
contractName: string;
|
|
231
|
+
}
|
|
232
|
+
interface PureContractInfo {
|
|
233
|
+
abi: ClarityAbi;
|
|
234
|
+
contractAddress: string;
|
|
235
|
+
contractName: string;
|
|
236
|
+
}
|
|
237
|
+
declare type ContractFn<T> = (args: any) => T;
|
|
238
|
+
declare type ContractReturn<C extends ContractFn<ContractCalls.ReadOnly<any>>> = C extends ContractFn<ContractCalls.ReadOnly<infer T>> ? T : unknown;
|
|
239
|
+
declare type ContractReturnOk<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<infer O, any> ? O : unknown;
|
|
240
|
+
declare type ContractReturnErr<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<any, infer E> ? E : unknown;
|
|
241
|
+
interface MapGet<Key, Val> {
|
|
242
|
+
map: ClarityAbiMap;
|
|
243
|
+
nativeKey: Key;
|
|
244
|
+
key: ClarityValue;
|
|
245
|
+
contractAddress: string;
|
|
246
|
+
contractName: string;
|
|
247
|
+
}
|
|
248
|
+
declare namespace ContractCalls {
|
|
249
|
+
type ReadOnly<T> = ContractCall<T>;
|
|
250
|
+
type Public<Ok, Err> = ContractCall<Response<Ok, Err>>;
|
|
251
|
+
type Private<T> = ContractCall<T>;
|
|
252
|
+
type Map<Key, Val> = MapGet<Key, Val>;
|
|
253
|
+
}
|
|
254
|
+
declare const pureProxy: <T extends object>(target: PureContractInfo) => T;
|
|
255
|
+
|
|
256
|
+
interface ApiOptions {
|
|
257
|
+
network: StacksNetwork;
|
|
258
|
+
}
|
|
259
|
+
declare function ro<T>(tx: ContractCall<T>, options: ApiOptions): Promise<T>;
|
|
260
|
+
declare function roOk<Ok>(tx: ContractCall<Response<Ok, any>>, options: ApiOptions): Promise<Ok>;
|
|
261
|
+
declare function roErr<Err>(tx: ContractCall<Response<any, Err>>, options: ApiOptions): Promise<Err>;
|
|
262
|
+
declare function fetchMapGet<T extends ContractCalls.Map<any, Val>, Val>(map: T, options: ApiOptions): Promise<Val | null>;
|
|
263
|
+
declare function broadcast(transaction: StacksTransaction, options: ApiOptions): Promise<{
|
|
264
|
+
txId: string;
|
|
265
|
+
stacksTransaction: StacksTransaction;
|
|
266
|
+
}>;
|
|
267
|
+
|
|
268
|
+
export { ClarityAbi, ClarityAbiMap, Contract, ContractBuilder, ContractCall, ContractCalls, ContractFn, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, FtBurnEvent, FtMintEvent, FtTransferEvent, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, bootContractIdentifier, broadcast, cvToString, cvToValue, err, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, ok, parseToCV, pureProxy, ro, roErr, roOk, toCamelCase, transformArgsToCV };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/// <reference path="./index.d.ts" />
|
|
2
|
+
import{contractPrincipalCV as S}from"https://deno.land/x/microstacks/clarity.js";var A="ST000000000000000000002AMW42H",_="SP000000000000000000002Q6VF78",y=(t,e)=>{let n=typeof t=="string"?t:String(t),[a,...r]=n.replace("!","").replace("?","").split("-"),s=e?`${a[0].toUpperCase()}${a.slice(1)}`:a;return r.forEach(l=>{s+=l[0].toUpperCase()+l.slice(1)}),s},O=t=>{let e=t.split("/"),n=e[e.length-1],[a]=n.split(".");return a},pt=t=>`${t.address}.${t.name}`,ut=t=>{let e=O(t.contractFile);return S(t.address,e)};function ft(t,e){return`${e?_:A}.${t}`}var w=(i=>(i.ContractEvent="contract_event",i.StxTransferEvent="stx_transfer_event",i.StxMintEvent="stx_mint_event",i.StxBurnEvent="stx_burn_event",i.StxLockEvent="stx_lock_event",i.NftTransferEvent="nft_transfer_event",i.NftMintEvent="nft_mint_event",i.NftBurnEvent="nft_burn_event",i.FtTransferEvent="ft_transfer_event",i.FtMintEvent="ft_mint_event",i.FtBurnEvent="ft_burn_event",i))(w||{});function dt(t,e){return t.filter(n=>n.type===e)}function yt(t,e={}){let n={};for(let a in t){let r=t[a],s=e.deployerAddress||r.address,l=`${s}.${r.name}`,p=r.contract(s,r.name);n[a]={identifier:l,contract:p}}return n}import{addressToString as v,ClarityType as o,uintCV as R,contractPrincipalCV as V,intCV as B,stringAsciiCV as F,stringUtf8CV as I,noneCV as P,someCV as h,tupleCV as M,listCV as $,hexToCV as U,bufferCV as j}from"https://deno.land/x/microstacks/clarity.js";import{isClarityAbiList as L,isClarityAbiOptional as H,isClarityAbiStringAscii as K,isClarityAbiStringUtf8 as G,isClarityAbiTuple as D,isClarityAbiBuffer as J,parseToCV as x}from"https://deno.land/x/microstacks/transactions.js";import{bytesToAscii as z,bytesToHex as Q}from"https://deno.land/x/microstacks/common.js";function W(t){return{isOk:!0,value:t}}function q(t){return{isOk:!1,value:t}}function T(t){if(t.type===o.PrincipalStandard)return v(t.address);if(t.type===o.PrincipalContract)return`${v(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function c(t,e=!1){switch(t.type){case o.BoolTrue:return!0;case o.BoolFalse:return!1;case o.Int:case o.UInt:return t.value;case o.Buffer:return t.buffer;case o.OptionalNone:return null;case o.OptionalSome:return c(t.value);case o.ResponseErr:return e?q(c(t.value)):c(t.value);case o.ResponseOk:return e?W(c(t.value)):c(t.value);case o.PrincipalStandard:case o.PrincipalContract:return T(t);case o.List:return t.list.map(r=>c(r));case o.Tuple:let n={};return Object.keys(t.data).map(r=>[r,c(t.data[r])]).forEach(([r,s])=>{n[r]=s}),n;case o.StringASCII:return t.data;case o.StringUTF8:return t.data}}function _t(t,e=!1){return c(U(t),e)}function E(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function d(t,e){if(D(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(a=>{let r=t[a.name];n[a.name]=d(r,a.type)}),M(n)}else if(L(e)){let a=t.map(r=>d(r,e.list.type));return $(a)}else{if(H(e))return t?h(d(t,e.optional)):P();if(K(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return F(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 x(n,e)}else if(e==="uint128"){let n=E(t);return R(n.toString())}else if(e==="int128"){let n=E(t);return B(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,a]=t.split(".");return V(n,a)}else if(J(e))return j(t)}return x(t,e)}function C(t,e="hex"){switch(t.type){case o.BoolTrue:return"true";case o.BoolFalse:return"false";case o.Int:return t.value.toString();case o.UInt:return`u${t.value.toString()}`;case o.Buffer:if(e==="tryAscii"){let n=z(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${Q(t.buffer)}`;case o.OptionalNone:return"none";case o.OptionalSome:return`(some ${C(t.value,e)})`;case o.ResponseErr:return`(err ${C(t.value,e)})`;case o.ResponseOk:return`(ok ${C(t.value,e)})`;case o.PrincipalStandard:case o.PrincipalContract:return`'${T(t)}`;case o.List:return`(list ${t.list.map(n=>C(n,e)).join(" ")})`;case o.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${C(t.data[n],e)})`).join(" ")})`;case o.StringASCII:return`"${t.data}"`;case o.StringUTF8:return`u"${t.data}"`}}function m(t,e){return e.map((n,a)=>d(n,t.args[a].type))}function g(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function N(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function X(t,e){return m(t,e)}function Y(t,e){let n=t.abi.functions.find(r=>y(r.name)===e);if(n)return function(...r){return{functionArgs:X(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let a=t.abi.maps.find(r=>y(r.name)===e);if(a)return r=>{let s=d(r,a.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:a,nativeKey:r,key:s}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Z={get:Y},tt=t=>new Proxy(t,Z);import{parseReadOnlyResponse as et,fetchContractDataMapEntry as nt}from"https://deno.land/x/microstacks/api.js";import{cvToHex as k,hexToCV as rt}from"https://deno.land/x/microstacks/clarity.js";import{fetchPrivate as ot}from"https://deno.land/x/microstacks/common.js";import{broadcastTransaction as at}from"https://deno.land/x/microstacks/transactions.js";async function b(t,e){let a=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(p=>typeof p=="string"?p:k(p))}),s=await ot(a,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!s.ok){let p="";try{p=await s.text()}catch{}throw new Error(`Error calling read-only function. Response ${s.status}: ${s.statusText}. Attempted to fetch ${a} and failed with the message: "${p}"`)}let l=et(await s.json());return c(l,!0)}async function Kt(t,e){let n=await b(t,e);return g(n)}async function Gt(t,e){let n=await b(t,e);return N(n)}async function Dt(t,e){let n=k(t.key),a=await nt({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=rt(a.data);return c(r,!0)}async function Jt(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}}export{w as CoreNodeEventType,_ as MAINNET_BURN_ADDRESS,A as TESTNET_BURN_ADDRESS,ft as bootContractIdentifier,Jt as broadcast,C as cvToString,c as cvToValue,q as err,N as expectErr,g as expectOk,Dt as fetchMapGet,dt as filterEvents,pt as getContractIdentifier,O as getContractNameFromPath,ut as getContractPrincipalCV,_t as hexToCvValue,yt as makeContracts,W as ok,d as parseToCV,tt as pureProxy,b as ro,Gt as roErr,Kt as roOk,y as toCamelCase,m as transformArgsToCV};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { ClarityAbi as ClarityAbi$1, ClarityValue,
|
|
2
|
-
import { Result } from 'neverthrow';
|
|
3
|
-
import { StacksTransaction, PostConditionMode, PostCondition } from 'micro-stacks/transactions';
|
|
1
|
+
import { ClarityAbiType, ClarityAbi as ClarityAbi$1, ClarityValue, ClarityAbiFunction, ContractPrincipalCV } from 'micro-stacks/clarity';
|
|
4
2
|
import { StacksNetwork } from 'micro-stacks/network';
|
|
3
|
+
import { StacksTransaction } from 'micro-stacks/transactions';
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
interface ResponseOk<T> {
|
|
6
|
+
value: T;
|
|
7
|
+
isOk: true;
|
|
8
|
+
}
|
|
9
|
+
interface ResponseErr<T> {
|
|
10
|
+
value: T;
|
|
11
|
+
isOk: false;
|
|
8
12
|
}
|
|
13
|
+
declare type Response<Ok, Err> = ResponseOk<Ok> | ResponseErr<Err>;
|
|
14
|
+
declare function ok<T>(value: T): ResponseOk<T>;
|
|
15
|
+
declare function err<T>(value: T): ResponseErr<T>;
|
|
9
16
|
interface ClarityAbiMap {
|
|
10
17
|
name: string;
|
|
11
18
|
key: ClarityAbiType;
|
|
@@ -17,8 +24,8 @@ interface ClarityAbi extends Omit<ClarityAbi$1, 'maps'> {
|
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* @param val - ClarityValue
|
|
20
|
-
* @param returnResponse - if true, this will return a "response" object
|
|
21
|
-
*
|
|
27
|
+
* @param returnResponse - if true, this will return a "response" object.
|
|
28
|
+
* Otherwise, it returns the inner value of the response (whether ok or err)
|
|
22
29
|
*/
|
|
23
30
|
declare function cvToValue<T = any>(val: ClarityValue, returnResponse?: boolean): T;
|
|
24
31
|
/**
|
|
@@ -31,8 +38,43 @@ declare type TupleInput = Record<string, any>;
|
|
|
31
38
|
declare type CVInput = string | boolean | TupleInput | number | bigint;
|
|
32
39
|
declare function parseToCV(input: CVInput, type: ClarityAbiType): ClarityValue;
|
|
33
40
|
declare function cvToString(val: ClarityValue, encoding?: 'tryAscii' | 'hex'): string;
|
|
34
|
-
declare function
|
|
35
|
-
declare function
|
|
41
|
+
declare function transformArgsToCV(func: ClarityAbiFunction, args: any[]): ClarityValue[];
|
|
42
|
+
declare function expectOk<Ok>(response: Response<Ok, any>): Ok;
|
|
43
|
+
declare function expectErr<Err>(response: Response<any, Err>): Err;
|
|
44
|
+
|
|
45
|
+
interface ResultAssets {
|
|
46
|
+
stx: Record<string, string>;
|
|
47
|
+
burns: Record<string, string>;
|
|
48
|
+
tokens: Record<string, Record<string, string>>;
|
|
49
|
+
assets: Record<string, Record<string, string>>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare type ContractBuilder<T> = (contractAddress: string, contractName: string) => T;
|
|
53
|
+
interface Contract<T> {
|
|
54
|
+
address: string;
|
|
55
|
+
contractFile: string;
|
|
56
|
+
contract: ContractBuilder<T>;
|
|
57
|
+
abi: ClarityAbi;
|
|
58
|
+
name: string;
|
|
59
|
+
}
|
|
60
|
+
interface Contracts<T> {
|
|
61
|
+
[key: string]: Contract<T>;
|
|
62
|
+
}
|
|
63
|
+
interface ContractInstance<T> {
|
|
64
|
+
identifier: string;
|
|
65
|
+
contract: T;
|
|
66
|
+
}
|
|
67
|
+
declare type ContractInstances<T extends Contracts<any>> = {
|
|
68
|
+
[Name in keyof T]: ContractInstance<ReturnType<T[Name]['contract']>>;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
declare const TESTNET_BURN_ADDRESS = "ST000000000000000000002AMW42H";
|
|
72
|
+
declare const MAINNET_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
|
|
73
|
+
declare const toCamelCase: (input: string | number | symbol, titleCase?: boolean | undefined) => string;
|
|
74
|
+
declare const getContractNameFromPath: (path: string) => string;
|
|
75
|
+
declare const getContractIdentifier: <T>(contract: Contract<T>) => string;
|
|
76
|
+
declare const getContractPrincipalCV: <T>(contract: Contract<T>) => ContractPrincipalCV;
|
|
77
|
+
declare function bootContractIdentifier(name: string, mainnet: boolean): string;
|
|
36
78
|
|
|
37
79
|
declare enum CoreNodeEventType {
|
|
38
80
|
ContractEvent = "contract_event",
|
|
@@ -175,105 +217,6 @@ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.F
|
|
|
175
217
|
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtMintEvent): FtMintEvent[];
|
|
176
218
|
declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtBurnEvent): FtBurnEvent[];
|
|
177
219
|
|
|
178
|
-
interface ResultAssets {
|
|
179
|
-
stx: Record<string, string>;
|
|
180
|
-
burns: Record<string, string>;
|
|
181
|
-
tokens: Record<string, Record<string, string>>;
|
|
182
|
-
assets: Record<string, Record<string, string>>;
|
|
183
|
-
}
|
|
184
|
-
interface TransactionResultOk<Ok> {
|
|
185
|
-
value: Ok;
|
|
186
|
-
response: ResponseOk<Ok>;
|
|
187
|
-
isOk: true;
|
|
188
|
-
events: CoreNodeEvent[];
|
|
189
|
-
costs: {
|
|
190
|
-
[key: string]: any;
|
|
191
|
-
runtime: number;
|
|
192
|
-
};
|
|
193
|
-
assets: ResultAssets;
|
|
194
|
-
}
|
|
195
|
-
interface TransactionResultErr<Err> {
|
|
196
|
-
value: Err;
|
|
197
|
-
response: ResponseErr<Err>;
|
|
198
|
-
costs: {
|
|
199
|
-
[key: string]: any;
|
|
200
|
-
runtime: number;
|
|
201
|
-
};
|
|
202
|
-
isOk: false;
|
|
203
|
-
}
|
|
204
|
-
declare type TransactionResult<Ok, Err> = TransactionResultOk<Ok> | TransactionResultErr<Err>;
|
|
205
|
-
interface TransactionReceiptBase<Ok, Err> {
|
|
206
|
-
getResult: () => Promise<TransactionResult<Ok, Err>>;
|
|
207
|
-
}
|
|
208
|
-
interface WebTransactionReceipt<Ok, Err> extends TransactionReceiptBase<Ok, Err> {
|
|
209
|
-
txId: string;
|
|
210
|
-
stacksTransaction: StacksTransaction;
|
|
211
|
-
}
|
|
212
|
-
interface TestTransacionReceipt<Ok, Err> extends TransactionReceiptBase<Ok, Err> {
|
|
213
|
-
result: TransactionResult<Ok, Err>;
|
|
214
|
-
}
|
|
215
|
-
declare type TransactionReceipt<Ok, Err> = WebTransactionReceipt<Ok, Err> | TestTransacionReceipt<Ok, Err> | TransactionReceiptBase<Ok, Err>;
|
|
216
|
-
interface WebSignerOptions {
|
|
217
|
-
postConditionMode?: PostConditionMode;
|
|
218
|
-
postConditions?: PostCondition[];
|
|
219
|
-
sponsored?: boolean;
|
|
220
|
-
fee?: number;
|
|
221
|
-
}
|
|
222
|
-
interface TestSignerOptions {
|
|
223
|
-
sender: string;
|
|
224
|
-
}
|
|
225
|
-
interface NodeSignerOptions {
|
|
226
|
-
postConditionMode?: PostConditionMode;
|
|
227
|
-
nonce?: number;
|
|
228
|
-
postConditions?: PostCondition[];
|
|
229
|
-
sponsored?: boolean;
|
|
230
|
-
fee?: number;
|
|
231
|
-
}
|
|
232
|
-
declare type SubmitOptions = TestSignerOptions | WebSignerOptions | NodeSignerOptions;
|
|
233
|
-
declare type Submitter<Ok, Err> = (options: SubmitOptions) => Promise<TransactionReceipt<Ok, Err>>;
|
|
234
|
-
interface ResponseOk<Ok> {
|
|
235
|
-
value: Ok;
|
|
236
|
-
}
|
|
237
|
-
interface ResponseErr<Err> {
|
|
238
|
-
value: Err;
|
|
239
|
-
}
|
|
240
|
-
declare type Response<Ok, Err> = ResponseOk<Ok> | ResponseErr<Err>;
|
|
241
|
-
interface Transaction<Ok, Err> {
|
|
242
|
-
submit: Submitter<Ok, Err>;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
declare abstract class BaseProvider {
|
|
246
|
-
callReadOnly(func: ClarityAbiFunction, args: any[]): Promise<void>;
|
|
247
|
-
callPublic(func: ClarityAbiFunction, args: any[]): Transaction<any, any>;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
declare type ContractBuilder<T> = (contractAddress: string, contractName: string) => T;
|
|
251
|
-
interface Contract<T> {
|
|
252
|
-
address: string;
|
|
253
|
-
contractFile: string;
|
|
254
|
-
contract: ContractBuilder<T>;
|
|
255
|
-
abi: ClarityAbi;
|
|
256
|
-
name: string;
|
|
257
|
-
}
|
|
258
|
-
interface Contracts<T> {
|
|
259
|
-
[key: string]: Contract<T>;
|
|
260
|
-
}
|
|
261
|
-
interface ContractInstance<T> {
|
|
262
|
-
identifier: string;
|
|
263
|
-
contract: T;
|
|
264
|
-
}
|
|
265
|
-
declare type ContractInstances<T extends Contracts<any>> = {
|
|
266
|
-
[Name in keyof T]: ContractInstance<ReturnType<T[Name]['contract']>>;
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
declare const TESTNET_BURN_ADDRESS = "ST000000000000000000002AMW42H";
|
|
270
|
-
declare const MAINNET_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
|
|
271
|
-
declare const toCamelCase: (input: string | number | symbol, titleCase?: boolean | undefined) => string;
|
|
272
|
-
declare const getContractNameFromPath: (path: string) => string;
|
|
273
|
-
declare const getContractIdentifier: <T>(contract: Contract<T>) => string;
|
|
274
|
-
declare const getContractPrincipalCV: <T>(contract: Contract<T>) => ContractPrincipalCV;
|
|
275
|
-
declare function bootContractIdentifier(name: string, mainnet: boolean): string;
|
|
276
|
-
|
|
277
220
|
interface MakeContractsOptions {
|
|
278
221
|
deployerAddress?: string;
|
|
279
222
|
}
|
|
@@ -293,8 +236,8 @@ interface PureContractInfo {
|
|
|
293
236
|
}
|
|
294
237
|
declare type ContractFn<T> = (args: any) => T;
|
|
295
238
|
declare type ContractReturn<C extends ContractFn<ContractCalls.ReadOnly<any>>> = C extends ContractFn<ContractCalls.ReadOnly<infer T>> ? T : unknown;
|
|
296
|
-
declare type ContractReturnOk<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends
|
|
297
|
-
declare type ContractReturnErr<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends
|
|
239
|
+
declare type ContractReturnOk<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<infer O, any> ? O : unknown;
|
|
240
|
+
declare type ContractReturnErr<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<any, infer E> ? E : unknown;
|
|
298
241
|
interface MapGet<Key, Val> {
|
|
299
242
|
map: ClarityAbiMap;
|
|
300
243
|
nativeKey: Key;
|
|
@@ -304,7 +247,7 @@ interface MapGet<Key, Val> {
|
|
|
304
247
|
}
|
|
305
248
|
declare namespace ContractCalls {
|
|
306
249
|
type ReadOnly<T> = ContractCall<T>;
|
|
307
|
-
type Public<Ok, Err> = ContractCall<
|
|
250
|
+
type Public<Ok, Err> = ContractCall<Response<Ok, Err>>;
|
|
308
251
|
type Private<T> = ContractCall<T>;
|
|
309
252
|
type Map<Key, Val> = MapGet<Key, Val>;
|
|
310
253
|
}
|
|
@@ -314,14 +257,12 @@ interface ApiOptions {
|
|
|
314
257
|
network: StacksNetwork;
|
|
315
258
|
}
|
|
316
259
|
declare function ro<T>(tx: ContractCall<T>, options: ApiOptions): Promise<T>;
|
|
317
|
-
declare function roOk<Ok>(tx: ContractCall<
|
|
318
|
-
declare function roErr<Err>(tx: ContractCall<
|
|
260
|
+
declare function roOk<Ok>(tx: ContractCall<Response<Ok, any>>, options: ApiOptions): Promise<Ok>;
|
|
261
|
+
declare function roErr<Err>(tx: ContractCall<Response<any, Err>>, options: ApiOptions): Promise<Err>;
|
|
319
262
|
declare function fetchMapGet<T extends ContractCalls.Map<any, Val>, Val>(map: T, options: ApiOptions): Promise<Val | null>;
|
|
320
263
|
declare function broadcast(transaction: StacksTransaction, options: ApiOptions): Promise<{
|
|
321
264
|
txId: string;
|
|
322
265
|
stacksTransaction: StacksTransaction;
|
|
323
266
|
}>;
|
|
324
267
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
export { BaseProvider, ClarityAbi, ClarityTypes, Contract, ContractBuilder, ContractCall, ContractCalls, ContractFn, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, FtBurnEvent, FtMintEvent, FtTransferEvent, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NodeSignerOptions, NonStandardClarityValue, Response, ResultAssets, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, SubmitOptions, Submitter, TESTNET_BURN_ADDRESS, TestSignerOptions, TestTransacionReceipt, Transaction, TransactionReceipt, TransactionReceiptBase, TransactionResult, TransactionResultErr, TransactionResultOk, WebSignerOptions, WebTransactionReceipt, bootContractIdentifier, broadcast, cvToString, cvToValue, expectErr, expectOk, fetchMapGet, filterEvents, getContractIdentifier, getContractNameFromPath, getContractPrincipalCV, hexToCvValue, makeContracts, parseToCV, proxy, pureProxy, ro, roErr, roOk, toCamelCase };
|
|
268
|
+
export { ClarityAbi, ClarityAbiMap, Contract, ContractBuilder, ContractCall, ContractCalls, ContractFn, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, FtBurnEvent, FtMintEvent, FtTransferEvent, MAINNET_BURN_ADDRESS, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, Response, ResponseErr, ResponseOk, ResultAssets, SmartContractEvent, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, bootContractIdentifier, broadcast, 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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _clarity = require('micro-stacks/clarity');var S="ST000000000000000000002AMW42H",A= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",C= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t),[a,...r]=n.replace("!","").replace("?","").split("-"),s=e?`${a[0].toUpperCase()}${a.slice(1)}`:a;return r.forEach(f=>{s+=f[0].toUpperCase()+f.slice(1)}),s},_= exports.getContractNameFromPath =t=>{let e=t.split("/"),n=e[e.length-1],[a]=n.split(".");return a},ct= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,pt= exports.getContractPrincipalCV =t=>{let e=_(t.contractFile);return _clarity.contractPrincipalCV.call(void 0, t.address,e)};function ut(t,e){return`${e?A:S}.${t}`}var O=(i=>(i.ContractEvent="contract_event",i.StxTransferEvent="stx_transfer_event",i.StxMintEvent="stx_mint_event",i.StxBurnEvent="stx_burn_event",i.StxLockEvent="stx_lock_event",i.NftTransferEvent="nft_transfer_event",i.NftMintEvent="nft_mint_event",i.NftBurnEvent="nft_burn_event",i.FtTransferEvent="ft_transfer_event",i.FtMintEvent="ft_mint_event",i.FtBurnEvent="ft_burn_event",i))(O||{});function lt(t,e){return t.filter(n=>n.type===e)}function Ct(t,e={}){let n={};for(let a in t){let r=t[a],s=e.deployerAddress||r.address,f=`${s}.${r.name}`,p=r.contract(s,r.name);n[a]={identifier:f,contract:p}}return n}var _transactions = require('micro-stacks/transactions');var _common = require('micro-stacks/common');function Q(t){return{isOk:!0,value:t}}function W(t){return{isOk:!1,value:t}}function E(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 c(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 c(t.value);case _clarity.ClarityType.ResponseErr:return e?W(c(t.value)):c(t.value);case _clarity.ClarityType.ResponseOk:return e?Q(c(t.value)):c(t.value);case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return E(t);case _clarity.ClarityType.List:return t.list.map(r=>c(r));case _clarity.ClarityType.Tuple:let n={};return Object.keys(t.data).map(r=>[r,c(t.data[r])]).forEach(([r,s])=>{n[r]=s}),n;case _clarity.ClarityType.StringASCII:return t.data;case _clarity.ClarityType.StringUTF8:return t.data}}function At(t,e=!1){return c(_clarity.hexToCV.call(void 0, t),e)}function x(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function l(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(a=>{let r=t[a.name];n[a.name]=l(r,a.type)}),_clarity.tupleCV.call(void 0, n)}else if(_transactions.isClarityAbiList.call(void 0, e)){let a=t.map(r=>l(r,e.list.type));return _clarity.listCV.call(void 0, a)}else{if(_transactions.isClarityAbiOptional.call(void 0, e))return t?_clarity.someCV.call(void 0, l(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=x(t);return _clarity.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=x(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,a]=t.split(".");return _clarity.contractPrincipalCV.call(void 0, n,a)}else if(_transactions.isClarityAbiBuffer.call(void 0, e))return _clarity.bufferCV.call(void 0, t)}return _transactions.parseToCV.call(void 0, t,e)}function d(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 ${d(t.value,e)})`;case _clarity.ClarityType.ResponseErr:return`(err ${d(t.value,e)})`;case _clarity.ClarityType.ResponseOk:return`(ok ${d(t.value,e)})`;case _clarity.ClarityType.PrincipalStandard:case _clarity.ClarityType.PrincipalContract:return`'${E(t)}`;case _clarity.ClarityType.List:return`(list ${t.list.map(n=>d(n,e)).join(" ")})`;case _clarity.ClarityType.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${d(t.data[n],e)})`).join(" ")})`;case _clarity.ClarityType.StringASCII:return`"${t.data}"`;case _clarity.ClarityType.StringUTF8:return`u"${t.data}"`}}function T(t,e){return e.map((n,a)=>l(n,t.args[a].type))}function m(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function g(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function q(t,e){return T(t,e)}function X(t,e){let n=t.abi.functions.find(r=>C(r.name)===e);if(n)return function(...r){return{functionArgs:q(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let a=t.abi.maps.find(r=>C(r.name)===e);if(a)return r=>{let s=l(r,a.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:a,nativeKey:r,key:s}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Y={get:X},Z= exports.pureProxy =t=>new Proxy(t,Y);var _api = require('micro-stacks/api');async function k(t,e){let a=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(p=>typeof p=="string"?p:_clarity.cvToHex.call(void 0, p))}),s=await _common.fetchPrivate.call(void 0, a,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!s.ok){let p="";try{p=await s.text()}catch (e2){}throw new Error(`Error calling read-only function. Response ${s.status}: ${s.statusText}. Attempted to fetch ${a} and failed with the message: "${p}"`)}let f=_api.parseReadOnlyResponse.call(void 0, await s.json());return c(f,!0)}async function Ht(t,e){let n=await k(t,e);return m(n)}async function Kt(t,e){let n=await k(t,e);return g(n)}async function Gt(t,e){let n=_clarity.cvToHex.call(void 0, t.key),a=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, a.data);return c(r,!0)}async function Dt(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}}exports.CoreNodeEventType = O; exports.MAINNET_BURN_ADDRESS = A; exports.TESTNET_BURN_ADDRESS = S; exports.bootContractIdentifier = ut; exports.broadcast = Dt; exports.cvToString = d; exports.cvToValue = c; exports.err = W; exports.expectErr = g; exports.expectOk = m; exports.fetchMapGet = Gt; exports.filterEvents = lt; exports.getContractIdentifier = ct; exports.getContractNameFromPath = _; exports.getContractPrincipalCV = pt; exports.hexToCvValue = At; exports.makeContracts = Ct; exports.ok = Q; exports.parseToCV = l; exports.pureProxy = Z; exports.ro = k; exports.roErr = Kt; exports.roOk = Ht; exports.toCamelCase = C; exports.transformArgsToCV = T;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{contractPrincipalCV as
|
|
1
|
+
import{contractPrincipalCV as S}from"micro-stacks/clarity";var A="ST000000000000000000002AMW42H",_="SP000000000000000000002Q6VF78",y=(t,e)=>{let n=typeof t=="string"?t:String(t),[a,...r]=n.replace("!","").replace("?","").split("-"),s=e?`${a[0].toUpperCase()}${a.slice(1)}`:a;return r.forEach(l=>{s+=l[0].toUpperCase()+l.slice(1)}),s},O=t=>{let e=t.split("/"),n=e[e.length-1],[a]=n.split(".");return a},pt=t=>`${t.address}.${t.name}`,ut=t=>{let e=O(t.contractFile);return S(t.address,e)};function ft(t,e){return`${e?_:A}.${t}`}var w=(i=>(i.ContractEvent="contract_event",i.StxTransferEvent="stx_transfer_event",i.StxMintEvent="stx_mint_event",i.StxBurnEvent="stx_burn_event",i.StxLockEvent="stx_lock_event",i.NftTransferEvent="nft_transfer_event",i.NftMintEvent="nft_mint_event",i.NftBurnEvent="nft_burn_event",i.FtTransferEvent="ft_transfer_event",i.FtMintEvent="ft_mint_event",i.FtBurnEvent="ft_burn_event",i))(w||{});function dt(t,e){return t.filter(n=>n.type===e)}function yt(t,e={}){let n={};for(let a in t){let r=t[a],s=e.deployerAddress||r.address,l=`${s}.${r.name}`,p=r.contract(s,r.name);n[a]={identifier:l,contract:p}}return n}import{addressToString as v,ClarityType as o,uintCV as R,contractPrincipalCV as V,intCV as B,stringAsciiCV as F,stringUtf8CV as I,noneCV as P,someCV as h,tupleCV as M,listCV as $,hexToCV as U,bufferCV as j}from"micro-stacks/clarity";import{isClarityAbiList as L,isClarityAbiOptional as H,isClarityAbiStringAscii as K,isClarityAbiStringUtf8 as G,isClarityAbiTuple as D,isClarityAbiBuffer as J,parseToCV as x}from"micro-stacks/transactions";import{bytesToAscii as z,bytesToHex as Q}from"micro-stacks/common";function W(t){return{isOk:!0,value:t}}function q(t){return{isOk:!1,value:t}}function T(t){if(t.type===o.PrincipalStandard)return v(t.address);if(t.type===o.PrincipalContract)return`${v(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function c(t,e=!1){switch(t.type){case o.BoolTrue:return!0;case o.BoolFalse:return!1;case o.Int:case o.UInt:return t.value;case o.Buffer:return t.buffer;case o.OptionalNone:return null;case o.OptionalSome:return c(t.value);case o.ResponseErr:return e?q(c(t.value)):c(t.value);case o.ResponseOk:return e?W(c(t.value)):c(t.value);case o.PrincipalStandard:case o.PrincipalContract:return T(t);case o.List:return t.list.map(r=>c(r));case o.Tuple:let n={};return Object.keys(t.data).map(r=>[r,c(t.data[r])]).forEach(([r,s])=>{n[r]=s}),n;case o.StringASCII:return t.data;case o.StringUTF8:return t.data}}function _t(t,e=!1){return c(U(t),e)}function E(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}function d(t,e){if(D(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(a=>{let r=t[a.name];n[a.name]=d(r,a.type)}),M(n)}else if(L(e)){let a=t.map(r=>d(r,e.list.type));return $(a)}else{if(H(e))return t?h(d(t,e.optional)):P();if(K(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return F(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 x(n,e)}else if(e==="uint128"){let n=E(t);return R(n.toString())}else if(e==="int128"){let n=E(t);return B(n.toString())}else if(e==="trait_reference"){if(typeof t!="string")throw new Error("Invalid input for trait_reference");let[n,a]=t.split(".");return V(n,a)}else if(J(e))return j(t)}return x(t,e)}function C(t,e="hex"){switch(t.type){case o.BoolTrue:return"true";case o.BoolFalse:return"false";case o.Int:return t.value.toString();case o.UInt:return`u${t.value.toString()}`;case o.Buffer:if(e==="tryAscii"){let n=z(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${Q(t.buffer)}`;case o.OptionalNone:return"none";case o.OptionalSome:return`(some ${C(t.value,e)})`;case o.ResponseErr:return`(err ${C(t.value,e)})`;case o.ResponseOk:return`(ok ${C(t.value,e)})`;case o.PrincipalStandard:case o.PrincipalContract:return`'${T(t)}`;case o.List:return`(list ${t.list.map(n=>C(n,e)).join(" ")})`;case o.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${C(t.data[n],e)})`).join(" ")})`;case o.StringASCII:return`"${t.data}"`;case o.StringUTF8:return`u"${t.data}"`}}function m(t,e){return e.map((n,a)=>d(n,t.args[a].type))}function g(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${t.value}`)}function N(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${t.value}`)}function X(t,e){return m(t,e)}function Y(t,e){let n=t.abi.functions.find(r=>y(r.name)===e);if(n)return function(...r){return{functionArgs:X(n,r),contractAddress:t.contractAddress,contractName:t.contractName,function:n,nativeArgs:r}};let a=t.abi.maps.find(r=>y(r.name)===e);if(a)return r=>{let s=d(r,a.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:a,nativeKey:r,key:s}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Z={get:Y},tt=t=>new Proxy(t,Z);import{parseReadOnlyResponse as et,fetchContractDataMapEntry as nt}from"micro-stacks/api";import{cvToHex as k,hexToCV as rt}from"micro-stacks/clarity";import{fetchPrivate as ot}from"micro-stacks/common";import{broadcastTransaction as at}from"micro-stacks/transactions";async function b(t,e){let a=`${e.network.getReadOnlyFunctionCallApiUrl(t.contractAddress,t.contractName,t.function.name)}?tip=latest`,r=JSON.stringify({sender:t.contractAddress,arguments:t.functionArgs.map(p=>typeof p=="string"?p:k(p))}),s=await ot(a,{method:"POST",body:r,headers:{"Content-Type":"application/json"}});if(!s.ok){let p="";try{p=await s.text()}catch{}throw new Error(`Error calling read-only function. Response ${s.status}: ${s.statusText}. Attempted to fetch ${a} and failed with the message: "${p}"`)}let l=et(await s.json());return c(l,!0)}async function Kt(t,e){let n=await b(t,e);return g(n)}async function Gt(t,e){let n=await b(t,e);return N(n)}async function Dt(t,e){let n=k(t.key),a=await nt({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=rt(a.data);return c(r,!0)}async function Jt(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}}export{w as CoreNodeEventType,_ as MAINNET_BURN_ADDRESS,A as TESTNET_BURN_ADDRESS,ft as bootContractIdentifier,Jt as broadcast,C as cvToString,c as cvToValue,q as err,N as expectErr,g as expectOk,Dt as fetchMapGet,dt as filterEvents,pt as getContractIdentifier,O as getContractNameFromPath,ut as getContractPrincipalCV,_t as hexToCvValue,yt as makeContracts,W as ok,d as parseToCV,tt as pureProxy,b as ro,Gt as roErr,Kt as roOk,y as toCamelCase,m as transformArgsToCV};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.0-next.
|
|
2
|
+
"version": "1.0.0-next.16",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"types": "./dist/index.d.ts",
|
|
5
5
|
"main": "./dist/index.js",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"start": "tsup --watch",
|
|
16
16
|
"dev": "tsup --watch",
|
|
17
|
-
"build": "shx rm -rf ./dist && tsup",
|
|
17
|
+
"build": "shx rm -rf ./dist && tsup && node make-deno.js",
|
|
18
18
|
"test": "jest",
|
|
19
19
|
"lint": "eslint \"src/**/*.{ts,tsx}\" && prettier --check src/**/*.ts",
|
|
20
20
|
"prepublishOnly": "yarn build",
|
|
@@ -24,11 +24,10 @@
|
|
|
24
24
|
"name": "@clarigen/core",
|
|
25
25
|
"author": "Hank Stoever",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"micro-stacks": "^0.2.0"
|
|
28
|
-
"neverthrow": "4.2.1"
|
|
27
|
+
"micro-stacks": "^0.2.0"
|
|
29
28
|
},
|
|
30
29
|
"publishConfig": {
|
|
31
30
|
"access": "public"
|
|
32
31
|
},
|
|
33
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "cc40e90b2dc188debd134f25fe05b1ef5eb14ff2"
|
|
34
33
|
}
|