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