@clonegod/ttd-sol-common 1.0.144 → 1.0.146
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/token/calc_token_amt.d.ts +2 -0
- package/dist/token/calc_token_amt.js +29 -0
- package/dist/token/get_token_info.d.ts +4 -0
- package/dist/token/get_token_info.js +125 -0
- package/dist/token/get_token_price.d.ts +5 -0
- package/dist/token/get_token_price.js +149 -0
- package/dist/token/index.d.ts +4 -0
- package/dist/token/index.js +20 -0
- package/dist/token/types.d.ts +17 -0
- package/dist/token/types.js +2 -0
- package/dist/token/util.d.ts +3 -0
- package/dist/token/util.js +33 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.calculate_token_amount = void 0;
|
|
13
|
+
const get_token_price_1 = require("./get_token_price");
|
|
14
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
15
|
+
const calculate_token_amount = (token_info_1, ...args_1) => __awaiter(void 0, [token_info_1, ...args_1], void 0, function* (token_info, value_of_usd = 100) {
|
|
16
|
+
var _a;
|
|
17
|
+
let out;
|
|
18
|
+
let { market_price } = token_info;
|
|
19
|
+
if (!market_price) {
|
|
20
|
+
let address = token_info.address;
|
|
21
|
+
let price_map = yield (0, get_token_price_1.get_token_price_info)([address]);
|
|
22
|
+
market_price = (_a = price_map.get(address)) === null || _a === void 0 ? void 0 : _a.price;
|
|
23
|
+
}
|
|
24
|
+
if (market_price) {
|
|
25
|
+
out = (0, dist_1.calc_amount_in_token)(value_of_usd, market_price, token_info);
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
});
|
|
29
|
+
exports.calculate_token_amount = calculate_token_amount;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { FormattedTokenInfo } from './types';
|
|
2
|
+
export declare const get_token_basic_info: (symbol: string, mint_address: string) => Promise<FormattedTokenInfo>;
|
|
3
|
+
export declare const get_token_basic_info_from_jupiter: (symbol: string, mint_address: string) => Promise<FormattedTokenInfo>;
|
|
4
|
+
export declare const get_token_basic_info_from_raydium: (symbol: string, mint_address: string) => Promise<FormattedTokenInfo>;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.get_token_basic_info_from_raydium = exports.get_token_basic_info_from_jupiter = exports.get_token_basic_info = void 0;
|
|
36
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
37
|
+
const axios_1 = __importStar(require("axios"));
|
|
38
|
+
const util_1 = require("./util");
|
|
39
|
+
const get_token_basic_info = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
yield (0, dist_1.sleep)(1000);
|
|
41
|
+
let token_info;
|
|
42
|
+
(0, dist_1.log_debug)(`get_token_basic_info, symbol=${symbol}, mint_address=${mint_address}`);
|
|
43
|
+
try {
|
|
44
|
+
token_info = yield (0, exports.get_token_basic_info_from_raydium)(symbol, mint_address);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
}
|
|
48
|
+
if (!token_info || (0, dist_1.isEmpty)(token_info.symbol) || (0, dist_1.isEmpty)(token_info.decimals)) {
|
|
49
|
+
try {
|
|
50
|
+
token_info = yield (0, exports.get_token_basic_info_from_jupiter)(symbol, mint_address);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
(0, dist_1.log_debug)(`get_token_basic_info, symbol=${symbol}, mint_address=${mint_address}, success`, token_info);
|
|
56
|
+
return token_info;
|
|
57
|
+
});
|
|
58
|
+
exports.get_token_basic_info = get_token_basic_info;
|
|
59
|
+
const get_token_basic_info_from_jupiter = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
const url = `https://api.jup.ag/tokens/v1/token/${mint_address}`;
|
|
61
|
+
try {
|
|
62
|
+
const response = yield axios_1.default.get(url, {
|
|
63
|
+
timeout: 6000,
|
|
64
|
+
});
|
|
65
|
+
const data = response.data;
|
|
66
|
+
let token_info = {
|
|
67
|
+
chainId: 101,
|
|
68
|
+
address: mint_address,
|
|
69
|
+
programId: '',
|
|
70
|
+
logoURI: '',
|
|
71
|
+
symbol: symbol,
|
|
72
|
+
name: data.name,
|
|
73
|
+
decimals: data.decimals,
|
|
74
|
+
is_token_2022: (0, util_1.is_token_2022)(''),
|
|
75
|
+
};
|
|
76
|
+
(0, dist_1.log_debug)(`get_token_basic_info_from_jupiter`, { url, symbol, name: token_info.name, decimals: token_info.decimals });
|
|
77
|
+
return token_info;
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
if ((0, axios_1.isAxiosError)(err)) {
|
|
81
|
+
(0, dist_1.log_warn)(`get_token_basic_info_from_jupiter failed!`, { url, status: err.response.status, message: err.response.data.message });
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
(0, dist_1.log_warn)('get_token_basic_info_from_jupiter error!', err.message);
|
|
85
|
+
}
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
exports.get_token_basic_info_from_jupiter = get_token_basic_info_from_jupiter;
|
|
90
|
+
const get_token_basic_info_from_raydium = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
const url = `https://api-v3.raydium.io/mint/ids?mints=${mint_address}`;
|
|
92
|
+
try {
|
|
93
|
+
const response = yield axios_1.default.get(url, {
|
|
94
|
+
timeout: 6000,
|
|
95
|
+
});
|
|
96
|
+
const { id, success, data } = response.data;
|
|
97
|
+
if (!success || !(0, dist_1.isArray)(data) || !data[0]) {
|
|
98
|
+
throw new Error(`url=${url}, res=${JSON.stringify(response.data)}`);
|
|
99
|
+
}
|
|
100
|
+
let _token = data[0];
|
|
101
|
+
let token_info = {
|
|
102
|
+
chainId: 101,
|
|
103
|
+
address: mint_address,
|
|
104
|
+
programId: _token.programId,
|
|
105
|
+
logoURI: '',
|
|
106
|
+
symbol: symbol,
|
|
107
|
+
name: _token.name,
|
|
108
|
+
decimals: _token.decimals,
|
|
109
|
+
is_token_2022: (0, util_1.is_token_2022)(_token.programId),
|
|
110
|
+
authority: ''
|
|
111
|
+
};
|
|
112
|
+
(0, dist_1.log_debug)(`get_token_basic_info_from_raydium`, { url, symbol, name: token_info.name, decimals: token_info.decimals });
|
|
113
|
+
return token_info;
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
if ((0, axios_1.isAxiosError)(err)) {
|
|
117
|
+
(0, dist_1.log_warn)(`get_token_basic_info_from_raydium failed!`, { url, status: err.response.status, message: err.response.data.message });
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
(0, dist_1.log_warn)('get_token_basic_info_from_raydium error!', err.message);
|
|
121
|
+
}
|
|
122
|
+
throw err;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
exports.get_token_basic_info_from_raydium = get_token_basic_info_from_raydium;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FormattedTokenPrice } from "./types";
|
|
2
|
+
export declare const get_token_price_info: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
3
|
+
export declare const get_token_price_info_from_raydium: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
4
|
+
export declare const get_token_price_info_from_jupiter: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
5
|
+
export declare const get_token_price_info_from_coingecko: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
@@ -0,0 +1,149 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.get_token_price_info_from_coingecko = exports.get_token_price_info_from_jupiter = exports.get_token_price_info_from_raydium = exports.get_token_price_info = void 0;
|
|
16
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
17
|
+
const axios_1 = __importDefault(require("axios"));
|
|
18
|
+
const get_token_price_info = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
+
let price_map = yield (0, exports.get_token_price_info_from_raydium)(mints);
|
|
20
|
+
let not_found_arr = mints.filter(address => !price_map.has(address));
|
|
21
|
+
if (not_found_arr.length > 0) {
|
|
22
|
+
let _price_map = yield (0, exports.get_token_price_info_from_jupiter)(not_found_arr);
|
|
23
|
+
for (let [key, value] of _price_map) {
|
|
24
|
+
if (value) {
|
|
25
|
+
price_map.set(key, value);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
(0, dist_1.log_warn)(`jupiter not found price for mint: ${key}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
not_found_arr = mints.filter(address => !price_map.has(address));
|
|
33
|
+
if (not_found_arr.length > 0) {
|
|
34
|
+
let _price_map = yield (0, exports.get_token_price_info_from_jupiter)(not_found_arr);
|
|
35
|
+
for (let [key, value] of _price_map) {
|
|
36
|
+
if (value) {
|
|
37
|
+
price_map.set(key, value);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
(0, dist_1.log_warn)(`jupiter not found price for mint: ${key}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return price_map;
|
|
45
|
+
});
|
|
46
|
+
exports.get_token_price_info = get_token_price_info;
|
|
47
|
+
const get_token_price_info_from_raydium = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
let price_map = new Map();
|
|
49
|
+
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
50
|
+
for (let ids of ids_list) {
|
|
51
|
+
try {
|
|
52
|
+
let url = `https://api-v3.raydium.io/mint/price?mints=${ids.join(',')}`;
|
|
53
|
+
const { id, success, data } = (yield axios_1.default.get(url)).data;
|
|
54
|
+
(0, dist_1.log_debug)('get_token_price_info_from_raydium, res=', data);
|
|
55
|
+
for (let address of ids) {
|
|
56
|
+
let price = data[address];
|
|
57
|
+
if (price) {
|
|
58
|
+
price_map.set(address, {
|
|
59
|
+
symbol: '',
|
|
60
|
+
address,
|
|
61
|
+
price,
|
|
62
|
+
update_time: (0, dist_1.getCurDateTime)()
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
(0, dist_1.log_warn)(`get_token_price_info_from_raydium failed! address=${address}, price=${price}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
(0, dist_1.log_error)(`get_token_price_info_from_raydium error!`, err);
|
|
72
|
+
}
|
|
73
|
+
yield (0, dist_1.sleep)(1000);
|
|
74
|
+
}
|
|
75
|
+
return price_map;
|
|
76
|
+
});
|
|
77
|
+
exports.get_token_price_info_from_raydium = get_token_price_info_from_raydium;
|
|
78
|
+
const get_token_price_info_from_jupiter = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
+
let price_map = new Map();
|
|
80
|
+
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
81
|
+
for (let ids of ids_list) {
|
|
82
|
+
try {
|
|
83
|
+
let url = `https://api.jup.ag/price/v2?ids=${ids.join(',')}`;
|
|
84
|
+
const { id, success, data } = (yield axios_1.default.get(url)).data;
|
|
85
|
+
(0, dist_1.log_debug)('get_token_price_info_from_jupiter, res=', data);
|
|
86
|
+
for (let address of ids) {
|
|
87
|
+
let price = data[address]['price'];
|
|
88
|
+
if (price) {
|
|
89
|
+
price_map.set(address, {
|
|
90
|
+
symbol: '',
|
|
91
|
+
address,
|
|
92
|
+
price,
|
|
93
|
+
update_time: (0, dist_1.getCurDateTime)()
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
(0, dist_1.log_warn)(`get_token_price_info_from_jupiter failed! address=${address}, price=${price}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
(0, dist_1.log_error)(`get_token_price_info_from_jupiter error!`, err);
|
|
103
|
+
}
|
|
104
|
+
yield (0, dist_1.sleep)(1000);
|
|
105
|
+
}
|
|
106
|
+
return price_map;
|
|
107
|
+
});
|
|
108
|
+
exports.get_token_price_info_from_jupiter = get_token_price_info_from_jupiter;
|
|
109
|
+
const get_token_price_info_from_coingecko = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
let network_id = 'solana';
|
|
111
|
+
let price_map = new Map();
|
|
112
|
+
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
113
|
+
for (let ids of ids_list) {
|
|
114
|
+
try {
|
|
115
|
+
let url = `https://pro-api.coingecko.com/api/v3/onchain/simple/networks/${network_id}/token_price/${ids.join(',')}`;
|
|
116
|
+
const options = {
|
|
117
|
+
method: 'GET',
|
|
118
|
+
headers: { accept: 'application/json', 'x-cg-pro-api-key': process.env.COINGECKO_API_KEY }
|
|
119
|
+
};
|
|
120
|
+
const { id, success, data } = (yield axios_1.default.get(url, options)).data;
|
|
121
|
+
(0, dist_1.log_debug)('get_token_price_info_from_coingecko, res=', data);
|
|
122
|
+
let token_prices = data['attributes']['token_prices'];
|
|
123
|
+
for (let address of ids) {
|
|
124
|
+
let price = token_prices[address];
|
|
125
|
+
if (price) {
|
|
126
|
+
price_map.set(address, {
|
|
127
|
+
symbol: '',
|
|
128
|
+
address,
|
|
129
|
+
price,
|
|
130
|
+
update_time: (0, dist_1.getCurDateTime)()
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
(0, dist_1.log_warn)(`get_token_price_info_from_coingecko failed! address=${address}, price=${price}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
(0, dist_1.log_error)(`get_token_price_info_from_coingecko error!`, err);
|
|
140
|
+
}
|
|
141
|
+
yield (0, dist_1.sleep)(1000);
|
|
142
|
+
}
|
|
143
|
+
return price_map;
|
|
144
|
+
});
|
|
145
|
+
exports.get_token_price_info_from_coingecko = get_token_price_info_from_coingecko;
|
|
146
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
147
|
+
const price_data = yield (0, exports.get_token_price_info_from_coingecko)(['So11111111111111111111111111111111111111112', '61V8vBaqAGMpgDQi4JcAwo1dmBGHsyhzodcPqnEVpump']);
|
|
148
|
+
console.log('price_data', price_data);
|
|
149
|
+
}))();
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./get_token_info"), exports);
|
|
19
|
+
__exportStar(require("./get_token_price"), exports);
|
|
20
|
+
__exportStar(require("./util"), exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface FormattedTokenInfo {
|
|
2
|
+
chainId: number;
|
|
3
|
+
address: string;
|
|
4
|
+
programId: string;
|
|
5
|
+
logoURI: string;
|
|
6
|
+
symbol: string;
|
|
7
|
+
name: string;
|
|
8
|
+
decimals: number;
|
|
9
|
+
is_token_2022: boolean;
|
|
10
|
+
price?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FormattedTokenPrice {
|
|
13
|
+
symbol: string;
|
|
14
|
+
address: string;
|
|
15
|
+
price: string;
|
|
16
|
+
update_time: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { StandardTokenInfoType, TokenPriceWithAmountType } from "@clonegod/ttd-common";
|
|
2
|
+
export declare const is_token_2022: (programId: string) => programId is "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
3
|
+
export declare const calculate_token_amount: (token_info: StandardTokenInfoType, value_of_usd?: number) => Promise<TokenPriceWithAmountType>;
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.calculate_token_amount = exports.is_token_2022 = void 0;
|
|
13
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
14
|
+
const get_token_price_1 = require("./get_token_price");
|
|
15
|
+
const is_token_2022 = (programId) => {
|
|
16
|
+
return programId === 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
17
|
+
};
|
|
18
|
+
exports.is_token_2022 = is_token_2022;
|
|
19
|
+
const calculate_token_amount = (token_info_1, ...args_1) => __awaiter(void 0, [token_info_1, ...args_1], void 0, function* (token_info, value_of_usd = 100) {
|
|
20
|
+
var _a;
|
|
21
|
+
let out;
|
|
22
|
+
let { market_price } = token_info;
|
|
23
|
+
if (!market_price) {
|
|
24
|
+
let address = token_info.address;
|
|
25
|
+
let price_map = yield (0, get_token_price_1.get_token_price_info)([address]);
|
|
26
|
+
market_price = (_a = price_map.get(address)) === null || _a === void 0 ? void 0 : _a.price;
|
|
27
|
+
}
|
|
28
|
+
if (market_price) {
|
|
29
|
+
out = (0, dist_1.calc_amount_in_token)(value_of_usd, market_price, token_info);
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
});
|
|
33
|
+
exports.calculate_token_amount = calculate_token_amount;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clonegod/ttd-sol-common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.146",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"push": "npm run build && npm publish"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@clonegod/ttd-common": "^1.0.
|
|
16
|
+
"@clonegod/ttd-common": "^1.0.180",
|
|
17
17
|
"@metaplex-foundation/mpl-token-metadata": "^2.5.2",
|
|
18
18
|
"@solana/web3.js": "1.91.6",
|
|
19
19
|
"axios": "^1.2.3",
|