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