@typus/typus-sdk 1.8.30 → 1.8.32
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/src/utils/index.js
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
2
|
+
export type TypusOracleData = {
|
|
3
|
+
success: boolean;
|
|
4
|
+
data: {
|
|
5
|
+
price: string;
|
|
6
|
+
volume: string;
|
|
7
|
+
server_ts_ms: number;
|
|
8
|
+
local_ts_ms: number;
|
|
9
|
+
twap: string;
|
|
10
|
+
};
|
|
11
|
+
signed: {
|
|
12
|
+
pair: string;
|
|
13
|
+
price: string;
|
|
14
|
+
twap: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
signature: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const parseFullTypusOracleData: (data: TypusOracleData) => {
|
|
20
|
+
data: {
|
|
21
|
+
price: string;
|
|
22
|
+
volume: string;
|
|
23
|
+
server_ts_ms: number;
|
|
24
|
+
local_ts_ms: number;
|
|
25
|
+
twap: string;
|
|
26
|
+
};
|
|
27
|
+
signed: {
|
|
28
|
+
pair: string;
|
|
29
|
+
price: string;
|
|
30
|
+
twap: string;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
signature: string;
|
|
33
|
+
};
|
|
34
|
+
} | null;
|
|
35
|
+
export declare function updateOracleWithSignatureTx(network: "MAINNET" | "TESTNET", tx: Transaction, oracleContract: string, tokenType: string): Promise<Transaction>;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.parseFullTypusOracleData = void 0;
|
|
43
|
+
exports.updateOracleWithSignatureTx = updateOracleWithSignatureTx;
|
|
44
|
+
var utils_1 = require("@mysten/sui/utils");
|
|
45
|
+
var axios_1 = __importDefault(require("axios"));
|
|
46
|
+
var constants_1 = require("../../src/constants");
|
|
47
|
+
var token_1 = require("../../src/constants/token");
|
|
48
|
+
var bcs_1 = require("@mysten/bcs");
|
|
49
|
+
var parseFullTypusOracleData = function (data) {
|
|
50
|
+
if (data.success == true) {
|
|
51
|
+
return {
|
|
52
|
+
data: data.data,
|
|
53
|
+
signed: data.signed,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
};
|
|
58
|
+
exports.parseFullTypusOracleData = parseFullTypusOracleData;
|
|
59
|
+
function updateOracleWithSignatureTx(network, tx, oracleContract, tokenType) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
61
|
+
var baseTokenType, oracleData, result, error_1, oracleAddress, oracleIdBytes, pairBytes, priceBytes, twapBytes, timestampBytes, totalLength, messageBytes, offset, signatureHex, signatureBytes;
|
|
62
|
+
return __generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
baseTokenType = tokenType.startsWith("0x") ? tokenType.slice(2) : tokenType;
|
|
66
|
+
oracleData = null;
|
|
67
|
+
_a.label = 1;
|
|
68
|
+
case 1:
|
|
69
|
+
_a.trys.push([1, 3, , 4]);
|
|
70
|
+
return [4 /*yield*/, axios_1.default.get("https://asia-east1-aqueous-freedom-378103.cloudfunctions.net/get-price?pair=".concat(tokenType))];
|
|
71
|
+
case 2:
|
|
72
|
+
result = _a.sent();
|
|
73
|
+
if (result.data) {
|
|
74
|
+
oracleData = (0, exports.parseFullTypusOracleData)(result.data);
|
|
75
|
+
}
|
|
76
|
+
return [3 /*break*/, 4];
|
|
77
|
+
case 3:
|
|
78
|
+
error_1 = _a.sent();
|
|
79
|
+
console.error(error_1);
|
|
80
|
+
return [2 /*return*/, tx];
|
|
81
|
+
case 4:
|
|
82
|
+
oracleAddress = constants_1.oracle[network][(0, token_1.typeArgToAsset)((0, utils_1.normalizeStructTag)(tokenType))];
|
|
83
|
+
if (oracleData && oracleAddress) {
|
|
84
|
+
oracleIdBytes = (0, bcs_1.fromHex)(oracleAddress.startsWith('0x') ? oracleAddress.slice(2) : oracleAddress);
|
|
85
|
+
pairBytes = new Uint8Array(Buffer.from(baseTokenType, "utf8"));
|
|
86
|
+
priceBytes = bcs_1.bcs.u64().serialize(oracleData.signed.price).toBytes();
|
|
87
|
+
twapBytes = bcs_1.bcs.u64().serialize(oracleData.signed.twap).toBytes();
|
|
88
|
+
timestampBytes = bcs_1.bcs.u64().serialize(oracleData.signed.timestamp.toString()).toBytes();
|
|
89
|
+
totalLength = oracleIdBytes.length + pairBytes.length + priceBytes.length + twapBytes.length + timestampBytes.length;
|
|
90
|
+
messageBytes = new Uint8Array(totalLength);
|
|
91
|
+
offset = 0;
|
|
92
|
+
messageBytes.set(oracleIdBytes, offset);
|
|
93
|
+
offset += oracleIdBytes.length;
|
|
94
|
+
messageBytes.set(pairBytes, offset);
|
|
95
|
+
offset += pairBytes.length;
|
|
96
|
+
messageBytes.set(priceBytes, offset);
|
|
97
|
+
offset += priceBytes.length;
|
|
98
|
+
messageBytes.set(twapBytes, offset);
|
|
99
|
+
offset += twapBytes.length;
|
|
100
|
+
messageBytes.set(timestampBytes, offset);
|
|
101
|
+
signatureHex = oracleData.signed.signature;
|
|
102
|
+
signatureBytes = Uint8Array.from((0, bcs_1.fromHex)(signatureHex));
|
|
103
|
+
// TODO: replace oracle address with the actual oracle address
|
|
104
|
+
tx.moveCall({
|
|
105
|
+
target: "".concat(oracleContract, "::oracle::update_with_signature"),
|
|
106
|
+
typeArguments: [],
|
|
107
|
+
arguments: [
|
|
108
|
+
tx.object(oracleAddress),
|
|
109
|
+
tx.pure.vector("u8", signatureBytes),
|
|
110
|
+
tx.pure.vector("u8", messageBytes),
|
|
111
|
+
tx.pure.vector("u8", pairBytes),
|
|
112
|
+
tx.pure.u64(oracleData.signed.price),
|
|
113
|
+
tx.pure.u64(oracleData.signed.twap),
|
|
114
|
+
tx.pure.u64(oracleData.signed.timestamp.toString()),
|
|
115
|
+
tx.object("0x6")
|
|
116
|
+
],
|
|
117
|
+
});
|
|
118
|
+
return [2 /*return*/, tx];
|
|
119
|
+
}
|
|
120
|
+
console.error("Oracle data not found for token type:", tokenType);
|
|
121
|
+
return [2 /*return*/, tx];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@typus/typus-sdk",
|
|
3
3
|
"author": "Typus",
|
|
4
4
|
"description": "typus sdk",
|
|
5
|
-
"version": "1.8.
|
|
5
|
+
"version": "1.8.32",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@mysten/bcs": "^1.6.1",
|
|
8
8
|
"@mysten/kiosk": "^0.12.6",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"@pythnetwork/pyth-sui-js": "2.3.0",
|
|
11
11
|
"@shinami/clients": "^0.9.6",
|
|
12
12
|
"@types/node": "^20.5.7",
|
|
13
|
+
"axios": "1.13.2",
|
|
13
14
|
"bignumber.js": "^9.1.2",
|
|
14
15
|
"camelcase-keys-deep": "^0.1.0",
|
|
15
16
|
"crypto-js": "^4.2.0",
|
|
@@ -50,5 +51,5 @@
|
|
|
50
51
|
"url": "https://github.com/Typus-Lab/typus-sdk/issues"
|
|
51
52
|
},
|
|
52
53
|
"homepage": "https://github.com/Typus-Lab/typus-sdk#readme",
|
|
53
|
-
"packageManager": "yarn@
|
|
54
|
-
}
|
|
54
|
+
"packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f"
|
|
55
|
+
}
|