@silvana-one/mina-utils 0.2.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 (174) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/dist/node/config.d.ts +4 -0
  4. package/dist/node/config.js +5 -0
  5. package/dist/node/config.js.map +1 -0
  6. package/dist/node/index.cjs +1325 -0
  7. package/dist/node/index.d.ts +6 -0
  8. package/dist/node/index.js +7 -0
  9. package/dist/node/index.js.map +1 -0
  10. package/dist/node/networks.d.ts +32 -0
  11. package/dist/node/networks.js +81 -0
  12. package/dist/node/networks.js.map +1 -0
  13. package/dist/node/storage/index.d.ts +2 -0
  14. package/dist/node/storage/index.js +3 -0
  15. package/dist/node/storage/index.js.map +1 -0
  16. package/dist/node/storage/ipfs.d.ts +5 -0
  17. package/dist/node/storage/ipfs.js +16 -0
  18. package/dist/node/storage/ipfs.js.map +1 -0
  19. package/dist/node/storage/pinata.d.ts +6 -0
  20. package/dist/node/storage/pinata.js +40 -0
  21. package/dist/node/storage/pinata.js.map +1 -0
  22. package/dist/node/transactions/account.d.ts +4 -0
  23. package/dist/node/transactions/account.js +44 -0
  24. package/dist/node/transactions/account.js.map +1 -0
  25. package/dist/node/transactions/blockberry.d.ts +21 -0
  26. package/dist/node/transactions/blockberry.js +130 -0
  27. package/dist/node/transactions/blockberry.js.map +1 -0
  28. package/dist/node/transactions/chain.d.ts +1 -0
  29. package/dist/node/transactions/chain.js +2 -0
  30. package/dist/node/transactions/chain.js.map +1 -0
  31. package/dist/node/transactions/index.d.ts +8 -0
  32. package/dist/node/transactions/index.js +9 -0
  33. package/dist/node/transactions/index.js.map +1 -0
  34. package/dist/node/transactions/nonce.d.ts +17 -0
  35. package/dist/node/transactions/nonce.js +91 -0
  36. package/dist/node/transactions/nonce.js.map +1 -0
  37. package/dist/node/transactions/send.d.ts +31 -0
  38. package/dist/node/transactions/send.js +154 -0
  39. package/dist/node/transactions/send.js.map +1 -0
  40. package/dist/node/transactions/tiny-contract.d.ts +5 -0
  41. package/dist/node/transactions/tiny-contract.js +22 -0
  42. package/dist/node/transactions/tiny-contract.js.map +1 -0
  43. package/dist/node/transactions/transaction.d.ts +21 -0
  44. package/dist/node/transactions/transaction.js +222 -0
  45. package/dist/node/transactions/transaction.js.map +1 -0
  46. package/dist/node/transactions/txstatus.d.ts +8 -0
  47. package/dist/node/transactions/txstatus.js +16 -0
  48. package/dist/node/transactions/txstatus.js.map +1 -0
  49. package/dist/node/utils/base64-field.d.ts +5 -0
  50. package/dist/node/utils/base64-field.js +29 -0
  51. package/dist/node/utils/base64-field.js.map +1 -0
  52. package/dist/node/utils/base64.d.ts +6 -0
  53. package/dist/node/utils/base64.js +83 -0
  54. package/dist/node/utils/base64.js.map +1 -0
  55. package/dist/node/utils/fee.d.ts +6 -0
  56. package/dist/node/utils/fee.js +11 -0
  57. package/dist/node/utils/fee.js.map +1 -0
  58. package/dist/node/utils/fetch.d.ts +44 -0
  59. package/dist/node/utils/fetch.js +101 -0
  60. package/dist/node/utils/fetch.js.map +1 -0
  61. package/dist/node/utils/fields.d.ts +13 -0
  62. package/dist/node/utils/fields.js +39 -0
  63. package/dist/node/utils/fields.js.map +1 -0
  64. package/dist/node/utils/index.d.ts +8 -0
  65. package/dist/node/utils/index.js +9 -0
  66. package/dist/node/utils/index.js.map +1 -0
  67. package/dist/node/utils/indexed-map.d.ts +32 -0
  68. package/dist/node/utils/indexed-map.js +124 -0
  69. package/dist/node/utils/indexed-map.js.map +1 -0
  70. package/dist/node/utils/mina.d.ts +39 -0
  71. package/dist/node/utils/mina.js +123 -0
  72. package/dist/node/utils/mina.js.map +1 -0
  73. package/dist/node/utils/utils.d.ts +8 -0
  74. package/dist/node/utils/utils.js +61 -0
  75. package/dist/node/utils/utils.js.map +1 -0
  76. package/dist/tsconfig.tsbuildinfo +1 -0
  77. package/dist/tsconfig.web.tsbuildinfo +1 -0
  78. package/dist/web/config.d.ts +4 -0
  79. package/dist/web/config.js +5 -0
  80. package/dist/web/config.js.map +1 -0
  81. package/dist/web/index.d.ts +6 -0
  82. package/dist/web/index.js +7 -0
  83. package/dist/web/index.js.map +1 -0
  84. package/dist/web/networks.d.ts +32 -0
  85. package/dist/web/networks.js +81 -0
  86. package/dist/web/networks.js.map +1 -0
  87. package/dist/web/storage/index.d.ts +2 -0
  88. package/dist/web/storage/index.js +3 -0
  89. package/dist/web/storage/index.js.map +1 -0
  90. package/dist/web/storage/ipfs.d.ts +5 -0
  91. package/dist/web/storage/ipfs.js +16 -0
  92. package/dist/web/storage/ipfs.js.map +1 -0
  93. package/dist/web/storage/pinata.d.ts +6 -0
  94. package/dist/web/storage/pinata.js +40 -0
  95. package/dist/web/storage/pinata.js.map +1 -0
  96. package/dist/web/transactions/account.d.ts +4 -0
  97. package/dist/web/transactions/account.js +44 -0
  98. package/dist/web/transactions/account.js.map +1 -0
  99. package/dist/web/transactions/blockberry.d.ts +21 -0
  100. package/dist/web/transactions/blockberry.js +130 -0
  101. package/dist/web/transactions/blockberry.js.map +1 -0
  102. package/dist/web/transactions/chain.d.ts +1 -0
  103. package/dist/web/transactions/chain.js +2 -0
  104. package/dist/web/transactions/chain.js.map +1 -0
  105. package/dist/web/transactions/index.d.ts +8 -0
  106. package/dist/web/transactions/index.js +9 -0
  107. package/dist/web/transactions/index.js.map +1 -0
  108. package/dist/web/transactions/nonce.d.ts +17 -0
  109. package/dist/web/transactions/nonce.js +91 -0
  110. package/dist/web/transactions/nonce.js.map +1 -0
  111. package/dist/web/transactions/send.d.ts +31 -0
  112. package/dist/web/transactions/send.js +154 -0
  113. package/dist/web/transactions/send.js.map +1 -0
  114. package/dist/web/transactions/tiny-contract.d.ts +5 -0
  115. package/dist/web/transactions/tiny-contract.js +22 -0
  116. package/dist/web/transactions/tiny-contract.js.map +1 -0
  117. package/dist/web/transactions/transaction.d.ts +21 -0
  118. package/dist/web/transactions/transaction.js +222 -0
  119. package/dist/web/transactions/transaction.js.map +1 -0
  120. package/dist/web/transactions/txstatus.d.ts +8 -0
  121. package/dist/web/transactions/txstatus.js +16 -0
  122. package/dist/web/transactions/txstatus.js.map +1 -0
  123. package/dist/web/utils/base64-field.d.ts +5 -0
  124. package/dist/web/utils/base64-field.js +29 -0
  125. package/dist/web/utils/base64-field.js.map +1 -0
  126. package/dist/web/utils/base64.d.ts +6 -0
  127. package/dist/web/utils/base64.js +83 -0
  128. package/dist/web/utils/base64.js.map +1 -0
  129. package/dist/web/utils/fee.d.ts +6 -0
  130. package/dist/web/utils/fee.js +11 -0
  131. package/dist/web/utils/fee.js.map +1 -0
  132. package/dist/web/utils/fetch.d.ts +44 -0
  133. package/dist/web/utils/fetch.js +101 -0
  134. package/dist/web/utils/fetch.js.map +1 -0
  135. package/dist/web/utils/fields.d.ts +13 -0
  136. package/dist/web/utils/fields.js +39 -0
  137. package/dist/web/utils/fields.js.map +1 -0
  138. package/dist/web/utils/index.d.ts +8 -0
  139. package/dist/web/utils/index.js +9 -0
  140. package/dist/web/utils/index.js.map +1 -0
  141. package/dist/web/utils/indexed-map.d.ts +32 -0
  142. package/dist/web/utils/indexed-map.js +124 -0
  143. package/dist/web/utils/indexed-map.js.map +1 -0
  144. package/dist/web/utils/mina.d.ts +39 -0
  145. package/dist/web/utils/mina.js +123 -0
  146. package/dist/web/utils/mina.js.map +1 -0
  147. package/dist/web/utils/utils.d.ts +8 -0
  148. package/dist/web/utils/utils.js +61 -0
  149. package/dist/web/utils/utils.js.map +1 -0
  150. package/package.json +62 -0
  151. package/src/config.ts +5 -0
  152. package/src/index.ts +6 -0
  153. package/src/networks.ts +130 -0
  154. package/src/storage/index.ts +2 -0
  155. package/src/storage/ipfs.ts +20 -0
  156. package/src/storage/pinata.ts +56 -0
  157. package/src/transactions/account.ts +57 -0
  158. package/src/transactions/blockberry.ts +198 -0
  159. package/src/transactions/chain.ts +1 -0
  160. package/src/transactions/index.ts +8 -0
  161. package/src/transactions/nonce.ts +121 -0
  162. package/src/transactions/send.ts +228 -0
  163. package/src/transactions/tiny-contract.ts +9 -0
  164. package/src/transactions/transaction.ts +319 -0
  165. package/src/transactions/txstatus.ts +26 -0
  166. package/src/utils/base64-field.ts +34 -0
  167. package/src/utils/base64.ts +87 -0
  168. package/src/utils/fee.ts +11 -0
  169. package/src/utils/fetch.ts +130 -0
  170. package/src/utils/fields.ts +39 -0
  171. package/src/utils/index.ts +8 -0
  172. package/src/utils/indexed-map.ts +170 -0
  173. package/src/utils/mina.ts +171 -0
  174. package/src/utils/utils.ts +79 -0
