@silvana-one/coordination 1.0.23 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/build.d.ts +5 -0
- package/dist/node/build.js +21 -0
- package/dist/node/build.js.map +1 -0
- package/dist/node/faucet.d.ts +34 -0
- package/dist/node/faucet.js +91 -0
- package/dist/node/faucet.js.map +1 -0
- package/dist/node/index.cjs +337 -4
- package/dist/node/index.d.ts +5 -0
- package/dist/node/index.js +5 -0
- package/dist/node/index.js.map +1 -1
- package/dist/node/ipfs.d.ts +13 -0
- package/dist/node/ipfs.js +88 -0
- package/dist/node/ipfs.js.map +1 -0
- package/dist/node/public-key.d.ts +24 -0
- package/dist/node/public-key.js +44 -0
- package/dist/node/public-key.js.map +1 -0
- package/dist/node/publish.js.map +1 -1
- package/dist/node/upgrade.js +1 -12
- package/dist/node/upgrade.js.map +1 -1
- package/dist/node/walrus.d.ts +12 -0
- package/dist/node/walrus.js +73 -0
- package/dist/node/walrus.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/build.d.ts +5 -0
- package/dist/web/build.js +21 -0
- package/dist/web/build.js.map +1 -0
- package/dist/web/faucet.d.ts +34 -0
- package/dist/web/faucet.js +91 -0
- package/dist/web/faucet.js.map +1 -0
- package/dist/web/index.d.ts +5 -0
- package/dist/web/index.js +5 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/ipfs.d.ts +13 -0
- package/dist/web/ipfs.js +88 -0
- package/dist/web/ipfs.js.map +1 -0
- package/dist/web/public-key.d.ts +24 -0
- package/dist/web/public-key.js +44 -0
- package/dist/web/public-key.js.map +1 -0
- package/dist/web/publish.js.map +1 -1
- package/dist/web/upgrade.js +1 -12
- package/dist/web/upgrade.js.map +1 -1
- package/dist/web/walrus.d.ts +12 -0
- package/dist/web/walrus.js +73 -0
- package/dist/web/walrus.js.map +1 -0
- package/package.json +6 -5
- package/src/build.ts +33 -0
- package/src/faucet.ts +145 -0
- package/src/index.ts +5 -0
- package/src/ipfs.ts +105 -0
- package/src/public-key.ts +66 -0
- package/src/publish.ts +0 -2
- package/src/upgrade.ts +1 -18
- package/src/walrus.ts +96 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export async function buildMovePackage(path) {
|
|
2
|
+
const { execSync } = await import("child_process");
|
|
3
|
+
let bytes = undefined;
|
|
4
|
+
console.log("Running sui client publish command...");
|
|
5
|
+
try {
|
|
6
|
+
const output = execSync(`sui move build --dump-bytecode-as-base64 --ignore-chain --path ${path}`, {
|
|
7
|
+
encoding: "utf-8",
|
|
8
|
+
});
|
|
9
|
+
bytes = JSON.parse(output);
|
|
10
|
+
if (!bytes) {
|
|
11
|
+
throw new Error("Error building package");
|
|
12
|
+
}
|
|
13
|
+
return bytes;
|
|
14
|
+
//console.log("Command output:", bytes);
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.error("Error running command:", error);
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAKjD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,KAAK,GAMO,SAAS,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CACrB,kEAAkE,IAAI,EAAE,EACxE;YACE,QAAQ,EAAE,OAAO;SAClB,CACF,CAAC;QACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;QACb,wCAAwC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare function silvanaFaucet(params: {
|
|
2
|
+
address: string;
|
|
3
|
+
amount?: number;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
message: string;
|
|
6
|
+
success: true;
|
|
7
|
+
transaction_hash: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function silvanaFaucetGetKey(params?: {
|
|
10
|
+
autoReturn: boolean;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
key_pair: {
|
|
13
|
+
address: string;
|
|
14
|
+
issued_at: string;
|
|
15
|
+
private_key_bech32: string;
|
|
16
|
+
private_key_hex: string;
|
|
17
|
+
public_key: string;
|
|
18
|
+
};
|
|
19
|
+
message: string;
|
|
20
|
+
success: true;
|
|
21
|
+
}>;
|
|
22
|
+
export declare function silvanaFaucetPingKey(params: {
|
|
23
|
+
address: string;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
message: string;
|
|
26
|
+
success: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function silvanaFaucetReturnKey(params: {
|
|
29
|
+
address?: string;
|
|
30
|
+
secretKey?: string;
|
|
31
|
+
}): Promise<{
|
|
32
|
+
message: string;
|
|
33
|
+
success: boolean;
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
|
|
3
|
+
export async function silvanaFaucet(params) {
|
|
4
|
+
const { address, amount = 1 } = params;
|
|
5
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/fund`, {
|
|
6
|
+
method: "POST",
|
|
7
|
+
headers: {
|
|
8
|
+
"Content-Type": "application/json",
|
|
9
|
+
},
|
|
10
|
+
body: JSON.stringify({
|
|
11
|
+
address,
|
|
12
|
+
amount,
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(`Failed to fund address: ${address} ${amount} ${response.status} ${response.statusText}`);
|
|
17
|
+
}
|
|
18
|
+
return response.json();
|
|
19
|
+
}
|
|
20
|
+
export async function silvanaFaucetGetKey(params = {
|
|
21
|
+
autoReturn: false,
|
|
22
|
+
}) {
|
|
23
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/get_key`, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
headers: {
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
},
|
|
28
|
+
body: JSON.stringify({
|
|
29
|
+
auto_return: params.autoReturn,
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
throw new Error(`Failed to get key: ${response.status} ${response.statusText}`);
|
|
34
|
+
}
|
|
35
|
+
return response.json();
|
|
36
|
+
}
|
|
37
|
+
export async function silvanaFaucetPingKey(params) {
|
|
38
|
+
const { address } = params;
|
|
39
|
+
if (!address) {
|
|
40
|
+
return {
|
|
41
|
+
message: "Address is required",
|
|
42
|
+
success: false,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/ping_key`, {
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers: {
|
|
48
|
+
"Content-Type": "application/json",
|
|
49
|
+
},
|
|
50
|
+
body: JSON.stringify({
|
|
51
|
+
address,
|
|
52
|
+
}),
|
|
53
|
+
});
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
throw new Error(`Failed to return key: ${response.status} ${response.statusText}`);
|
|
56
|
+
}
|
|
57
|
+
return response.json();
|
|
58
|
+
}
|
|
59
|
+
export async function silvanaFaucetReturnKey(params) {
|
|
60
|
+
const address = params.address ??
|
|
61
|
+
(params.secretKey
|
|
62
|
+
? Ed25519Keypair.fromSecretKey(params.secretKey).toSuiAddress()
|
|
63
|
+
: undefined);
|
|
64
|
+
if (!address) {
|
|
65
|
+
return {
|
|
66
|
+
message: "Address or secret key is required",
|
|
67
|
+
success: false,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/return_key`, {
|
|
71
|
+
method: "POST",
|
|
72
|
+
headers: {
|
|
73
|
+
"Content-Type": "application/json",
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify({
|
|
76
|
+
address,
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
throw new Error(`Failed to return key: ${response.status} ${response.statusText}`);
|
|
81
|
+
}
|
|
82
|
+
return response.json();
|
|
83
|
+
}
|
|
84
|
+
function silvanaFaucetEndpoint() {
|
|
85
|
+
const silvanaFaucetEndpoint = process.env.SILVANA_FAUCET_ENDPOINT;
|
|
86
|
+
if (!silvanaFaucetEndpoint) {
|
|
87
|
+
throw new Error("SILVANA_FAUCET_ENDPOINT is not set");
|
|
88
|
+
}
|
|
89
|
+
return silvanaFaucetEndpoint;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=faucet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faucet.js","sourceRoot":"","sources":["../../src/faucet.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,27 +17,54 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// dist/node/index.js
|
|
21
31
|
var index_exports = {};
|
|
22
32
|
__export(index_exports, {
|
|
23
33
|
AgentRegistry: () => AgentRegistry,
|
|
34
|
+
buildMovePackage: () => buildMovePackage,
|
|
24
35
|
buildPublishTx: () => buildPublishTx,
|
|
25
36
|
buildUpgradeTx: () => buildUpgradeTx,
|
|
26
37
|
convertFieldsToPublicKey: () => convertFieldsToPublicKey,
|
|
38
|
+
convertMinaPublicKey: () => convertMinaPublicKey,
|
|
39
|
+
convertMinaPublicKeyToFields: () => convertMinaPublicKeyToFields,
|
|
27
40
|
convertMinaSignatureFromBase58: () => convertMinaSignatureFromBase58,
|
|
28
41
|
convertMinaSignatureToBase58: () => convertMinaSignatureToBase58,
|
|
29
42
|
executeTx: () => executeTx,
|
|
30
43
|
fetchSuiDynamicField: () => fetchSuiDynamicField,
|
|
31
44
|
fetchSuiDynamicFieldsList: () => fetchSuiDynamicFieldsList,
|
|
32
45
|
fetchSuiObject: () => fetchSuiObject,
|
|
46
|
+
getIPFSUrl: () => getIPFSUrl,
|
|
47
|
+
getWalrusUrl: () => getWalrusUrl,
|
|
33
48
|
network: () => network,
|
|
49
|
+
publicKeyToU256: () => publicKeyToU256,
|
|
34
50
|
publishCodeToMVR: () => publishCodeToMVR,
|
|
35
51
|
publishToMVR: () => publishToMVR,
|
|
52
|
+
readFromIPFS: () => readFromIPFS,
|
|
53
|
+
readFromWalrus: () => readFromWalrus,
|
|
54
|
+
saveToIPFS: () => saveToIPFS,
|
|
55
|
+
saveToWalrus: () => saveToWalrus,
|
|
56
|
+
signFields: () => signFields,
|
|
57
|
+
silvanaFaucet: () => silvanaFaucet,
|
|
58
|
+
silvanaFaucetGetKey: () => silvanaFaucetGetKey,
|
|
59
|
+
silvanaFaucetPingKey: () => silvanaFaucetPingKey,
|
|
60
|
+
silvanaFaucetReturnKey: () => silvanaFaucetReturnKey,
|
|
36
61
|
sleep: () => sleep,
|
|
37
62
|
suiClient: () => suiClient,
|
|
38
|
-
|
|
63
|
+
u256ToFields: () => u256ToFields,
|
|
64
|
+
u256ToPublicKey: () => u256ToPublicKey,
|
|
65
|
+
verifyFields: () => verifyFields,
|
|
66
|
+
waitTx: () => waitTx,
|
|
67
|
+
walrusDaemon: () => walrusDaemon
|
|
39
68
|
});
|
|
40
69
|
module.exports = __toCommonJS(index_exports);
|
|
41
70
|
|
|
@@ -504,8 +533,6 @@ async function buildUpgradeTx(params) {
|
|
|
504
533
|
tx.setGasOwner(address);
|
|
505
534
|
tx.setGasPayment(coins);
|
|
506
535
|
tx.setGasBudget(3e8);
|
|
507
|
-
console.time("sign");
|
|
508
|
-
console.timeEnd("sign");
|
|
509
536
|
return { tx };
|
|
510
537
|
}
|
|
511
538
|
|
|
@@ -906,22 +933,328 @@ var AgentRegistry = class {
|
|
|
906
933
|
}
|
|
907
934
|
}
|
|
908
935
|
};
|
|
936
|
+
|
|
937
|
+
// dist/node/build.js
|
|
938
|
+
async function buildMovePackage(path) {
|
|
939
|
+
const { execSync } = await import("child_process");
|
|
940
|
+
let bytes = void 0;
|
|
941
|
+
console.log("Running sui client publish command...");
|
|
942
|
+
try {
|
|
943
|
+
const output = execSync(`sui move build --dump-bytecode-as-base64 --ignore-chain --path ${path}`, {
|
|
944
|
+
encoding: "utf-8"
|
|
945
|
+
});
|
|
946
|
+
bytes = JSON.parse(output);
|
|
947
|
+
if (!bytes) {
|
|
948
|
+
throw new Error("Error building package");
|
|
949
|
+
}
|
|
950
|
+
return bytes;
|
|
951
|
+
} catch (error) {
|
|
952
|
+
console.error("Error running command:", error);
|
|
953
|
+
throw error;
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
// dist/node/walrus.js
|
|
958
|
+
var walrusDaemon = process.env.NEXT_PUBLIC_WALRUS_DAEMON || process.env.WALRUS_DAEMON || "testnet";
|
|
959
|
+
var daemon = walrusDaemon === "local" ? "local" : "testnet";
|
|
960
|
+
var basePublisherUrl = daemon === "local" ? "http://127.0.0.1:31415" : "https://wal-publisher-testnet.staketab.org";
|
|
961
|
+
var readerUrl = daemon === "local" ? "http://127.0.0.1:31415/v1/blobs/" : "https://wal-aggregator-testnet.staketab.org/v1/blobs/";
|
|
962
|
+
var MIN_EPOCHS = 14;
|
|
963
|
+
var MAX_EPOCHS = 53;
|
|
964
|
+
async function saveToWalrus({ data, address, numEpochs = MIN_EPOCHS }) {
|
|
965
|
+
let sendToParam = address ? `&send_object_to=${address}` : "";
|
|
966
|
+
let epochs = numEpochs < MIN_EPOCHS ? MIN_EPOCHS : numEpochs > MAX_EPOCHS ? MAX_EPOCHS : numEpochs;
|
|
967
|
+
console.log("Writing to Walrus");
|
|
968
|
+
console.time("written");
|
|
969
|
+
const response = await fetch(`${basePublisherUrl}/v1/blobs?epochs=${epochs}${sendToParam}`, {
|
|
970
|
+
method: "PUT",
|
|
971
|
+
body: data
|
|
972
|
+
});
|
|
973
|
+
console.timeEnd("written");
|
|
974
|
+
if (response.status === 200) {
|
|
975
|
+
const info = await response.json();
|
|
976
|
+
const blobId = info?.newlyCreated?.blobObject?.blobId ?? info?.alreadyCertified?.blobId;
|
|
977
|
+
console.log("Walrus blobId", blobId);
|
|
978
|
+
return blobId;
|
|
979
|
+
} else {
|
|
980
|
+
console.error("saveToDA failed:", {
|
|
981
|
+
statusText: response.statusText,
|
|
982
|
+
status: response.status
|
|
983
|
+
});
|
|
984
|
+
return void 0;
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
async function readFromWalrus({ blobId }) {
|
|
988
|
+
if (!blobId) {
|
|
989
|
+
throw new Error("blobId is not provided");
|
|
990
|
+
}
|
|
991
|
+
console.log("Reading walrus blob", blobId);
|
|
992
|
+
console.time("read");
|
|
993
|
+
const response = await fetch(`${readerUrl}${blobId}`);
|
|
994
|
+
console.timeEnd("read");
|
|
995
|
+
if (!response.ok) {
|
|
996
|
+
console.error("readFromDA failed:", {
|
|
997
|
+
statusText: response.statusText,
|
|
998
|
+
status: response.status
|
|
999
|
+
});
|
|
1000
|
+
return void 0;
|
|
1001
|
+
} else {
|
|
1002
|
+
const blob = await response.text();
|
|
1003
|
+
return blob;
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
async function getWalrusUrl(params) {
|
|
1007
|
+
const { blobId } = params;
|
|
1008
|
+
if (!blobId) {
|
|
1009
|
+
throw new Error("blobId is not set");
|
|
1010
|
+
}
|
|
1011
|
+
const url = `${readerUrl}${blobId}`;
|
|
1012
|
+
return url;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
// dist/node/faucet.js
|
|
1016
|
+
var import_ed25519 = require("@mysten/sui/keypairs/ed25519");
|
|
1017
|
+
async function silvanaFaucet(params) {
|
|
1018
|
+
const { address, amount = 1 } = params;
|
|
1019
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/fund`, {
|
|
1020
|
+
method: "POST",
|
|
1021
|
+
headers: {
|
|
1022
|
+
"Content-Type": "application/json"
|
|
1023
|
+
},
|
|
1024
|
+
body: JSON.stringify({
|
|
1025
|
+
address,
|
|
1026
|
+
amount
|
|
1027
|
+
})
|
|
1028
|
+
});
|
|
1029
|
+
if (!response.ok) {
|
|
1030
|
+
throw new Error(`Failed to fund address: ${address} ${amount} ${response.status} ${response.statusText}`);
|
|
1031
|
+
}
|
|
1032
|
+
return response.json();
|
|
1033
|
+
}
|
|
1034
|
+
async function silvanaFaucetGetKey(params = {
|
|
1035
|
+
autoReturn: false
|
|
1036
|
+
}) {
|
|
1037
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/get_key`, {
|
|
1038
|
+
method: "POST",
|
|
1039
|
+
headers: {
|
|
1040
|
+
"Content-Type": "application/json"
|
|
1041
|
+
},
|
|
1042
|
+
body: JSON.stringify({
|
|
1043
|
+
auto_return: params.autoReturn
|
|
1044
|
+
})
|
|
1045
|
+
});
|
|
1046
|
+
if (!response.ok) {
|
|
1047
|
+
throw new Error(`Failed to get key: ${response.status} ${response.statusText}`);
|
|
1048
|
+
}
|
|
1049
|
+
return response.json();
|
|
1050
|
+
}
|
|
1051
|
+
async function silvanaFaucetPingKey(params) {
|
|
1052
|
+
const { address } = params;
|
|
1053
|
+
if (!address) {
|
|
1054
|
+
return {
|
|
1055
|
+
message: "Address is required",
|
|
1056
|
+
success: false
|
|
1057
|
+
};
|
|
1058
|
+
}
|
|
1059
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/ping_key`, {
|
|
1060
|
+
method: "POST",
|
|
1061
|
+
headers: {
|
|
1062
|
+
"Content-Type": "application/json"
|
|
1063
|
+
},
|
|
1064
|
+
body: JSON.stringify({
|
|
1065
|
+
address
|
|
1066
|
+
})
|
|
1067
|
+
});
|
|
1068
|
+
if (!response.ok) {
|
|
1069
|
+
throw new Error(`Failed to return key: ${response.status} ${response.statusText}`);
|
|
1070
|
+
}
|
|
1071
|
+
return response.json();
|
|
1072
|
+
}
|
|
1073
|
+
async function silvanaFaucetReturnKey(params) {
|
|
1074
|
+
const address = params.address ?? (params.secretKey ? import_ed25519.Ed25519Keypair.fromSecretKey(params.secretKey).toSuiAddress() : void 0);
|
|
1075
|
+
if (!address) {
|
|
1076
|
+
return {
|
|
1077
|
+
message: "Address or secret key is required",
|
|
1078
|
+
success: false
|
|
1079
|
+
};
|
|
1080
|
+
}
|
|
1081
|
+
const response = await fetch(`${silvanaFaucetEndpoint()}/return_key`, {
|
|
1082
|
+
method: "POST",
|
|
1083
|
+
headers: {
|
|
1084
|
+
"Content-Type": "application/json"
|
|
1085
|
+
},
|
|
1086
|
+
body: JSON.stringify({
|
|
1087
|
+
address
|
|
1088
|
+
})
|
|
1089
|
+
});
|
|
1090
|
+
if (!response.ok) {
|
|
1091
|
+
throw new Error(`Failed to return key: ${response.status} ${response.statusText}`);
|
|
1092
|
+
}
|
|
1093
|
+
return response.json();
|
|
1094
|
+
}
|
|
1095
|
+
function silvanaFaucetEndpoint() {
|
|
1096
|
+
const silvanaFaucetEndpoint2 = process.env.SILVANA_FAUCET_ENDPOINT;
|
|
1097
|
+
if (!silvanaFaucetEndpoint2) {
|
|
1098
|
+
throw new Error("SILVANA_FAUCET_ENDPOINT is not set");
|
|
1099
|
+
}
|
|
1100
|
+
return silvanaFaucetEndpoint2;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
// dist/node/ipfs.js
|
|
1104
|
+
var import_pinata = require("pinata");
|
|
1105
|
+
var pinataJwt = process.env.PINATA_JWT;
|
|
1106
|
+
var pinataGateway = process.env.PINATA_GATEWAY_URL;
|
|
1107
|
+
var pinataGatewayKey = process.env.PINATA_GATEWAY_API_KEY;
|
|
1108
|
+
var pinata = new import_pinata.PinataSDK({
|
|
1109
|
+
pinataJwt,
|
|
1110
|
+
pinataGateway,
|
|
1111
|
+
pinataGatewayKey
|
|
1112
|
+
});
|
|
1113
|
+
async function saveToIPFS(params) {
|
|
1114
|
+
try {
|
|
1115
|
+
if (!pinataJwt || !pinataGateway || !pinataGatewayKey) {
|
|
1116
|
+
throw new Error("PINATA_JWT, PINATA_GATEWAY_URL, or PINATA_GATEWAY_API_KEY is not set");
|
|
1117
|
+
}
|
|
1118
|
+
const { data, filename, owner, days, description } = params;
|
|
1119
|
+
if (data === void 0 || data === null)
|
|
1120
|
+
throw new Error("data is not set");
|
|
1121
|
+
if (typeof data !== "string")
|
|
1122
|
+
throw new Error("data is not a string");
|
|
1123
|
+
if (data.length === 0)
|
|
1124
|
+
throw new Error("data is empty");
|
|
1125
|
+
const file = new File([data], filename ?? "da", {
|
|
1126
|
+
type: "text/plain"
|
|
1127
|
+
});
|
|
1128
|
+
const expiry = days ? Date.now() + days * 24 * 60 * 60 * 1e3 : void 0;
|
|
1129
|
+
const keyvalues = {
|
|
1130
|
+
app: "dex:devnet",
|
|
1131
|
+
owner: owner ?? "",
|
|
1132
|
+
expires: expiry ? new Date(expiry).toISOString() : "never",
|
|
1133
|
+
expiry: expiry ? expiry.toString() : "0",
|
|
1134
|
+
description: description ?? "",
|
|
1135
|
+
type: "text/plain",
|
|
1136
|
+
mime_type: "text/plain"
|
|
1137
|
+
};
|
|
1138
|
+
const upload = await pinata.upload.public.file(file, {
|
|
1139
|
+
metadata: {
|
|
1140
|
+
name: filename ?? "da",
|
|
1141
|
+
keyvalues
|
|
1142
|
+
}
|
|
1143
|
+
}).name(filename ?? "da");
|
|
1144
|
+
console.log("IPFS: ", upload.cid);
|
|
1145
|
+
return upload.cid;
|
|
1146
|
+
} catch (error) {
|
|
1147
|
+
console.error("Save to IPFS failed", error.message);
|
|
1148
|
+
return void 0;
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
async function readFromIPFS(params) {
|
|
1152
|
+
const { blobId } = params;
|
|
1153
|
+
if (!blobId) {
|
|
1154
|
+
throw new Error("blobId is not set");
|
|
1155
|
+
}
|
|
1156
|
+
try {
|
|
1157
|
+
if (!pinataJwt || !pinataGateway || !pinataGatewayKey) {
|
|
1158
|
+
throw new Error("PINATA_JWT, PINATA_GATEWAY_URL, or PINATA_GATEWAY_API_KEY is not set");
|
|
1159
|
+
}
|
|
1160
|
+
const url = await getIPFSUrl({ blobId });
|
|
1161
|
+
const response = await fetch(url);
|
|
1162
|
+
if (!response.ok) {
|
|
1163
|
+
throw new Error("Failed to fetch from IPFS");
|
|
1164
|
+
}
|
|
1165
|
+
const data = await response.text();
|
|
1166
|
+
return data;
|
|
1167
|
+
} catch (error) {
|
|
1168
|
+
console.error("Read from IPFS failed", error);
|
|
1169
|
+
return void 0;
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
async function getIPFSUrl(params) {
|
|
1173
|
+
const { blobId } = params;
|
|
1174
|
+
if (!blobId) {
|
|
1175
|
+
throw new Error("blobId is not set");
|
|
1176
|
+
}
|
|
1177
|
+
const gateway = process.env.PINATA_GATEWAY_URL ?? "https://gateway.pinata.cloud/ipfs/";
|
|
1178
|
+
const apiToken = process.env.PINATA_GATEWAY_API_KEY;
|
|
1179
|
+
const url = "https://" + gateway + "/ipfs/" + blobId + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
|
|
1180
|
+
return url;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
// dist/node/public-key.js
|
|
1184
|
+
var import_mina_signer = __toESM(require("mina-signer"), 1);
|
|
1185
|
+
var client = new import_mina_signer.default({
|
|
1186
|
+
network: "testnet"
|
|
1187
|
+
});
|
|
1188
|
+
function publicKeyToU256(publicKey) {
|
|
1189
|
+
const raw = client.publicKeyToRaw(publicKey);
|
|
1190
|
+
const swappedRaw = raw.match(/.{1,2}/g)?.reverse().join("") || "";
|
|
1191
|
+
const u256 = BigInt("0x" + swappedRaw);
|
|
1192
|
+
return u256;
|
|
1193
|
+
}
|
|
1194
|
+
var MAX_BIT = 2n ** 255n;
|
|
1195
|
+
function u256ToFields(u256) {
|
|
1196
|
+
const isOdd = (u256 & MAX_BIT) != 0n;
|
|
1197
|
+
const x = u256 - (isOdd ? MAX_BIT : 0n);
|
|
1198
|
+
return { x, isOdd };
|
|
1199
|
+
}
|
|
1200
|
+
function u256ToPublicKey(u256) {
|
|
1201
|
+
const { x, isOdd } = u256ToFields(u256);
|
|
1202
|
+
return convertFieldsToPublicKey({ x, isOdd });
|
|
1203
|
+
}
|
|
1204
|
+
function convertMinaPublicKey(publicKey) {
|
|
1205
|
+
const u256 = publicKeyToU256(publicKey);
|
|
1206
|
+
return u256ToFields(u256);
|
|
1207
|
+
}
|
|
1208
|
+
function convertMinaPublicKeyToFields(publicKey) {
|
|
1209
|
+
if (!publicKey)
|
|
1210
|
+
return [];
|
|
1211
|
+
const { x, isOdd } = convertMinaPublicKey(publicKey);
|
|
1212
|
+
return [x, isOdd ? 1n : 0n];
|
|
1213
|
+
}
|
|
1214
|
+
function signFields(params) {
|
|
1215
|
+
const { privateKey, fields } = params;
|
|
1216
|
+
const signedData = client.signFields(fields.map(BigInt), privateKey);
|
|
1217
|
+
return signedData;
|
|
1218
|
+
}
|
|
1219
|
+
function verifyFields(params) {
|
|
1220
|
+
const { publicKey, fields, signature } = params;
|
|
1221
|
+
return client.verifyFields({ data: fields, publicKey, signature });
|
|
1222
|
+
}
|
|
909
1223
|
// Annotate the CommonJS export names for ESM import in node:
|
|
910
1224
|
0 && (module.exports = {
|
|
911
1225
|
AgentRegistry,
|
|
1226
|
+
buildMovePackage,
|
|
912
1227
|
buildPublishTx,
|
|
913
1228
|
buildUpgradeTx,
|
|
914
1229
|
convertFieldsToPublicKey,
|
|
1230
|
+
convertMinaPublicKey,
|
|
1231
|
+
convertMinaPublicKeyToFields,
|
|
915
1232
|
convertMinaSignatureFromBase58,
|
|
916
1233
|
convertMinaSignatureToBase58,
|
|
917
1234
|
executeTx,
|
|
918
1235
|
fetchSuiDynamicField,
|
|
919
1236
|
fetchSuiDynamicFieldsList,
|
|
920
1237
|
fetchSuiObject,
|
|
1238
|
+
getIPFSUrl,
|
|
1239
|
+
getWalrusUrl,
|
|
921
1240
|
network,
|
|
1241
|
+
publicKeyToU256,
|
|
922
1242
|
publishCodeToMVR,
|
|
923
1243
|
publishToMVR,
|
|
1244
|
+
readFromIPFS,
|
|
1245
|
+
readFromWalrus,
|
|
1246
|
+
saveToIPFS,
|
|
1247
|
+
saveToWalrus,
|
|
1248
|
+
signFields,
|
|
1249
|
+
silvanaFaucet,
|
|
1250
|
+
silvanaFaucetGetKey,
|
|
1251
|
+
silvanaFaucetPingKey,
|
|
1252
|
+
silvanaFaucetReturnKey,
|
|
924
1253
|
sleep,
|
|
925
1254
|
suiClient,
|
|
926
|
-
|
|
1255
|
+
u256ToFields,
|
|
1256
|
+
u256ToPublicKey,
|
|
1257
|
+
verifyFields,
|
|
1258
|
+
waitTx,
|
|
1259
|
+
walrusDaemon
|
|
927
1260
|
});
|
package/dist/node/index.d.ts
CHANGED
|
@@ -7,3 +7,8 @@ export * from "./upgrade.js";
|
|
|
7
7
|
export * from "./mvr.js";
|
|
8
8
|
export * from "./agent.js";
|
|
9
9
|
export * from "./fetch.js";
|
|
10
|
+
export * from "./build.js";
|
|
11
|
+
export * from "./walrus.js";
|
|
12
|
+
export * from "./faucet.js";
|
|
13
|
+
export * from "./ipfs.js";
|
|
14
|
+
export * from "./public-key.js";
|
package/dist/node/index.js
CHANGED
|
@@ -7,4 +7,9 @@ export * from "./upgrade.js";
|
|
|
7
7
|
export * from "./mvr.js";
|
|
8
8
|
export * from "./agent.js";
|
|
9
9
|
export * from "./fetch.js";
|
|
10
|
+
export * from "./build.js";
|
|
11
|
+
export * from "./walrus.js";
|
|
12
|
+
export * from "./faucet.js";
|
|
13
|
+
export * from "./ipfs.js";
|
|
14
|
+
export * from "./public-key.js";
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function saveToIPFS(params: {
|
|
2
|
+
data: string;
|
|
3
|
+
filename?: string;
|
|
4
|
+
owner?: string;
|
|
5
|
+
days?: number;
|
|
6
|
+
description?: string;
|
|
7
|
+
}): Promise<string | undefined>;
|
|
8
|
+
export declare function readFromIPFS(params: {
|
|
9
|
+
blobId: string;
|
|
10
|
+
}): Promise<string | undefined>;
|
|
11
|
+
export declare function getIPFSUrl(params: {
|
|
12
|
+
blobId: string;
|
|
13
|
+
}): Promise<string>;
|