zkcloudworker 0.18.28 → 0.19.0

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.
@@ -32,12 +32,6 @@ var node_exports = {};
32
32
  __export(node_exports, {
33
33
  Cloud: () => Cloud,
34
34
  Devnet: () => Devnet,
35
- FungibleToken: () => FungibleToken,
36
- FungibleTokenAdmin: () => FungibleTokenAdmin,
37
- FungibleTokenBidContract: () => FungibleTokenBidContract,
38
- FungibleTokenOfferContract: () => FungibleTokenOfferContract,
39
- FungibleTokenWhitelistedAdmin: () => FungibleTokenWhitelistedAdmin,
40
- LAUNCH_FEE: () => LAUNCH_FEE,
41
35
  Lightnet: () => Lightnet,
42
36
  Local: () => Local,
43
37
  LocalCloud: () => LocalCloud,
@@ -45,15 +39,8 @@ __export(node_exports, {
45
39
  Mainnet: () => Mainnet,
46
40
  Memory: () => Memory,
47
41
  Storage: () => Storage,
48
- TRANSACTION_FEE: () => TRANSACTION_FEE,
49
42
  TinyContract: () => TinyContract,
50
43
  TokenAPI: () => TokenAPI,
51
- UInt64Option: () => UInt64Option,
52
- Whitelist: () => Whitelist,
53
- WhitelistMap: () => WhitelistMap,
54
- WhitelistMapOption: () => WhitelistMapOption,
55
- WhitelistedAddress: () => WhitelistedAddress,
56
- WhitelistedFungibleToken: () => WhitelistedFungibleToken,
57
44
  Zeko: () => Zeko,
58
45
  accountBalance: () => accountBalance,
59
46
  accountBalanceMina: () => accountBalanceMina,
@@ -62,8 +49,6 @@ __export(node_exports, {
62
49
  bigintFromBase64: () => bigintFromBase64,
63
50
  bigintToBase56: () => bigintToBase56,
64
51
  bigintToBase64: () => bigintToBase64,
65
- buildTokenDeployTransaction: () => buildTokenDeployTransaction,
66
- buildTokenTransaction: () => buildTokenTransaction,
67
52
  checkAddress: () => checkAddress,
68
53
  checkMinaZkappTransaction: () => checkMinaZkappTransaction,
69
54
  createIpfsURL: () => createIpfsURL,
@@ -81,7 +66,6 @@ __export(node_exports, {
81
66
  fieldToBase64: () => fieldToBase64,
82
67
  formatTime: () => formatTime,
83
68
  fromBase: () => fromBase,
84
- fungibleTokenVerificationKeys: () => fungibleTokenVerificationKeys,
85
69
  getAccountFromGraphQL: () => getAccountFromGraphQL,
86
70
  getAccountNonce: () => getAccountNonce,
87
71
  getBalanceFromGraphQL: () => getBalanceFromGraphQL,
@@ -90,8 +74,6 @@ __export(node_exports, {
90
74
  getNetworkIdHash: () => getNetworkIdHash,
91
75
  getNonce: () => getNonce,
92
76
  getPaymentTxsFromBlockBerry: () => getPaymentTxsFromBlockBerry,
93
- getTokenSymbolAndAdmin: () => getTokenSymbolAndAdmin,
94
- getTokenTransactionSender: () => getTokenTransactionSender,
95
77
  getTxStatusFast: () => getTxStatusFast,
96
78
  getZkAppFromBlockBerry: () => getZkAppFromBlockBerry,
97
79
  getZkAppTxFromBlockBerry: () => getZkAppTxFromBlockBerry,
@@ -110,7 +92,6 @@ __export(node_exports, {
110
92
  sleep: () => sleep,
111
93
  toBase: () => toBase,
112
94
  tokenBalance: () => tokenBalance,
113
- tokenVerificationKeys: () => tokenVerificationKeys,
114
95
  transactionParams: () => transactionParams,
115
96
  txStatusBlockberry: () => txStatusBlockberry,
116
97
  zkCloudWorker: () => zkCloudWorker,
@@ -1996,7 +1977,7 @@ var TokenAPI = class {
1996
1977
  async getResult(jobId) {
1997
1978
  try {
1998
1979
  const callResult = await this.client.jobResult({ jobId });
1999
- const jobStatus = callResult?.success === true ? callResult?.result?.jobStatus : void 0;
1980
+ const jobStatus = typeof callResult?.result === "string" ? void 0 : callResult?.result?.jobStatus;
2000
1981
  if (!callResult.success) {
2001
1982
  return {
2002
1983
  success: false,
@@ -2033,1501 +2014,17 @@ var TokenAPI = class {
2033
2014
  } catch (e) {
2034
2015
  return {
2035
2016
  success: false,
2036
- error: `Error parsing job result: ${jobResult}`
2017
+ error: `Error parsing job result: ${jobResult} ${e?.message ?? ""}`,
2018
+ jobStatus
2037
2019
  };
2038
2020
  }
2039
2021
  } catch (e) {
2040
- return { success: false, error: `Error getting job result: ${e}` };
2041
- }
2042
- }
2043
- };
2044
-
2045
- // dist/node/mina/token/bid.js
2046
- var import_tslib5 = require("tslib");
2047
- var import_o1js13 = require("o1js");
2048
-
2049
- // dist/node/mina/token/whitelist.js
2050
- var import_o1js8 = require("o1js");
2051
-
2052
- // dist/node/mina/storage/storage.js
2053
- var import_o1js7 = require("o1js");
2054
- var Storage = class _Storage extends (0, import_o1js7.Struct)({
2055
- url: import_o1js7.Provable.Array(import_o1js7.Field, 2)
2056
- }) {
2057
- constructor(value) {
2058
- super(value);
2059
- }
2060
- /**
2061
- * Asserts that two Storage instances are equal.
2062
- * @param a The first Storage instance.
2063
- * @param b The second Storage instance.
2064
- */
2065
- static assertEquals(a, b) {
2066
- a.url[0].assertEquals(b.url[0]);
2067
- a.url[1].assertEquals(b.url[1]);
2068
- }
2069
- /**
2070
- * Checks if two Storage instances are equal.
2071
- * @param a The first Storage instance.
2072
- * @param b The second Storage instance.
2073
- * @returns A Bool indicating whether the two instances are equal.
2074
- */
2075
- static equals(a, b) {
2076
- return a.url[0].equals(b.url[0]).and(a.url[1].equals(b.url[1]));
2077
- }
2078
- /**
2079
- * Creates a Storage instance from a string.
2080
- * @param url The string representing the storage URL.
2081
- * @returns A new Storage instance.
2082
- */
2083
- static fromString(url) {
2084
- const fields = import_o1js7.Encoding.stringToFields(url);
2085
- if (fields.length !== 2)
2086
- throw new Error("Invalid string length");
2087
- return new _Storage({ url: [fields[0], fields[1]] });
2088
- }
2089
- /**
2090
- * Converts the Storage instance to a string.
2091
- * @returns The string representation of the storage URL.
2092
- */
2093
- toString() {
2094
- if (this.url[0].toBigInt() === 0n && this.url[1].toBigInt() === 0n) {
2095
- throw new Error("Invalid string");
2096
- }
2097
- return import_o1js7.Encoding.stringFromFields([this.url[0], this.url[1]]);
2098
- }
2099
- };
2100
-
2101
- // dist/node/mina/storage/ipfs.js
2102
- function createIpfsURL(params) {
2103
- let { hash, gateway, apiToken } = params;
2104
- gateway ??= process.env.PINATA_IPFS_GATEWAY ?? process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ?? process.env.REACT_APP_PINATA_IPFS_GATEWAY;
2105
- apiToken ??= process.env.PINATA_GATEWAY_TOKEN ?? process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ?? process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
2106
- if (!gateway) {
2107
- gateway = "https://gateway.pinata.cloud/ipfs/";
2108
- }
2109
- return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
2110
- }
2111
-
2112
- // dist/node/mina/token/whitelist.js
2113
- var { IndexedMerkleMap: IndexedMerkleMap2 } = import_o1js8.Experimental;
2114
- var WHITELIST_HEIGHT = 20;
2115
- var WhitelistMap = class extends IndexedMerkleMap2(WHITELIST_HEIGHT) {
2116
- };
2117
- var WhitelistMapOption = class extends (0, import_o1js8.Option)(WhitelistMap) {
2118
- };
2119
- var UInt64Option = class extends (0, import_o1js8.Option)(import_o1js8.UInt64) {
2120
- };
2121
- var WhitelistedAddress = class extends (0, import_o1js8.Struct)({
2122
- address: import_o1js8.PublicKey,
2123
- amount: import_o1js8.UInt64
2124
- // Maximum permitted amount of the transaction
2125
- }) {
2126
- };
2127
- var Whitelist = class _Whitelist extends (0, import_o1js8.Struct)({
2128
- /** The root hash of the Merkle tree representing the whitelist. */
2129
- root: import_o1js8.Field,
2130
- /** Off-chain storage information, typically an IPFS hash pointing to the whitelist data. */
2131
- storage: Storage
2132
- }) {
2133
- isNone() {
2134
- return this.root.equals((0, import_o1js8.Field)(0)).or(Storage.equals(this.storage, Storage.empty()));
2135
- }
2136
- isSome() {
2137
- return this.isNone().not();
2138
- }
2139
- async load() {
2140
- const isNone = this.isNone();
2141
- const map = await import_o1js8.Provable.witnessAsync(WhitelistMapOption, async () => {
2142
- if (isNone.toBoolean())
2143
- return WhitelistMapOption.none();
2144
- else
2145
- return WhitelistMapOption.fromValue(await loadIndexedMerkleMap({
2146
- url: createIpfsURL({ hash: this.storage.toString() }),
2147
- type: WhitelistMap
2148
- }));
2149
- });
2150
- isNone.assertEquals(map.isSome.not());
2151
- const root = import_o1js8.Provable.if(map.isSome, map.orElse(new WhitelistMap()).root, (0, import_o1js8.Field)(0));
2152
- root.equals(this.root);
2153
- return map;
2154
- }
2155
- /**
2156
- * The function fetches a whitelisted amount associated with a given address using a map and returns it
2157
- * as a UInt64Option.
2158
- * @param {PublicKey} address - The `address` parameter is of type `PublicKey`, which represents a
2159
- * public key used in cryptography for various purposes such as encryption, digital signatures, and
2160
- * authentication. In the context of the `fetchWhitelistedAmount` function, the `address` parameter is
2161
- * used to retrieve a whitelisted amount
2162
- * @returns The `fetchWhitelistedAmount` function returns a `Promise` that resolves to a `UInt64Option`
2163
- * object. This object contains a `value` property representing the amount retrieved from a map based
2164
- * on the provided address. The `isSome` property indicates whether the value is present or not.
2165
- * The value is not present if the whitelist is NOT empty and the address is NOT whitelisted.
2166
- * The value is present if the whitelist is NOT empty or the address IS whitelisted.
2167
- * The value is present and equals to UInt64.MAXINT() if the whitelist IS empty.
2168
- */
2169
- async getWhitelistedAmount(address) {
2170
- const map = await this.load();
2171
- const key = import_o1js8.Poseidon.hashPacked(import_o1js8.PublicKey, address);
2172
- const value = map.orElse(new WhitelistMap()).getOption(key);
2173
- const valueField = value.orElse(import_o1js8.UInt64.MAXINT().value);
2174
- valueField.assertLessThanOrEqual(import_o1js8.UInt64.MAXINT().value);
2175
- const amount = import_o1js8.UInt64.Unsafe.fromField(valueField);
2176
- return new UInt64Option({
2177
- value: amount,
2178
- isSome: value.isSome.or(this.isNone())
2179
- });
2180
- }
2181
- static empty() {
2182
- return new _Whitelist({
2183
- root: (0, import_o1js8.Field)(0),
2184
- storage: Storage.empty()
2185
- });
2186
- }
2187
- /**
2188
- * Creates a new whitelist and pins it to IPFS.
2189
- * @param params - The parameters for creating the whitelist.
2190
- * @returns A new `Whitelist` instance.
2191
- */
2192
- static async create(params) {
2193
- const { name = "whitelist.json", keyvalues, timeout = 60 * 1e3, attempts = 5, auth } = params;
2194
- const list = typeof params.list[0].address === "string" ? params.list.map((item) => new WhitelistedAddress({
2195
- address: import_o1js8.PublicKey.fromBase58(item.address),
2196
- amount: item.amount ? import_o1js8.UInt64.from(item.amount) : import_o1js8.UInt64.MAXINT()
2197
- })) : params.list;
2198
- const map = new WhitelistMap();
2199
- for (const item of list) {
2200
- map.insert(import_o1js8.Poseidon.hashPacked(import_o1js8.PublicKey, item.address), item.amount.toBigInt());
2201
- }
2202
- const serializedMap = serializeIndexedMap(map);
2203
- const json = {
2204
- map: serializedMap,
2205
- whitelist: list.map((item) => ({
2206
- address: item.address.toBase58(),
2207
- amount: Number(item.amount.toBigInt())
2208
- }))
2209
- };
2210
- let attempt = 0;
2211
- const start = Date.now();
2212
- if (process.env.DEBUG === "true")
2213
- console.log("Whitelist.create:", { json, name, keyvalues, auth }, json.whitelist);
2214
- let hash = await pinJSON({
2215
- data: json,
2216
- name,
2217
- keyvalues,
2218
- auth
2219
- });
2220
- while (!hash && attempt < attempts && Date.now() - start < timeout) {
2221
- attempt++;
2222
- await sleep(5e3 * attempt);
2223
- hash = await pinJSON({
2224
- data: json,
2225
- name,
2226
- keyvalues,
2227
- auth
2228
- });
2229
- }
2230
- if (!hash)
2231
- throw new Error("Failed to pin whitelist");
2232
- return new _Whitelist({
2233
- root: map.root,
2234
- storage: Storage.fromString(hash)
2235
- });
2236
- }
2237
- toString() {
2238
- return JSON.stringify({ root: this.root.toJSON(), storage: this.storage.toString() }, null, 2);
2239
- }
2240
- static fromString(str) {
2241
- const json = JSON.parse(str);
2242
- return new _Whitelist({
2243
- root: import_o1js8.Field.fromJSON(json.root),
2244
- storage: Storage.fromString(json.storage)
2245
- });
2246
- }
2247
- };
2248
-
2249
- // dist/node/mina/token/FungibleTokenContract.js
2250
- var import_tslib = require("tslib");
2251
- var import_o1js9 = require("o1js");
2252
- var FungibleTokenErrors = {
2253
- noAdminKey: "could not fetch admin contract key",
2254
- noPermissionToChangeAdmin: "Not allowed to change admin contract",
2255
- tokenPaused: "Token is currently paused",
2256
- noPermissionToMint: "Not allowed to mint tokens",
2257
- noPermissionToPause: "Not allowed to pause token",
2258
- noPermissionToResume: "Not allowed to resume token",
2259
- noTransferFromCirculation: "Can't transfer to/from the circulation account",
2260
- noPermissionChangeAllowed: "Can't change permissions for access or receive on token accounts",
2261
- flashMinting: "Flash-minting or unbalanced transaction detected. Please make sure that your transaction is balanced, and that your `AccountUpdate`s are ordered properly, so that tokens are not received before they are sent.",
2262
- unbalancedTransaction: "Transaction is unbalanced"
2263
- };
2264
- function FungibleTokenContract(adminContract) {
2265
- class FungibleToken2 extends import_o1js9.TokenContract {
2266
- constructor() {
2267
- super(...arguments);
2268
- this.decimals = (0, import_o1js9.State)();
2269
- this.admin = (0, import_o1js9.State)();
2270
- this.paused = (0, import_o1js9.State)();
2271
- this.events = {
2272
- SetAdmin: SetAdminEvent,
2273
- Pause: PauseEvent,
2274
- Mint: MintEvent,
2275
- Burn: BurnEvent,
2276
- BalanceChange: BalanceChangeEvent
2022
+ return {
2023
+ success: false,
2024
+ error: `Error getting job result: ${e?.message ?? ""}`,
2025
+ jobStatus: void 0
2277
2026
  };
2278
2027
  }
2279
- async deploy(props) {
2280
- await super.deploy(props);
2281
- this.paused.set((0, import_o1js9.Bool)(true));
2282
- this.account.zkappUri.set(props.src);
2283
- this.account.tokenSymbol.set(props.symbol);
2284
- this.account.permissions.set({
2285
- ...import_o1js9.Permissions.default(),
2286
- setVerificationKey: import_o1js9.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
2287
- setPermissions: import_o1js9.Permissions.impossible(),
2288
- access: import_o1js9.Permissions.proof()
2289
- });
2290
- }
2291
- /** Update the verification key.
2292
- * Note that because we have set the permissions for setting the verification key to `impossibleDuringCurrentVersion()`, this will only be possible in case of a protocol update that requires an update.
2293
- */
2294
- async updateVerificationKey(vk) {
2295
- this.account.verificationKey.set(vk);
2296
- }
2297
- /** Initializes the account for tracking total circulation.
2298
- * @argument {PublicKey} admin - public key where the admin contract is deployed
2299
- * @argument {UInt8} decimals - number of decimals for the token
2300
- * @argument {Bool} startPaused - if set to `Bool(true), the contract will start in a mode where token minting and transfers are paused. This should be used for non-atomic deployments
2301
- */
2302
- async initialize(admin, decimals, startPaused) {
2303
- this.account.provedState.requireEquals((0, import_o1js9.Bool)(false));
2304
- this.admin.set(admin);
2305
- this.decimals.set(decimals);
2306
- this.paused.set((0, import_o1js9.Bool)(false));
2307
- this.paused.set(startPaused);
2308
- const accountUpdate = import_o1js9.AccountUpdate.createSigned(this.address, this.deriveTokenId());
2309
- let permissions = import_o1js9.Permissions.default();
2310
- permissions.send = import_o1js9.Permissions.none();
2311
- permissions.setPermissions = import_o1js9.Permissions.impossible();
2312
- accountUpdate.account.permissions.set(permissions);
2313
- }
2314
- async getAdminContract() {
2315
- const admin = await import_o1js9.Provable.witnessAsync(import_o1js9.PublicKey, async () => {
2316
- let pk = await this.admin.fetch();
2317
- (0, import_o1js9.assert)(pk !== void 0, FungibleTokenErrors.noAdminKey);
2318
- return pk;
2319
- });
2320
- this.admin.requireEquals(admin);
2321
- return new adminContract(admin);
2322
- }
2323
- async setAdmin(admin) {
2324
- const adminContract2 = await this.getAdminContract();
2325
- const canChangeAdmin = await adminContract2.canChangeAdmin(admin);
2326
- canChangeAdmin.assertTrue(FungibleTokenErrors.noPermissionToChangeAdmin);
2327
- this.admin.set(admin);
2328
- this.emitEvent("SetAdmin", new SetAdminEvent({ adminKey: admin }));
2329
- }
2330
- async mint(recipient, amount) {
2331
- this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
2332
- const accountUpdate = this.internal.mint({ address: recipient, amount });
2333
- const adminContract2 = await this.getAdminContract();
2334
- const canMint = await adminContract2.canMint(accountUpdate);
2335
- canMint.assertTrue(FungibleTokenErrors.noPermissionToMint);
2336
- recipient.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
2337
- this.approve(accountUpdate);
2338
- this.emitEvent("Mint", new MintEvent({ recipient, amount }));
2339
- const circulationUpdate = import_o1js9.AccountUpdate.create(this.address, this.deriveTokenId());
2340
- circulationUpdate.balanceChange = import_o1js9.Int64.fromUnsigned(amount);
2341
- return accountUpdate;
2342
- }
2343
- async burn(from, amount) {
2344
- this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
2345
- const accountUpdate = this.internal.burn({ address: from, amount });
2346
- const circulationUpdate = import_o1js9.AccountUpdate.create(this.address, this.deriveTokenId());
2347
- from.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
2348
- circulationUpdate.balanceChange = import_o1js9.Int64.fromUnsigned(amount).neg();
2349
- this.emitEvent("Burn", new BurnEvent({ from, amount }));
2350
- return accountUpdate;
2351
- }
2352
- async pause() {
2353
- const adminContract2 = await this.getAdminContract();
2354
- const canPause = await adminContract2.canPause();
2355
- canPause.assertTrue(FungibleTokenErrors.noPermissionToPause);
2356
- this.paused.set((0, import_o1js9.Bool)(true));
2357
- this.emitEvent("Pause", new PauseEvent({ isPaused: (0, import_o1js9.Bool)(true) }));
2358
- }
2359
- async resume() {
2360
- const adminContract2 = await this.getAdminContract();
2361
- const canResume = await adminContract2.canResume();
2362
- canResume.assertTrue(FungibleTokenErrors.noPermissionToResume);
2363
- this.paused.set((0, import_o1js9.Bool)(false));
2364
- this.emitEvent("Pause", new PauseEvent({ isPaused: (0, import_o1js9.Bool)(false) }));
2365
- }
2366
- async transfer(from, to, amount) {
2367
- this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
2368
- from.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
2369
- to.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
2370
- this.internal.send({ from, to, amount });
2371
- }
2372
- checkPermissionsUpdate(update) {
2373
- let permissions = update.update.permissions;
2374
- let { access, receive } = permissions.value;
2375
- let accessIsNone = import_o1js9.Provable.equal(import_o1js9.Types.AuthRequired, access, import_o1js9.Permissions.none());
2376
- let receiveIsNone = import_o1js9.Provable.equal(import_o1js9.Types.AuthRequired, receive, import_o1js9.Permissions.none());
2377
- let updateAllowed = accessIsNone.and(receiveIsNone);
2378
- (0, import_o1js9.assert)(updateAllowed.or(permissions.isSome.not()), FungibleTokenErrors.noPermissionChangeAllowed);
2379
- }
2380
- /** Approve `AccountUpdate`s that have been created outside of the token contract.
2381
- *
2382
- * @argument {AccountUpdateForest} updates - The `AccountUpdate`s to approve. Note that the forest size is limited by the base token contract, @see TokenContract.MAX_ACCOUNT_UPDATES The current limit is 9.
2383
- */
2384
- async approveBase(updates) {
2385
- this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
2386
- let totalBalance = import_o1js9.Int64.from(0);
2387
- this.forEachUpdate(updates, (update, usesToken) => {
2388
- this.checkPermissionsUpdate(update);
2389
- this.emitEventIf(usesToken, "BalanceChange", new BalanceChangeEvent({
2390
- address: update.publicKey,
2391
- amount: update.balanceChange
2392
- }));
2393
- update.publicKey.equals(this.address).and(usesToken).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
2394
- totalBalance = import_o1js9.Provable.if(usesToken, totalBalance.add(update.balanceChange), totalBalance);
2395
- totalBalance.isPositive().assertFalse(FungibleTokenErrors.flashMinting);
2396
- });
2397
- totalBalance.assertEquals(import_o1js9.Int64.zero, FungibleTokenErrors.unbalancedTransaction);
2398
- }
2399
- async getBalanceOf(address) {
2400
- const account = import_o1js9.AccountUpdate.create(address, this.deriveTokenId()).account;
2401
- const balance = account.balance.get();
2402
- account.balance.requireEquals(balance);
2403
- return balance;
2404
- }
2405
- /** Reports the current circulating supply
2406
- * This does take into account currently unreduced actions.
2407
- */
2408
- async getCirculating() {
2409
- let circulating = await this.getBalanceOf(this.address);
2410
- return circulating;
2411
- }
2412
- async getDecimals() {
2413
- return this.decimals.getAndRequireEquals();
2414
- }
2415
- }
2416
- (0, import_tslib.__decorate)([
2417
- (0, import_o1js9.state)(import_o1js9.UInt8),
2418
- (0, import_tslib.__metadata)("design:type", Object)
2419
- ], FungibleToken2.prototype, "decimals", void 0);
2420
- (0, import_tslib.__decorate)([
2421
- (0, import_o1js9.state)(import_o1js9.PublicKey),
2422
- (0, import_tslib.__metadata)("design:type", Object)
2423
- ], FungibleToken2.prototype, "admin", void 0);
2424
- (0, import_tslib.__decorate)([
2425
- (0, import_o1js9.state)(import_o1js9.Bool),
2426
- (0, import_tslib.__metadata)("design:type", Object)
2427
- ], FungibleToken2.prototype, "paused", void 0);
2428
- (0, import_tslib.__decorate)([
2429
- import_o1js9.method,
2430
- (0, import_tslib.__metadata)("design:type", Function),
2431
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.VerificationKey]),
2432
- (0, import_tslib.__metadata)("design:returntype", Promise)
2433
- ], FungibleToken2.prototype, "updateVerificationKey", null);
2434
- (0, import_tslib.__decorate)([
2435
- import_o1js9.method,
2436
- (0, import_tslib.__metadata)("design:type", Function),
2437
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt8, import_o1js9.Bool]),
2438
- (0, import_tslib.__metadata)("design:returntype", Promise)
2439
- ], FungibleToken2.prototype, "initialize", null);
2440
- (0, import_tslib.__decorate)([
2441
- import_o1js9.method,
2442
- (0, import_tslib.__metadata)("design:type", Function),
2443
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey]),
2444
- (0, import_tslib.__metadata)("design:returntype", Promise)
2445
- ], FungibleToken2.prototype, "setAdmin", null);
2446
- (0, import_tslib.__decorate)([
2447
- import_o1js9.method.returns(import_o1js9.AccountUpdate),
2448
- (0, import_tslib.__metadata)("design:type", Function),
2449
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt64]),
2450
- (0, import_tslib.__metadata)("design:returntype", Promise)
2451
- ], FungibleToken2.prototype, "mint", null);
2452
- (0, import_tslib.__decorate)([
2453
- import_o1js9.method.returns(import_o1js9.AccountUpdate),
2454
- (0, import_tslib.__metadata)("design:type", Function),
2455
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt64]),
2456
- (0, import_tslib.__metadata)("design:returntype", Promise)
2457
- ], FungibleToken2.prototype, "burn", null);
2458
- (0, import_tslib.__decorate)([
2459
- import_o1js9.method,
2460
- (0, import_tslib.__metadata)("design:type", Function),
2461
- (0, import_tslib.__metadata)("design:paramtypes", []),
2462
- (0, import_tslib.__metadata)("design:returntype", Promise)
2463
- ], FungibleToken2.prototype, "pause", null);
2464
- (0, import_tslib.__decorate)([
2465
- import_o1js9.method,
2466
- (0, import_tslib.__metadata)("design:type", Function),
2467
- (0, import_tslib.__metadata)("design:paramtypes", []),
2468
- (0, import_tslib.__metadata)("design:returntype", Promise)
2469
- ], FungibleToken2.prototype, "resume", null);
2470
- (0, import_tslib.__decorate)([
2471
- import_o1js9.method,
2472
- (0, import_tslib.__metadata)("design:type", Function),
2473
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.PublicKey, import_o1js9.UInt64]),
2474
- (0, import_tslib.__metadata)("design:returntype", Promise)
2475
- ], FungibleToken2.prototype, "transfer", null);
2476
- (0, import_tslib.__decorate)([
2477
- import_o1js9.method,
2478
- (0, import_tslib.__metadata)("design:type", Function),
2479
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.AccountUpdateForest]),
2480
- (0, import_tslib.__metadata)("design:returntype", Promise)
2481
- ], FungibleToken2.prototype, "approveBase", null);
2482
- (0, import_tslib.__decorate)([
2483
- import_o1js9.method.returns(import_o1js9.UInt64),
2484
- (0, import_tslib.__metadata)("design:type", Function),
2485
- (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey]),
2486
- (0, import_tslib.__metadata)("design:returntype", Promise)
2487
- ], FungibleToken2.prototype, "getBalanceOf", null);
2488
- (0, import_tslib.__decorate)([
2489
- import_o1js9.method.returns(import_o1js9.UInt8),
2490
- (0, import_tslib.__metadata)("design:type", Function),
2491
- (0, import_tslib.__metadata)("design:paramtypes", []),
2492
- (0, import_tslib.__metadata)("design:returntype", Promise)
2493
- ], FungibleToken2.prototype, "getDecimals", null);
2494
- return FungibleToken2;
2495
- }
2496
- var SetAdminEvent = class extends (0, import_o1js9.Struct)({
2497
- adminKey: import_o1js9.PublicKey
2498
- }) {
2499
- };
2500
- var PauseEvent = class extends (0, import_o1js9.Struct)({
2501
- isPaused: import_o1js9.Bool
2502
- }) {
2503
- };
2504
- var MintEvent = class extends (0, import_o1js9.Struct)({
2505
- recipient: import_o1js9.PublicKey,
2506
- amount: import_o1js9.UInt64
2507
- }) {
2508
- };
2509
- var BurnEvent = class extends (0, import_o1js9.Struct)({
2510
- from: import_o1js9.PublicKey,
2511
- amount: import_o1js9.UInt64
2512
- }) {
2513
- };
2514
- var BalanceChangeEvent = class extends (0, import_o1js9.Struct)({
2515
- address: import_o1js9.PublicKey,
2516
- amount: import_o1js9.Int64
2517
- }) {
2518
- };
2519
-
2520
- // dist/node/mina/token/FungibleTokenAdmin.js
2521
- var import_tslib2 = require("tslib");
2522
- var import_o1js10 = require("o1js");
2523
- var FungibleTokenAdmin = class extends import_o1js10.SmartContract {
2524
- constructor() {
2525
- super(...arguments);
2526
- this.adminPublicKey = (0, import_o1js10.State)();
2527
- }
2528
- async deploy(props) {
2529
- await super.deploy(props);
2530
- this.adminPublicKey.set(props.adminPublicKey);
2531
- this.account.permissions.set({
2532
- ...import_o1js10.Permissions.default(),
2533
- setVerificationKey: import_o1js10.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
2534
- setPermissions: import_o1js10.Permissions.impossible()
2535
- });
2536
- }
2537
- /** Update the verification key.
2538
- * Note that because we have set the permissions for setting the verification key to `impossibleDuringCurrentVersion()`, this will only be possible in case of a protocol update that requires an update.
2539
- */
2540
- async updateVerificationKey(vk) {
2541
- this.account.verificationKey.set(vk);
2542
- }
2543
- async ensureAdminSignature() {
2544
- const admin = await import_o1js10.Provable.witnessAsync(import_o1js10.PublicKey, async () => {
2545
- let pk = await this.adminPublicKey.fetch();
2546
- (0, import_o1js10.assert)(pk !== void 0, "could not fetch admin public key");
2547
- return pk;
2548
- });
2549
- this.adminPublicKey.requireEquals(admin);
2550
- return import_o1js10.AccountUpdate.createSigned(admin);
2551
- }
2552
- async canMint(_accountUpdate) {
2553
- await this.ensureAdminSignature();
2554
- return (0, import_o1js10.Bool)(true);
2555
- }
2556
- async canChangeAdmin(_admin) {
2557
- await this.ensureAdminSignature();
2558
- return (0, import_o1js10.Bool)(true);
2559
- }
2560
- async canPause() {
2561
- await this.ensureAdminSignature();
2562
- return (0, import_o1js10.Bool)(true);
2563
- }
2564
- async canResume() {
2565
- await this.ensureAdminSignature();
2566
- return (0, import_o1js10.Bool)(true);
2567
- }
2568
- };
2569
- (0, import_tslib2.__decorate)([
2570
- (0, import_o1js10.state)(import_o1js10.PublicKey),
2571
- (0, import_tslib2.__metadata)("design:type", Object)
2572
- ], FungibleTokenAdmin.prototype, "adminPublicKey", void 0);
2573
- (0, import_tslib2.__decorate)([
2574
- import_o1js10.method,
2575
- (0, import_tslib2.__metadata)("design:type", Function),
2576
- (0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.VerificationKey]),
2577
- (0, import_tslib2.__metadata)("design:returntype", Promise)
2578
- ], FungibleTokenAdmin.prototype, "updateVerificationKey", null);
2579
- (0, import_tslib2.__decorate)([
2580
- import_o1js10.method.returns(import_o1js10.Bool),
2581
- (0, import_tslib2.__metadata)("design:type", Function),
2582
- (0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.AccountUpdate]),
2583
- (0, import_tslib2.__metadata)("design:returntype", Promise)
2584
- ], FungibleTokenAdmin.prototype, "canMint", null);
2585
- (0, import_tslib2.__decorate)([
2586
- import_o1js10.method.returns(import_o1js10.Bool),
2587
- (0, import_tslib2.__metadata)("design:type", Function),
2588
- (0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.PublicKey]),
2589
- (0, import_tslib2.__metadata)("design:returntype", Promise)
2590
- ], FungibleTokenAdmin.prototype, "canChangeAdmin", null);
2591
- (0, import_tslib2.__decorate)([
2592
- import_o1js10.method.returns(import_o1js10.Bool),
2593
- (0, import_tslib2.__metadata)("design:type", Function),
2594
- (0, import_tslib2.__metadata)("design:paramtypes", []),
2595
- (0, import_tslib2.__metadata)("design:returntype", Promise)
2596
- ], FungibleTokenAdmin.prototype, "canPause", null);
2597
- (0, import_tslib2.__decorate)([
2598
- import_o1js10.method.returns(import_o1js10.Bool),
2599
- (0, import_tslib2.__metadata)("design:type", Function),
2600
- (0, import_tslib2.__metadata)("design:paramtypes", []),
2601
- (0, import_tslib2.__metadata)("design:returntype", Promise)
2602
- ], FungibleTokenAdmin.prototype, "canResume", null);
2603
-
2604
- // dist/node/mina/token/FungibleTokenWhitelistedAdmin.js
2605
- var import_tslib3 = require("tslib");
2606
- var import_o1js11 = require("o1js");
2607
- var FungibleTokenWhitelistedAdmin = class extends import_o1js11.SmartContract {
2608
- constructor() {
2609
- super(...arguments);
2610
- this.adminPublicKey = (0, import_o1js11.State)();
2611
- this.whitelist = (0, import_o1js11.State)();
2612
- this.events = { updateWhitelist: Whitelist };
2613
- }
2614
- async deploy(props) {
2615
- await super.deploy(props);
2616
- this.adminPublicKey.set(props.adminPublicKey);
2617
- this.whitelist.set(props.whitelist);
2618
- this.account.permissions.set({
2619
- ...import_o1js11.Permissions.default(),
2620
- setVerificationKey: import_o1js11.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
2621
- setPermissions: import_o1js11.Permissions.impossible()
2622
- });
2623
- }
2624
- /** Update the verification key.
2625
- * Note that because we have set the permissions for setting the verification key to `impossibleDuringCurrentVersion()`, this will only be possible in case of a protocol update that requires an update.
2626
- */
2627
- async updateVerificationKey(vk) {
2628
- this.account.verificationKey.set(vk);
2629
- }
2630
- async ensureAdminSignature() {
2631
- const admin = await import_o1js11.Provable.witnessAsync(import_o1js11.PublicKey, async () => {
2632
- let pk = await this.adminPublicKey.fetch();
2633
- (0, import_o1js11.assert)(pk !== void 0, "could not fetch admin public key");
2634
- return pk;
2635
- });
2636
- this.adminPublicKey.requireEquals(admin);
2637
- return import_o1js11.AccountUpdate.createSigned(admin);
2638
- }
2639
- async canMint(_accountUpdate) {
2640
- const address = _accountUpdate.body.publicKey;
2641
- const balanceChange = _accountUpdate.body.balanceChange;
2642
- balanceChange.isPositive().assertTrue();
2643
- const whitelist = this.whitelist.getAndRequireEquals();
2644
- const whitelistedAmount = await whitelist.getWhitelistedAmount(address);
2645
- return balanceChange.magnitude.lessThanOrEqual(
2646
- whitelistedAmount.orElse(import_o1js11.UInt64.from(0))
2647
- // here can be a minimum amount allowed by travel rule instead of 0
2648
- );
2649
- }
2650
- async canChangeAdmin(_admin) {
2651
- await this.ensureAdminSignature();
2652
- return (0, import_o1js11.Bool)(true);
2653
- }
2654
- async canPause() {
2655
- await this.ensureAdminSignature();
2656
- return (0, import_o1js11.Bool)(true);
2657
- }
2658
- async canResume() {
2659
- await this.ensureAdminSignature();
2660
- return (0, import_o1js11.Bool)(true);
2661
- }
2662
- async updateWhitelist(whitelist) {
2663
- const admin = this.adminPublicKey.getAndRequireEquals();
2664
- const sender = this.sender.getUnconstrained();
2665
- const senderUpdate = import_o1js11.AccountUpdate.createSigned(sender);
2666
- senderUpdate.body.useFullCommitment = (0, import_o1js11.Bool)(true);
2667
- admin.assertEquals(sender);
2668
- this.whitelist.set(whitelist);
2669
- this.emitEvent("updateWhitelist", whitelist);
2670
- }
2671
- };
2672
- (0, import_tslib3.__decorate)([
2673
- (0, import_o1js11.state)(import_o1js11.PublicKey),
2674
- (0, import_tslib3.__metadata)("design:type", Object)
2675
- ], FungibleTokenWhitelistedAdmin.prototype, "adminPublicKey", void 0);
2676
- (0, import_tslib3.__decorate)([
2677
- (0, import_o1js11.state)(Whitelist),
2678
- (0, import_tslib3.__metadata)("design:type", Object)
2679
- ], FungibleTokenWhitelistedAdmin.prototype, "whitelist", void 0);
2680
- (0, import_tslib3.__decorate)([
2681
- import_o1js11.method,
2682
- (0, import_tslib3.__metadata)("design:type", Function),
2683
- (0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.VerificationKey]),
2684
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2685
- ], FungibleTokenWhitelistedAdmin.prototype, "updateVerificationKey", null);
2686
- (0, import_tslib3.__decorate)([
2687
- import_o1js11.method.returns(import_o1js11.Bool),
2688
- (0, import_tslib3.__metadata)("design:type", Function),
2689
- (0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.AccountUpdate]),
2690
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2691
- ], FungibleTokenWhitelistedAdmin.prototype, "canMint", null);
2692
- (0, import_tslib3.__decorate)([
2693
- import_o1js11.method.returns(import_o1js11.Bool),
2694
- (0, import_tslib3.__metadata)("design:type", Function),
2695
- (0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.PublicKey]),
2696
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2697
- ], FungibleTokenWhitelistedAdmin.prototype, "canChangeAdmin", null);
2698
- (0, import_tslib3.__decorate)([
2699
- import_o1js11.method.returns(import_o1js11.Bool),
2700
- (0, import_tslib3.__metadata)("design:type", Function),
2701
- (0, import_tslib3.__metadata)("design:paramtypes", []),
2702
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2703
- ], FungibleTokenWhitelistedAdmin.prototype, "canPause", null);
2704
- (0, import_tslib3.__decorate)([
2705
- import_o1js11.method.returns(import_o1js11.Bool),
2706
- (0, import_tslib3.__metadata)("design:type", Function),
2707
- (0, import_tslib3.__metadata)("design:paramtypes", []),
2708
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2709
- ], FungibleTokenWhitelistedAdmin.prototype, "canResume", null);
2710
- (0, import_tslib3.__decorate)([
2711
- import_o1js11.method,
2712
- (0, import_tslib3.__metadata)("design:type", Function),
2713
- (0, import_tslib3.__metadata)("design:paramtypes", [Whitelist]),
2714
- (0, import_tslib3.__metadata)("design:returntype", Promise)
2715
- ], FungibleTokenWhitelistedAdmin.prototype, "updateWhitelist", null);
2716
-
2717
- // dist/node/mina/token/offer.js
2718
- var import_tslib4 = require("tslib");
2719
- var import_o1js12 = require("o1js");
2720
- var FungibleTokenOfferContract = class _FungibleTokenOfferContract extends import_o1js12.SmartContract {
2721
- constructor() {
2722
- super(...arguments);
2723
- this.price = (0, import_o1js12.State)();
2724
- this.seller = (0, import_o1js12.State)();
2725
- this.token = (0, import_o1js12.State)();
2726
- this.whitelist = (0, import_o1js12.State)();
2727
- this.events = {
2728
- offer: import_o1js12.UInt64,
2729
- withdraw: import_o1js12.UInt64,
2730
- buy: import_o1js12.UInt64,
2731
- updateWhitelist: Whitelist
2732
- };
2733
- }
2734
- async deploy(args) {
2735
- await super.deploy(args);
2736
- const verificationKey = args?.verificationKey ?? _FungibleTokenOfferContract._verificationKey;
2737
- (0, import_o1js12.assert)(verificationKey !== void 0);
2738
- const hash = typeof verificationKey.hash === "string" ? verificationKey.hash : verificationKey.hash.toJSON();
2739
- const networkId = import_o1js12.Mina.getNetworkId();
2740
- (0, import_o1js12.assert)(networkId === "mainnet" || networkId === "testnet");
2741
- (0, import_o1js12.assert)(hash === tokenVerificationKeys[networkId].vk.FungibleTokenOfferContract.hash);
2742
- (0, import_o1js12.assert)(verificationKey.data === tokenVerificationKeys[networkId].vk.FungibleTokenOfferContract.data);
2743
- this.whitelist.set(args.whitelist);
2744
- this.account.permissions.set({
2745
- ...import_o1js12.Permissions.default(),
2746
- send: import_o1js12.Permissions.proof(),
2747
- setVerificationKey: import_o1js12.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
2748
- setPermissions: import_o1js12.Permissions.impossible()
2749
- });
2750
- }
2751
- async initialize(seller, token, amount, price) {
2752
- this.account.provedState.requireEquals((0, import_o1js12.Bool)(false));
2753
- const tokenContract = new FungibleToken(token);
2754
- const tokenId = tokenContract.deriveTokenId();
2755
- tokenId.assertEquals(this.tokenId);
2756
- await tokenContract.transfer(seller, this.address, amount);
2757
- this.seller.set(seller);
2758
- this.price.set(price);
2759
- this.token.set(token);
2760
- this.emitEvent("offer", amount);
2761
- }
2762
- async offer(amount, price) {
2763
- const seller = this.seller.getAndRequireEquals();
2764
- const token = this.token.getAndRequireEquals();
2765
- const tokenContract = new FungibleToken(token);
2766
- const tokenId = tokenContract.deriveTokenId();
2767
- tokenId.assertEquals(this.tokenId);
2768
- const balance = this.account.balance.getAndRequireEquals();
2769
- const oldPrice = this.price.getAndRequireEquals();
2770
- price.equals(oldPrice).or(balance.equals(import_o1js12.UInt64.from(0))).assertTrue();
2771
- this.price.set(price);
2772
- const sender = this.sender.getUnconstrained();
2773
- const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender);
2774
- senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2775
- sender.assertEquals(seller);
2776
- await tokenContract.transfer(sender, this.address, amount);
2777
- this.emitEvent("offer", amount);
2778
- }
2779
- async withdraw(amount) {
2780
- amount.equals(import_o1js12.UInt64.from(0)).assertFalse();
2781
- this.account.balance.requireBetween(amount, import_o1js12.UInt64.MAXINT());
2782
- const seller = this.seller.getAndRequireEquals();
2783
- const token = this.token.getAndRequireEquals();
2784
- const tokenContract = new FungibleToken(token);
2785
- const tokenId = tokenContract.deriveTokenId();
2786
- tokenId.assertEquals(this.tokenId);
2787
- const sender = this.sender.getUnconstrained();
2788
- const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender, tokenId);
2789
- senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2790
- sender.assertEquals(seller);
2791
- let offerUpdate = this.send({ to: senderUpdate, amount });
2792
- offerUpdate.body.mayUseToken = import_o1js12.AccountUpdate.MayUseToken.InheritFromParent;
2793
- offerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2794
- this.emitEvent("withdraw", amount);
2795
- }
2796
- async buy(amount) {
2797
- amount.equals(import_o1js12.UInt64.from(0)).assertFalse();
2798
- this.account.balance.requireBetween(amount, import_o1js12.UInt64.MAXINT());
2799
- const seller = this.seller.getAndRequireEquals();
2800
- const token = this.token.getAndRequireEquals();
2801
- const tokenContract = new FungibleToken(token);
2802
- const tokenId = tokenContract.deriveTokenId();
2803
- tokenId.assertEquals(this.tokenId);
2804
- const price = this.price.getAndRequireEquals();
2805
- const totalPriceField = price.value.mul(amount.value).div((0, import_o1js12.Field)(1e9));
2806
- totalPriceField.assertLessThan(import_o1js12.UInt64.MAXINT().value, "totalPrice overflow");
2807
- const totalPrice = import_o1js12.UInt64.Unsafe.fromField(totalPriceField);
2808
- const buyer = this.sender.getUnconstrained();
2809
- const buyerUpdate = import_o1js12.AccountUpdate.createSigned(buyer);
2810
- buyerUpdate.send({ to: seller, amount: totalPrice });
2811
- buyerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2812
- let offerUpdate = this.send({ to: buyer, amount });
2813
- offerUpdate.body.mayUseToken = import_o1js12.AccountUpdate.MayUseToken.InheritFromParent;
2814
- offerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2815
- const whitelist = this.whitelist.getAndRequireEquals();
2816
- const whitelistedAmount = await whitelist.getWhitelistedAmount(buyer);
2817
- amount.assertLessThanOrEqual(whitelistedAmount.assertSome());
2818
- this.emitEvent("buy", amount);
2819
- }
2820
- async updateWhitelist(whitelist) {
2821
- const seller = this.seller.getAndRequireEquals();
2822
- const sender = this.sender.getUnconstrained();
2823
- const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender);
2824
- senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
2825
- sender.assertEquals(seller);
2826
- this.whitelist.set(whitelist);
2827
- this.emitEvent("updateWhitelist", whitelist);
2828
- }
2829
- };
2830
- (0, import_tslib4.__decorate)([
2831
- (0, import_o1js12.state)(import_o1js12.UInt64),
2832
- (0, import_tslib4.__metadata)("design:type", Object)
2833
- ], FungibleTokenOfferContract.prototype, "price", void 0);
2834
- (0, import_tslib4.__decorate)([
2835
- (0, import_o1js12.state)(import_o1js12.PublicKey),
2836
- (0, import_tslib4.__metadata)("design:type", Object)
2837
- ], FungibleTokenOfferContract.prototype, "seller", void 0);
2838
- (0, import_tslib4.__decorate)([
2839
- (0, import_o1js12.state)(import_o1js12.PublicKey),
2840
- (0, import_tslib4.__metadata)("design:type", Object)
2841
- ], FungibleTokenOfferContract.prototype, "token", void 0);
2842
- (0, import_tslib4.__decorate)([
2843
- (0, import_o1js12.state)(Whitelist),
2844
- (0, import_tslib4.__metadata)("design:type", Object)
2845
- ], FungibleTokenOfferContract.prototype, "whitelist", void 0);
2846
- (0, import_tslib4.__decorate)([
2847
- import_o1js12.method,
2848
- (0, import_tslib4.__metadata)("design:type", Function),
2849
- (0, import_tslib4.__metadata)("design:paramtypes", [
2850
- import_o1js12.PublicKey,
2851
- import_o1js12.PublicKey,
2852
- import_o1js12.UInt64,
2853
- import_o1js12.UInt64
2854
- ]),
2855
- (0, import_tslib4.__metadata)("design:returntype", Promise)
2856
- ], FungibleTokenOfferContract.prototype, "initialize", null);
2857
- (0, import_tslib4.__decorate)([
2858
- import_o1js12.method,
2859
- (0, import_tslib4.__metadata)("design:type", Function),
2860
- (0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64, import_o1js12.UInt64]),
2861
- (0, import_tslib4.__metadata)("design:returntype", Promise)
2862
- ], FungibleTokenOfferContract.prototype, "offer", null);
2863
- (0, import_tslib4.__decorate)([
2864
- import_o1js12.method,
2865
- (0, import_tslib4.__metadata)("design:type", Function),
2866
- (0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64]),
2867
- (0, import_tslib4.__metadata)("design:returntype", Promise)
2868
- ], FungibleTokenOfferContract.prototype, "withdraw", null);
2869
- (0, import_tslib4.__decorate)([
2870
- import_o1js12.method,
2871
- (0, import_tslib4.__metadata)("design:type", Function),
2872
- (0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64]),
2873
- (0, import_tslib4.__metadata)("design:returntype", Promise)
2874
- ], FungibleTokenOfferContract.prototype, "buy", null);
2875
- (0, import_tslib4.__decorate)([
2876
- import_o1js12.method,
2877
- (0, import_tslib4.__metadata)("design:type", Function),
2878
- (0, import_tslib4.__metadata)("design:paramtypes", [Whitelist]),
2879
- (0, import_tslib4.__metadata)("design:returntype", Promise)
2880
- ], FungibleTokenOfferContract.prototype, "updateWhitelist", null);
2881
-
2882
- // dist/node/mina/token/token.js
2883
- var FungibleToken = FungibleTokenContract(FungibleTokenAdmin);
2884
- var WhitelistedFungibleToken = FungibleTokenContract(FungibleTokenWhitelistedAdmin);
2885
- var tokenVerificationKeys = {
2886
- mainnet: {
2887
- o1js: "2.1.0",
2888
- zkcloudworker: "0.18.9",
2889
- vk: {
2890
- FungibleToken: {
2891
- hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
2892
- data: "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"
2893
- },
2894
- FungibleTokenAdmin: {
2895
- hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
2896
- data: "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"
2897
- },
2898
- WhitelistedFungibleToken: {
2899
- hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
2900
- data: "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"
2901
- },
2902
- FungibleTokenWhitelistedAdmin: {
2903
- hash: "19641412157595882526013339127483017677791543136878603715474182835463393277622",
2904
- data: "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"
2905
- },
2906
- FungibleTokenBidContract: {
2907
- hash: "13290952274336741358452297924879435304865306432909699834625876541003088475079",
2908
- data: "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"
2909
- },
2910
- FungibleTokenOfferContract: {
2911
- hash: "2858136391761960286699306196905265168181712302492280978164878175630383743048",
2912
- data: "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"
2913
- },
2914
- FungibleTokenAdminMF: {
2915
- hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
2916
- data: "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"
2917
- },
2918
- FungibleTokenMF: {
2919
- hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
2920
- data: "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"
2921
- }
2922
- }
2923
- },
2924
- testnet: {
2925
- o1js: "2.1.0",
2926
- zkcloudworker: "0.18.9",
2927
- vk: {
2928
- FungibleToken: {
2929
- hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
2930
- data: "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"
2931
- },
2932
- FungibleTokenAdmin: {
2933
- hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
2934
- data: "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"
2935
- },
2936
- WhitelistedFungibleToken: {
2937
- hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
2938
- data: "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"
2939
- },
2940
- FungibleTokenWhitelistedAdmin: {
2941
- hash: "20172938263834569171197221661527530681186299670687606810012808881888777415767",
2942
- data: "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"
2943
- },
2944
- FungibleTokenBidContract: {
2945
- hash: "21028578844692686241145580941807588328600986400769755733788301125980472965477",
2946
- data: "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"
2947
- },
2948
- FungibleTokenOfferContract: {
2949
- hash: "12073217068283876954049572004931286804667636618982691926234972243181859812345",
2950
- data: "AABHvb1XpdryzN4uGUIR5jwucFAFqu+GXfr6dRfUdgQzKXMLfhaTtO8NMNEnBAD3kNF2qKlP3FAnUlRK0SZoNrk5g5+3dbj/Pwd/cjTrP4WDf9SnoksCaHNGj6ZpjgWINyGzCJz2tgQ1mfX4EOpfz2Y/qSV6q8Ybg7jukmo7j98hFX2gj+1HvUozuHO6qiN5Gj9OJxGDYnDV1bmWAJlaO8A75s2H3bH2OKwDRSNn9N2xqswjWKXf7z/vXk+gOH5REgpUbOPu5WbspOOLns4QupLrX9gK7AO+T5UdIK12nMkPIHaaeOqzkTQNfwcMLf5+i/WZSdD97/TaZi8PfSfcrcMprdjCJF7Xogml9pKChtajIfmGgneJlpJkKnp8Bi6jpTDid18n7IvQWKBn33QX+WUzk+O6vFO3TS3HK2niRQraIQth3NkY+MvpH9RQ9leMmYELNFVEqr9jq+19bEXozjsrUzStMMfcJHXTSfmaOK8IPgtqKlwQMQxOOSldXmi2+gzZhOILF194Zmj/gebTIcVnbR8Kl0Kdot7MTY5237u+LQNpj5gERtOTm9M6OVYGN4losEDPFnVfmM96e0w9pvokAJzKgW6Qffbj1hEkd+cNcjjGBZib/of/uChCEBb66IUCFxqLJuj6RcIrRTxmw/GV+L52FDHbYuNyrywWtC4LkhbOmVm6hBFlpLYMYImiJaGoS0HyXw5JF+DjEEk27TSbLPKu0OowYimEOHdPQuWsZWk9007xh2QvbTl9F7lSF+Yv0QzGPNCAaASZ3cEv5Rhb6gqens/LJINpdlNViwjIGhZLH7A3uxyKH+3y1bl3agj+edyNvT4JT283jl+LU6HiOL+sDonudi8Hj8TLrmUoBIDte849w0D1c9BUaEzEPxMh7YXFu8nq4mO9gxxwsKCOTSQE4NTto6PhX3OgeHj0kh4YwKo/i91afMZSv/1ST+PuDEQ/XC9vlsCvXPlxOoHFErv6P8Hs5/qgQZFMbPA+q/hN7GD6Zo3q79CjEluj3cYKwi+ZSeEUxYTzjXBmZLVzHXl/Ki9AY2HlfD8GQLpTBixroF1/7tUX6hTw4gJhdjPwLhaXrzY8Ag5bzyga7NRQN24owmLVYJ6FheoQ4a8uCbakg4eAvQop3/rGhRhNwbMxxg6cvjTznOfmsy51Gtpj1MkC5D6YPXCMmE+WsAXKWjWQuEI3orBTlKYdZrgTjuga4yqYGDqUQnHHGmN/zm+XBwa/kak6IV97QCzbZID+F0gMtbYK8GvoGFi0vqMtLHAI4zM3Rser6crSf3JZ4EnP5r+28MThrHgnRta2T9Cmbg2p/YTesTEvFHuR9kCAqO1QcQtH9h/3WSl6cZ+TJVBHFp2sPdEeRGDHcv/tm55hRiza2DnRvIiwgzyUFl0cHbErUs+fZUc8Z3B7ePp24IwI0Um9rWurQ/vBWCZisfqOJCeUkuePkRnQuGUYBDsQFPNIFcLME5bouvWVWtaCvWAZJHwjr6qLpj+MgVoZx6HLgjzHmVfEuCU2wxYDhmyG3ho+ka9gwyUe8hD/0XmpBTteBmRmQ3I2bREIUNAY8TscjTwuiquWgl/0fEOxFcbzBisSOjZOCi6uumMBVbpzu6n1NNIlvNZoKY+jqGHeOhgns+pBqsrJTbwR1qtdyI2HcpozWpHMk8Z1StIbehSnduUVQNitlKcv3F5Bc+/sZ+Phdy6dUPKouk4YQC4PUwaAZVeuM4eP9RDTlIkey5fABQHxEkhHRP03y9qQnTTs6XOynM1UVOqFoY8dvxN8GTAzztYXEiHdvXGJgPI/iwyit3z+RdN/drre09D0hWDmDeBCrDNFNeW8qvLQb97B3jq0D9Yut4GxdjjGJ17RJpesU4YmAwAfbxzHWeAEY5mpaaAIevvcVv+BC8/fJllka/CrzBK4LgLKpx8bFFwPKQ1XWpyhSunGCG6+nz4iDZB0VQ0yZCANUFm//fqOD7t0SXR3Eu8ayc2nl87q75UT1phAOwFflSKLptdvKjl3cQHkUXEOAbRF68m3pkSWJR3EJFno+njDKyxr6IORS89fnIjfnuNJjg4gWrVN/r1SwSxp5FxdM5oIWRwzm1/YpCixzmgFf73Z7p0tlOY0o3AZb1n03RAXlC0y5f7J9Go9zlDONeKc5+9iLDthzA6SDB+TsZ9f8TlONonQOELThySODHGB4tZn77zn+zdasFpsy1bqn5GpvDgxH3edxUD2tLgTaUhKSwRv+Zh1wfsF/uQTVhNdhdqFmQq6GhrhCFSCGx7/e0hHGI4xYtXggA2zF4cxSwFmpq/XK8yiAy8duoGZzop1o+rsKccho1ekNYmT9CiYOgYwS2YJ9j07qDq2fwqaESSErd7hfoEEBmLPDXl4ziibaqGWYRs="
2951
- },
2952
- FungibleTokenAdminMF: {
2953
- hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
2954
- data: "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"
2955
- },
2956
- FungibleTokenMF: {
2957
- hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
2958
- data: "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"
2959
- }
2960
- }
2961
- }
2962
- };
2963
-
2964
- // dist/node/mina/token/bid.js
2965
- var FungibleTokenBidContract = class _FungibleTokenBidContract extends import_o1js13.SmartContract {
2966
- constructor() {
2967
- super(...arguments);
2968
- this.price = (0, import_o1js13.State)();
2969
- this.buyer = (0, import_o1js13.State)();
2970
- this.token = (0, import_o1js13.State)();
2971
- this.whitelist = (0, import_o1js13.State)();
2972
- this.events = {
2973
- bid: import_o1js13.UInt64,
2974
- withdraw: import_o1js13.UInt64,
2975
- sell: import_o1js13.UInt64,
2976
- updateWhitelist: Whitelist
2977
- };
2978
- }
2979
- async deploy(args) {
2980
- await super.deploy(args);
2981
- const verificationKey = args?.verificationKey ?? _FungibleTokenBidContract._verificationKey;
2982
- (0, import_o1js13.assert)(verificationKey !== void 0);
2983
- const hash = typeof verificationKey.hash === "string" ? verificationKey.hash : verificationKey.hash.toJSON();
2984
- const networkId = import_o1js13.Mina.getNetworkId();
2985
- (0, import_o1js13.assert)(networkId === "mainnet" || networkId === "testnet");
2986
- (0, import_o1js13.assert)(hash === tokenVerificationKeys[networkId].vk.FungibleTokenBidContract.hash);
2987
- (0, import_o1js13.assert)(verificationKey.data === tokenVerificationKeys[networkId].vk.FungibleTokenBidContract.data);
2988
- this.whitelist.set(args.whitelist);
2989
- this.account.permissions.set({
2990
- ...import_o1js13.Permissions.default(),
2991
- send: import_o1js13.Permissions.proof(),
2992
- setVerificationKey: import_o1js13.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
2993
- setPermissions: import_o1js13.Permissions.impossible()
2994
- });
2995
- }
2996
- async initialize(token, amount, price) {
2997
- this.account.provedState.requireEquals((0, import_o1js13.Bool)(false));
2998
- amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
2999
- const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
3000
- totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
3001
- const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
3002
- const buyer = this.sender.getUnconstrained();
3003
- const buyerUpdate = import_o1js13.AccountUpdate.createSigned(buyer);
3004
- buyerUpdate.send({ to: this.address, amount: totalPrice });
3005
- buyerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3006
- this.buyer.set(buyer);
3007
- this.price.set(price);
3008
- this.token.set(token);
3009
- this.emitEvent("bid", amount);
3010
- }
3011
- async bid(amount, price) {
3012
- amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
3013
- const balance = this.account.balance.getAndRequireEquals();
3014
- const oldPrice = this.price.getAndRequireEquals();
3015
- price.equals(oldPrice).or(balance.equals(import_o1js13.UInt64.from(0))).assertTrue();
3016
- this.price.set(price);
3017
- const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
3018
- totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
3019
- const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
3020
- const sender = this.sender.getUnconstrained();
3021
- const buyer = this.buyer.getAndRequireEquals();
3022
- sender.assertEquals(buyer);
3023
- const buyerUpdate = import_o1js13.AccountUpdate.createSigned(buyer);
3024
- buyerUpdate.send({ to: this.address, amount: totalPrice });
3025
- buyerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3026
- this.price.set(price);
3027
- this.emitEvent("bid", amount);
3028
- }
3029
- async withdraw(amountInMina) {
3030
- amountInMina.equals(import_o1js13.UInt64.from(0)).assertFalse();
3031
- this.account.balance.requireBetween(amountInMina, import_o1js13.UInt64.MAXINT());
3032
- const buyer = this.buyer.getAndRequireEquals();
3033
- const sender = this.sender.getUnconstrained();
3034
- const senderUpdate = import_o1js13.AccountUpdate.createSigned(sender);
3035
- senderUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3036
- sender.assertEquals(buyer);
3037
- let bidUpdate = this.send({ to: senderUpdate, amount: amountInMina });
3038
- bidUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3039
- this.emitEvent("withdraw", amountInMina);
3040
- }
3041
- async sell(amount) {
3042
- amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
3043
- const price = this.price.getAndRequireEquals();
3044
- const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
3045
- totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
3046
- const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
3047
- this.account.balance.requireBetween(totalPrice, import_o1js13.UInt64.MAXINT());
3048
- const buyer = this.buyer.getAndRequireEquals();
3049
- const token = this.token.getAndRequireEquals();
3050
- const seller = this.sender.getUnconstrained();
3051
- const sellerUpdate = this.send({ to: seller, amount: totalPrice });
3052
- sellerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3053
- sellerUpdate.requireSignature();
3054
- const tokenContract = new FungibleToken(token);
3055
- await tokenContract.transfer(seller, buyer, amount);
3056
- this.emitEvent("sell", amount);
3057
- }
3058
- async updateWhitelist(whitelist) {
3059
- const buyer = this.buyer.getAndRequireEquals();
3060
- const sender = this.sender.getUnconstrained();
3061
- const senderUpdate = import_o1js13.AccountUpdate.createSigned(sender);
3062
- senderUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
3063
- sender.assertEquals(buyer);
3064
- this.whitelist.set(whitelist);
3065
- this.emitEvent("updateWhitelist", whitelist);
3066
- }
3067
- };
3068
- (0, import_tslib5.__decorate)([
3069
- (0, import_o1js13.state)(import_o1js13.UInt64),
3070
- (0, import_tslib5.__metadata)("design:type", Object)
3071
- ], FungibleTokenBidContract.prototype, "price", void 0);
3072
- (0, import_tslib5.__decorate)([
3073
- (0, import_o1js13.state)(import_o1js13.PublicKey),
3074
- (0, import_tslib5.__metadata)("design:type", Object)
3075
- ], FungibleTokenBidContract.prototype, "buyer", void 0);
3076
- (0, import_tslib5.__decorate)([
3077
- (0, import_o1js13.state)(import_o1js13.PublicKey),
3078
- (0, import_tslib5.__metadata)("design:type", Object)
3079
- ], FungibleTokenBidContract.prototype, "token", void 0);
3080
- (0, import_tslib5.__decorate)([
3081
- (0, import_o1js13.state)(Whitelist),
3082
- (0, import_tslib5.__metadata)("design:type", Object)
3083
- ], FungibleTokenBidContract.prototype, "whitelist", void 0);
3084
- (0, import_tslib5.__decorate)([
3085
- import_o1js13.method,
3086
- (0, import_tslib5.__metadata)("design:type", Function),
3087
- (0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.PublicKey, import_o1js13.UInt64, import_o1js13.UInt64]),
3088
- (0, import_tslib5.__metadata)("design:returntype", Promise)
3089
- ], FungibleTokenBidContract.prototype, "initialize", null);
3090
- (0, import_tslib5.__decorate)([
3091
- import_o1js13.method,
3092
- (0, import_tslib5.__metadata)("design:type", Function),
3093
- (0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64, import_o1js13.UInt64]),
3094
- (0, import_tslib5.__metadata)("design:returntype", Promise)
3095
- ], FungibleTokenBidContract.prototype, "bid", null);
3096
- (0, import_tslib5.__decorate)([
3097
- import_o1js13.method,
3098
- (0, import_tslib5.__metadata)("design:type", Function),
3099
- (0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64]),
3100
- (0, import_tslib5.__metadata)("design:returntype", Promise)
3101
- ], FungibleTokenBidContract.prototype, "withdraw", null);
3102
- (0, import_tslib5.__decorate)([
3103
- import_o1js13.method,
3104
- (0, import_tslib5.__metadata)("design:type", Function),
3105
- (0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64]),
3106
- (0, import_tslib5.__metadata)("design:returntype", Promise)
3107
- ], FungibleTokenBidContract.prototype, "sell", null);
3108
- (0, import_tslib5.__decorate)([
3109
- import_o1js13.method,
3110
- (0, import_tslib5.__metadata)("design:type", Function),
3111
- (0, import_tslib5.__metadata)("design:paramtypes", [Whitelist]),
3112
- (0, import_tslib5.__metadata)("design:returntype", Promise)
3113
- ], FungibleTokenBidContract.prototype, "updateWhitelist", null);
3114
-
3115
- // dist/node/mina/token/build.js
3116
- var import_o1js14 = require("o1js");
3117
- async function buildTokenDeployTransaction(params) {
3118
- const { fee: fee2, sender, nonce, memo, tokenAddress, adminContractAddress, uri, symbol, developerAddress, developerFee, provingKey, provingFee, decimals, chain } = params;
3119
- const isWhitelisted = params.whitelist !== void 0;
3120
- if (memo && typeof memo !== "string")
3121
- throw new Error("Memo must be a string");
3122
- if (memo && memo.length > 30)
3123
- throw new Error("Memo must be less than 30 characters");
3124
- if (!symbol || typeof symbol !== "string")
3125
- throw new Error("Symbol must be a string");
3126
- if (symbol.length >= 7)
3127
- throw new Error("Symbol must be less than 7 characters");
3128
- const adminContract = isWhitelisted ? FungibleTokenWhitelistedAdmin : FungibleTokenAdmin;
3129
- const tokenContract = isWhitelisted ? WhitelistedFungibleToken : FungibleToken;
3130
- const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
3131
- if (!vk || !vk.FungibleTokenWhitelistedAdmin || !vk.FungibleTokenWhitelistedAdmin.hash || !vk.FungibleTokenWhitelistedAdmin.data || !vk.FungibleTokenAdmin || !vk.FungibleTokenAdmin.hash || !vk.FungibleTokenAdmin.data || !vk.WhitelistedFungibleToken || !vk.WhitelistedFungibleToken.hash || !vk.WhitelistedFungibleToken.data || !vk.FungibleToken || !vk.FungibleToken.hash || !vk.FungibleToken.data)
3132
- throw new Error("Cannot get verification keys");
3133
- const adminVerificationKey = isWhitelisted ? vk.FungibleTokenWhitelistedAdmin : vk.FungibleTokenAdmin;
3134
- const tokenVerificationKey = isWhitelisted ? vk.WhitelistedFungibleToken : vk.FungibleToken;
3135
- if (!adminVerificationKey || !tokenVerificationKey)
3136
- throw new Error("Cannot get verification keys");
3137
- await fetchMinaAccount({
3138
- publicKey: sender,
3139
- force: true
3140
- });
3141
- if (!import_o1js14.Mina.hasAccount(sender)) {
3142
- throw new Error("Sender does not have account");
3143
- }
3144
- console.log("Sender balance:", await accountBalanceMina(sender));
3145
- const whitelist = params.whitelist ? typeof params.whitelist === "string" ? Whitelist.fromString(params.whitelist) : await Whitelist.create({ list: params.whitelist, name: symbol }) : void 0;
3146
- const zkToken = new tokenContract(tokenAddress);
3147
- const zkAdmin = new adminContract(adminContractAddress);
3148
- const tx = await import_o1js14.Mina.transaction({ sender, fee: fee2, memo: memo ?? `deploy ${symbol}`, nonce }, async () => {
3149
- const feeAccountUpdate = import_o1js14.AccountUpdate.createSigned(sender);
3150
- feeAccountUpdate.balance.subInPlace(3e9);
3151
- feeAccountUpdate.send({
3152
- to: provingKey,
3153
- amount: provingFee
3154
- });
3155
- if (developerAddress && developerFee) {
3156
- feeAccountUpdate.send({
3157
- to: developerAddress,
3158
- amount: developerFee
3159
- });
3160
- }
3161
- if (isWhitelisted && !whitelist) {
3162
- throw new Error("Whitelisted addresses not found");
3163
- }
3164
- await zkAdmin.deploy({
3165
- adminPublicKey: sender,
3166
- verificationKey: adminVerificationKey,
3167
- whitelist
3168
- });
3169
- zkAdmin.account.zkappUri.set(uri);
3170
- await zkToken.deploy({
3171
- symbol,
3172
- src: uri,
3173
- verificationKey: tokenVerificationKey
3174
- });
3175
- await zkToken.initialize(
3176
- adminContractAddress,
3177
- decimals,
3178
- // We can set `startPaused` to `Bool(false)` here, because we are doing an atomic deployment
3179
- // If you are not deploying the admin and token contracts in the same transaction,
3180
- // it is safer to start the tokens paused, and resume them only after verifying that
3181
- // the admin contract has been deployed
3182
- (0, import_o1js14.Bool)(false)
3183
- );
3184
- });
3185
- return {
3186
- tx,
3187
- isWhitelisted,
3188
- adminVerificationKey: {
3189
- hash: (0, import_o1js14.Field)(adminVerificationKey.hash),
3190
- data: adminVerificationKey.data
3191
- },
3192
- tokenVerificationKey: {
3193
- hash: (0, import_o1js14.Field)(tokenVerificationKey.hash),
3194
- data: tokenVerificationKey.data
3195
- },
3196
- whitelist: whitelist?.toString()
3197
- };
3198
- }
3199
- function getTokenTransactionSender(params) {
3200
- const { txType, from, to } = params;
3201
- if (txType === "buy" || txType === "withdrawOffer" || txType === "withdrawBid") {
3202
- return to;
3203
- }
3204
- return from;
3205
- }
3206
- async function buildTokenTransaction(params) {
3207
- const { txType, chain, fee: fee2, nonce, tokenAddress, from, to, amount, price, developerAddress, developerFee, provingKey, provingFee } = params;
3208
- console.log(txType, "tx for", tokenAddress.toBase58());
3209
- const sender = getTokenTransactionSender({ txType, from, to });
3210
- console.log("Sender:", sender.toBase58());
3211
- await fetchMinaAccount({
3212
- publicKey: sender,
3213
- force: true
3214
- });
3215
- if (!import_o1js14.Mina.hasAccount(sender)) {
3216
- console.error("Sender does not have account");
3217
- throw new Error("Sender does not have account");
3218
- }
3219
- const { symbol, adminContractAddress, adminAddress, isWhitelisted } = await getTokenSymbolAndAdmin({
3220
- tokenAddress,
3221
- chain
3222
- });
3223
- const memo = params.memo ?? `${txType} ${symbol}`;
3224
- const whitelistedAdminContract = new FungibleTokenWhitelistedAdmin(adminContractAddress);
3225
- const tokenContract = isWhitelisted && txType === "mint" ? WhitelistedFungibleToken : FungibleToken;
3226
- if ((txType === "whitelistAdmin" || txType === "whitelistBid" || txType === "whitelistOffer") && !params.whitelist) {
3227
- throw new Error("Whitelist is required");
3228
- }
3229
- const whitelist = params.whitelist ? typeof params.whitelist === "string" ? Whitelist.fromString(params.whitelist) : await Whitelist.create({ list: params.whitelist, name: symbol }) : void 0;
3230
- const zkToken = new tokenContract(tokenAddress);
3231
- const tokenId = zkToken.deriveTokenId();
3232
- if (txType === "mint" && adminAddress.toBase58() !== sender.toBase58())
3233
- throw new Error("Invalid sender for mint");
3234
- await fetchMinaAccount({
3235
- publicKey: tokenAddress,
3236
- tokenId,
3237
- force: true
3238
- });
3239
- await fetchMinaAccount({
3240
- publicKey: from,
3241
- tokenId,
3242
- force: [
3243
- "offer",
3244
- "whitelistOffer",
3245
- "bid",
3246
- "whitelistBid",
3247
- "sell",
3248
- "transfer",
3249
- "withdrawOffer"
3250
- ].includes(txType)
3251
- });
3252
- await fetchMinaAccount({
3253
- publicKey: to,
3254
- tokenId,
3255
- force: [
3256
- "sell",
3257
- "whitelistAdmin",
3258
- "withdrawBid",
3259
- "withdrawOffer"
3260
- ].includes(txType)
3261
- });
3262
- const isNewAccount = import_o1js14.Mina.hasAccount(to, tokenId) === false;
3263
- const offerContract = new FungibleTokenOfferContract([
3264
- "offer",
3265
- "whitelistOffer"
3266
- ].includes(txType) ? to : from, tokenId);
3267
- const bidContract = new FungibleTokenBidContract([
3268
- "bid",
3269
- "whitelistBid"
3270
- ].includes(txType) ? from : to, tokenId);
3271
- const offerContractDeployment = new FungibleTokenOfferContract(to, tokenId);
3272
- const bidContractDeployment = new FungibleTokenBidContract(from, tokenId);
3273
- const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
3274
- if (!vk || !vk.FungibleTokenOfferContract || !vk.FungibleTokenOfferContract.hash || !vk.FungibleTokenOfferContract.data || !vk.FungibleTokenBidContract || !vk.FungibleTokenBidContract.hash || !vk.FungibleTokenBidContract.data || !vk.FungibleTokenWhitelistedAdmin || !vk.FungibleTokenWhitelistedAdmin.hash || !vk.FungibleTokenWhitelistedAdmin.data || !vk.FungibleTokenAdmin || !vk.FungibleTokenAdmin.hash || !vk.FungibleTokenAdmin.data || !vk.WhitelistedFungibleToken || !vk.WhitelistedFungibleToken.hash || !vk.WhitelistedFungibleToken.data || !vk.FungibleToken || !vk.FungibleToken.hash || !vk.FungibleToken.data)
3275
- throw new Error("Cannot get verification key");
3276
- const adminVerificationKey = isWhitelisted ? vk.FungibleTokenWhitelistedAdmin : vk.FungibleTokenAdmin;
3277
- const tokenVerificationKey = isWhitelisted ? vk.WhitelistedFungibleToken : vk.FungibleToken;
3278
- const offerVerificationKey = FungibleTokenOfferContract._verificationKey ?? {
3279
- hash: (0, import_o1js14.Field)(vk.FungibleTokenOfferContract.hash),
3280
- data: vk.FungibleTokenOfferContract.data
3281
- };
3282
- const bidVerificationKey = FungibleTokenBidContract._verificationKey ?? {
3283
- hash: (0, import_o1js14.Field)(vk.FungibleTokenBidContract.hash),
3284
- data: vk.FungibleTokenBidContract.data
3285
- };
3286
- console.log("Sender balance:", await accountBalanceMina(sender));
3287
- console.log("New account:", isNewAccount);
3288
- const tx = await import_o1js14.Mina.transaction({ sender, fee: fee2, memo, nonce }, async () => {
3289
- const feeAccountUpdate = import_o1js14.AccountUpdate.createSigned(sender);
3290
- if (isNewAccount) {
3291
- feeAccountUpdate.balance.subInPlace(1e9);
3292
- }
3293
- feeAccountUpdate.send({
3294
- to: provingKey,
3295
- amount: provingFee
3296
- });
3297
- if (developerAddress && developerFee) {
3298
- feeAccountUpdate.send({
3299
- to: developerAddress,
3300
- amount: developerFee
3301
- });
3302
- }
3303
- switch (txType) {
3304
- case "mint":
3305
- if (amount === void 0)
3306
- throw new Error("Error: Amount is required");
3307
- await zkToken.mint(to, amount);
3308
- break;
3309
- case "transfer":
3310
- if (amount === void 0)
3311
- throw new Error("Error: Amount is required");
3312
- await zkToken.transfer(from, to, amount);
3313
- break;
3314
- case "offer":
3315
- if (price === void 0)
3316
- throw new Error("Error: Price is required");
3317
- if (amount === void 0)
3318
- throw new Error("Error: Amount is required");
3319
- if (isNewAccount) {
3320
- await offerContractDeployment.deploy({
3321
- verificationKey: offerVerificationKey,
3322
- whitelist: whitelist ?? Whitelist.empty()
3323
- });
3324
- offerContract.account.zkappUri.set(`Offer for ${symbol}`);
3325
- await offerContract.initialize(sender, tokenAddress, amount, price);
3326
- await zkToken.approveAccountUpdates([
3327
- offerContractDeployment.self,
3328
- offerContract.self
3329
- ]);
3330
- } else {
3331
- await offerContract.offer(amount, price);
3332
- await zkToken.approveAccountUpdate(offerContract.self);
3333
- }
3334
- break;
3335
- case "buy":
3336
- if (amount === void 0)
3337
- throw new Error("Error: Amount is required");
3338
- await offerContract.buy(amount);
3339
- await zkToken.approveAccountUpdate(offerContract.self);
3340
- break;
3341
- case "withdrawOffer":
3342
- if (amount === void 0)
3343
- throw new Error("Error: Amount is required");
3344
- await offerContract.withdraw(amount);
3345
- await zkToken.approveAccountUpdate(offerContract.self);
3346
- break;
3347
- case "bid":
3348
- if (price === void 0)
3349
- throw new Error("Error: Price is required");
3350
- if (amount === void 0)
3351
- throw new Error("Error: Amount is required");
3352
- if (isNewAccount) {
3353
- await bidContractDeployment.deploy({
3354
- verificationKey: bidVerificationKey,
3355
- whitelist: whitelist ?? Whitelist.empty()
3356
- });
3357
- bidContract.account.zkappUri.set(`Bid for ${symbol}`);
3358
- await bidContract.initialize(tokenAddress, amount, price);
3359
- await zkToken.approveAccountUpdates([
3360
- bidContractDeployment.self,
3361
- bidContract.self
3362
- ]);
3363
- } else {
3364
- await bidContract.bid(amount, price);
3365
- await zkToken.approveAccountUpdate(bidContract.self);
3366
- }
3367
- break;
3368
- case "sell":
3369
- if (amount === void 0)
3370
- throw new Error("Error: Amount is required");
3371
- await bidContract.sell(amount);
3372
- await zkToken.approveAccountUpdate(bidContract.self);
3373
- break;
3374
- case "withdrawBid":
3375
- if (amount === void 0)
3376
- throw new Error("Error: Amount is required");
3377
- await bidContract.withdraw(amount);
3378
- await zkToken.approveAccountUpdate(bidContract.self);
3379
- break;
3380
- case "whitelistAdmin":
3381
- if (!whitelist)
3382
- throw new Error("Whitelist is required");
3383
- await whitelistedAdminContract.updateWhitelist(whitelist);
3384
- break;
3385
- case "whitelistBid":
3386
- if (!whitelist)
3387
- throw new Error("Whitelist is required");
3388
- await bidContract.updateWhitelist(whitelist);
3389
- break;
3390
- case "whitelistOffer":
3391
- if (!whitelist)
3392
- throw new Error("Whitelist is required");
3393
- await offerContract.updateWhitelist(whitelist);
3394
- await zkToken.approveAccountUpdate(offerContract.self);
3395
- break;
3396
- default:
3397
- throw new Error(`Unknown transaction type: ${txType}`);
3398
- }
3399
- });
3400
- return {
3401
- tx,
3402
- isWhitelisted,
3403
- adminContractAddress,
3404
- adminAddress,
3405
- symbol,
3406
- adminVerificationKey: {
3407
- hash: (0, import_o1js14.Field)(adminVerificationKey.hash),
3408
- data: adminVerificationKey.data
3409
- },
3410
- tokenVerificationKey: {
3411
- hash: (0, import_o1js14.Field)(tokenVerificationKey.hash),
3412
- data: tokenVerificationKey.data
3413
- },
3414
- offerVerificationKey,
3415
- bidVerificationKey,
3416
- whitelist: whitelist?.toString()
3417
- };
3418
- }
3419
- async function getTokenSymbolAndAdmin(params) {
3420
- const { tokenAddress, chain } = params;
3421
- const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
3422
- class FungibleTokenState extends (0, import_o1js14.Struct)({
3423
- decimals: import_o1js14.UInt8,
3424
- admin: import_o1js14.PublicKey,
3425
- paused: import_o1js14.Bool
3426
- }) {
3427
- }
3428
- const FungibleTokenStateSize = FungibleTokenState.sizeInFields();
3429
- class FungibleTokenAdminState extends (0, import_o1js14.Struct)({
3430
- adminPublicKey: import_o1js14.PublicKey
3431
- }) {
3432
- }
3433
- const FungibleTokenAdminStateSize = FungibleTokenAdminState.sizeInFields();
3434
- await fetchMinaAccount({ publicKey: tokenAddress, force: true });
3435
- if (!import_o1js14.Mina.hasAccount(tokenAddress)) {
3436
- throw new Error("Token contract account not found");
3437
- }
3438
- const account = import_o1js14.Mina.getAccount(tokenAddress);
3439
- const verificationKey = account.zkapp?.verificationKey;
3440
- if (!verificationKey) {
3441
- throw new Error("Token contract verification key not found");
3442
- }
3443
- if (verificationKey.hash.toJSON() !== vk.FungibleToken.hash || verificationKey.data !== vk.FungibleToken.data || verificationKey.hash.toJSON() !== vk.WhitelistedFungibleToken.hash || verificationKey.data !== vk.WhitelistedFungibleToken.data) {
3444
- throw new Error("Unknown token verification key");
3445
- }
3446
- if (account.zkapp?.appState === void 0) {
3447
- throw new Error("Token contract state not found");
3448
- }
3449
- const state7 = FungibleTokenState.fromFields(account.zkapp?.appState.slice(0, FungibleTokenStateSize));
3450
- const symbol = account.tokenSymbol;
3451
- const adminContractPublicKey = state7.admin;
3452
- await fetchMinaAccount({
3453
- publicKey: adminContractPublicKey,
3454
- force: true
3455
- });
3456
- if (!import_o1js14.Mina.hasAccount(adminContractPublicKey)) {
3457
- throw new Error("Admin contract account not found");
3458
- }
3459
- const adminContract = import_o1js14.Mina.getAccount(adminContractPublicKey);
3460
- const adminVerificationKey = adminContract.zkapp?.verificationKey;
3461
- if (!adminVerificationKey) {
3462
- throw new Error("Admin verification key not found");
3463
- }
3464
- let isWhitelisted = false;
3465
- if (vk.FungibleTokenWhitelistedAdmin.hash === adminVerificationKey.hash.toJSON() && vk.FungibleTokenWhitelistedAdmin.data === adminVerificationKey.data) {
3466
- isWhitelisted = true;
3467
- } else if (vk.FungibleTokenAdmin.hash === adminVerificationKey.hash.toJSON() && vk.FungibleTokenAdmin.data === adminVerificationKey.data) {
3468
- isWhitelisted = false;
3469
- } else {
3470
- throw new Error("Unknown admin verification key");
3471
- }
3472
- const adminAddress0 = adminContract.zkapp?.appState[0];
3473
- const adminAddress1 = adminContract.zkapp?.appState[1];
3474
- if (adminAddress0 === void 0 || adminAddress1 === void 0) {
3475
- throw new Error("Cannot fetch admin address from admin contract");
3476
- }
3477
- const adminAddress = import_o1js14.PublicKey.fromFields([adminAddress0, adminAddress1]);
3478
- return {
3479
- adminContractAddress: adminContractPublicKey,
3480
- adminAddress,
3481
- symbol,
3482
- isWhitelisted
3483
- };
3484
- }
3485
-
3486
- // dist/node/mina/token/fee.js
3487
- var LAUNCH_FEE = 1e9;
3488
- var TRANSACTION_FEE = 1e8;
3489
-
3490
- // dist/node/mina/token/vk.js
3491
- var fungibleTokenVerificationKeys = {
3492
- testnet: {
3493
- admin: {
3494
- hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
3495
- data: "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"
3496
- },
3497
- token: {
3498
- hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
3499
- data: "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"
3500
- }
3501
- },
3502
- mainnet: {
3503
- admin: {
3504
- hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
3505
- data: "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"
3506
- },
3507
- token: {
3508
- hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
3509
- data: "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"
3510
- }
3511
- },
3512
- testnet_v1: {
3513
- admin: {
3514
- hash: "1200635497217107248831982322269320244173535715339356861513501242012238077174",
3515
- data: "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"
3516
- },
3517
- token: {
3518
- hash: "25084457276132306637089336910977939820654927814172888515895248592725736067489",
3519
- data: "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"
3520
- }
3521
- },
3522
- mainnet_v1: {
3523
- admin: {
3524
- hash: "16115269877914581564299853766147447229664556890591132763176560855029019233817",
3525
- data: "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"
3526
- },
3527
- token: {
3528
- hash: "12320223354843720065815824451082596238990220882343256724550451075683722289248",
3529
- data: "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"
3530
- }
3531
2028
  }
3532
2029
  };
