@clarigen/core 2.1.1 → 2.1.2

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.
@@ -0,0 +1,657 @@
1
+ import { ClarityAbi as ClarityAbi$1, PrincipalCV, ClarityValue, ClarityAbiTypeTuple as ClarityAbiTypeTuple$1, ContractPrincipalCV, StacksTransaction, AssetInfo, NonFungibleConditionCode, PostCondition, FungibleConditionCode } from '@stacks/transactions';
2
+ import { StacksNetwork, StacksNetworkName } from '@stacks/network';
3
+ import { IntegerType } from '@stacks/common';
4
+
5
+ type ClarityAbiTypeBuffer = {
6
+ buffer: {
7
+ length: number;
8
+ };
9
+ };
10
+ type ClarityAbiTypeStringAscii = {
11
+ 'string-ascii': {
12
+ length: number;
13
+ };
14
+ };
15
+ type ClarityAbiTypeStringUtf8 = {
16
+ 'string-utf8': {
17
+ length: number;
18
+ };
19
+ };
20
+ type ClarityAbiTypeResponse = {
21
+ response: {
22
+ ok: ClarityAbiType;
23
+ error: ClarityAbiType;
24
+ };
25
+ };
26
+ type ClarityAbiTypeOptional = {
27
+ optional: ClarityAbiType;
28
+ };
29
+ type ClarityAbiTypeTuple = {
30
+ tuple: readonly {
31
+ name: string;
32
+ type: ClarityAbiType;
33
+ }[];
34
+ };
35
+ type ClarityAbiTypeList = {
36
+ list: {
37
+ type: ClarityAbiType;
38
+ length: number;
39
+ };
40
+ };
41
+ type ClarityAbiTypeUInt128 = 'uint128';
42
+ type ClarityAbiTypeInt128 = 'int128';
43
+ type ClarityAbiTypeBool = 'bool';
44
+ type ClarityAbiTypePrincipal = 'principal';
45
+ type ClarityAbiTypeTraitReference = 'trait_reference';
46
+ type ClarityAbiTypeNone = 'none';
47
+ type ClarityAbiTypePrimitive = ClarityAbiTypeUInt128 | ClarityAbiTypeInt128 | ClarityAbiTypeBool | ClarityAbiTypePrincipal | ClarityAbiTypeTraitReference | ClarityAbiTypeNone;
48
+ type ClarityAbiType = ClarityAbiTypePrimitive | ClarityAbiTypeBuffer | ClarityAbiTypeResponse | ClarityAbiTypeOptional | ClarityAbiTypeTuple | ClarityAbiTypeList | ClarityAbiTypeStringAscii | ClarityAbiTypeStringUtf8 | ClarityAbiTypeTraitReference;
49
+ interface ClarityAbiArg {
50
+ name: string;
51
+ type: ClarityAbiType;
52
+ }
53
+ interface ClarityAbiFunction {
54
+ name: string;
55
+ access: 'private' | 'public' | 'read_only';
56
+ args: ClarityAbiArg[];
57
+ outputs: {
58
+ type: ClarityAbiType;
59
+ };
60
+ }
61
+ type TypedAbiArg<T, N extends string> = {
62
+ _t?: T;
63
+ name: N;
64
+ };
65
+ type TypedAbiFunction<T extends TypedAbiArg<unknown, string>[], R> = ClarityAbiFunction & {
66
+ _t?: T;
67
+ _r?: R;
68
+ };
69
+ interface ClarityAbiVariable {
70
+ name: string;
71
+ access: 'variable' | 'constant';
72
+ type: ClarityAbiType;
73
+ }
74
+ type TypedAbiVariable<T> = ClarityAbiVariable & {};
75
+ interface ClarityAbiMap {
76
+ name: string;
77
+ key: ClarityAbiType;
78
+ value: ClarityAbiType;
79
+ }
80
+ type TypedAbiMap<K, V> = ClarityAbiMap & {
81
+ _k?: K;
82
+ _v?: V;
83
+ };
84
+ interface ClarityAbiTypeFungibleToken {
85
+ name: string;
86
+ }
87
+ interface ClarityAbiTypeNonFungibleToken<T = unknown> {
88
+ name: string;
89
+ type: ClarityAbiType;
90
+ _t?: T;
91
+ }
92
+ type StacksEpochId = 'Epoch10' | 'Epoch20' | 'Epoch2_05' | 'Epoch21' | 'Epoch22' | 'Epoch23' | 'Epoch24' | 'Epoch25' | 'Epoch30';
93
+ type ClarityVersion = 'Clarity1' | 'Clarity2';
94
+ type TypedAbi = Readonly<{
95
+ functions: {
96
+ [key: string]: TypedAbiFunction<TypedAbiArg<unknown, string>[], unknown>;
97
+ };
98
+ variables: {
99
+ [key: string]: TypedAbiVariable<unknown>;
100
+ };
101
+ maps: {
102
+ [key: string]: TypedAbiMap<unknown, unknown>;
103
+ };
104
+ constants: {
105
+ [key: string]: unknown;
106
+ };
107
+ fungible_tokens: Readonly<ClarityAbiTypeFungibleToken[]>;
108
+ non_fungible_tokens: Readonly<ClarityAbiTypeNonFungibleToken<unknown>[]>;
109
+ contractName: string;
110
+ contractFile?: string;
111
+ }>;
112
+ interface ResponseOk<T, E> {
113
+ value: T;
114
+ isOk: true;
115
+ _e?: E;
116
+ }
117
+ interface ResponseErr<T, E> {
118
+ value: E;
119
+ isOk: false;
120
+ _o?: T;
121
+ }
122
+ type Response<Ok, Err> = ResponseOk<Ok, Err> | ResponseErr<Ok, Err>;
123
+ type OkType<R> = R extends ResponseOk<infer V, unknown> ? V : never;
124
+ type ErrType<R> = R extends ResponseErr<unknown, infer V> ? V : never;
125
+
126
+ declare function ok<T, Err = never>(value: T): ResponseOk<T, Err>;
127
+ declare function err<Ok = never, T = unknown>(value: T): ResponseErr<Ok, T>;
128
+ declare function isResponse<T>(value: Response<T, T> | T): value is Response<T, T>;
129
+ interface ClarityAbi extends ClarityAbi$1 {
130
+ epoch: StacksEpochId;
131
+ clarity_version: ClarityVersion;
132
+ }
133
+ declare function principalToString(principal: PrincipalCV): string;
134
+ /**
135
+ * @param val - ClarityValue
136
+ * @param returnResponse - if true, this will return a "response" object.
137
+ * Otherwise, it returns the inner value of the response (whether ok or err)
138
+ */
139
+ declare function cvToValue<T = any>(val: ClarityValue, returnResponse?: boolean): T;
140
+ /**
141
+ * Converts a hex encoded string to the javascript clarity value object {type: string; value: any}
142
+ * @param hex - the hex encoded string with or without `0x` prefix
143
+ * @param jsonCompat - enable to serialize bigints to strings
144
+ */
145
+ declare function hexToCvValue<T>(hex: string, jsonCompat?: boolean): any;
146
+ type TupleInput = Record<string, any>;
147
+ type CVInput = string | boolean | TupleInput | number | bigint;
148
+ declare const isClarityAbiPrimitive: (val: ClarityAbiType) => val is ClarityAbiTypePrimitive;
149
+ declare const isClarityAbiBuffer: (val: ClarityAbiType) => val is ClarityAbiTypeBuffer;
150
+ declare const isClarityAbiStringAscii: (val: ClarityAbiType) => val is ClarityAbiTypeStringAscii;
151
+ declare const isClarityAbiStringUtf8: (val: ClarityAbiType) => val is ClarityAbiTypeStringUtf8;
152
+ declare const isClarityAbiResponse: (val: ClarityAbiType) => val is ClarityAbiTypeResponse;
153
+ declare const isClarityAbiOptional: (val: ClarityAbiType) => val is ClarityAbiTypeOptional;
154
+ declare const isClarityAbiTuple: (val: ClarityAbiType) => val is ClarityAbiTypeTuple$1;
155
+ declare const isClarityAbiList: (val: ClarityAbiType) => val is ClarityAbiTypeList;
156
+ declare const isClarityAbiTraitReference: (val: ClarityAbiType) => val is "trait_reference";
157
+ declare function parseToCV(input: CVInput, type: ClarityAbiType): ClarityValue;
158
+ declare function cvToString(val: ClarityValue, encoding?: 'tryAscii' | 'hex'): string;
159
+ /**
160
+ * Convert a Clarity value to valid JSON. This does this same thing as
161
+ * `cvToValue`, except that integers are returned as strings, and buffers
162
+ * are returned as hex-encoded strings.
163
+ *
164
+ * @param val - ClarityValue
165
+ */
166
+ declare function cvToJSON<T = any>(val: ClarityValue, returnResponse?: boolean): T;
167
+ declare function transformObjectArgs(func: ClarityAbiFunction, args: Record<string, any>): ClarityValue[];
168
+ declare function transformArgsArray(func: ClarityAbiFunction, args: any[]): ClarityValue[];
169
+ declare function transformArgsToCV(func: ClarityAbiFunction, args: any[] | [Record<string, any>]): ClarityValue[];
170
+ declare function findJsTupleKey(key: string, input: Record<string, any>): string;
171
+ declare function expectOk<Ok>(response: Response<Ok, any>): Ok;
172
+ declare function expectErr<Err>(response: Response<any, Err>): Err;
173
+ type AbiPrimitiveTo<T extends ClarityAbiTypePrimitive> = T extends ClarityAbiTypeInt128 ? bigint : T extends ClarityAbiTypeUInt128 ? bigint : T extends ClarityAbiTypeBool ? boolean : T extends ClarityAbiTypePrincipal ? string : T extends ClarityAbiTypeTraitReference ? string : T extends ClarityAbiTypeNone ? never : T;
174
+ type ReadonlyTuple = {
175
+ readonly tuple: Readonly<ClarityAbiTypeTuple$1['tuple']>;
176
+ };
177
+ type TupleTypeUnion<T> = T extends Readonly<ClarityAbiTypeTuple$1['tuple'][number]> ? {
178
+ -readonly [Z in T['name']]: AbiTypeTo<T['type']>;
179
+ } : never;
180
+ type UnionToIntersection$1<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
181
+ type Compact$1<T> = {
182
+ [K in keyof T]: T[K];
183
+ };
184
+ type AbiTupleTo<T extends ReadonlyTuple> = Compact$1<UnionToIntersection$1<TupleTypeUnion<T['tuple'][number]>>>;
185
+ type AbiTypeTo<T extends ClarityAbiType | ReadonlyTuple> = T extends ClarityAbiTypePrimitive ? AbiPrimitiveTo<T> : T extends ClarityAbiTypeBuffer ? Uint8Array : T extends ClarityAbiTypeStringAscii ? string : T extends ClarityAbiTypeStringUtf8 ? string : T extends ClarityAbiTypeList ? AbiTypeTo<T['list']['type']>[] : T extends ClarityAbiTypeOptional ? AbiTypeTo<T['optional']> | null : T extends ClarityAbiTypeResponse ? Response<AbiTypeTo<T['response']['ok']>, AbiTypeTo<T['response']['error']>> : T extends ReadonlyTuple ? AbiTupleTo<T> : never;
186
+ type FunctionReturnType<T> = T extends TypedAbiFunction<TypedAbiArg<unknown, string>[], infer R> ? R : never;
187
+ type Jsonize<T> = T extends BigInt ? string : T extends Uint8Array ? string : T extends (infer V)[] ? Jsonize<V>[] : T extends Record<keyof T, unknown> ? {
188
+ [K in keyof T as K]: Jsonize<T[K]>;
189
+ } : T;
190
+ declare function getTypeString(val: ClarityAbiType): string;
191
+
192
+ interface ResultAssets {
193
+ stx: Record<string, string>;
194
+ burns: Record<string, string>;
195
+ tokens: Record<string, Record<string, string>>;
196
+ assets: Record<string, Record<string, string>>;
197
+ }
198
+
199
+ interface ContractCall<T> {
200
+ function: ClarityAbiFunction;
201
+ nativeArgs: any[];
202
+ functionArgs: ClarityValue[];
203
+ contractAddress: string;
204
+ contractName: string;
205
+ functionName: string;
206
+ _r?: T;
207
+ }
208
+ interface ContractCallTyped<Args extends UnknownArgs, R> extends Omit<ContractCall<R>, 'nativeArgs'> {
209
+ nativeArgs: ArgsType<Args>;
210
+ }
211
+ type ContractFunctions = {
212
+ [key: string]: TypedAbiFunction<UnknownArgs, unknown>;
213
+ };
214
+ type AllContracts = Record<string, TypedAbi>;
215
+ type UnknownArg = TypedAbiArg<unknown, string>;
216
+ type UnknownArgs = UnknownArg[];
217
+ type ArgsTuple<T extends UnknownArgs> = {
218
+ [K in keyof T]: T[K] extends TypedAbiArg<infer A, string> ? A : never;
219
+ };
220
+ type ArgsRecordUnion<T extends TypedAbiArg<unknown, string>> = T extends TypedAbiArg<infer A, infer N> ? {
221
+ [K in T as N]: A;
222
+ } : never;
223
+ type InnerUnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
224
+ type Compact<T> = {
225
+ [K in keyof T]: T[K];
226
+ };
227
+ type UnionToIntersection<T> = Compact<InnerUnionToIntersection<T>>;
228
+ type ArgsRecord<T extends UnknownArgs> = UnionToIntersection<ArgsRecordUnion<T[number]>>;
229
+ type ArgsType<T extends UnknownArgs> = [ArgsRecord<T>] | ArgsTuple<T>;
230
+ type ContractCallFunction<Args extends UnknownArgs, R> = {
231
+ (...args: ArgsType<Args>): ContractCallTyped<Args, R>;
232
+ abi: TypedAbiFunction<Args, R>;
233
+ };
234
+ type FnToContractCall<T> = T extends TypedAbiFunction<infer Arg, infer R> ? ContractCallFunction<Arg, R> : never;
235
+ type FunctionsToContractCalls<T> = T extends ContractFunctions ? {
236
+ [key in keyof T]: FnToContractCall<T[key]>;
237
+ } : never;
238
+ type ContractsToContractCalls<T> = T extends AllContracts ? {
239
+ [key in keyof T]: FunctionsToContractCalls<T[key]['functions']>;
240
+ } : never;
241
+ type FullContract<T> = T extends TypedAbi ? FunctionsToContractCalls<T['functions']> & T & {
242
+ identifier: string;
243
+ } & {
244
+ contractFile: string;
245
+ } : never;
246
+ type ContractFactory<T extends AllContracts> = {
247
+ [key in keyof T]: FullContract<T[key]>;
248
+ };
249
+
250
+ type Kebab<T extends string, A extends string = ''> = T extends `${infer F}${infer R}` ? Kebab<R, `${A}${F extends Lowercase<F> ? '' : '-'}${Lowercase<F>}`> : A;
251
+ type KebabObject<T> = T extends Uint8Array ? T : T extends Record<string, unknown> ? {
252
+ [K in keyof T as K extends string ? Kebab<K> : K]: KebabObject<T[K]>;
253
+ } : T;
254
+ type ExtractArgs<F> = F extends TypedAbiFunction<infer Args, unknown> ? ArgsTuple<Args> : never;
255
+ type ExtractArgsRecord<F> = F extends TypedAbiFunction<infer Args, unknown> ? ArgsRecord<Args> : never;
256
+ type ContractBuilder<T> = (contractAddress: string, contractName: string) => T;
257
+ interface Contract<T> {
258
+ address: string;
259
+ contractFile: string;
260
+ contract: ContractBuilder<T>;
261
+ abi: ClarityAbi;
262
+ name: string;
263
+ }
264
+ interface Contracts<T> {
265
+ [key: string]: Contract<T>;
266
+ }
267
+ interface ContractInstance<T> {
268
+ identifier: string;
269
+ contract: T;
270
+ }
271
+ type ContractInstances<T extends Contracts<any>> = {
272
+ [Name in keyof T]: ContractInstance<ReturnType<T[Name]['contract']>>;
273
+ };
274
+
275
+ declare const TESTNET_BURN_ADDRESS = "ST000000000000000000002AMW42H";
276
+ declare const MAINNET_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
277
+ declare const toCamelCase: (input: string | number | symbol, titleCase?: boolean) => string;
278
+ declare function toKebabCase(input: string): string;
279
+ declare function getContractName(identifier: string, camelCase?: boolean): string;
280
+ declare const getContractNameFromPath: (path: string) => string;
281
+ declare const getContractIdentifier: <T>(contract: Contract<T>) => string;
282
+ declare const getContractPrincipalCV: <T>(contract: Contract<T>) => ContractPrincipalCV;
283
+ declare function bootContractIdentifier(name: string, mainnet: boolean): string;
284
+ declare function bytesToHex(bytes: Uint8Array): string;
285
+ declare function hexToBytes(hexString: string): Uint8Array;
286
+ declare function bytesToAscii(bytes: Uint8Array): string;
287
+ declare const isNumber: (value: number | string) => value is number;
288
+ type ErrorKeyCheck<K> = K extends string ? Lowercase<K> extends `err${string}` ? K : never : never;
289
+ type ErrorCodes<C extends TypedAbi['constants']> = {
290
+ [K in keyof C as ErrorKeyCheck<K>]: C[K] extends {
291
+ isOk: boolean;
292
+ value: infer V;
293
+ } ? V : C[K];
294
+ };
295
+ type ProjectErrors<T extends {
296
+ contracts: AllContracts;
297
+ }> = {
298
+ [K in keyof T['contracts']]: ErrorCodes<T['contracts'][K]['constants']>;
299
+ };
300
+ declare function extractErrors<T extends TypedAbi>(contract: T): ErrorCodes<T['constants']>;
301
+ declare function projectErrors<T extends {
302
+ contracts: AllContracts;
303
+ }>(project: T): ProjectErrors<T>;
304
+
305
+ declare enum CoreNodeEventType {
306
+ ContractEvent = "contract_event",
307
+ StxTransferEvent = "stx_transfer_event",
308
+ StxMintEvent = "stx_mint_event",
309
+ StxBurnEvent = "stx_burn_event",
310
+ StxLockEvent = "stx_lock_event",
311
+ NftTransferEvent = "nft_transfer_event",
312
+ NftMintEvent = "nft_mint_event",
313
+ NftBurnEvent = "nft_burn_event",
314
+ FtTransferEvent = "ft_transfer_event",
315
+ FtMintEvent = "ft_mint_event",
316
+ FtBurnEvent = "ft_burn_event"
317
+ }
318
+ type NonStandardClarityValue = unknown;
319
+ interface CoreNodeEventBase {
320
+ /** 0x-prefix transaction hash. */
321
+ txid: string;
322
+ event_index: number;
323
+ committed: boolean;
324
+ }
325
+ interface SmartContractEvent extends CoreNodeEventBase {
326
+ type: CoreNodeEventType.ContractEvent;
327
+ contract_event: {
328
+ /** Fully qualified contract ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.kv-store" */
329
+ contract_identifier: string;
330
+ topic: string;
331
+ value: NonStandardClarityValue;
332
+ /** Hex encoded Clarity value. */
333
+ raw_value: string;
334
+ };
335
+ }
336
+ interface StxTransferEvent extends CoreNodeEventBase {
337
+ type: CoreNodeEventType.StxTransferEvent;
338
+ stx_transfer_event: {
339
+ recipient: string;
340
+ sender: string;
341
+ amount: string;
342
+ };
343
+ }
344
+ interface StxMintEvent extends CoreNodeEventBase {
345
+ type: CoreNodeEventType.StxMintEvent;
346
+ stx_mint_event: {
347
+ recipient: string;
348
+ amount: string;
349
+ };
350
+ }
351
+ interface StxBurnEvent extends CoreNodeEventBase {
352
+ type: CoreNodeEventType.StxBurnEvent;
353
+ stx_burn_event: {
354
+ sender: string;
355
+ amount: string;
356
+ };
357
+ }
358
+ interface StxLockEvent extends CoreNodeEventBase {
359
+ type: CoreNodeEventType.StxLockEvent;
360
+ /** TODO: what dis? */
361
+ committed: boolean;
362
+ stx_lock_event: {
363
+ /** String quoted base10 integer. */
364
+ locked_amount: string;
365
+ /** String quoted base10 integer. */
366
+ unlock_height: string;
367
+ /** STX principal associated with the locked tokens. */
368
+ locked_address: string;
369
+ };
370
+ }
371
+ interface NftTransferEvent extends CoreNodeEventBase {
372
+ type: CoreNodeEventType.NftTransferEvent;
373
+ nft_transfer_event: {
374
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
375
+ asset_identifier: string;
376
+ recipient: string;
377
+ sender: string;
378
+ value: NonStandardClarityValue;
379
+ /** Hex encoded Clarity value. */
380
+ raw_value: string;
381
+ };
382
+ }
383
+ interface NftMintEvent extends CoreNodeEventBase {
384
+ type: CoreNodeEventType.NftMintEvent;
385
+ nft_mint_event: {
386
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
387
+ asset_identifier: string;
388
+ recipient: string;
389
+ value: NonStandardClarityValue;
390
+ /** Hex encoded Clarity value. */
391
+ raw_value: string;
392
+ };
393
+ }
394
+ interface NftBurnEvent extends CoreNodeEventBase {
395
+ type: CoreNodeEventType.NftBurnEvent;
396
+ nft_burn_event: {
397
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
398
+ asset_identifier: string;
399
+ sender: string;
400
+ value: NonStandardClarityValue;
401
+ /** Hex encoded Clarity value. */
402
+ raw_value: string;
403
+ };
404
+ }
405
+ interface FtTransferEvent extends CoreNodeEventBase {
406
+ type: CoreNodeEventType.FtTransferEvent;
407
+ ft_transfer_event: {
408
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
409
+ asset_identifier: string;
410
+ recipient: string;
411
+ sender: string;
412
+ amount: string;
413
+ };
414
+ }
415
+ interface FtMintEvent extends CoreNodeEventBase {
416
+ type: CoreNodeEventType.FtMintEvent;
417
+ ft_mint_event: {
418
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
419
+ asset_identifier: string;
420
+ recipient: string;
421
+ amount: string;
422
+ };
423
+ }
424
+ interface FtBurnEvent extends CoreNodeEventBase {
425
+ type: CoreNodeEventType.FtBurnEvent;
426
+ ft_burn_event: {
427
+ /** Fully qualified asset ID, e.g. "ST2ZRX0K27GW0SP3GJCEMHD95TQGJMKB7G9Y0X1MH.contract-name.asset-name" */
428
+ asset_identifier: string;
429
+ sender: string;
430
+ amount: string;
431
+ };
432
+ }
433
+ type CoreNodeEvent = SmartContractEvent | StxTransferEvent | StxMintEvent | StxBurnEvent | StxLockEvent | FtTransferEvent | FtMintEvent | FtBurnEvent | NftTransferEvent | NftMintEvent | NftBurnEvent;
434
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.ContractEvent): SmartContractEvent[];
435
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxTransferEvent): StxTransferEvent[];
436
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxMintEvent): StxMintEvent[];
437
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxBurnEvent): StxBurnEvent[];
438
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.StxLockEvent): StxLockEvent[];
439
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftTransferEvent): NftTransferEvent[];
440
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftMintEvent): NftMintEvent[];
441
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.NftBurnEvent): NftBurnEvent[];
442
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtTransferEvent): FtTransferEvent[];
443
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtMintEvent): FtMintEvent[];
444
+ declare function filterEvents(events: CoreNodeEvent[], type: CoreNodeEventType.FtBurnEvent): FtBurnEvent[];
445
+
446
+ interface MakeContractsOptions {
447
+ deployerAddress?: string;
448
+ }
449
+ declare function makeContracts<T extends Contracts<any>>(contracts: T, options?: MakeContractsOptions): ContractInstances<T>;
450
+
451
+ interface PureContractInfo {
452
+ abi: ClarityAbi;
453
+ contractAddress: string;
454
+ contractName: string;
455
+ }
456
+ type ContractFn<T> = (args: any) => T;
457
+ type ContractReturn<C extends ContractFn<ContractCalls.ReadOnly<any>>> = C extends ContractFn<ContractCalls.ReadOnly<infer T>> ? T : unknown;
458
+ type ContractReturnOk<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<infer O, any> ? O : unknown;
459
+ type ContractReturnErr<C extends ContractFn<ContractCalls.ReadOnly<any>>> = ContractReturn<C> extends Response<any, infer E> ? E : unknown;
460
+ interface MapGet<Key, Val> {
461
+ map: ClarityAbiMap;
462
+ nativeKey: Key;
463
+ key: ClarityValue;
464
+ contractAddress: string;
465
+ contractName: string;
466
+ }
467
+ declare namespace ContractCalls {
468
+ type ReadOnly<T> = ContractCall<T>;
469
+ type Public<Ok, Err> = ContractCall<Response<Ok, Err>>;
470
+ type Private<T> = ContractCall<T>;
471
+ type Map<Key, Val> = MapGet<Key, Val>;
472
+ }
473
+ declare const pureProxy: <T extends object>(target: PureContractInfo) => T;
474
+
475
+ interface ApiOptionsUrl {
476
+ url: string;
477
+ network?: undefined;
478
+ }
479
+ type Network = StacksNetwork | StacksNetworkName;
480
+ interface ApiOptionsNetwork {
481
+ network: StacksNetworkName | StacksNetwork;
482
+ url?: undefined;
483
+ }
484
+ type ApiOptionsBase = (ApiOptionsUrl | ApiOptionsNetwork) & {
485
+ tip?: string;
486
+ latest?: boolean;
487
+ };
488
+ type ApiOptionsJsonize = ApiOptionsBase & {
489
+ json: true;
490
+ };
491
+ type ApiOptionsNoJson = ApiOptionsBase & {
492
+ json?: false | undefined;
493
+ };
494
+ type ApiOptions = ApiOptionsBase & {
495
+ json?: boolean;
496
+ };
497
+ type JsonIfOption<O extends ApiOptions, R> = O extends ApiOptionsJsonize ? Jsonize<R> : R;
498
+ declare function ro<O extends ApiOptions, T>(tx: ContractCall<T>, options: O): Promise<JsonIfOption<O, T>>;
499
+ declare function roOk<O extends ApiOptions, Ok>(tx: ContractCall<Response<Ok, any>>, options: O): Promise<JsonIfOption<O, Ok>>;
500
+ declare function roErr<O extends ApiOptions, Err>(tx: ContractCall<Response<any, Err>>, options: O): Promise<JsonIfOption<O, Err>>;
501
+ declare function getApiUrl(opts: ApiOptionsUrl | ApiOptionsNetwork): string;
502
+ declare function fetchMapGet<Key, Val>(contractId: string, map: TypedAbiMap<Key, Val>, key: Key, options: ApiOptions): Promise<Val | null>;
503
+ declare function broadcast(transaction: StacksTransaction, options: ApiOptions): Promise<{
504
+ txId: string;
505
+ stacksTransaction: StacksTransaction;
506
+ }>;
507
+ type ClientOptions = Omit<ApiOptions, 'url' | 'network'>;
508
+ type JsonIf<O extends ClientOptions, T> = JsonIfOption<O & (ApiOptionsUrl | ApiOptionsNetwork), T>;
509
+ declare class ClarigenClient {
510
+ url: string;
511
+ constructor(networkOrUrl: Network | string);
512
+ private roOptions;
513
+ ro<T, O extends ClientOptions>(tx: ContractCall<T>, options?: O): Promise<JsonIf<O, T>>;
514
+ roOk<T, O extends ClientOptions>(tx: ContractCall<Response<T, any>>, options?: O): Promise<JsonIf<O, T>>;
515
+ roErr<T, O extends ClientOptions>(tx: ContractCall<Response<any, T>>, options?: O): Promise<JsonIf<O, T>>;
516
+ }
517
+
518
+ interface EmulatedContractPublishTransaction {
519
+ 'emulated-contract-publish': {
520
+ 'contract-name': string;
521
+ 'emulated-sender': string;
522
+ path: string;
523
+ };
524
+ }
525
+ interface RequirementPublishTransaction {
526
+ 'requirement-publish': {
527
+ 'contract-id': string;
528
+ 'remap-sender': string;
529
+ 'remap-principals': Record<string, string>;
530
+ path: string;
531
+ };
532
+ }
533
+ interface ContractPublishTransaction {
534
+ 'contract-publish': {
535
+ 'contract-name': string;
536
+ 'expected-sender': string;
537
+ path: string;
538
+ };
539
+ }
540
+ interface ContractCallTransaction {
541
+ 'contract-call': {
542
+ 'contract-id': string;
543
+ 'expected-sender': string;
544
+ parameters: Readonly<string[]>;
545
+ method: string;
546
+ };
547
+ }
548
+ interface EmulatedContractCallTransaction {
549
+ 'emulated-contract-call': {
550
+ 'contract-id': string;
551
+ 'emulated-sender': string;
552
+ parameters: Readonly<string[]>;
553
+ method: string;
554
+ };
555
+ }
556
+ interface BtcTransferTransaction {
557
+ 'btc-transfer': {
558
+ 'expected-sender': string;
559
+ recipient: string;
560
+ 'sats-per-byte': string;
561
+ 'sats-amount': string;
562
+ };
563
+ }
564
+ type Transaction = EmulatedContractPublishTransaction | RequirementPublishTransaction | ContractPublishTransaction | EmulatedContractCallTransaction | BtcTransferTransaction | ContractCallTransaction;
565
+ interface Batch<T extends Transaction> {
566
+ id: number;
567
+ transactions: Readonly<T[]>;
568
+ }
569
+ interface SimnetAccount {
570
+ address: string;
571
+ name: string;
572
+ balance: string;
573
+ }
574
+ interface SimnetAccountDeployer extends SimnetAccount {
575
+ name: 'deployer';
576
+ }
577
+ interface SimnetDeploymentPlan {
578
+ network: 'simnet';
579
+ genesis: {
580
+ wallets: Readonly<[SimnetAccountDeployer, ...SimnetAccount[]]>;
581
+ contracts: Readonly<string[]>;
582
+ };
583
+ plan: {
584
+ batches: Readonly<Batch<EmulatedContractPublishTransaction | EmulatedContractCallTransaction>[]>;
585
+ };
586
+ }
587
+ interface DevnetDeploymentPlan {
588
+ network: 'devnet';
589
+ plan: {
590
+ batches: Readonly<Batch<RequirementPublishTransaction | ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
591
+ };
592
+ }
593
+ type TestnetDeploymentPlan = Omit<DevnetDeploymentPlan, 'network'> & {
594
+ network: 'testnet';
595
+ };
596
+ interface MainnetDeploymentPlan {
597
+ network: 'mainnet';
598
+ plan: {
599
+ batches: Readonly<Batch<ContractPublishTransaction | ContractCallTransaction | BtcTransferTransaction>[]>;
600
+ };
601
+ }
602
+ type DeploymentPlan = SimnetDeploymentPlan | DevnetDeploymentPlan | TestnetDeploymentPlan | MainnetDeploymentPlan;
603
+
604
+ declare const DEPLOYMENT_NETWORKS: readonly ["devnet", "simnet", "testnet", "mainnet"];
605
+ type DeploymentNetwork = (typeof DEPLOYMENT_NETWORKS)[number];
606
+ type DeploymentsForContracts<C extends AllContracts> = {
607
+ [K in keyof C]: ContractDeployments;
608
+ };
609
+ type ContractDeployments = {
610
+ [key in DeploymentNetwork]: string | null;
611
+ };
612
+ type Project<C extends AllContracts, D extends DeploymentsForContracts<C>> = {
613
+ contracts: C;
614
+ deployments: D;
615
+ };
616
+ type FullContractWithIdentifier<C extends TypedAbi, Id extends string> = FullContract<C> & {
617
+ identifier: Id;
618
+ };
619
+ type IsDeploymentNetwork<T> = T extends DeploymentNetwork ? DeploymentNetwork extends T ? true : false : never;
620
+ type ProjectFactory<P extends Project<any, any>, N extends DeploymentNetwork> = {
621
+ [ContractName in keyof P['contracts']]: FullContractWithIdentifier<P['contracts'][ContractName], IsDeploymentNetwork<N> extends true ? '' : NonNullable<P['deployments'][ContractName][N]>>;
622
+ };
623
+ declare function projectFactory<P extends Project<C, D>, N extends DeploymentNetwork, C extends AllContracts, D extends DeploymentsForContracts<C>>(project: P, network: N): ProjectFactory<P, N>;
624
+ declare function contractsFactory<T extends AllContracts>(contracts: T, deployer: string): ContractFactory<T>;
625
+ declare function functionsFactory<T extends ContractFunctions>(functions: T, identifier: string): FunctionsToContractCalls<T>;
626
+ /**
627
+ * Provide a contract's types and it's contract identifier to generate
628
+ * a full contract object with all functions available.
629
+ *
630
+ * @param abi - The Clarigen-generated contract types
631
+ * @param identifier - The contract's identifier, like `SP000000000000000000002Q6VF78.bns`
632
+ * @returns
633
+ */
634
+ declare function contractFactory<T extends TypedAbi, Id extends string>(abi: T, identifier: Id): FullContractWithIdentifier<T, Id>;
635
+ declare function deploymentFactory<T extends AllContracts>(contracts: T, deployer: DeploymentPlan): ContractFactory<T>;
636
+ type MapFactory<M extends TypedAbiMap<K, V>, K, V> = {
637
+ key: K;
638
+ _v?: V;
639
+ keyCV: ClarityValue;
640
+ map: M;
641
+ };
642
+ declare function mapFactory<Key, Val>(map: TypedAbiMap<Key, Val>, key: Key): MapFactory<TypedAbiMap<Key, Val>, Key, Val>;
643
+
644
+ type AbiWithAssets = Pick<FullContract<TypedAbi>, 'non_fungible_tokens' | 'fungible_tokens' | 'identifier'>;
645
+ type AssetNames<T extends AbiWithAssets> = T['non_fungible_tokens'][number]['name'] | T['fungible_tokens'][number]['name'];
646
+ declare function createAssetInfo<T extends AbiWithAssets>(contract: T, asset: AssetNames<T>): AssetInfo;
647
+ type NftAssetType<T extends AbiWithAssets> = T['non_fungible_tokens'][0] extends {
648
+ type: infer Type;
649
+ } ? Type extends ClarityAbiType | ReadonlyTuple ? AbiTypeTo<Type> : never : never;
650
+ declare function makeNonFungiblePostCondition<T extends AbiWithAssets>(contract: T, sender: string, condition: NonFungibleConditionCode, value: NftAssetType<T>): PostCondition;
651
+ declare function makeFungiblePostCondition<T extends AbiWithAssets>(contract: T, sender: string, condition: FungibleConditionCode, amount: IntegerType): PostCondition;
652
+
653
+ type RawClarityTypeTo<T extends ClarityAbiType, A = any> = T extends ClarityAbiTypePrimitive ? AbiPrimitiveTo<T> : A;
654
+ type ResponseType<F extends TypedAbiFunction<UnknownArgs, any>> = F extends TypedAbiFunction<infer A, infer R> ? R : never;
655
+ declare function rawClarityToValue<T = any>(input: string, type: ClarityAbiType): T;
656
+
657
+ export { type AbiPrimitiveTo, type AbiTupleTo, type AbiTypeTo, type AllContracts, type ApiOptions, type ApiOptionsBase, type ApiOptionsJsonize, type ApiOptionsNetwork, type ApiOptionsNoJson, type ApiOptionsUrl, type ArgsRecord, type ArgsTuple, type ArgsType, type AssetNames, type CVInput, ClarigenClient, type ClarityAbi, type ClarityAbiArg, type ClarityAbiFunction, type ClarityAbiMap, type ClarityAbiType, type ClarityAbiTypeBool, type ClarityAbiTypeBuffer, type ClarityAbiTypeFungibleToken, type ClarityAbiTypeInt128, type ClarityAbiTypeList, type ClarityAbiTypeNonFungibleToken, type ClarityAbiTypeNone, type ClarityAbiTypeOptional, type ClarityAbiTypePrimitive, type ClarityAbiTypePrincipal, type ClarityAbiTypeResponse, type ClarityAbiTypeStringAscii, type ClarityAbiTypeStringUtf8, type ClarityAbiTypeTraitReference, type ClarityAbiTypeTuple, type ClarityAbiTypeUInt128, type ClarityAbiVariable, type ClarityVersion, type Contract, type ContractBuilder, type ContractCall, type ContractCallFunction, type ContractCallTyped, ContractCalls, type ContractDeployments, type ContractFactory, type ContractFn, type ContractFunctions, type ContractInstance, type ContractInstances, type ContractReturn, type ContractReturnErr, type ContractReturnOk, type Contracts, type ContractsToContractCalls, type CoreNodeEvent, type CoreNodeEventBase, CoreNodeEventType, DEPLOYMENT_NETWORKS, type DeploymentNetwork, type DeploymentPlan, type DeploymentsForContracts, type ErrType, type ErrorCodes, type ExtractArgs, type ExtractArgsRecord, type FnToContractCall, type FtBurnEvent, type FtMintEvent, type FtTransferEvent, type FullContract, type FullContractWithIdentifier, type FunctionReturnType, type FunctionsToContractCalls, type JsonIfOption, type Jsonize, type Kebab, type KebabObject, MAINNET_BURN_ADDRESS, type MapFactory, type Network, type NftAssetType, type NftBurnEvent, type NftMintEvent, type NftTransferEvent, type NonStandardClarityValue, type OkType, type Project, type ProjectErrors, type ProjectFactory, type RawClarityTypeTo, type ReadonlyTuple, type Response, type ResponseErr, type ResponseOk, type ResponseType, type ResultAssets, type SimnetDeploymentPlan, type SmartContractEvent, type StacksEpochId, type StxBurnEvent, type StxLockEvent, type StxMintEvent, type StxTransferEvent, TESTNET_BURN_ADDRESS, type TupleInput, type TypedAbi, type TypedAbiArg, type TypedAbiFunction, type TypedAbiMap, type TypedAbiVariable, type UnionToIntersection, type UnknownArg, type UnknownArgs, bootContractIdentifier, broadcast, bytesToAscii, bytesToHex, contractFactory, contractsFactory, createAssetInfo, cvToJSON, cvToString, cvToValue, deploymentFactory, err, expectErr, expectOk, extractErrors, fetchMapGet, filterEvents, findJsTupleKey, functionsFactory, getApiUrl, getContractIdentifier, getContractName, getContractNameFromPath, getContractPrincipalCV, getTypeString, hexToBytes, hexToCvValue, isClarityAbiBuffer, isClarityAbiList, isClarityAbiOptional, isClarityAbiPrimitive, isClarityAbiResponse, isClarityAbiStringAscii, isClarityAbiStringUtf8, isClarityAbiTraitReference, isClarityAbiTuple, isNumber, isResponse, makeContracts, makeFungiblePostCondition, makeNonFungiblePostCondition, mapFactory, ok, parseToCV, principalToString, projectErrors, projectFactory, pureProxy, rawClarityToValue, ro, roErr, roOk, toCamelCase, toKebabCase, transformArgsArray, transformArgsToCV, transformObjectArgs };
package/dist/index.d.ts CHANGED
@@ -654,4 +654,4 @@ type RawClarityTypeTo<T extends ClarityAbiType, A = any> = T extends ClarityAbiT
654
654
  type ResponseType<F extends TypedAbiFunction<UnknownArgs, any>> = F extends TypedAbiFunction<infer A, infer R> ? R : never;