@@ -0,0 +1,6 @@
1
+ export * from "./utils/index.js";
2
+ export * from "./storage/index.js";
3
+ export * from "./transactions/index.js";
4
+ export * from "./utils/index.js";
5
+ export * from "./config.js";
6
+ export * from "./networks.js";
@@ -0,0 +1,7 @@
1
+ export * from "./utils/index.js";
2
+ export * from "./storage/index.js";
3
+ export * from "./transactions/index.js";
4
+ export * from "./utils/index.js";
5
+ export * from "./config.js";
6
+ export * from "./networks.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,32 @@
1
+ export { blockchain, MinaNetwork, networks, Mainnet, Devnet, Zeko, Lightnet, Local, };
2
+ /**
3
+ * blockchain is the type for the chain ID.
4
+ */
5
+ type blockchain = "local" | "devnet" | "lightnet" | "mainnet" | "zeko";
6
+ /**
7
+ * MinaNetwork is the data structure for a Mina network, keeping track of the Mina and archive endpoints, chain ID, name, account manager, explorer account URL, explorer transaction URL, and faucet.
8
+ */
9
+ interface MinaNetwork {
10
+ /** The Mina endpoints */
11
+ mina: string[];
12
+ /** The archive endpoints */
13
+ archive: string[];
14
+ /** The chain ID */
15
+ chainId: blockchain;
16
+ /** The name of the network (optional) */
17
+ name?: string;
18
+ /** The account manager for Lightnet (optional) */
19
+ accountManager?: string;
20
+ /** The explorer account URL (optional) */
21
+ explorerAccountUrl?: string;
22
+ /** The explorer transaction URL (optional) */
23
+ explorerTransactionUrl?: string;
24
+ /** The faucet URL (optional) */
25
+ faucet?: string;
26
+ }
27
+ declare const Mainnet: MinaNetwork;
28
+ declare const Local: MinaNetwork;
29
+ declare const Devnet: MinaNetwork;
30
+ declare const Zeko: MinaNetwork;
31
+ declare const Lightnet: MinaNetwork;
32
+ declare const networks: MinaNetwork[];
@@ -0,0 +1,81 @@
1
+ export { networks, Mainnet, Devnet, Zeko, Lightnet, Local, };
2
+ const Mainnet = {
3
+ mina: [
4
+ //"https://proxy.devnet.minaexplorer.com/graphql",
5
+ "https://api.minascan.io/node/mainnet/v1/graphql",
6
+ ],
7
+ archive: [
8
+ "https://api.minascan.io/archive/mainnet/v1/graphql",
9
+ //"https://archive.devnet.minaexplorer.com",
10
+ ],
11
+ explorerAccountUrl: "https://minascan.io/mainnet/account/",
12
+ explorerTransactionUrl: "https://minascan.io/mainnet/tx/",
13
+ chainId: "mainnet",
14
+ name: "Mainnet",
15
+ };
16
+ const Local = {
17
+ mina: [],
18
+ archive: [],
19
+ chainId: "local",
20
+ };
21
+ const Devnet = {
22
+ mina: [
23
+ "https://api.minascan.io/node/devnet/v1/graphql",
24
+ //"https://proxy.devnet.minaexplorer.com/graphql",
25
+ ],
26
+ archive: [
27
+ "https://api.minascan.io/archive/devnet/v1/graphql",
28
+ //"https://archive.devnet.minaexplorer.com",
29
+ ],
30
+ explorerAccountUrl: "https://minascan.io/devnet/account/",
31
+ explorerTransactionUrl: "https://minascan.io/devnet/tx/",
32
+ chainId: "devnet",
33
+ name: "Devnet",
34
+ faucet: "https://faucet.minaprotocol.com",
35
+ };
36
+ const Zeko = {
37
+ mina: ["https://devnet.zeko.io/graphql"],
38
+ archive: ["https://devnet.zeko.io/graphql"],
39
+ explorerAccountUrl: "https://zekoscan.io/devnet/account/",
40
+ explorerTransactionUrl: "https://zekoscan.io/devnet/tx/",
41
+ chainId: "zeko",
42
+ name: "Zeko",
43
+ faucet: "https://zeko.io/faucet",
44
+ };
45
+ const Lightnet = {
46
+ mina: ["http://localhost:8080/graphql"],
47
+ archive: ["http://localhost:8282"],
48
+ accountManager: "http://localhost:8181",
49
+ chainId: "lightnet",
50
+ name: "Lightnet",
51
+ };
52
+ const networks = [Mainnet, Local, Devnet, Zeko, Lightnet];
53
+ /*
54
+ // not supported by o1js v1
55
+
56
+ const Berkeley: MinaNetwork = {
57
+ mina: [
58
+ "https://api.minascan.io/node/berkeley/v1/graphql",
59
+ "https://proxy.berkeley.minaexplorer.com/graphql",
60
+ ],
61
+ archive: [
62
+ "https://api.minascan.io/archive/berkeley/v1/graphql",
63
+ "https://archive.berkeley.minaexplorer.com",
64
+ ],
65
+ explorerAccountUrl: "https://minascan.io/berkeley/account/",
66
+ explorerTransactionUrl: "https://minascan.io/berkeley/tx/",
67
+ chainId: "berkeley",
68
+ name: "Berkeley",
69
+ };
70
+
71
+ const TestWorld2: MinaNetwork = {
72
+ mina: ["https://api.minascan.io/node/testworld/v1/graphql"],
73
+ archive: ["https://archive.testworld.minaexplorer.com"],
74
+ explorerAccountUrl: "https://minascan.io/testworld/account/",
75
+ explorerTransactionUrl: "https://minascan.io/testworld/tx/",
76
+ chainId: "testworld2",
77
+ name: "TestWorld2",
78
+ };
79
+
80
+ */
81
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,CAAC;AAoCF,MAAM,OAAO,GAAgB;IAC3B,IAAI,EAAE;QACJ,kDAAkD;QAClD,iDAAiD;KAClD;IACD,OAAO,EAAE;QACP,oDAAoD;QACpD,4CAA4C;KAC7C;IACD,kBAAkB,EAAE,sCAAsC;IAC1D,sBAAsB,EAAE,iCAAiC;IACzD,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,KAAK,GAAgB;IACzB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,MAAM,GAAgB;IAC1B,IAAI,EAAE;QACJ,gDAAgD;QAChD,kDAAkD;KACnD;IACD,OAAO,EAAE;QACP,mDAAmD;QACnD,4CAA4C;KAC7C;IACD,kBAAkB,EAAE,qCAAqC;IACzD,sBAAsB,EAAE,gCAAgC;IACxD,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,iCAAiC;CAC1C,CAAC;AAEF,MAAM,IAAI,GAAgB;IACxB,IAAI,EAAE,CAAC,gCAAgC,CAAC;IACxC,OAAO,EAAE,CAAC,gCAAgC,CAAC;IAC3C,kBAAkB,EAAE,qCAAqC;IACzD,sBAAsB,EAAE,gCAAgC;IACxD,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,wBAAwB;CACjC,CAAC;AAEF,MAAM,QAAQ,GAAgB;IAC5B,IAAI,EAAE,CAAC,+BAA+B,CAAC;IACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;IAClC,cAAc,EAAE,uBAAuB;IACvC,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BE"}
@@ -0,0 +1,2 @@
1
+ export * from "./ipfs.js";
2
+ export * from "./pinata.js";
@@ -0,0 +1,3 @@
1
+ export * from "./ipfs.js";
2
+ export * from "./pinata.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function createIpfsURL(params: {
2
+ hash: string;
3
+ gateway?: string;
4
+ apiToken?: string;
5
+ }): string;
@@ -0,0 +1,16 @@
1
+ export function createIpfsURL(params) {
2
+ let { hash, gateway, apiToken } = params;
3
+ gateway ??=
4
+ process.env.PINATA_IPFS_GATEWAY ??
5
+ process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ??
6
+ process.env.REACT_APP_PINATA_IPFS_GATEWAY;
7
+ apiToken ??=
8
+ process.env.PINATA_GATEWAY_TOKEN ??
9
+ process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ??
10
+ process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
11
+ if (!gateway) {
12
+ gateway = "https://gateway.pinata.cloud/ipfs/";
13
+ }
14
+ return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
15
+ }
16
+ //# sourceMappingURL=ipfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/storage/ipfs.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,MAI7B;IACC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IACzC,OAAO;QACL,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,OAAO,CAAC,GAAG,CAAC,+BAA+B;YAC3C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IAC5C,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAChC,OAAO,CAAC,GAAG,CAAC,gCAAgC;YAC5C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,oCAAoC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function pinJSON(params: {
2
+ data: string | object;
3
+ name?: string;
4
+ keyvalues?: object;
5
+ auth?: string;
6
+ }): Promise<string | undefined>;
@@ -0,0 +1,40 @@
1
+ export async function pinJSON(params) {
2
+ const { data, name = "data.json", keyvalues = { library: "zkcloudworker" }, } = params;
3
+ const auth = params.auth ??
4
+ process.env.PINATA_JWT ??
5
+ process.env.NEXT_PUBLIC_PINATA_JWT ??
6
+ process.env.REACT_APP_PINATA_JWT;
7
+ if (!auth)
8
+ throw new Error("pinJSON: auth, PINATA_JWT, NEXT_PUBLIC_PINATA_JWT or REACT_APP_PINATA_JWT should be defined");
9
+ try {
10
+ const pinataData = {
11
+ pinataOptions: {
12
+ cidVersion: 1,
13
+ },
14
+ pinataMetadata: {
15
+ name,
16
+ keyvalues,
17
+ },
18
+ pinataContent: data,
19
+ };
20
+ const res = await fetch("https://api.pinata.cloud/pinning/pinJSONToIPFS", {
21
+ method: "POST",
22
+ headers: {
23
+ "Content-Type": "application/json",
24
+ Authorization: "Bearer " + auth,
25
+ },
26
+ body: JSON.stringify(pinataData),
27
+ });
28
+ if (!res.ok) {
29
+ throw new Error(`Pinata error: status: ${res.status} ${res.statusText}`);
30
+ }
31
+ const responseData = await res.json();
32
+ console.log("saveToIPFS result:", responseData);
33
+ return responseData?.IpfsHash;
34
+ }
35
+ catch (error) {
36
+ console.error("saveToIPFS error:", error?.message);
37
+ return undefined;
38
+ }
39
+ }
40
+ //# sourceMappingURL=pinata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinata.js","sourceRoot":"","sources":["../../../src/storage/pinata.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAK7B;IACC,MAAM,EACJ,IAAI,EACJ,IAAI,GAAG,WAAW,EAClB,SAAS,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,GACzC,GAAG,MAAM,CAAC;IACX,MAAM,IAAI,GACR,MAAM,CAAC,IAAI;QACX,OAAO,CAAC,GAAG,CAAC,UAAU;QACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACnC,IAAI,CAAC,IAAI;QACP,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IAEJ,IAAI,CAAC;QACH,MAAM,UAAU,GAAG;YACjB,aAAa,EAAE;gBACb,UAAU,EAAE,CAAC;aACd;YACD,cAAc,EAAE;gBACd,IAAI;gBACJ,SAAS;aACV;YACD,aAAa,EAAE,IAAI;SACpB,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gDAAgD,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,GAAG,IAAI;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QAChD,OACE,YACD,EAAE,QAAQ,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { PublicKey, Field } from "o1js";
2
+ export declare function accountExists(address: string | PublicKey, tokenId?: Field): Promise<boolean>;
3
+ export declare function tokenBalance(address: string | PublicKey, tokenId?: Field): Promise<number | undefined>;
4
+ export declare function checkAddress(address: string | undefined): Promise<boolean>;
@@ -0,0 +1,44 @@
1
+ import { fetchMinaAccount } from "../utils/fetch.js";
2
+ import { Mina, PublicKey } from "o1js";
3
+ export async function accountExists(address, tokenId) {
4
+ try {
5
+ const publicKey = typeof address === "string" ? PublicKey.fromBase58(address) : address;
6
+ await fetchMinaAccount({ publicKey, tokenId, force: false });
7
+ return Mina.hasAccount(publicKey, tokenId);
8
+ }
9
+ catch (error) {
10
+ return false;
11
+ }
12
+ }
13
+ export async function tokenBalance(address, tokenId) {
14
+ try {
15
+ const publicKey = typeof address === "string" ? PublicKey.fromBase58(address) : address;
16
+ await fetchMinaAccount({ publicKey, tokenId, force: false });
17
+ return Mina.hasAccount(publicKey, tokenId)
18
+ ? Number(Mina.getAccount(publicKey, tokenId).balance.toBigInt())
19
+ : undefined;
20
+ }
21
+ catch (error) {
22
+ console.error("Cannot fetch account balance", error);
23
+ return undefined;
24
+ }
25
+ }
26
+ export async function checkAddress(address) {
27
+ if (!address || typeof address !== "string") {
28
+ console.error("checkAddress params are invalid:", address);
29
+ return false;
30
+ }
31
+ try {
32
+ const publicKey = PublicKey.fromBase58(address);
33
+ if (address !== publicKey.toBase58()) {
34
+ console.log("checkAddress: address is not valid", address, publicKey.toBase58());
35
+ return false;
36
+ }
37
+ return true;
38
+ }
39
+ catch (error) {
40
+ console.error("checkAddress catch", { address, error });
41
+ return false;
42
+ }
43
+ }
44
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/transactions/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAS,MAAM,MAAM,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA2B,EAC3B,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,SAAS,GACb,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA2B,EAC3B,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,SAAS,GACb,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChE,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA2B;IAE3B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,oCAAoC,EACpC,OAAO,EACP,SAAS,CAAC,QAAQ,EAAE,CACrB,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { BlockBerryChain } from "./chain.js";
2
+ export declare function getZkAppTxsFromBlockBerry(params: {
3
+ account: string;
4
+ chain: BlockBerryChain;
5
+ blockBerryApiKey: string;
6
+ }): Promise<any>;
7
+ export declare function getPaymentTxsFromBlockBerry(params: {
8
+ account: string;
9
+ chain: BlockBerryChain;
10
+ blockBerryApiKey: string;
11
+ }): Promise<any>;
12
+ export declare function getZkAppTxFromBlockBerry(params: {
13
+ hash: string;
14
+ chain: BlockBerryChain;
15
+ blockBerryApiKey: string;
16
+ }): Promise<any>;
17
+ export declare function getZkAppFromBlockBerry(params: {
18
+ account: string;
19
+ chain: BlockBerryChain;
20
+ blockBerryApiKey: string;
21
+ }): Promise<any>;
@@ -0,0 +1,130 @@
1
+ export async function getZkAppTxsFromBlockBerry(params) {
2
+ const { account, chain, blockBerryApiKey } = params;
3
+ const options = {
4
+ method: "GET",
5
+ headers: {
6
+ accept: "application/json",
7
+ "x-api-key": blockBerryApiKey,
8
+ },
9
+ };
10
+ try {
11
+ const controller = new AbortController();
12
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 seconds timeout
13
+ const response = await fetch(`https://api.blockberry.one/mina-${chain}/v1/zkapps/accounts/${account}/txs?size=10&orderBy=DESC&sortBy=AGE`, {
14
+ ...options,
15
+ signal: controller.signal,
16
+ });
17
+ clearTimeout(timeoutId); // Clear the timeout if the fetch completes successfully
18
+ if (!response.ok) {
19
+ console.error("Cannot fetch zkApp txs for account:", account, chain, response.statusText);
20
+ return undefined;
21
+ }
22
+ const result = await response.json();
23
+ //console.log("zkAppTxs", result);
24
+ return result;
25
+ }
26
+ catch (err) {
27
+ console.error("Cannot fetch zkApp txs for account - catch:", account, chain, err);
28
+ return undefined;
29
+ }
30
+ }
31
+ export async function getPaymentTxsFromBlockBerry(params) {
32
+ const { account, chain, blockBerryApiKey } = params;
33
+ const options = {
34
+ method: "GET",
35
+ headers: {
36
+ accept: "application/json",
37
+ "x-api-key": blockBerryApiKey,
38
+ },
39
+ };
40
+ try {
41
+ const controller = new AbortController();
42
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 seconds timeout
43
+ const response = await fetch(`https://api.blockberry.one/mina-${chain}/v1/accounts/` +
44
+ account +
45
+ "/txs?page=0&size=1&orderBy=DESC&sortBy=AGE&direction=OUT", {
46
+ ...options,
47
+ signal: controller.signal,
48
+ });
49
+ clearTimeout(timeoutId); // Clear the timeout if the fetch completes successfully
50
+ if (!response.ok) {
51
+ console.error("Cannot fetch payment txs for account:", account, chain, response.statusText);
52
+ return undefined;
53
+ }
54
+ const result = await response.json();
55
+ //console.log("paymentTxs", result);
56
+ return result;
57
+ }
58
+ catch (err) {
59
+ console.error("Cannot fetch payment txs for account - catch:", account, chain, err);
60
+ return undefined;
61
+ }
62
+ }
63
+ export async function getZkAppTxFromBlockBerry(params) {
64
+ const { hash, chain, blockBerryApiKey } = params;
65
+ const options = {
66
+ method: "GET",
67
+ headers: {
68
+ accept: "application/json",
69
+ "x-api-key": blockBerryApiKey,
70
+ },
71
+ };
72
+ try {
73
+ const controller = new AbortController();
74
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 seconds timeout
75
+ const response = await fetch(`https://api.blockberry.one/mina-${chain}/v1/zkapps/txs/${hash}`, {
76
+ ...options,
77
+ signal: controller.signal,
78
+ });
79
+ clearTimeout(timeoutId); // Clear the timeout if the fetch completes successfully
80
+ if (response.ok) {
81
+ const result = await response.json();
82
+ return result;
83
+ }
84
+ else {
85
+ console.error("getZkAppTxFromBlockBerry error while getting hash - not ok", { hash, chain, text: response.statusText, status: response.status });
86
+ return undefined;
87
+ }
88
+ }
89
+ catch (err) {
90
+ console.error("getZkAppTxFromBlockBerry error while getting mainnet hash - catch", hash, chain, err);
91
+ return undefined;
92
+ }
93
+ }
94
+ export async function getZkAppFromBlockBerry(params) {
95
+ const { account, chain, blockBerryApiKey } = params;
96
+ const options = {
97
+ method: "GET",
98
+ headers: {
99
+ accept: "application/json",
100
+ "x-api-key": blockBerryApiKey,
101
+ },
102
+ };
103
+ try {
104
+ const controller = new AbortController();
105
+ const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 seconds timeout
106
+ const response = await fetch(`https://api.blockberry.one/mina-${chain}/v1/zkapps/${account}`, {
107
+ ...options,
108
+ signal: controller.signal,
109
+ });
110
+ clearTimeout(timeoutId); // Clear the timeout if the fetch completes successfully
111
+ if (response.ok) {
112
+ const result = await response.json();
113
+ return result;
114
+ }
115
+ else {
116
+ console.error("getZkAppFromBlockBerry error while getting account", {
117
+ account,
118
+ chain,
119
+ text: response.statusText,
120
+ status: response.status,
121
+ });
122
+ return undefined;
123
+ }
124
+ }
125
+ catch (err) {
126
+ console.error("getZkAppFromBlockBerry error while getting account - catch", account, chain, err);
127
+ return undefined;
128
+ }
129
+ }
130
+ //# sourceMappingURL=blockberry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockberry.js","sourceRoot":"","sources":["../../../src/transactions/blockberry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type BlockBerryChain = "mainnet" | "devnet";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/transactions/chain.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export * from "./nonce.js";
2
+ export * from "./transaction.js";
3
+ export * from "./txstatus.js";
4
+ export * from "./chain.js";
5
+ export * from "./blockberry.js";
6
+ export * from "./tiny-contract.js";
7
+ export * from "./send.js";
8
+ export * from "./account.js";
@@ -0,0 +1,9 @@
1
+ export * from "./nonce.js";
2
+ export * from "./transaction.js";
3
+ export * from "./txstatus.js";
4
+ export * from "./chain.js";
5
+ export * from "./blockberry.js";
6
+ export * from "./tiny-contract.js";
7
+ export * from "./send.js";
8
+ export * from "./account.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BlockBerryChain } from "./chain.js";
2
+ import { blockchain } from "../networks.js";
3
+ export declare function getNonce(params: {
4
+ account: string;
5
+ chain: BlockBerryChain;
6
+ blockBerryApiKey: string;
7
+ }): Promise<{
8
+ success: boolean;
9
+ nonce: number;
10
+ message?: string;
11
+ }>;
12
+ export declare function getAccountNonce(params: {
13
+ account: string;
14
+ chain?: blockchain;
15
+ blockBerryApiKey?: string;
16
+ verbose?: boolean;
17
+ }): Promise<number>;
@@ -0,0 +1,91 @@
1
+ import { getZkAppTxsFromBlockBerry, getPaymentTxsFromBlockBerry, } from "./blockberry.js";
2
+ import { fetchMinaAccount } from "../utils/fetch.js";
3
+ import { getCurrentNetwork } from "../utils/mina.js";
4
+ import { Mina, PublicKey } from "o1js";
5
+ export async function getNonce(params) {
6
+ const { account, chain, blockBerryApiKey } = params;
7
+ try {
8
+ if (account === undefined || account === null || account === "") {
9
+ return {
10
+ success: false,
11
+ nonce: -1,
12
+ message: "Account is required",
13
+ };
14
+ }
15
+ if (blockBerryApiKey === undefined ||
16
+ blockBerryApiKey === null ||
17
+ blockBerryApiKey === "") {
18
+ return {
19
+ success: false,
20
+ nonce: -1,
21
+ message: "blockBerryApiKey is required",
22
+ };
23
+ }
24
+ const zkAppTxsPromise = getZkAppTxsFromBlockBerry({
25
+ account,
26
+ chain,
27
+ blockBerryApiKey,
28
+ });
29
+ const paymentTxs = getPaymentTxsFromBlockBerry({
30
+ account,
31
+ chain,
32
+ blockBerryApiKey,
33
+ });
34
+ const paymentNonce = (await paymentTxs)?.data[0]?.nonce ?? -1;
35
+ let zkNonce = -1;
36
+ let found = false;
37
+ const zkAppTxs = await zkAppTxsPromise;
38
+ const size = zkAppTxs?.data?.length ?? 0;
39
+ let i = 0;
40
+ while (!found && i < size) {
41
+ if (zkAppTxs?.data[i]?.proverAddress === account) {
42
+ zkNonce = zkAppTxs?.data[i]?.nonce;
43
+ found = true;
44
+ }
45
+ i++;
46
+ }
47
+ const nonce = Math.max(zkNonce, paymentNonce);
48
+ return {
49
+ success: true,
50
+ nonce,
51
+ };
52
+ }
53
+ catch (error) {
54
+ return {
55
+ success: false,
56
+ nonce: -1,
57
+ message: String(error),
58
+ };
59
+ }
60
+ }
61
+ export async function getAccountNonce(params) {
62
+ const { account, chain = getCurrentNetwork().network.chainId, blockBerryApiKey, verbose = true, } = params;
63
+ const canUseBlockBerry = blockBerryApiKey !== undefined &&
64
+ (chain === "devnet" || chain === "mainnet");
65
+ if (chain === "zeko") {
66
+ const publicKey = PublicKey.fromBase58(account);
67
+ await fetchMinaAccount({ publicKey });
68
+ const nonce = Number(Mina.getAccount(publicKey).nonce.toBigint());
69
+ return nonce;
70
+ }
71
+ else {
72
+ const blockberryNoncePromise = canUseBlockBerry
73
+ ? getNonce({
74
+ account,
75
+ blockBerryApiKey,
76
+ chain,
77
+ })
78
+ : undefined;
79
+ const publicKey = PublicKey.fromBase58(account);
80
+ await fetchMinaAccount({ publicKey });
81
+ const senderNonce = Number(Mina.getAccount(publicKey).nonce.toBigint());
82
+ const blockberryNonce = blockberryNoncePromise
83
+ ? (await blockberryNoncePromise).nonce ?? -1
84
+ : -1;
85
+ const nonce = Math.max(senderNonce, blockberryNonce + 1);
86
+ if (verbose && nonce > senderNonce)
87
+ console.log(`Nonce changed from ${senderNonce} to ${nonce} for ${account}`);
88
+ return nonce;
89
+ }
90
+ }
91
+ //# sourceMappingURL=nonce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce.js","sourceRoot":"","sources":["../../../src/transactions/nonce.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Mina } from "o1js";
2
+ import { blockchain } from "../networks.js";
3
+ /**
4
+ * The function `sendTx` sends a transaction, checks account updates, and waits for
5
+ * confirmation on the blockchain.
6
+ * @param params The parameters object
7
+ * @param params.tx The transaction to send
8
+ * @param params.description A description of the transaction
9
+ * @param params.verbose Whether to log verbose information
10
+ * @param params.wait Whether to wait for the transaction to be included in a block
11
+ * @param params.chain The blockchain to send the transaction on
12
+ * @returns The `sendTx` function returns a `Mina.IncludedTransaction`, `Mina.PendingTransaction`,
13
+ * `Mina.RejectedTransaction`, or `undefined` if there was an error during the process.
14
+ */
15
+ export declare function sendTx(params: {
16
+ tx: Mina.Transaction<false, true> | Mina.Transaction<true, true>;
17
+ description?: string;
18
+ retry?: number;
19
+ verbose?: boolean;
20
+ wait?: boolean;
21
+ chain?: blockchain;
22
+ delay?: number;
23
+ }): Promise<Mina.IncludedTransaction | Mina.PendingTransaction | Mina.RejectedTransaction | undefined>;
24
+ export declare function getTxStatusFast(params: {
25
+ hash: string;
26
+ chain?: blockchain;
27
+ }): Promise<{
28
+ success: boolean;
29
+ result?: boolean;
30
+ error?: string;
31
+ }>;