3533
2030
 
@@ -3629,7 +2126,7 @@ async function getZkAppFromBlockBerry(params) {
3629
2126
  }
3630
2127
 
3631
2128
  // dist/node/mina/transactions/nonce.js
3632
- var import_o1js15 = require("o1js");
2129
+ var import_o1js7 = require("o1js");
3633
2130
  async function getNonce(params) {
3634
2131
  const { account, chain, blockBerryApiKey } = params;
3635
2132
  try {
@@ -3687,9 +2184,9 @@ async function getAccountNonce(params) {
3687
2184
  const { account, chain = getCurrentNetwork().network.chainId, blockBerryApiKey, verbose = true } = params;
3688
2185
  const canUseBlockBerry = blockBerryApiKey !== void 0 && (chain === "devnet" || chain === "mainnet");
3689
2186
  if (chain === "zeko") {
3690
- const publicKey = import_o1js15.PublicKey.fromBase58(account);
2187
+ const publicKey = import_o1js7.PublicKey.fromBase58(account);
3691
2188
  await fetchMinaAccount({ publicKey });
3692
- const nonce = Number(import_o1js15.Mina.getAccount(publicKey).nonce.toBigint());
2189
+ const nonce = Number(import_o1js7.Mina.getAccount(publicKey).nonce.toBigint());
3693
2190
  return nonce;
3694
2191
  } else {
3695
2192
  const blockberryNoncePromise = canUseBlockBerry ? getNonce({
@@ -3697,9 +2194,9 @@ async function getAccountNonce(params) {
3697
2194
  blockBerryApiKey,
3698
2195
  chain
3699
2196
  }) : void 0;
3700
- const publicKey = import_o1js15.PublicKey.fromBase58(account);
2197
+ const publicKey = import_o1js7.PublicKey.fromBase58(account);
3701
2198
  await fetchMinaAccount({ publicKey });
3702
- const senderNonce = Number(import_o1js15.Mina.getAccount(publicKey).nonce.toBigint());
2199
+ const senderNonce = Number(import_o1js7.Mina.getAccount(publicKey).nonce.toBigint());
3703
2200
  const blockberryNonce = blockberryNoncePromise ? (await blockberryNoncePromise).nonce ?? -1 : -1;
3704
2201
  const nonce = Math.max(senderNonce, blockberryNonce + 1);
3705
2202
  if (verbose && nonce > senderNonce)
@@ -3709,21 +2206,21 @@ async function getAccountNonce(params) {
3709
2206
  }
3710
2207
 
3711
2208
  // dist/node/mina/transactions/transaction.js
3712
- var import_o1js16 = require("o1js");
2209
+ var import_o1js8 = require("o1js");
3713
2210
  function transactionParams(serializedTransaction, signedJson) {
3714
2211
  const { sender, nonce, tx } = JSON.parse(serializedTransaction);
3715
- const transaction = import_o1js16.Mina.Transaction.fromJSON(JSON.parse(tx));
2212
+ const transaction = import_o1js8.Mina.Transaction.fromJSON(JSON.parse(tx));
3716
2213
  const memo = transaction.transaction.memo;
3717
2214
  return {
3718
- fee: import_o1js16.UInt64.from(signedJson.zkappCommand.feePayer.body.fee),
3719
- sender: import_o1js16.PublicKey.fromBase58(sender),
2215
+ fee: import_o1js8.UInt64.from(signedJson.zkappCommand.feePayer.body.fee),
2216
+ sender: import_o1js8.PublicKey.fromBase58(sender),
3720
2217
  nonce: Number(signedJson.zkappCommand.feePayer.body.nonce),
3721
2218
  memo
3722
2219
  };
3723
2220
  }
3724
2221
  function deserializeTransaction(serializedTransaction, txNew, signedJson) {
3725
2222
  const { tx, blindingValues, length, forestJSONs } = JSON.parse(serializedTransaction);
3726
- const transaction = import_o1js16.Mina.Transaction.fromJSON(JSON.parse(tx));
2223
+ const transaction = import_o1js8.Mina.Transaction.fromJSON(JSON.parse(tx));
3727
2224
  const forests = forestJSONs.map((f) => JSON.parse(f));
3728
2225
  if (length !== txNew.transaction.accountUpdates.length) {
3729
2226
  throw new Error("New Transaction length mismatch");
@@ -3737,7 +2234,7 @@ function deserializeTransaction(serializedTransaction, txNew, signedJson) {
3737
2234
  if (transaction.transaction.accountUpdates[i].lazyAuthorization === void 0 || transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue === void 0) {
3738
2235
  throw new Error(`Lazy authorization blinding value is undefined for item ${i}`);
3739
2236
  }
3740
- transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue = import_o1js16.Field.fromJSON(blindingValues[i]);
2237
+ transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue = import_o1js8.Field.fromJSON(blindingValues[i]);
3741
2238
  }
3742
2239
  if (forests[i].length > 0) {
3743
2240
  if (transaction.transaction.accountUpdates[i].lazyAuthorization === void 0 || transaction.transaction.accountUpdates[i].lazyAuthorization.args === void 0) {
@@ -3750,7 +2247,7 @@ function deserializeTransaction(serializedTransaction, txNew, signedJson) {
3750
2247
  }
3751
2248
  }
3752
2249
  transaction.transaction.feePayer.authorization = signedJson.zkappCommand.feePayer.authorization;
3753
- transaction.transaction.feePayer.body.fee = import_o1js16.UInt64.from(signedJson.zkappCommand.feePayer.body.fee);
2250
+ transaction.transaction.feePayer.body.fee = import_o1js8.UInt64.from(signedJson.zkappCommand.feePayer.body.fee);
3754
2251
  for (let i = 0; i < length; i++) {
3755
2252
  const signature = signedJson.zkappCommand.accountUpdates[i].authorization.signature;
3756
2253
  if (signature !== void 0 && signature !== null) {
@@ -3885,30 +2382,30 @@ async function txStatusBlockberry(params) {
3885
2382
  }
3886
2383
 
3887
2384
  // dist/node/mina/transactions/tiny-contract.js
3888
- var import_tslib6 = require("tslib");
3889
- var import_o1js17 = require("o1js");
3890
- var TinyContract = class extends import_o1js17.SmartContract {
2385
+ var import_tslib = require("tslib");
2386
+ var import_o1js9 = require("o1js");
2387
+ var TinyContract = class extends import_o1js9.SmartContract {
3891
2388
  constructor() {
3892
2389
  super(...arguments);
3893
- this.value = (0, import_o1js17.State)();
2390
+ this.value = (0, import_o1js9.State)();
3894
2391
  }
3895
2392
  async setValue(value) {
3896
2393
  this.value.set(value);
3897
2394
  }
3898
2395
  };
3899
- (0, import_tslib6.__decorate)([
3900
- (0, import_o1js17.state)(import_o1js17.Field),
3901
- (0, import_tslib6.__metadata)("design:type", Object)
2396
+ (0, import_tslib.__decorate)([
2397
+ (0, import_o1js9.state)(import_o1js9.Field),
2398
+ (0, import_tslib.__metadata)("design:type", Object)
3902
2399
  ], TinyContract.prototype, "value", void 0);
3903
- (0, import_tslib6.__decorate)([
3904
- import_o1js17.method,
3905
- (0, import_tslib6.__metadata)("design:type", Function),
3906
- (0, import_tslib6.__metadata)("design:paramtypes", [import_o1js17.Field]),
3907
- (0, import_tslib6.__metadata)("design:returntype", Promise)
2400
+ (0, import_tslib.__decorate)([
2401
+ import_o1js9.method,
2402
+ (0, import_tslib.__metadata)("design:type", Function),
2403
+ (0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.Field]),
2404
+ (0, import_tslib.__metadata)("design:returntype", Promise)
3908
2405
  ], TinyContract.prototype, "setValue", null);
3909
2406
 
3910
2407
  // dist/node/mina/transactions/send.js
3911
- var import_o1js18 = require("o1js");
2408
+ var import_o1js10 = require("o1js");
3912
2409
  async function sendTx(params) {
3913
2410
  const { tx, description = "", verbose = true, wait = true, chain = getCurrentNetwork().network.chainId } = params;
3914
2411
  const accountUpdates = JSON.parse(tx.toJSON()).accountUpdates;
@@ -3997,7 +2494,7 @@ async function getTxStatusFast(params) {
3997
2494
  if (chain === "local" || chain === "zeko")
3998
2495
  return { success: true, result: true };
3999
2496
  try {
4000
- const txStatus = await (0, import_o1js18.checkZkappTransaction)(hash);
2497
+ const txStatus = await (0, import_o1js10.checkZkappTransaction)(hash);
4001
2498
  return {
4002
2499
  success: true,
4003
2500
  result: txStatus?.success ?? false
@@ -4009,21 +2506,21 @@ async function getTxStatusFast(params) {
4009
2506
  }
4010
2507
 
4011
2508
  // dist/node/mina/transactions/account.js
4012
- var import_o1js19 = require("o1js");
2509
+ var import_o1js11 = require("o1js");
4013
2510
  async function accountExists(address, tokenId) {
4014
2511
  try {
4015
- const publicKey = typeof address === "string" ? import_o1js19.PublicKey.fromBase58(address) : address;
2512
+ const publicKey = typeof address === "string" ? import_o1js11.PublicKey.fromBase58(address) : address;
4016
2513
  await fetchMinaAccount({ publicKey, tokenId, force: false });
4017
- return import_o1js19.Mina.hasAccount(publicKey, tokenId);
2514
+ return import_o1js11.Mina.hasAccount(publicKey, tokenId);
4018
2515
  } catch (error) {
4019
2516
  return false;
4020
2517
  }
4021
2518
  }
4022
2519
  async function tokenBalance(address, tokenId) {
4023
2520
  try {
4024
- const publicKey = typeof address === "string" ? import_o1js19.PublicKey.fromBase58(address) : address;
2521
+ const publicKey = typeof address === "string" ? import_o1js11.PublicKey.fromBase58(address) : address;
4025
2522
  await fetchMinaAccount({ publicKey, tokenId, force: false });
4026
- return import_o1js19.Mina.hasAccount(publicKey, tokenId) ? Number(import_o1js19.Mina.getAccount(publicKey, tokenId).balance.toBigInt()) : void 0;
2523
+ return import_o1js11.Mina.hasAccount(publicKey, tokenId) ? Number(import_o1js11.Mina.getAccount(publicKey, tokenId).balance.toBigInt()) : void 0;
4027
2524
  } catch (error) {
4028
2525
  console.error("Cannot fetch account balance", error);
4029
2526
  return void 0;
@@ -4035,7 +2532,7 @@ async function checkAddress(address) {
4035
2532
  return false;
4036
2533
  }
4037
2534
  try {
4038
- const publicKey = import_o1js19.PublicKey.fromBase58(address);
2535
+ const publicKey = import_o1js11.PublicKey.fromBase58(address);
4039
2536
  if (address !== publicKey.toBase58()) {
4040
2537
  console.log("checkAddress: address is not valid", address, publicKey.toBase58());
4041
2538
  return false;
@@ -4046,16 +2543,70 @@ async function checkAddress(address) {
4046
2543
  return false;
4047
2544
  }
4048
2545
  }
2546
+
2547
+ // dist/node/mina/storage/ipfs.js
2548
+ function createIpfsURL(params) {
2549
+ let { hash, gateway, apiToken } = params;
2550
+ gateway ??= process.env.PINATA_IPFS_GATEWAY ?? process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ?? process.env.REACT_APP_PINATA_IPFS_GATEWAY;
2551
+ apiToken ??= process.env.PINATA_GATEWAY_TOKEN ?? process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ?? process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
2552
+ if (!gateway) {
2553
+ gateway = "https://gateway.pinata.cloud/ipfs/";
2554
+ }
2555
+ return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
2556
+ }
2557
+
2558
+ // dist/node/mina/storage/storage.js
2559
+ var import_o1js12 = require("o1js");
2560
+ var Storage = class _Storage extends (0, import_o1js12.Struct)({
2561
+ url: import_o1js12.Provable.Array(import_o1js12.Field, 2)
2562
+ }) {
2563
+ constructor(value) {
2564
+ super(value);
2565
+ }
2566
+ /**
2567
+ * Asserts that two Storage instances are equal.
2568
+ * @param a The first Storage instance.
2569
+ * @param b The second Storage instance.
2570
+ */
2571
+ static assertEquals(a, b) {
2572
+ a.url[0].assertEquals(b.url[0]);
2573
+ a.url[1].assertEquals(b.url[1]);
2574
+ }
2575
+ /**
2576
+ * Checks if two Storage instances are equal.
2577
+ * @param a The first Storage instance.
2578
+ * @param b The second Storage instance.
2579
+ * @returns A Bool indicating whether the two instances are equal.
2580
+ */
2581
+ static equals(a, b) {
2582
+ return a.url[0].equals(b.url[0]).and(a.url[1].equals(b.url[1]));
2583
+ }
2584
+ /**
2585
+ * Creates a Storage instance from a string.
2586
+ * @param url The string representing the storage URL.
2587
+ * @returns A new Storage instance.
2588
+ */
2589
+ static fromString(url) {
2590
+ const fields = import_o1js12.Encoding.stringToFields(url);
2591
+ if (fields.length !== 2)
2592
+ throw new Error("Invalid string length");
2593
+ return new _Storage({ url: [fields[0], fields[1]] });
2594
+ }
2595
+ /**
2596
+ * Converts the Storage instance to a string.
2597
+ * @returns The string representation of the storage URL.
2598
+ */
2599
+ toString() {
2600
+ if (this.url[0].toBigInt() === 0n && this.url[1].toBigInt() === 0n) {
2601
+ throw new Error("Invalid string");
2602
+ }
2603
+ return import_o1js12.Encoding.stringFromFields([this.url[0], this.url[1]]);
2604
+ }
2605
+ };
4049
2606
  // Annotate the CommonJS export names for ESM import in node:
4050
2607
  0 && (module.exports = {
4051
2608
  Cloud,
4052
2609
  Devnet,
4053
- FungibleToken,
4054
- FungibleTokenAdmin,
4055
- FungibleTokenBidContract,
4056
- FungibleTokenOfferContract,
4057
- FungibleTokenWhitelistedAdmin,
4058
- LAUNCH_FEE,
4059
2610
  Lightnet,
4060
2611
  Local,
4061
2612
  LocalCloud,
@@ -4063,15 +2614,8 @@ async function checkAddress(address) {
4063
2614
  Mainnet,
4064
2615
  Memory,
4065
2616
  Storage,
4066
- TRANSACTION_FEE,
4067
2617
  TinyContract,
4068
2618
  TokenAPI,
4069
- UInt64Option,
4070
- Whitelist,
4071
- WhitelistMap,
4072
- WhitelistMapOption,
4073
- WhitelistedAddress,
4074
- WhitelistedFungibleToken,
4075
2619
  Zeko,
4076
2620
  accountBalance,
4077
2621
  accountBalanceMina,
@@ -4080,8 +2624,6 @@ async function checkAddress(address) {
4080
2624
  bigintFromBase64,
4081
2625
  bigintToBase56,
4082
2626
  bigintToBase64,
4083
- buildTokenDeployTransaction,
4084
- buildTokenTransaction,
4085
2627
  checkAddress,
4086
2628
  checkMinaZkappTransaction,
4087
2629
  createIpfsURL,
@@ -4099,7 +2641,6 @@ async function checkAddress(address) {
4099
2641
  fieldToBase64,
4100
2642
  formatTime,
4101
2643
  fromBase,
4102
- fungibleTokenVerificationKeys,
4103
2644
  getAccountFromGraphQL,
4104
2645
  getAccountNonce,
4105
2646
  getBalanceFromGraphQL,
@@ -4108,8 +2649,6 @@ async function checkAddress(address) {
4108
2649
  getNetworkIdHash,
4109
2650
  getNonce,
4110
2651
  getPaymentTxsFromBlockBerry,
4111
- getTokenSymbolAndAdmin,
4112
- getTokenTransactionSender,
4113
2652
  getTxStatusFast,
4114
2653
  getZkAppFromBlockBerry,
4115
2654
  getZkAppTxFromBlockBerry,
@@ -4128,7 +2667,6 @@ async function checkAddress(address) {
4128
2667
  sleep,
4129
2668
  toBase,
4130
2669
  tokenBalance,
4131
- tokenVerificationKeys,
4132
2670
  transactionParams,
4133
2671
  txStatusBlockberry,
4134
2672
  zkCloudWorker,