655
655
  declare function rawClarityToValue<T = any>(input: string, type: ClarityAbiType): T;
656
656
 
657
- export { AbiPrimitiveTo, AbiTupleTo, AbiTypeTo, AllContracts, ApiOptions, ApiOptionsBase, ApiOptionsJsonize, ApiOptionsNetwork, ApiOptionsNoJson, ApiOptionsUrl, ArgsRecord, ArgsTuple, ArgsType, AssetNames, CVInput, ClarigenClient, ClarityAbi, ClarityAbiArg, ClarityAbiFunction, ClarityAbiMap, ClarityAbiType, ClarityAbiTypeBool, ClarityAbiTypeBuffer, ClarityAbiTypeFungibleToken, ClarityAbiTypeInt128, ClarityAbiTypeList, ClarityAbiTypeNonFungibleToken, ClarityAbiTypeNone, ClarityAbiTypeOptional, ClarityAbiTypePrimitive, ClarityAbiTypePrincipal, ClarityAbiTypeResponse, ClarityAbiTypeStringAscii, ClarityAbiTypeStringUtf8, ClarityAbiTypeTraitReference, ClarityAbiTypeTuple, ClarityAbiTypeUInt128, ClarityAbiVariable, ClarityVersion, Contract, ContractBuilder, ContractCall, ContractCallFunction, ContractCallTyped, ContractCalls, ContractDeployments, ContractFactory, ContractFn, ContractFunctions, ContractInstance, ContractInstances, ContractReturn, ContractReturnErr, ContractReturnOk, Contracts, ContractsToContractCalls, CoreNodeEvent, CoreNodeEventBase, CoreNodeEventType, DEPLOYMENT_NETWORKS, DeploymentNetwork, DeploymentPlan, DeploymentsForContracts, ErrType, ErrorCodes, ExtractArgs, ExtractArgsRecord, FnToContractCall, FtBurnEvent, FtMintEvent, FtTransferEvent, FullContract, FullContractWithIdentifier, FunctionReturnType, FunctionsToContractCalls, JsonIfOption, Jsonize, Kebab, KebabObject, MAINNET_BURN_ADDRESS, MapFactory, Network, NftAssetType, NftBurnEvent, NftMintEvent, NftTransferEvent, NonStandardClarityValue, OkType, Project, ProjectErrors, ProjectFactory, RawClarityTypeTo, ReadonlyTuple, Response, ResponseErr, ResponseOk, ResponseType, ResultAssets, SimnetDeploymentPlan, SmartContractEvent, StacksEpochId, StxBurnEvent, StxLockEvent, StxMintEvent, StxTransferEvent, TESTNET_BURN_ADDRESS, TupleInput, TypedAbi, TypedAbiArg, TypedAbiFunction, TypedAbiMap, TypedAbiVariable, UnionToIntersection, UnknownArg, UnknownArgs, bootContractIdentifier, broadcast, bytesToAscii, bytesToHex, contractFactory, contractsFactory, createAssetInfo, cvToJSON, cvToString, cvToValue, deploymentFactory, err, expectErr, expectOk, extractErrors, fetchMapGet, filterEvents, findJsTupleKey, functionsFactory, getApiUrl, getContractIdentifier, getContractName, getContractNameFromPath, getContractPrincipalCV, getTypeString, hexToBytes, hexToCvValue, isClarityAbiBuffer, isClarityAbiList, isClarityAbiOptional, isClarityAbiPrimitive, isClarityAbiResponse, isClarityAbiStringAscii, isClarityAbiStringUtf8, isClarityAbiTraitReference, isClarityAbiTuple, isNumber, isResponse, makeContracts, makeFungiblePostCondition, makeNonFungiblePostCondition, mapFactory, ok, parseToCV, principalToString, projectErrors, projectFactory, pureProxy, rawClarityToValue, ro, roErr, roOk, toCamelCase, toKebabCase, transformArgsArray, transformArgsToCV, transformObjectArgs };
657
+ export { type AbiPrimitiveTo, type AbiTupleTo, type AbiTypeTo, type AllContracts, type ApiOptions, type ApiOptionsBase, type ApiOptionsJsonize, type ApiOptionsNetwork, type ApiOptionsNoJson, type ApiOptionsUrl, type ArgsRecord, type ArgsTuple, type ArgsType, type AssetNames, type CVInput, ClarigenClient, type ClarityAbi, type ClarityAbiArg, type ClarityAbiFunction, type ClarityAbiMap, type ClarityAbiType, type ClarityAbiTypeBool, type ClarityAbiTypeBuffer, type ClarityAbiTypeFungibleToken, type ClarityAbiTypeInt128, type ClarityAbiTypeList, type ClarityAbiTypeNonFungibleToken, type ClarityAbiTypeNone, type ClarityAbiTypeOptional, type ClarityAbiTypePrimitive, type ClarityAbiTypePrincipal, type ClarityAbiTypeResponse, type ClarityAbiTypeStringAscii, type ClarityAbiTypeStringUtf8, type ClarityAbiTypeTraitReference, type ClarityAbiTypeTuple, type ClarityAbiTypeUInt128, type ClarityAbiVariable, type ClarityVersion, type Contract, type ContractBuilder, type ContractCall, type ContractCallFunction, type ContractCallTyped, ContractCalls, type ContractDeployments, type ContractFactory, type ContractFn, type ContractFunctions, type ContractInstance, type ContractInstances, type ContractReturn, type ContractReturnErr, type ContractReturnOk, type Contracts, type ContractsToContractCalls, type CoreNodeEvent, type CoreNodeEventBase, CoreNodeEventType, DEPLOYMENT_NETWORKS, type DeploymentNetwork, type DeploymentPlan, type DeploymentsForContracts, type ErrType, type ErrorCodes, type ExtractArgs, type ExtractArgsRecord, type FnToContractCall, type FtBurnEvent, type FtMintEvent, type FtTransferEvent, type FullContract, type FullContractWithIdentifier, type FunctionReturnType, type FunctionsToContractCalls, type JsonIfOption, type Jsonize, type Kebab, type KebabObject, MAINNET_BURN_ADDRESS, type MapFactory, type Network, type NftAssetType, type NftBurnEvent, type NftMintEvent, type NftTransferEvent, type NonStandardClarityValue, type OkType, type Project, type ProjectErrors, type ProjectFactory, type RawClarityTypeTo, type ReadonlyTuple, type Response, type ResponseErr, type ResponseOk, type ResponseType, type ResultAssets, type SimnetDeploymentPlan, type SmartContractEvent, type StacksEpochId, type StxBurnEvent, type StxLockEvent, type StxMintEvent, type StxTransferEvent, TESTNET_BURN_ADDRESS, type TupleInput, type TypedAbi, type TypedAbiArg, type TypedAbiFunction, type TypedAbiMap, type TypedAbiVariable, type UnionToIntersection, type UnknownArg, type UnknownArgs, bootContractIdentifier, broadcast, bytesToAscii, bytesToHex, contractFactory, contractsFactory, createAssetInfo, cvToJSON, cvToString, cvToValue, deploymentFactory, err, expectErr, expectOk, extractErrors, fetchMapGet, filterEvents, findJsTupleKey, functionsFactory, getApiUrl, getContractIdentifier, getContractName, getContractNameFromPath, getContractPrincipalCV, getTypeString, hexToBytes, hexToCvValue, isClarityAbiBuffer, isClarityAbiList, isClarityAbiOptional, isClarityAbiPrimitive, isClarityAbiResponse, isClarityAbiStringAscii, isClarityAbiStringUtf8, isClarityAbiTraitReference, isClarityAbiTuple, isNumber, isResponse, makeContracts, makeFungiblePostCondition, makeNonFungiblePostCondition, mapFactory, ok, parseToCV, principalToString, projectErrors, projectFactory, pureProxy, rawClarityToValue, ro, roErr, roOk, toCamelCase, toKebabCase, transformArgsArray, transformArgsToCV, transformObjectArgs };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var Ct=Object.defineProperty,mt=Object.defineProperties;var gt=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var xt=Object.prototype.hasOwnProperty,bt=Object.prototype.propertyIsEnumerable;var J=(t,e,n)=>e in t?Ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,u=(t,e)=>{for(var n in e||(e={}))xt.call(e,n)&&J(t,n,e[n]);if(K)for(var n of K(e))bt.call(e,n)&&J(t,n,e[n]);return t},T=(t,e)=>mt(t,gt(e));var _transactions = require('@stacks/transactions');var _base = require('@scure/base');var ht="ST000000000000000000002AMW42H",Et= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",f= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t);if(/^[A-Z_]+$/.test(n))return n;let[o,...i]=n.replace("!","_x").replace("?","_q").split("-"),c=`${e?o[0].toUpperCase():o[0].toLowerCase()}${o.slice(1)}`;return i.forEach(l=>{c+=l[0].toUpperCase()+l.slice(1)}),c};function q(t){let e=t.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);return e?e.join("-").toLowerCase():t}function de(t,e=!0){let n=t.split(".")[1];return e?f(n):n}var kt=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},Te= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,Ce= exports.getContractPrincipalCV =t=>{let e=kt(t.contractFile);return _transactions.contractPrincipalCV.call(void 0, t.address,e)};function me(t,e){return`${e?Et:ht}.${t}`}function R(t){return _base.hex.encode(t)}function W(t){return _base.hex.decode(t)}function z(t){let e=Array.from(t);return String.fromCharCode.apply(null,e)}var H=t=>typeof t=="number";function vt(t){let{constants:e}=t,n={};for(let r in e)if(r.toLowerCase().startsWith("err")){let o=e[r];typeof o=="object"&&o&&"isOk"in o&&!o.isOk&&"value"in o?n[r]=o.value:n[r]=o}return n}function ge(t){let{contracts:e}=t,n={};for(let r in e)n[r]=vt(e[r]);return n}var wt=(p=>(p.ContractEvent="contract_event",p.StxTransferEvent="stx_transfer_event",p.StxMintEvent="stx_mint_event",p.StxBurnEvent="stx_burn_event",p.StxLockEvent="stx_lock_event",p.NftTransferEvent="nft_transfer_event",p.NftMintEvent="nft_mint_event",p.NftBurnEvent="nft_burn_event",p.FtTransferEvent="ft_transfer_event",p.FtMintEvent="ft_mint_event",p.FtBurnEvent="ft_burn_event",p))(wt||{});function be(t,e){return t.filter(n=>n.type===e)}function he(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,a=`${i}.${o.name}`,c=o.contract(i,o.name);n[r]={identifier:a,contract:c}}return n}function E(t){return{isOk:!0,value:t}}function k(t){return{isOk:!1,value:t}}function Re(t){return typeof t=="object"&&t!==null&&"isOk"in t}function F(t){if(t.type===_transactions.ClarityType.PrincipalStandard)return _transactions.addressToString.call(void 0, t.address);if(t.type===_transactions.ClarityType.PrincipalContract)return`${_transactions.addressToString.call(void 0, t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function y(t,e=!1){switch(t.type){case _transactions.ClarityType.BoolTrue:return!0;case _transactions.ClarityType.BoolFalse:return!1;case _transactions.ClarityType.Int:case _transactions.ClarityType.UInt:return t.value;case _transactions.ClarityType.Buffer:return t.buffer;case _transactions.ClarityType.OptionalNone:return null;case _transactions.ClarityType.OptionalSome:return y(t.value);case _transactions.ClarityType.ResponseErr:return e?k(y(t.value)):y(t.value);case _transactions.ClarityType.ResponseOk:return e?E(y(t.value)):y(t.value);case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return F(t);case _transactions.ClarityType.List:return t.list.map(r=>y(r));case _transactions.ClarityType.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=f(o);return T(u({},r),{[a]:y(i,e)})},{});case _transactions.ClarityType.StringASCII:return t.data;case _transactions.ClarityType.StringUTF8:return t.data}}function Fe(t,e=!1){return y(_transactions.hexToCV.call(void 0, t),e)}function Q(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}var Ut=t=>typeof t=="string",v= exports.isClarityAbiBuffer =t=>t.buffer!==void 0,w= exports.isClarityAbiStringAscii =t=>t["string-ascii"]!==void 0,O= exports.isClarityAbiStringUtf8 =t=>t["string-utf8"]!==void 0,I= exports.isClarityAbiResponse =t=>t.response!==void 0,N= exports.isClarityAbiOptional =t=>t.optional!==void 0,S= exports.isClarityAbiTuple =t=>t.tuple!==void 0,P= exports.isClarityAbiList =t=>t.list!==void 0,Ie= exports.isClarityAbiTraitReference =t=>t==="trait_reference";function d(t,e){if(S(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=_(r.name,t),i=t[o];n[r.name]=d(i,r.type)}),_transactions.tupleCV.call(void 0, n)}else if(P(e)){let r=t.map(o=>d(o,e.list.type));return _transactions.listCV.call(void 0, r)}else{if(N(e))return t===null?_transactions.noneCV.call(void 0, ):_transactions.someCV.call(void 0, d(t,e.optional));if(w(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _transactions.stringAsciiCV.call(void 0, t)}else if(O(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _transactions.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=Q(t);return _transactions.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=Q(t);return _transactions.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 _transactions.contractPrincipalCV.call(void 0, n,r)}else if(v(e))return _transactions.bufferCV.call(void 0, t)}return _transactions.parseToCV.call(void 0, t,e)}function x(t,e="hex"){switch(t.type){case _transactions.ClarityType.BoolTrue:return"true";case _transactions.ClarityType.BoolFalse:return"false";case _transactions.ClarityType.Int:return t.value.toString();case _transactions.ClarityType.UInt:return`u${t.value.toString()}`;case _transactions.ClarityType.Buffer:if(e==="tryAscii"){let n=z(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${R(t.buffer)}`;case _transactions.ClarityType.OptionalNone:return"none";case _transactions.ClarityType.OptionalSome:return`(some ${x(t.value,e)})`;case _transactions.ClarityType.ResponseErr:return`(err ${x(t.value,e)})`;case _transactions.ClarityType.ResponseOk:return`(ok ${x(t.value,e)})`;case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return`'${F(t)}`;case _transactions.ClarityType.List:return`(list ${t.list.map(n=>x(n,e)).join(" ")})`;case _transactions.ClarityType.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${x(t.data[n],e)})`).join(" ")})`;case _transactions.ClarityType.StringASCII:return`"${t.data}"`;case _transactions.ClarityType.StringUTF8:return`u"${t.data}"`}}function C(t,e=!1){switch(t.type){case _transactions.ClarityType.BoolTrue:return!0;case _transactions.ClarityType.BoolFalse:return!1;case _transactions.ClarityType.Int:case _transactions.ClarityType.UInt:return`${t.value}`;case _transactions.ClarityType.Buffer:return R(t.buffer);case _transactions.ClarityType.OptionalNone:return null;case _transactions.ClarityType.OptionalSome:return C(t.value);case _transactions.ClarityType.ResponseErr:return e?k(C(t.value)):C(t.value);case _transactions.ClarityType.ResponseOk:return e?E(C(t.value)):C(t.value);case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return F(t);case _transactions.ClarityType.List:return t.list.map(r=>C(r));case _transactions.ClarityType.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=f(o);return T(u({},r),{[a]:C(i)})},{});case _transactions.ClarityType.StringASCII:return t.data;case _transactions.ClarityType.StringUTF8:return t.data}}function Y(t,e){return t.args.map(n=>{let r=_(n.name,e),o=e[r];return d(o,n.type)})}function Dt(t,e){return e.map((n,r)=>d(n,t.args[r].type))}function A(t,e){if(e.length===0)return[];let[n]=e;if(e.length===1&&t.args.length!==1)return Y(t,n);if(typeof n=="object"&&!Array.isArray(n)&&n!==null)try{let r=!0;if(t.args.forEach(o=>{try{_(o.name,n)}catch (e2){r=!1}}),r)return Y(t,n)}catch (e3){}return Dt(t,e)}function _(t,e){let n=Object.keys(e).find(r=>{let o=t===r,i=t===q(r);return o||i});if(!n)throw new Error(`Error encoding JS tuple: ${t} not found in input.`);return n}function X(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function tt(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function b(t){if(Ut(t))return t==="int128"?"int":t==="uint128"?"uint":t;if(v(t))return`(buff ${t.buffer.length})`;if(w(t))return`(string-ascii ${t["string-ascii"].length})`;if(O(t))return`(string-utf8 ${t["string-utf8"].length})`;if(I(t))return`(response ${b(t.response.ok)} ${b(t.response.error)})`;if(N(t))return`(optional ${b(t.optional)})`;if(S(t))return`(tuple ${t.tuple.map(e=>`(${e.name} ${b(e.type)})`).join(" ")})`;if(P(t))return`(list ${t.list.length} ${b(t.list.type)})`;throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(t)}`)}function jt(t,e){let n=t.abi.functions.find(o=>f(o.name)===e);if(n)return function(...o){return{functionArgs:A(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,functionName:n.name,nativeArgs:o}};let r=t.abi.maps.find(o=>f(o.name)===e);if(r)return o=>{let i=d(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 Mt={get:jt},Kt= exports.pureProxy =t=>new Proxy(t,Mt);function Jt(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function et(t){return Jt(t).filter(V)}function nt(t){if(!V(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function rt(t){if(!V(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let e=t["requirement-publish"],[n,r]=e["contract-id"].split(".");return`${e["remap-sender"]}.${r}`}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function V(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}var Ge=["devnet","simnet","testnet","mainnet"];function Ze(t,e){let n=[];return Object.entries(t.contracts).forEach(([r,o])=>{let i=t.deployments[r][e];return i&&n.push([r,ot(o,i)]),!1}),Object.fromEntries(n)}function Qe(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=`${e}.${r.contractName}`;return[n,ot(r,o)]}))}function Lt(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=Object.assign((...i)=>{let a=A(r,i),[c,l]=e.split(".");return{functionArgs:a,contractAddress:c,contractName:l,function:r,functionName:r.name,nativeArgs:i}},{abi:r});return[n,o]}))}function ot(t,e){let n=u({},t);return T(u(u({},Lt(t.functions,e)),n),{identifier:e})}function Ye(t,e){let n={};return et(e.plan.batches).forEach(o=>{let i=rt(o),[a,c]=i.split("."),l=f(c),m=t[l],g=t[l];if(typeof g>"u")throw new Error(`Clarigen error: mismatch for contract '${l}'`);n[l]=g,g.contractFile=nt(o),g.identifier=i,Object.keys(t[l].functions).forEach(p=>{let D=p,Tt=(...j)=>{let M=m.functions[D];return{functionArgs:A(M,j),contractAddress:a,contractName:g.contractName,function:M,nativeArgs:j}};g[D]=Tt})}),n}function it(t,e){let n=d(e,t.key);return{key:e,keyCV:n,map:t}}var _blockchainapiclient = require('@stacks/blockchain-api-client');function st(t){return new (0, _blockchainapiclient.SmartContractsApi)(new (0, _blockchainapiclient.Configuration)({basePath:t}))}function at(t){return`${t}/v2`}var ct=(t,e)=>{try{let n=new URL(t);return Object.keys(e).forEach(r=>{let o=e[r];if(!!o){if(Array.isArray(o))return o.length===0?void 0:n.searchParams.set(`${r}[]`,zt(r,o));if(typeof o=="boolean"||H(o))return n.searchParams.set(r,String(o));n.searchParams.set(r,o)}}),n.toString()}catch(n){return console.error("generateUrl"),console.error(n),t}},zt=(t,e)=>e!=null&&e.length?`${e.map((n,r)=>`${r>0?encodeURIComponent(`${t}[]`):""}=${encodeURIComponent(n)}`).join("&")}`:"";function Zt(t){if(t.okay)return _transactions.hexToCV.call(void 0, t.result);throw new Error(t.cause)}async function lt(t){let{contractAddress:e,functionArgs:n,senderAddress:r=e,url:o}=t,i=await st(o).callReadOnlyFunction(T(u({},t),{readOnlyFunctionArgs:{sender:r,arguments:n.map(c=>typeof c=="string"?c:_transactions.cvToHex.call(void 0, c))}}));return Zt(i)}var _network = require('@stacks/network');function ut(t){if(t.latest!==!1)return t.latest||typeof t.tip>"u"?"latest":t.tip}async function B(t,e){let n=ut(e),r=await lt({contractAddress:t.contractAddress,contractName:t.contractName,functionName:t.functionName,functionArgs:t.functionArgs,tip:n,url:ft(e)});return e.json?C(r):y(r,!0)}async function te(t,e){let n=await B(t,e);return X(n)}async function ee(t,e){let n=await B(t,e);return tt(n)}function ft(t){return t.network?_network.StacksNetwork.fromNameOrNetwork(t.network).coreApiUrl:t.url}async function An(t,e,n,r){let o=it(e,n),i=JSON.stringify(_transactions.cvToHex.call(void 0, o.keyCV)),[a,c]=t.split("."),l=ct(`${at(ft(r))}/map_entry/${a}/${c}/${o.map.name}`,{proof:0,tip:ut(r)}),g=await(await fetch(l,{method:"POST",body:i,headers:{"Content-Type":"application/json",Accept:"application/json"}})).json(),p=_transactions.hexToCV.call(void 0, g.data);return y(p,!0)}async function hn(t,e){let n="network"in e?e.network:new (0, _network.StacksNetwork)({url:e.url}),r=await _transactions.broadcastTransaction.call(void 0, t,n);if(r.error)throw new Error(`Error broadcasting tx: ${r.error} - ${r.reason} - ${JSON.stringify(r.reason_data)}`);return{txId:r.txid,stacksTransaction:t}}var pt=class{constructor(e){typeof e=="string"?this.url=e:this.url=_network.StacksNetwork.fromNameOrNetwork(e).coreApiUrl}roOptions(e){return u({url:this.url},e)}ro(e,n){return B(e,this.roOptions(n||{}))}roOk(e,n){return te(e,this.roOptions(n||{}))}roErr(e,n){return ee(e,this.roOptions(n||{}))}};function dt(t,e){if(!("identifier"in t))throw new Error("Invalid contract");let[n,r]=t.identifier.split(".");for(let o of t.non_fungible_tokens)if(o.name===e)return _transactions.createAssetInfo.call(void 0, n,r,o.name);for(let o of t.fungible_tokens)if(o.name===e)return _transactions.createAssetInfo.call(void 0, n,r,o.name);throw new Error(`Invalid asset: "${e}" is not an asset in contract.`)}function Fn(t,e,n,r){let[o,i]=e.split("."),[a]=t.non_fungible_tokens,c=dt(t,a.name),l=a.type,m=d(r,l);return typeof i>"u"?_transactions.makeStandardNonFungiblePostCondition.call(void 0, o,n,c,m):_transactions.makeContractNonFungiblePostCondition.call(void 0, o,i,n,c,m)}function In(t,e,n,r){let[o,i]=e.split("."),[a]=t.fungible_tokens,c=dt(t,a.name);return typeof i>"u"?_transactions.makeStandardFungiblePostCondition.call(void 0, o,n,r,c):_transactions.makeContractFungiblePostCondition.call(void 0, o,i,n,r,c)}function U(t,e=""){return t.slice(e.length+2,-1)}function h(t,e){if(S(e)){let n=ce(t),r={},o=Object.entries(n).reduce((i,[a,c])=>{let l=a.trim();return T(u({},i),{[l]:c.trim()})},{});return e.tuple.forEach(({name:i,type:a})=>{let c=f(i);r[c]=h(o[i],a)}),r}else{if(P(e))return ae(t).map(r=>h(r,e.list.type));if(N(e))return t==="none"?null:h(U(t,"some"),e.optional);if(w(e))return t.slice(1,-1);if(O(e))return t.slice(2,-1);if(e==="bool")return t==="true";if(e==="uint128")return BigInt(t.slice(1));if(e==="int128")return BigInt(t);if(e==="trait_reference")return t.replace(/^\'/,"");if(e==="principal")return t.replace(/^\'/,"");if(e==="none")return null;if(v(e))return W(t.slice(2));if(I(e)){if(t.startsWith("(ok")){let r=U(t,"ok");return E(h(r,e.response.ok))}let n=U(t,"err");return k(h(n,e.response.error))}}throw new Error(`Unable to parse cv string to value: ${t} ${JSON.stringify(e,null,2)}`)}var se=new Array(255);for(let t=0;t<=255;++t)se[t]=t.toString(16).padStart(2,"0");function ae(t){if(t.charAt(0)!=="["||t.charAt(t.length-1)!=="]")throw new Error(`Expected (list ..), got ${t.toString()}`);let e=[],n=[],r=1;for(let i=0;i<t.length;i++)t.charAt(i)===","&&e.length==1&&(n.push(t.substring(r,i)),r=i+2),["(","[","{"].includes(t.charAt(i))&&e.push(t.charAt(i)),t.charAt(i)===")"&&e[e.length-1]==="("&&e.pop(),t.charAt(i)==="}"&&e[e.length-1]==="{"&&e.pop(),t.charAt(i)==="]"&&e[e.length-1]==="["&&e.pop();let o=t.substring(r,t.length-1);return o.length>0&&n.push(o),n}function ce(t){if(t.charAt(0)!=="{"||t.charAt(t.length-1)!=="}")throw new Error(`Expected '(tuple ..)', got ${t.toString()}`);let e=1,n=[],r=[];for(let a=0;a<t.length;a++)t.charAt(a)===","&&n.length==1&&(r.push(t.substring(e,a)),e=a+2),["(","[","{"].includes(t.charAt(a))&&n.push(t.charAt(a)),t.charAt(a)===")"&&n[n.length-1]==="("&&n.pop(),t.charAt(a)==="}"&&n[n.length-1]==="{"&&n.pop(),t.charAt(a)==="]"&&n[n.length-1]==="["&&n.pop();let o=t.substring(e,t.length-1);o.length>0&&r.push(o);let i={};for(let a of r)for(let c=0;c<a.length;c++)if(a.charAt(c)===":"){let l=a.substring(0,c),m=a.substring(c+2,a.length);i[l]=m;break}return i}exports.ClarigenClient = pt; exports.CoreNodeEventType = wt; exports.DEPLOYMENT_NETWORKS = Ge; exports.MAINNET_BURN_ADDRESS = Et; exports.TESTNET_BURN_ADDRESS = ht; exports.bootContractIdentifier = me; exports.broadcast = hn; exports.bytesToAscii = z; exports.bytesToHex = R; exports.contractFactory = ot; exports.contractsFactory = Qe; exports.createAssetInfo = dt; exports.cvToJSON = C; exports.cvToString = x; exports.cvToValue = y; exports.deploymentFactory = Ye; exports.err = k; exports.expectErr = tt; exports.expectOk = X; exports.extractErrors = vt; exports.fetchMapGet = An; exports.filterEvents = be; exports.findJsTupleKey = _; exports.functionsFactory = Lt; exports.getApiUrl = ft; exports.getContractIdentifier = Te; exports.getContractName = de; exports.getContractNameFromPath = kt; exports.getContractPrincipalCV = Ce; exports.getTypeString = b; exports.hexToBytes = W; exports.hexToCvValue = Fe; exports.isClarityAbiBuffer = v; exports.isClarityAbiList = P; exports.isClarityAbiOptional = N; exports.isClarityAbiPrimitive = Ut; exports.isClarityAbiResponse = I; exports.isClarityAbiStringAscii = w; exports.isClarityAbiStringUtf8 = O; exports.isClarityAbiTraitReference = Ie; exports.isClarityAbiTuple = S; exports.isNumber = H; exports.isResponse = Re; exports.makeContracts = he; exports.makeFungiblePostCondition = In; exports.makeNonFungiblePostCondition = Fn; exports.mapFactory = it; exports.ok = E; exports.parseToCV = d; exports.principalToString = F; exports.projectErrors = ge; exports.projectFactory = Ze; exports.pureProxy = Kt; exports.rawClarityToValue = h; exports.ro = B; exports.roErr = ee; exports.roOk = te; exports.toCamelCase = f; exports.toKebabCase = q; exports.transformArgsArray = Dt; exports.transformArgsToCV = A; exports.transformObjectArgs = Y;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _transactions = require('@stacks/transactions');var _base = require('@scure/base');var yt="ST000000000000000000002AMW42H",dt= exports.MAINNET_BURN_ADDRESS ="SP000000000000000000002Q6VF78",u= exports.toCamelCase =(t,e)=>{let n=typeof t=="string"?t:String(t);if(/^[A-Z_]+$/.test(n))return n;let[o,...i]=n.replace("!","_x").replace("?","_q").split("-"),c=`${e?o[0].toUpperCase():o[0].toLowerCase()}${o.slice(1)}`;return i.forEach(l=>{let d=l[0].toUpperCase()+l.slice(1);c+=d}),c};function M(t){let e=t.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);return e?e.join("-").toLowerCase():t}function oe(t,e=!0){let n=t.split(".")[1];return e?u(n):n}var Tt=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},ie= exports.getContractIdentifier =t=>`${t.address}.${t.name}`,se= exports.getContractPrincipalCV =t=>{let e=Tt(t.contractFile);return _transactions.contractPrincipalCV.call(void 0, t.address,e)};function ae(t,e){return`${e?dt:yt}.${t}`}function S(t){return _base.hex.encode(t)}function K(t){return _base.hex.decode(t)}function J(t){let e=Array.from(t);return String.fromCharCode.apply(null,e)}var L=t=>typeof t=="number";function Ct(t){let{constants:e}=t,n={};for(let r in e)if(r.toLowerCase().startsWith("err")){let o=e[r];typeof o=="object"&&o&&"isOk"in o&&!o.isOk&&"value"in o?n[r]=o.value:n[r]=o}return n}function ce(t){let{contracts:e}=t,n={};for(let r in e)n[r]=Ct(e[r]);return n}var mt=(p=>(p.ContractEvent="contract_event",p.StxTransferEvent="stx_transfer_event",p.StxMintEvent="stx_mint_event",p.StxBurnEvent="stx_burn_event",p.StxLockEvent="stx_lock_event",p.NftTransferEvent="nft_transfer_event",p.NftMintEvent="nft_mint_event",p.NftBurnEvent="nft_burn_event",p.FtTransferEvent="ft_transfer_event",p.FtMintEvent="ft_mint_event",p.FtBurnEvent="ft_burn_event",p))(mt||{});function pe(t,e){return t.filter(n=>n.type===e)}function fe(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,a=`${i}.${o.name}`,c=o.contract(i,o.name);n[r]={identifier:a,contract:c}}return n}function A(t){return{isOk:!0,value:t}}function h(t){return{isOk:!1,value:t}}function Ae(t){return typeof t=="object"&&t!==null&&"isOk"in t}function P(t){if(t.type===_transactions.ClarityType.PrincipalStandard)return _transactions.addressToString.call(void 0, t.address);if(t.type===_transactions.ClarityType.PrincipalContract)return`${_transactions.addressToString.call(void 0, t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function f(t,e=!1){switch(t.type){case _transactions.ClarityType.BoolTrue:return!0;case _transactions.ClarityType.BoolFalse:return!1;case _transactions.ClarityType.Int:case _transactions.ClarityType.UInt:return t.value;case _transactions.ClarityType.Buffer:return t.buffer;case _transactions.ClarityType.OptionalNone:return null;case _transactions.ClarityType.OptionalSome:return f(t.value);case _transactions.ClarityType.ResponseErr:return e?h(f(t.value)):f(t.value);case _transactions.ClarityType.ResponseOk:return e?A(f(t.value)):f(t.value);case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return P(t);case _transactions.ClarityType.List:return t.list.map(r=>f(r));case _transactions.ClarityType.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=u(o);return{...r,[a]:f(i,e)}},{});case _transactions.ClarityType.StringASCII:return t.data;case _transactions.ClarityType.StringUTF8:return t.data}}function he(t,e=!1){return f(_transactions.hexToCV.call(void 0, t),e)}function H(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}var St=t=>typeof t=="string",E= exports.isClarityAbiBuffer =t=>t.buffer!==void 0,k= exports.isClarityAbiStringAscii =t=>t["string-ascii"]!==void 0,v= exports.isClarityAbiStringUtf8 =t=>t["string-utf8"]!==void 0,R= exports.isClarityAbiResponse =t=>t.response!==void 0,w= exports.isClarityAbiOptional =t=>t.optional!==void 0,O= exports.isClarityAbiTuple =t=>t.tuple!==void 0,N= exports.isClarityAbiList =t=>t.list!==void 0,Ee= exports.isClarityAbiTraitReference =t=>t==="trait_reference";function y(t,e){if(O(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=F(r.name,t),i=t[o];n[r.name]=y(i,r.type)}),_transactions.tupleCV.call(void 0, n)}else if(N(e)){let r=t.map(o=>y(o,e.list.type));return _transactions.listCV.call(void 0, r)}else{if(w(e))return t===null?_transactions.noneCV.call(void 0, ):_transactions.someCV.call(void 0, y(t,e.optional));if(k(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _transactions.stringAsciiCV.call(void 0, t)}else if(v(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return _transactions.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=H(t);return _transactions.uintCV.call(void 0, n.toString())}else if(e==="int128"){let n=H(t);return _transactions.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 _transactions.contractPrincipalCV.call(void 0, n,r)}else if(E(e))return _transactions.bufferCV.call(void 0, t)}return _transactions.parseToCV.call(void 0, t,e)}function m(t,e="hex"){switch(t.type){case _transactions.ClarityType.BoolTrue:return"true";case _transactions.ClarityType.BoolFalse:return"false";case _transactions.ClarityType.Int:return t.value.toString();case _transactions.ClarityType.UInt:return`u${t.value.toString()}`;case _transactions.ClarityType.Buffer:if(e==="tryAscii"){let n=J(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${S(t.buffer)}`;case _transactions.ClarityType.OptionalNone:return"none";case _transactions.ClarityType.OptionalSome:return`(some ${m(t.value,e)})`;case _transactions.ClarityType.ResponseErr:return`(err ${m(t.value,e)})`;case _transactions.ClarityType.ResponseOk:return`(ok ${m(t.value,e)})`;case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return`'${P(t)}`;case _transactions.ClarityType.List:return`(list ${t.list.map(n=>m(n,e)).join(" ")})`;case _transactions.ClarityType.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${m(t.data[n],e)})`).join(" ")})`;case _transactions.ClarityType.StringASCII:return`"${t.data}"`;case _transactions.ClarityType.StringUTF8:return`u"${t.data}"`}}function T(t,e=!1){switch(t.type){case _transactions.ClarityType.BoolTrue:return!0;case _transactions.ClarityType.BoolFalse:return!1;case _transactions.ClarityType.Int:case _transactions.ClarityType.UInt:return`${t.value}`;case _transactions.ClarityType.Buffer:return S(t.buffer);case _transactions.ClarityType.OptionalNone:return null;case _transactions.ClarityType.OptionalSome:return T(t.value);case _transactions.ClarityType.ResponseErr:return e?h(T(t.value)):T(t.value);case _transactions.ClarityType.ResponseOk:return e?A(T(t.value)):T(t.value);case _transactions.ClarityType.PrincipalStandard:case _transactions.ClarityType.PrincipalContract:return P(t);case _transactions.ClarityType.List:return t.list.map(r=>T(r));case _transactions.ClarityType.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=u(o);return{...r,[a]:T(i)}},{});case _transactions.ClarityType.StringASCII:return t.data;case _transactions.ClarityType.StringUTF8:return t.data}}function z(t,e){return t.args.map(n=>{let r=F(n.name,e),o=e[r];return y(o,n.type)})}function Pt(t,e){return e.map((n,r)=>y(n,t.args[r].type))}function x(t,e){if(e.length===0)return[];let[n]=e;if(e.length===1&&t.args.length!==1)return z(t,n);if(typeof n=="object"&&!Array.isArray(n)&&n!==null)try{let r=!0;if(t.args.forEach(o=>{try{F(o.name,n)}catch (e2){r=!1}}),r)return z(t,n)}catch (e3){}return Pt(t,e)}function F(t,e){let n=Object.keys(e).find(r=>{let o=t===r,i=t===M(r);return o||i});if(!n)throw new Error(`Error encoding JS tuple: ${t} not found in input.`);return n}function G(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function Z(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function g(t){if(St(t))return t==="int128"?"int":t==="uint128"?"uint":t;if(E(t))return`(buff ${t.buffer.length})`;if(k(t))return`(string-ascii ${t["string-ascii"].length})`;if(v(t))return`(string-utf8 ${t["string-utf8"].length})`;if(R(t))return`(response ${g(t.response.ok)} ${g(t.response.error)})`;if(w(t))return`(optional ${g(t.optional)})`;if(O(t))return`(tuple ${t.tuple.map(e=>`(${e.name} ${g(e.type)})`).join(" ")})`;if(N(t))return`(list ${t.list.length} ${g(t.list.type)})`;throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(t)}`)}function Rt(t,e){let n=t.abi.functions.find(o=>u(o.name)===e);if(n)return function(...o){return{functionArgs:x(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,functionName:n.name,nativeArgs:o}};let r=t.abi.maps.find(o=>u(o.name)===e);if(r)return o=>{let i=y(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Ft={get:Rt},It= exports.pureProxy =t=>new Proxy(t,Ft);function _t(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function Q(t){return _t(t).filter(I)}function Y(t){if(!I(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function X(t){if(!I(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let e=t["requirement-publish"],[n,r]=e["contract-id"].split(".");return`${e["remap-sender"]}.${r}`}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function I(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}var De=["devnet","simnet","testnet","mainnet"];function je(t,e){let n=[];return Object.entries(t.contracts).forEach(([r,o])=>{let i=t.deployments[r][e];return i&&n.push([r,tt(o,i)]),!1}),Object.fromEntries(n)}function Me(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=`${e}.${r.contractName}`;return[n,tt(r,o)]}))}function Vt(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=Object.assign((...i)=>{let a=x(r,i),[c,l]=e.split(".");return{functionArgs:a,contractAddress:c,contractName:l,function:r,functionName:r.name,nativeArgs:i}},{abi:r});return[n,o]}))}function tt(t,e){let n={...t};return{...Vt(t.functions,e),...n,identifier:e}}function Ke(t,e){let n={};return Q(e.plan.batches).forEach(o=>{let i=X(o),[a,c]=i.split("."),l=u(c),d=t[l],C=t[l];if(typeof C>"u")throw new Error(`Clarigen error: mismatch for contract '${l}'`);n[l]=C,C.contractFile=Y(o),C.identifier=i,Object.keys(t[l].functions).forEach(p=>{let B=p,ut=(...U)=>{let D=d.functions[B];return{functionArgs:x(D,U),contractAddress:a,contractName:C.contractName,function:D,nativeArgs:U}};C[B]=ut})}),n}function et(t,e){let n=y(e,t.key);return{key:e,keyCV:n,map:t}}var _blockchainapiclient = require('@stacks/blockchain-api-client');function nt(t){return new (0, _blockchainapiclient.SmartContractsApi)(new (0, _blockchainapiclient.Configuration)({basePath:t}))}function rt(t){return`${t}/v2`}var ot=(t,e)=>{try{let n=new URL(t);return Object.keys(e).forEach(r=>{let o=e[r];if(o){if(Array.isArray(o))return o.length===0?void 0:n.searchParams.set(`${r}[]`,Ut(r,o));if(typeof o=="boolean"||L(o))return n.searchParams.set(r,String(o));n.searchParams.set(r,o)}}),n.toString()}catch(n){return console.error("generateUrl"),console.error(n),t}},Ut=(t,e)=>e!=null&&e.length?`${e.map((n,r)=>`${r>0?encodeURIComponent(`${t}[]`):""}=${encodeURIComponent(n)}`).join("&")}`:"";function Mt(t){if(t.okay)return _transactions.hexToCV.call(void 0, t.result);throw new Error(t.cause)}async function it(t){let{contractAddress:e,functionArgs:n,senderAddress:r=e,url:o}=t,i=await nt(o).callReadOnlyFunction({...t,readOnlyFunctionArgs:{sender:r,arguments:n.map(c=>typeof c=="string"?c:_transactions.cvToHex.call(void 0, c))}});return Mt(i)}var _network = require('@stacks/network');function at(t){if(t.latest!==!1)return t.latest||typeof t.tip>"u"?"latest":t.tip}async function V(t,e){let n=at(e),r=await it({contractAddress:t.contractAddress,contractName:t.contractName,functionName:t.functionName,functionArgs:t.functionArgs,tip:n,url:ct(e)});return e.json?T(r):f(r,!0)}async function qt(t,e){let n=await V(t,e);return G(n)}async function Wt(t,e){let n=await V(t,e);return Z(n)}function ct(t){return t.network?_network.StacksNetwork.fromNameOrNetwork(t.network).coreApiUrl:t.url}async function un(t,e,n,r){let o=et(e,n),i=JSON.stringify(_transactions.cvToHex.call(void 0, o.keyCV)),[a,c]=t.split("."),l=ot(`${rt(ct(r))}/map_entry/${a}/${c}/${o.map.name}`,{proof:0,tip:at(r)}),C=await(await fetch(l,{method:"POST",body:i,headers:{"Content-Type":"application/json",Accept:"application/json"}})).json(),p=_transactions.hexToCV.call(void 0, C.data);return f(p,!0)}async function fn(t,e){let n="network"in e?e.network:new (0, _network.StacksNetwork)({url:e.url}),r=await _transactions.broadcastTransaction.call(void 0, t,n);if(r.error)throw new Error(`Error broadcasting tx: ${r.error} - ${r.reason} - ${JSON.stringify(r.reason_data)}`);return{txId:r.txid,stacksTransaction:t}}var st=class{constructor(e){typeof e=="string"?this.url=e:this.url=_network.StacksNetwork.fromNameOrNetwork(e).coreApiUrl}roOptions(e){return{url:this.url,...e}}ro(e,n){return V(e,this.roOptions(n||{}))}roOk(e,n){return qt(e,this.roOptions(n||{}))}roErr(e,n){return Wt(e,this.roOptions(n||{}))}};function pt(t,e){if(!("identifier"in t))throw new Error("Invalid contract");let[n,r]=t.identifier.split(".");for(let o of t.non_fungible_tokens)if(o.name===e)return _transactions.createAssetInfo.call(void 0, n,r,o.name);for(let o of t.fungible_tokens)if(o.name===e)return _transactions.createAssetInfo.call(void 0, n,r,o.name);throw new Error(`Invalid asset: "${e}" is not an asset in contract.`)}function hn(t,e,n,r){let[o,i]=e.split("."),[a]=t.non_fungible_tokens,c=pt(t,a.name),l=a.type,d=y(r,l);return typeof i>"u"?_transactions.makeStandardNonFungiblePostCondition.call(void 0, o,n,c,d):_transactions.makeContractNonFungiblePostCondition.call(void 0, o,i,n,c,d)}function En(t,e,n,r){let[o,i]=e.split("."),[a]=t.fungible_tokens,c=pt(t,a.name);return typeof i>"u"?_transactions.makeStandardFungiblePostCondition.call(void 0, o,n,r,c):_transactions.makeContractFungiblePostCondition.call(void 0, o,i,n,r,c)}function $(t,e=""){return t.slice(e.length+2,-1)}function b(t,e){if(O(e)){let n=Xt(t),r={},o=Object.entries(n).reduce((i,[a,c])=>{let l=a.trim();return{...i,[l]:c.trim()}},{});return e.tuple.forEach(({name:i,type:a})=>{let c=u(i);r[c]=b(o[i],a)}),r}else{if(N(e))return Yt(t).map(r=>b(r,e.list.type));if(w(e))return t==="none"?null:b($(t,"some"),e.optional);if(k(e))return t.slice(1,-1);if(v(e))return t.slice(2,-1);if(e==="bool")return t==="true";if(e==="uint128")return BigInt(t.slice(1));if(e==="int128")return BigInt(t);if(e==="trait_reference")return t.replace(/^\'/,"");if(e==="principal")return t.replace(/^\'/,"");if(e==="none")return null;if(E(e))return K(t.slice(2));if(R(e)){if(t.startsWith("(ok")){let r=$(t,"ok");return A(b(r,e.response.ok))}let n=$(t,"err");return h(b(n,e.response.error))}}throw new Error(`Unable to parse cv string to value: ${t} ${JSON.stringify(e,null,2)}`)}var Qt=new Array(255);for(let t=0;t<=255;++t)Qt[t]=t.toString(16).padStart(2,"0");function Yt(t){if(t.charAt(0)!=="["||t.charAt(t.length-1)!=="]")throw new Error(`Expected (list ..), got ${t.toString()}`);let e=[],n=[],r=1;for(let i=0;i<t.length;i++)t.charAt(i)===","&&e.length==1&&(n.push(t.substring(r,i)),r=i+2),["(","[","{"].includes(t.charAt(i))&&e.push(t.charAt(i)),t.charAt(i)===")"&&e[e.length-1]==="("&&e.pop(),t.charAt(i)==="}"&&e[e.length-1]==="{"&&e.pop(),t.charAt(i)==="]"&&e[e.length-1]==="["&&e.pop();let o=t.substring(r,t.length-1);return o.length>0&&n.push(o),n}function Xt(t){if(t.charAt(0)!=="{"||t.charAt(t.length-1)!=="}")throw new Error(`Expected '(tuple ..)', got ${t.toString()}`);let e=1,n=[],r=[];for(let a=0;a<t.length;a++)t.charAt(a)===","&&n.length==1&&(r.push(t.substring(e,a)),e=a+2),["(","[","{"].includes(t.charAt(a))&&n.push(t.charAt(a)),t.charAt(a)===")"&&n[n.length-1]==="("&&n.pop(),t.charAt(a)==="}"&&n[n.length-1]==="{"&&n.pop(),t.charAt(a)==="]"&&n[n.length-1]==="["&&n.pop();let o=t.substring(e,t.length-1);o.length>0&&r.push(o);let i={};for(let a of r)for(let c=0;c<a.length;c++)if(a.charAt(c)===":"){let l=a.substring(0,c),d=a.substring(c+2,a.length);i[l]=d;break}return i}exports.ClarigenClient = st; exports.CoreNodeEventType = mt; exports.DEPLOYMENT_NETWORKS = De; exports.MAINNET_BURN_ADDRESS = dt; exports.TESTNET_BURN_ADDRESS = yt; exports.bootContractIdentifier = ae; exports.broadcast = fn; exports.bytesToAscii = J; exports.bytesToHex = S; exports.contractFactory = tt; exports.contractsFactory = Me; exports.createAssetInfo = pt; exports.cvToJSON = T; exports.cvToString = m; exports.cvToValue = f; exports.deploymentFactory = Ke; exports.err = h; exports.expectErr = Z; exports.expectOk = G; exports.extractErrors = Ct; exports.fetchMapGet = un; exports.filterEvents = pe; exports.findJsTupleKey = F; exports.functionsFactory = Vt; exports.getApiUrl = ct; exports.getContractIdentifier = ie; exports.getContractName = oe; exports.getContractNameFromPath = Tt; exports.getContractPrincipalCV = se; exports.getTypeString = g; exports.hexToBytes = K; exports.hexToCvValue = he; exports.isClarityAbiBuffer = E; exports.isClarityAbiList = N; exports.isClarityAbiOptional = w; exports.isClarityAbiPrimitive = St; exports.isClarityAbiResponse = R; exports.isClarityAbiStringAscii = k; exports.isClarityAbiStringUtf8 = v; exports.isClarityAbiTraitReference = Ee; exports.isClarityAbiTuple = O; exports.isNumber = L; exports.isResponse = Ae; exports.makeContracts = fe; exports.makeFungiblePostCondition = En; exports.makeNonFungiblePostCondition = hn; exports.mapFactory = et; exports.ok = A; exports.parseToCV = y; exports.principalToString = P; exports.projectErrors = ce; exports.projectFactory = je; exports.pureProxy = It; exports.rawClarityToValue = b; exports.ro = V; exports.roErr = Wt; exports.roOk = qt; exports.toCamelCase = u; exports.toKebabCase = M; exports.transformArgsArray = Pt; exports.transformArgsToCV = x; exports.transformObjectArgs = z;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var Ct=Object.defineProperty,mt=Object.defineProperties;var gt=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var xt=Object.prototype.hasOwnProperty,bt=Object.prototype.propertyIsEnumerable;var J=(t,e,n)=>e in t?Ct(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,u=(t,e)=>{for(var n in e||(e={}))xt.call(e,n)&&J(t,n,e[n]);if(K)for(var n of K(e))bt.call(e,n)&&J(t,n,e[n]);return t},T=(t,e)=>mt(t,gt(e));import{contractPrincipalCV as At}from"@stacks/transactions";import{hex as L}from"@scure/base";var ht="ST000000000000000000002AMW42H",Et="SP000000000000000000002Q6VF78",f=(t,e)=>{let n=typeof t=="string"?t:String(t);if(/^[A-Z_]+$/.test(n))return n;let[o,...i]=n.replace("!","_x").replace("?","_q").split("-"),c=`${e?o[0].toUpperCase():o[0].toLowerCase()}${o.slice(1)}`;return i.forEach(l=>{c+=l[0].toUpperCase()+l.slice(1)}),c};function q(t){let e=t.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);return e?e.join("-").toLowerCase():t}function de(t,e=!0){let n=t.split(".")[1];return e?f(n):n}var kt=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},Te=t=>`${t.address}.${t.name}`,Ce=t=>{let e=kt(t.contractFile);return At(t.address,e)};function me(t,e){return`${e?Et:ht}.${t}`}function R(t){return L.encode(t)}function W(t){return L.decode(t)}function z(t){let e=Array.from(t);return String.fromCharCode.apply(null,e)}var H=t=>typeof t=="number";function vt(t){let{constants:e}=t,n={};for(let r in e)if(r.toLowerCase().startsWith("err")){let o=e[r];typeof o=="object"&&o&&"isOk"in o&&!o.isOk&&"value"in o?n[r]=o.value:n[r]=o}return n}function ge(t){let{contracts:e}=t,n={};for(let r in e)n[r]=vt(e[r]);return n}var wt=(p=>(p.ContractEvent="contract_event",p.StxTransferEvent="stx_transfer_event",p.StxMintEvent="stx_mint_event",p.StxBurnEvent="stx_burn_event",p.StxLockEvent="stx_lock_event",p.NftTransferEvent="nft_transfer_event",p.NftMintEvent="nft_mint_event",p.NftBurnEvent="nft_burn_event",p.FtTransferEvent="ft_transfer_event",p.FtMintEvent="ft_mint_event",p.FtBurnEvent="ft_burn_event",p))(wt||{});function be(t,e){return t.filter(n=>n.type===e)}function he(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,a=`${i}.${o.name}`,c=o.contract(i,o.name);n[r]={identifier:a,contract:c}}return n}import{addressToString as G,ClarityType as s,uintCV as Ot,contractPrincipalCV as Nt,intCV as St,stringAsciiCV as Pt,stringUtf8CV as Rt,noneCV as Ft,someCV as It,tupleCV as _t,listCV as Vt,hexToCV as $t,bufferCV as Bt,parseToCV as Z}from"@stacks/transactions";function E(t){return{isOk:!0,value:t}}function k(t){return{isOk:!1,value:t}}function Re(t){return typeof t=="object"&&t!==null&&"isOk"in t}function F(t){if(t.type===s.PrincipalStandard)return G(t.address);if(t.type===s.PrincipalContract)return`${G(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function y(t,e=!1){switch(t.type){case s.BoolTrue:return!0;case s.BoolFalse:return!1;case s.Int:case s.UInt:return t.value;case s.Buffer:return t.buffer;case s.OptionalNone:return null;case s.OptionalSome:return y(t.value);case s.ResponseErr:return e?k(y(t.value)):y(t.value);case s.ResponseOk:return e?E(y(t.value)):y(t.value);case s.PrincipalStandard:case s.PrincipalContract:return F(t);case s.List:return t.list.map(r=>y(r));case s.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=f(o);return T(u({},r),{[a]:y(i,e)})},{});case s.StringASCII:return t.data;case s.StringUTF8:return t.data}}function Fe(t,e=!1){return y($t(t),e)}function Q(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}var Ut=t=>typeof t=="string",v=t=>t.buffer!==void 0,w=t=>t["string-ascii"]!==void 0,O=t=>t["string-utf8"]!==void 0,I=t=>t.response!==void 0,N=t=>t.optional!==void 0,S=t=>t.tuple!==void 0,P=t=>t.list!==void 0,Ie=t=>t==="trait_reference";function d(t,e){if(S(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=_(r.name,t),i=t[o];n[r.name]=d(i,r.type)}),_t(n)}else if(P(e)){let r=t.map(o=>d(o,e.list.type));return Vt(r)}else{if(N(e))return t===null?Ft():It(d(t,e.optional));if(w(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return Pt(t)}else if(O(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return Rt(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return Z(n,e)}else if(e==="uint128"){let n=Q(t);return Ot(n.toString())}else if(e==="int128"){let n=Q(t);return St(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 Nt(n,r)}else if(v(e))return Bt(t)}return Z(t,e)}function x(t,e="hex"){switch(t.type){case s.BoolTrue:return"true";case s.BoolFalse:return"false";case s.Int:return t.value.toString();case s.UInt:return`u${t.value.toString()}`;case s.Buffer:if(e==="tryAscii"){let n=z(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${R(t.buffer)}`;case s.OptionalNone:return"none";case s.OptionalSome:return`(some ${x(t.value,e)})`;case s.ResponseErr:return`(err ${x(t.value,e)})`;case s.ResponseOk:return`(ok ${x(t.value,e)})`;case s.PrincipalStandard:case s.PrincipalContract:return`'${F(t)}`;case s.List:return`(list ${t.list.map(n=>x(n,e)).join(" ")})`;case s.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${x(t.data[n],e)})`).join(" ")})`;case s.StringASCII:return`"${t.data}"`;case s.StringUTF8:return`u"${t.data}"`}}function C(t,e=!1){switch(t.type){case s.BoolTrue:return!0;case s.BoolFalse:return!1;case s.Int:case s.UInt:return`${t.value}`;case s.Buffer:return R(t.buffer);case s.OptionalNone:return null;case s.OptionalSome:return C(t.value);case s.ResponseErr:return e?k(C(t.value)):C(t.value);case s.ResponseOk:return e?E(C(t.value)):C(t.value);case s.PrincipalStandard:case s.PrincipalContract:return F(t);case s.List:return t.list.map(r=>C(r));case s.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=f(o);return T(u({},r),{[a]:C(i)})},{});case s.StringASCII:return t.data;case s.StringUTF8:return t.data}}function Y(t,e){return t.args.map(n=>{let r=_(n.name,e),o=e[r];return d(o,n.type)})}function Dt(t,e){return e.map((n,r)=>d(n,t.args[r].type))}function A(t,e){if(e.length===0)return[];let[n]=e;if(e.length===1&&t.args.length!==1)return Y(t,n);if(typeof n=="object"&&!Array.isArray(n)&&n!==null)try{let r=!0;if(t.args.forEach(o=>{try{_(o.name,n)}catch{r=!1}}),r)return Y(t,n)}catch{}return Dt(t,e)}function _(t,e){let n=Object.keys(e).find(r=>{let o=t===r,i=t===q(r);return o||i});if(!n)throw new Error(`Error encoding JS tuple: ${t} not found in input.`);return n}function X(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function tt(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function b(t){if(Ut(t))return t==="int128"?"int":t==="uint128"?"uint":t;if(v(t))return`(buff ${t.buffer.length})`;if(w(t))return`(string-ascii ${t["string-ascii"].length})`;if(O(t))return`(string-utf8 ${t["string-utf8"].length})`;if(I(t))return`(response ${b(t.response.ok)} ${b(t.response.error)})`;if(N(t))return`(optional ${b(t.optional)})`;if(S(t))return`(tuple ${t.tuple.map(e=>`(${e.name} ${b(e.type)})`).join(" ")})`;if(P(t))return`(list ${t.list.length} ${b(t.list.type)})`;throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(t)}`)}function jt(t,e){let n=t.abi.functions.find(o=>f(o.name)===e);if(n)return function(...o){return{functionArgs:A(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,functionName:n.name,nativeArgs:o}};let r=t.abi.maps.find(o=>f(o.name)===e);if(r)return o=>{let i=d(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 Mt={get:jt},Kt=t=>new Proxy(t,Mt);import{cvToHex as Qt,hexToCV as Yt}from"@stacks/transactions";import{broadcastTransaction as Xt}from"@stacks/transactions";function Jt(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function et(t){return Jt(t).filter(V)}function nt(t){if(!V(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function rt(t){if(!V(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let e=t["requirement-publish"],[n,r]=e["contract-id"].split(".");return`${e["remap-sender"]}.${r}`}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function V(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}var Ge=["devnet","simnet","testnet","mainnet"];function Ze(t,e){let n=[];return Object.entries(t.contracts).forEach(([r,o])=>{let i=t.deployments[r][e];return i&&n.push([r,ot(o,i)]),!1}),Object.fromEntries(n)}function Qe(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=`${e}.${r.contractName}`;return[n,ot(r,o)]}))}function Lt(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=Object.assign((...i)=>{let a=A(r,i),[c,l]=e.split(".");return{functionArgs:a,contractAddress:c,contractName:l,function:r,functionName:r.name,nativeArgs:i}},{abi:r});return[n,o]}))}function ot(t,e){let n=u({},t);return T(u(u({},Lt(t.functions,e)),n),{identifier:e})}function Ye(t,e){let n={};return et(e.plan.batches).forEach(o=>{let i=rt(o),[a,c]=i.split("."),l=f(c),m=t[l],g=t[l];if(typeof g>"u")throw new Error(`Clarigen error: mismatch for contract '${l}'`);n[l]=g,g.contractFile=nt(o),g.identifier=i,Object.keys(t[l].functions).forEach(p=>{let D=p,Tt=(...j)=>{let M=m.functions[D];return{functionArgs:A(M,j),contractAddress:a,contractName:g.contractName,function:M,nativeArgs:j}};g[D]=Tt})}),n}function it(t,e){let n=d(e,t.key);return{key:e,keyCV:n,map:t}}import{cvToHex as Ht,hexToCV as Gt}from"@stacks/transactions";import{SmartContractsApi as qt,Configuration as Wt,TransactionsApi as en}from"@stacks/blockchain-api-client";function st(t){return new qt(new Wt({basePath:t}))}function at(t){return`${t}/v2`}var ct=(t,e)=>{try{let n=new URL(t);return Object.keys(e).forEach(r=>{let o=e[r];if(!!o){if(Array.isArray(o))return o.length===0?void 0:n.searchParams.set(`${r}[]`,zt(r,o));if(typeof o=="boolean"||H(o))return n.searchParams.set(r,String(o));n.searchParams.set(r,o)}}),n.toString()}catch(n){return console.error("generateUrl"),console.error(n),t}},zt=(t,e)=>e!=null&&e.length?`${e.map((n,r)=>`${r>0?encodeURIComponent(`${t}[]`):""}=${encodeURIComponent(n)}`).join("&")}`:"";function Zt(t){if(t.okay)return Gt(t.result);throw new Error(t.cause)}async function lt(t){let{contractAddress:e,functionArgs:n,senderAddress:r=e,url:o}=t,i=await st(o).callReadOnlyFunction(T(u({},t),{readOnlyFunctionArgs:{sender:r,arguments:n.map(c=>typeof c=="string"?c:Ht(c))}}));return Zt(i)}import{StacksNetwork as $}from"@stacks/network";function ut(t){if(t.latest!==!1)return t.latest||typeof t.tip>"u"?"latest":t.tip}async function B(t,e){let n=ut(e),r=await lt({contractAddress:t.contractAddress,contractName:t.contractName,functionName:t.functionName,functionArgs:t.functionArgs,tip:n,url:ft(e)});return e.json?C(r):y(r,!0)}async function te(t,e){let n=await B(t,e);return X(n)}async function ee(t,e){let n=await B(t,e);return tt(n)}function ft(t){return t.network?$.fromNameOrNetwork(t.network).coreApiUrl:t.url}async function An(t,e,n,r){let o=it(e,n),i=JSON.stringify(Qt(o.keyCV)),[a,c]=t.split("."),l=ct(`${at(ft(r))}/map_entry/${a}/${c}/${o.map.name}`,{proof:0,tip:ut(r)}),g=await(await fetch(l,{method:"POST",body:i,headers:{"Content-Type":"application/json",Accept:"application/json"}})).json(),p=Yt(g.data);return y(p,!0)}async function hn(t,e){let n="network"in e?e.network:new $({url:e.url}),r=await Xt(t,n);if(r.error)throw new Error(`Error broadcasting tx: ${r.error} - ${r.reason} - ${JSON.stringify(r.reason_data)}`);return{txId:r.txid,stacksTransaction:t}}var pt=class{url;constructor(e){typeof e=="string"?this.url=e:this.url=$.fromNameOrNetwork(e).coreApiUrl}roOptions(e){return u({url:this.url},e)}ro(e,n){return B(e,this.roOptions(n||{}))}roOk(e,n){return te(e,this.roOptions(n||{}))}roErr(e,n){return ee(e,this.roOptions(n||{}))}};import{createAssetInfo as yt,makeContractFungiblePostCondition as ne,makeContractNonFungiblePostCondition as re,makeStandardFungiblePostCondition as oe,makeStandardNonFungiblePostCondition as ie}from"@stacks/transactions";function dt(t,e){if(!("identifier"in t))throw new Error("Invalid contract");let[n,r]=t.identifier.split(".");for(let o of t.non_fungible_tokens)if(o.name===e)return yt(n,r,o.name);for(let o of t.fungible_tokens)if(o.name===e)return yt(n,r,o.name);throw new Error(`Invalid asset: "${e}" is not an asset in contract.`)}function Fn(t,e,n,r){let[o,i]=e.split("."),[a]=t.non_fungible_tokens,c=dt(t,a.name),l=a.type,m=d(r,l);return typeof i>"u"?ie(o,n,c,m):re(o,i,n,c,m)}function In(t,e,n,r){let[o,i]=e.split("."),[a]=t.fungible_tokens,c=dt(t,a.name);return typeof i>"u"?oe(o,n,r,c):ne(o,i,n,r,c)}function U(t,e=""){return t.slice(e.length+2,-1)}function h(t,e){if(S(e)){let n=ce(t),r={},o=Object.entries(n).reduce((i,[a,c])=>{let l=a.trim();return T(u({},i),{[l]:c.trim()})},{});return e.tuple.forEach(({name:i,type:a})=>{let c=f(i);r[c]=h(o[i],a)}),r}else{if(P(e))return ae(t).map(r=>h(r,e.list.type));if(N(e))return t==="none"?null:h(U(t,"some"),e.optional);if(w(e))return t.slice(1,-1);if(O(e))return t.slice(2,-1);if(e==="bool")return t==="true";if(e==="uint128")return BigInt(t.slice(1));if(e==="int128")return BigInt(t);if(e==="trait_reference")return t.replace(/^\'/,"");if(e==="principal")return t.replace(/^\'/,"");if(e==="none")return null;if(v(e))return W(t.slice(2));if(I(e)){if(t.startsWith("(ok")){let r=U(t,"ok");return E(h(r,e.response.ok))}let n=U(t,"err");return k(h(n,e.response.error))}}throw new Error(`Unable to parse cv string to value: ${t} ${JSON.stringify(e,null,2)}`)}var se=new Array(255);for(let t=0;t<=255;++t)se[t]=t.toString(16).padStart(2,"0");function ae(t){if(t.charAt(0)!=="["||t.charAt(t.length-1)!=="]")throw new Error(`Expected (list ..), got ${t.toString()}`);let e=[],n=[],r=1;for(let i=0;i<t.length;i++)t.charAt(i)===","&&e.length==1&&(n.push(t.substring(r,i)),r=i+2),["(","[","{"].includes(t.charAt(i))&&e.push(t.charAt(i)),t.charAt(i)===")"&&e[e.length-1]==="("&&e.pop(),t.charAt(i)==="}"&&e[e.length-1]==="{"&&e.pop(),t.charAt(i)==="]"&&e[e.length-1]==="["&&e.pop();let o=t.substring(r,t.length-1);return o.length>0&&n.push(o),n}function ce(t){if(t.charAt(0)!=="{"||t.charAt(t.length-1)!=="}")throw new Error(`Expected '(tuple ..)', got ${t.toString()}`);let e=1,n=[],r=[];for(let a=0;a<t.length;a++)t.charAt(a)===","&&n.length==1&&(r.push(t.substring(e,a)),e=a+2),["(","[","{"].includes(t.charAt(a))&&n.push(t.charAt(a)),t.charAt(a)===")"&&n[n.length-1]==="("&&n.pop(),t.charAt(a)==="}"&&n[n.length-1]==="{"&&n.pop(),t.charAt(a)==="]"&&n[n.length-1]==="["&&n.pop();let o=t.substring(e,t.length-1);o.length>0&&r.push(o);let i={};for(let a of r)for(let c=0;c<a.length;c++)if(a.charAt(c)===":"){let l=a.substring(0,c),m=a.substring(c+2,a.length);i[l]=m;break}return i}export{pt as ClarigenClient,wt as CoreNodeEventType,Ge as DEPLOYMENT_NETWORKS,Et as MAINNET_BURN_ADDRESS,ht as TESTNET_BURN_ADDRESS,me as bootContractIdentifier,hn as broadcast,z as bytesToAscii,R as bytesToHex,ot as contractFactory,Qe as contractsFactory,dt as createAssetInfo,C as cvToJSON,x as cvToString,y as cvToValue,Ye as deploymentFactory,k as err,tt as expectErr,X as expectOk,vt as extractErrors,An as fetchMapGet,be as filterEvents,_ as findJsTupleKey,Lt as functionsFactory,ft as getApiUrl,Te as getContractIdentifier,de as getContractName,kt as getContractNameFromPath,Ce as getContractPrincipalCV,b as getTypeString,W as hexToBytes,Fe as hexToCvValue,v as isClarityAbiBuffer,P as isClarityAbiList,N as isClarityAbiOptional,Ut as isClarityAbiPrimitive,I as isClarityAbiResponse,w as isClarityAbiStringAscii,O as isClarityAbiStringUtf8,Ie as isClarityAbiTraitReference,S as isClarityAbiTuple,H as isNumber,Re as isResponse,he as makeContracts,In as makeFungiblePostCondition,Fn as makeNonFungiblePostCondition,it as mapFactory,E as ok,d as parseToCV,F as principalToString,ge as projectErrors,Ze as projectFactory,Kt as pureProxy,h as rawClarityToValue,B as ro,ee as roErr,te as roOk,f as toCamelCase,q as toKebabCase,Dt as transformArgsArray,A as transformArgsToCV,Y as transformObjectArgs};
1
+ import{contractPrincipalCV as ft}from"@stacks/transactions";import{hex as j}from"@scure/base";var yt="ST000000000000000000002AMW42H",dt="SP000000000000000000002Q6VF78",u=(t,e)=>{let n=typeof t=="string"?t:String(t);if(/^[A-Z_]+$/.test(n))return n;let[o,...i]=n.replace("!","_x").replace("?","_q").split("-"),c=`${e?o[0].toUpperCase():o[0].toLowerCase()}${o.slice(1)}`;return i.forEach(l=>{let d=l[0].toUpperCase()+l.slice(1);c+=d}),c};function M(t){let e=t.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g);return e?e.join("-").toLowerCase():t}function oe(t,e=!0){let n=t.split(".")[1];return e?u(n):n}var Tt=t=>{let e=t.split("/"),n=e[e.length-1],[r]=n.split(".");return r},ie=t=>`${t.address}.${t.name}`,se=t=>{let e=Tt(t.contractFile);return ft(t.address,e)};function ae(t,e){return`${e?dt:yt}.${t}`}function S(t){return j.encode(t)}function K(t){return j.decode(t)}function J(t){let e=Array.from(t);return String.fromCharCode.apply(null,e)}var L=t=>typeof t=="number";function Ct(t){let{constants:e}=t,n={};for(let r in e)if(r.toLowerCase().startsWith("err")){let o=e[r];typeof o=="object"&&o&&"isOk"in o&&!o.isOk&&"value"in o?n[r]=o.value:n[r]=o}return n}function ce(t){let{contracts:e}=t,n={};for(let r in e)n[r]=Ct(e[r]);return n}var mt=(p=>(p.ContractEvent="contract_event",p.StxTransferEvent="stx_transfer_event",p.StxMintEvent="stx_mint_event",p.StxBurnEvent="stx_burn_event",p.StxLockEvent="stx_lock_event",p.NftTransferEvent="nft_transfer_event",p.NftMintEvent="nft_mint_event",p.NftBurnEvent="nft_burn_event",p.FtTransferEvent="ft_transfer_event",p.FtMintEvent="ft_mint_event",p.FtBurnEvent="ft_burn_event",p))(mt||{});function pe(t,e){return t.filter(n=>n.type===e)}function fe(t,e={}){let n={};for(let r in t){let o=t[r],i=e.deployerAddress||o.address,a=`${i}.${o.name}`,c=o.contract(i,o.name);n[r]={identifier:a,contract:c}}return n}import{addressToString as q,ClarityType as s,uintCV as gt,contractPrincipalCV as xt,intCV as bt,stringAsciiCV as At,stringUtf8CV as ht,noneCV as Et,someCV as kt,tupleCV as vt,listCV as wt,hexToCV as Ot,bufferCV as Nt,parseToCV as W}from"@stacks/transactions";function A(t){return{isOk:!0,value:t}}function h(t){return{isOk:!1,value:t}}function Ae(t){return typeof t=="object"&&t!==null&&"isOk"in t}function P(t){if(t.type===s.PrincipalStandard)return q(t.address);if(t.type===s.PrincipalContract)return`${q(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function f(t,e=!1){switch(t.type){case s.BoolTrue:return!0;case s.BoolFalse:return!1;case s.Int:case s.UInt:return t.value;case s.Buffer:return t.buffer;case s.OptionalNone:return null;case s.OptionalSome:return f(t.value);case s.ResponseErr:return e?h(f(t.value)):f(t.value);case s.ResponseOk:return e?A(f(t.value)):f(t.value);case s.PrincipalStandard:case s.PrincipalContract:return P(t);case s.List:return t.list.map(r=>f(r));case s.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=u(o);return{...r,[a]:f(i,e)}},{});case s.StringASCII:return t.data;case s.StringUTF8:return t.data}}function he(t,e=!1){return f(Ot(t),e)}function H(t){if(!(typeof t=="bigint"||typeof t=="number"||typeof t=="string"))throw new Error("Invalid input type for integer");return BigInt(t)}var St=t=>typeof t=="string",E=t=>t.buffer!==void 0,k=t=>t["string-ascii"]!==void 0,v=t=>t["string-utf8"]!==void 0,R=t=>t.response!==void 0,w=t=>t.optional!==void 0,O=t=>t.tuple!==void 0,N=t=>t.list!==void 0,Ee=t=>t==="trait_reference";function y(t,e){if(O(e)){if(typeof t!="object")throw new Error("Invalid tuple input");let n={};return e.tuple.forEach(r=>{let o=F(r.name,t),i=t[o];n[r.name]=y(i,r.type)}),vt(n)}else if(N(e)){let r=t.map(o=>y(o,e.list.type));return wt(r)}else{if(w(e))return t===null?Et():kt(y(t,e.optional));if(k(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return At(t)}else if(v(e)){if(typeof t!="string")throw new Error("Invalid string-ascii input");return ht(t)}else if(e==="bool"){let n=typeof t=="boolean"?t.toString():t;return W(n,e)}else if(e==="uint128"){let n=H(t);return gt(n.toString())}else if(e==="int128"){let n=H(t);return bt(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 xt(n,r)}else if(E(e))return Nt(t)}return W(t,e)}function m(t,e="hex"){switch(t.type){case s.BoolTrue:return"true";case s.BoolFalse:return"false";case s.Int:return t.value.toString();case s.UInt:return`u${t.value.toString()}`;case s.Buffer:if(e==="tryAscii"){let n=J(t.buffer);if(/[ -~]/.test(n))return JSON.stringify(n)}return`0x${S(t.buffer)}`;case s.OptionalNone:return"none";case s.OptionalSome:return`(some ${m(t.value,e)})`;case s.ResponseErr:return`(err ${m(t.value,e)})`;case s.ResponseOk:return`(ok ${m(t.value,e)})`;case s.PrincipalStandard:case s.PrincipalContract:return`'${P(t)}`;case s.List:return`(list ${t.list.map(n=>m(n,e)).join(" ")})`;case s.Tuple:return`(tuple ${Object.keys(t.data).map(n=>`(${n} ${m(t.data[n],e)})`).join(" ")})`;case s.StringASCII:return`"${t.data}"`;case s.StringUTF8:return`u"${t.data}"`}}function T(t,e=!1){switch(t.type){case s.BoolTrue:return!0;case s.BoolFalse:return!1;case s.Int:case s.UInt:return`${t.value}`;case s.Buffer:return S(t.buffer);case s.OptionalNone:return null;case s.OptionalSome:return T(t.value);case s.ResponseErr:return e?h(T(t.value)):T(t.value);case s.ResponseOk:return e?A(T(t.value)):T(t.value);case s.PrincipalStandard:case s.PrincipalContract:return P(t);case s.List:return t.list.map(r=>T(r));case s.Tuple:return Object.entries(t.data).reduce((r,[o,i])=>{let a=u(o);return{...r,[a]:T(i)}},{});case s.StringASCII:return t.data;case s.StringUTF8:return t.data}}function z(t,e){return t.args.map(n=>{let r=F(n.name,e),o=e[r];return y(o,n.type)})}function Pt(t,e){return e.map((n,r)=>y(n,t.args[r].type))}function x(t,e){if(e.length===0)return[];let[n]=e;if(e.length===1&&t.args.length!==1)return z(t,n);if(typeof n=="object"&&!Array.isArray(n)&&n!==null)try{let r=!0;if(t.args.forEach(o=>{try{F(o.name,n)}catch{r=!1}}),r)return z(t,n)}catch{}return Pt(t,e)}function F(t,e){let n=Object.keys(e).find(r=>{let o=t===r,i=t===M(r);return o||i});if(!n)throw new Error(`Error encoding JS tuple: ${t} not found in input.`);return n}function G(t){if(t.isOk)return t.value;throw new Error(`Expected OK, received error: ${String(t.value)}`)}function Z(t){if(!t.isOk)return t.value;throw new Error(`Expected Err, received ok: ${String(t.value)}`)}function g(t){if(St(t))return t==="int128"?"int":t==="uint128"?"uint":t;if(E(t))return`(buff ${t.buffer.length})`;if(k(t))return`(string-ascii ${t["string-ascii"].length})`;if(v(t))return`(string-utf8 ${t["string-utf8"].length})`;if(R(t))return`(response ${g(t.response.ok)} ${g(t.response.error)})`;if(w(t))return`(optional ${g(t.optional)})`;if(O(t))return`(tuple ${t.tuple.map(e=>`(${e.name} ${g(e.type)})`).join(" ")})`;if(N(t))return`(list ${t.list.length} ${g(t.list.type)})`;throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(t)}`)}function Rt(t,e){let n=t.abi.functions.find(o=>u(o.name)===e);if(n)return function(...o){return{functionArgs:x(n,o),contractAddress:t.contractAddress,contractName:t.contractName,function:n,functionName:n.name,nativeArgs:o}};let r=t.abi.maps.find(o=>u(o.name)===e);if(r)return o=>{let i=y(o,r.key);return{contractAddress:t.contractAddress,contractName:t.contractName,map:r,nativeKey:o,key:i}};throw new Error(`Invalid function call: no function exists for ${String(e)}`)}var Ft={get:Rt},It=t=>new Proxy(t,Ft);import{cvToHex as Kt,hexToCV as Jt}from"@stacks/transactions";import{broadcastTransaction as Lt}from"@stacks/transactions";function _t(t){let e=[];return t.forEach(n=>e.push(...n.transactions)),e}function Q(t){return _t(t).filter(I)}function Y(t){if(!I(t))throw new Error("Unable to get path for tx type.");if("requirement-publish"in t)return t["requirement-publish"].path;if("emulated-contract-publish"in t)return t["emulated-contract-publish"].path;if("contract-publish"in t)return t["contract-publish"].path;throw new Error("Couldnt get path for deployment tx.")}function X(t){if(!I(t))throw new Error("Unable to get ID for tx type.");if("requirement-publish"in t){let e=t["requirement-publish"],[n,r]=e["contract-id"].split(".");return`${e["remap-sender"]}.${r}`}else if("emulated-contract-publish"in t){let e=t["emulated-contract-publish"];return`${e["emulated-sender"]}.${e["contract-name"]}`}else if("contract-publish"in t){let e=t["contract-publish"];return`${e["expected-sender"]}.${e["contract-name"]}`}throw new Error("Unable to find ID for contract.")}function I(t){return!("contract-call"in t||"btc-transfer"in t||"emulated-contract-call"in t)}var De=["devnet","simnet","testnet","mainnet"];function je(t,e){let n=[];return Object.entries(t.contracts).forEach(([r,o])=>{let i=t.deployments[r][e];return i&&n.push([r,tt(o,i)]),!1}),Object.fromEntries(n)}function Me(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=`${e}.${r.contractName}`;return[n,tt(r,o)]}))}function Vt(t,e){return Object.fromEntries(Object.entries(t).map(([n,r])=>{let o=Object.assign((...i)=>{let a=x(r,i),[c,l]=e.split(".");return{functionArgs:a,contractAddress:c,contractName:l,function:r,functionName:r.name,nativeArgs:i}},{abi:r});return[n,o]}))}function tt(t,e){let n={...t};return{...Vt(t.functions,e),...n,identifier:e}}function Ke(t,e){let n={};return Q(e.plan.batches).forEach(o=>{let i=X(o),[a,c]=i.split("."),l=u(c),d=t[l],C=t[l];if(typeof C>"u")throw new Error(`Clarigen error: mismatch for contract '${l}'`);n[l]=C,C.contractFile=Y(o),C.identifier=i,Object.keys(t[l].functions).forEach(p=>{let B=p,ut=(...U)=>{let D=d.functions[B];return{functionArgs:x(D,U),contractAddress:a,contractName:C.contractName,function:D,nativeArgs:U}};C[B]=ut})}),n}function et(t,e){let n=y(e,t.key);return{key:e,keyCV:n,map:t}}import{cvToHex as Dt,hexToCV as jt}from"@stacks/transactions";import{SmartContractsApi as $t,Configuration as Bt,TransactionsApi as qe}from"@stacks/blockchain-api-client";function nt(t){return new $t(new Bt({basePath:t}))}function rt(t){return`${t}/v2`}var ot=(t,e)=>{try{let n=new URL(t);return Object.keys(e).forEach(r=>{let o=e[r];if(o){if(Array.isArray(o))return o.length===0?void 0:n.searchParams.set(`${r}[]`,Ut(r,o));if(typeof o=="boolean"||L(o))return n.searchParams.set(r,String(o));n.searchParams.set(r,o)}}),n.toString()}catch(n){return console.error("generateUrl"),console.error(n),t}},Ut=(t,e)=>e!=null&&e.length?`${e.map((n,r)=>`${r>0?encodeURIComponent(`${t}[]`):""}=${encodeURIComponent(n)}`).join("&")}`:"";function Mt(t){if(t.okay)return jt(t.result);throw new Error(t.cause)}async function it(t){let{contractAddress:e,functionArgs:n,senderAddress:r=e,url:o}=t,i=await nt(o).callReadOnlyFunction({...t,readOnlyFunctionArgs:{sender:r,arguments:n.map(c=>typeof c=="string"?c:Dt(c))}});return Mt(i)}import{StacksNetwork as _}from"@stacks/network";function at(t){if(t.latest!==!1)return t.latest||typeof t.tip>"u"?"latest":t.tip}async function V(t,e){let n=at(e),r=await it({contractAddress:t.contractAddress,contractName:t.contractName,functionName:t.functionName,functionArgs:t.functionArgs,tip:n,url:ct(e)});return e.json?T(r):f(r,!0)}async function qt(t,e){let n=await V(t,e);return G(n)}async function Wt(t,e){let n=await V(t,e);return Z(n)}function ct(t){return t.network?_.fromNameOrNetwork(t.network).coreApiUrl:t.url}async function un(t,e,n,r){let o=et(e,n),i=JSON.stringify(Kt(o.keyCV)),[a,c]=t.split("."),l=ot(`${rt(ct(r))}/map_entry/${a}/${c}/${o.map.name}`,{proof:0,tip:at(r)}),C=await(await fetch(l,{method:"POST",body:i,headers:{"Content-Type":"application/json",Accept:"application/json"}})).json(),p=Jt(C.data);return f(p,!0)}async function fn(t,e){let n="network"in e?e.network:new _({url:e.url}),r=await Lt(t,n);if(r.error)throw new Error(`Error broadcasting tx: ${r.error} - ${r.reason} - ${JSON.stringify(r.reason_data)}`);return{txId:r.txid,stacksTransaction:t}}var st=class{url;constructor(e){typeof e=="string"?this.url=e:this.url=_.fromNameOrNetwork(e).coreApiUrl}roOptions(e){return{url:this.url,...e}}ro(e,n){return V(e,this.roOptions(n||{}))}roOk(e,n){return qt(e,this.roOptions(n||{}))}roErr(e,n){return Wt(e,this.roOptions(n||{}))}};import{createAssetInfo as lt,makeContractFungiblePostCondition as Ht,makeContractNonFungiblePostCondition as zt,makeStandardFungiblePostCondition as Gt,makeStandardNonFungiblePostCondition as Zt}from"@stacks/transactions";function pt(t,e){if(!("identifier"in t))throw new Error("Invalid contract");let[n,r]=t.identifier.split(".");for(let o of t.non_fungible_tokens)if(o.name===e)return lt(n,r,o.name);for(let o of t.fungible_tokens)if(o.name===e)return lt(n,r,o.name);throw new Error(`Invalid asset: "${e}" is not an asset in contract.`)}function hn(t,e,n,r){let[o,i]=e.split("."),[a]=t.non_fungible_tokens,c=pt(t,a.name),l=a.type,d=y(r,l);return typeof i>"u"?Zt(o,n,c,d):zt(o,i,n,c,d)}function En(t,e,n,r){let[o,i]=e.split("."),[a]=t.fungible_tokens,c=pt(t,a.name);return typeof i>"u"?Gt(o,n,r,c):Ht(o,i,n,r,c)}function $(t,e=""){return t.slice(e.length+2,-1)}function b(t,e){if(O(e)){let n=Xt(t),r={},o=Object.entries(n).reduce((i,[a,c])=>{let l=a.trim();return{...i,[l]:c.trim()}},{});return e.tuple.forEach(({name:i,type:a})=>{let c=u(i);r[c]=b(o[i],a)}),r}else{if(N(e))return Yt(t).map(r=>b(r,e.list.type));if(w(e))return t==="none"?null:b($(t,"some"),e.optional);if(k(e))return t.slice(1,-1);if(v(e))return t.slice(2,-1);if(e==="bool")return t==="true";if(e==="uint128")return BigInt(t.slice(1));if(e==="int128")return BigInt(t);if(e==="trait_reference")return t.replace(/^\'/,"");if(e==="principal")return t.replace(/^\'/,"");if(e==="none")return null;if(E(e))return K(t.slice(2));if(R(e)){if(t.startsWith("(ok")){let r=$(t,"ok");return A(b(r,e.response.ok))}let n=$(t,"err");return h(b(n,e.response.error))}}throw new Error(`Unable to parse cv string to value: ${t} ${JSON.stringify(e,null,2)}`)}var Qt=new Array(255);for(let t=0;t<=255;++t)Qt[t]=t.toString(16).padStart(2,"0");function Yt(t){if(t.charAt(0)!=="["||t.charAt(t.length-1)!=="]")throw new Error(`Expected (list ..), got ${t.toString()}`);let e=[],n=[],r=1;for(let i=0;i<t.length;i++)t.charAt(i)===","&&e.length==1&&(n.push(t.substring(r,i)),r=i+2),["(","[","{"].includes(t.charAt(i))&&e.push(t.charAt(i)),t.charAt(i)===")"&&e[e.length-1]==="("&&e.pop(),t.charAt(i)==="}"&&e[e.length-1]==="{"&&e.pop(),t.charAt(i)==="]"&&e[e.length-1]==="["&&e.pop();let o=t.substring(r,t.length-1);return o.length>0&&n.push(o),n}function Xt(t){if(t.charAt(0)!=="{"||t.charAt(t.length-1)!=="}")throw new Error(`Expected '(tuple ..)', got ${t.toString()}`);let e=1,n=[],r=[];for(let a=0;a<t.length;a++)t.charAt(a)===","&&n.length==1&&(r.push(t.substring(e,a)),e=a+2),["(","[","{"].includes(t.charAt(a))&&n.push(t.charAt(a)),t.charAt(a)===")"&&n[n.length-1]==="("&&n.pop(),t.charAt(a)==="}"&&n[n.length-1]==="{"&&n.pop(),t.charAt(a)==="]"&&n[n.length-1]==="["&&n.pop();let o=t.substring(e,t.length-1);o.length>0&&r.push(o);let i={};for(let a of r)for(let c=0;c<a.length;c++)if(a.charAt(c)===":"){let l=a.substring(0,c),d=a.substring(c+2,a.length);i[l]=d;break}return i}export{st as ClarigenClient,mt as CoreNodeEventType,De as DEPLOYMENT_NETWORKS,dt as MAINNET_BURN_ADDRESS,yt as TESTNET_BURN_ADDRESS,ae as bootContractIdentifier,fn as broadcast,J as bytesToAscii,S as bytesToHex,tt as contractFactory,Me as contractsFactory,pt as createAssetInfo,T as cvToJSON,m as cvToString,f as cvToValue,Ke as deploymentFactory,h as err,Z as expectErr,G as expectOk,Ct as extractErrors,un as fetchMapGet,pe as filterEvents,F as findJsTupleKey,Vt as functionsFactory,ct as getApiUrl,ie as getContractIdentifier,oe as getContractName,Tt as getContractNameFromPath,se as getContractPrincipalCV,g as getTypeString,K as hexToBytes,he as hexToCvValue,E as isClarityAbiBuffer,N as isClarityAbiList,w as isClarityAbiOptional,St as isClarityAbiPrimitive,R as isClarityAbiResponse,k as isClarityAbiStringAscii,v as isClarityAbiStringUtf8,Ee as isClarityAbiTraitReference,O as isClarityAbiTuple,L as isNumber,Ae as isResponse,fe as makeContracts,En as makeFungiblePostCondition,hn as makeNonFungiblePostCondition,et as mapFactory,A as ok,y as parseToCV,P as principalToString,ce as projectErrors,je as projectFactory,It as pureProxy,b as rawClarityToValue,V as ro,Wt as roErr,qt as roOk,u as toCamelCase,M as toKebabCase,Pt as transformArgsArray,x as transformArgsToCV,z as transformObjectArgs};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.1.1",
2
+ "version": "2.1.2",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "@scure/base": "^1.1.6",
19
19
  "@stacks/blockchain-api-client": "7.10.0",
20
20
  "@stacks/common": "^6.13.0",
21
- "@stacks/network": "^6.13.0",
21
+ "@stacks/network": "^6.16.0",
22
22
  "@stacks/stacks-blockchain-api-types": "7.10.0",
23
23
  "@stacks/transactions": "6.13.1"
24
24
  },