Skip to content

Commit ed8716f

Browse files
SDK implementation of assets analytics using dex guru (#218)
* SDK implementation of assets analytics using dex guru * Allowing dynamic chain idon fly
1 parent 0d15433 commit ed8716f

29 files changed

Lines changed: 916 additions & 6 deletions

examples/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@
2626
"18-cross-chain-stream": "../node_modules/.bin/ts-node ./src/18-cross-chain-stream.ts",
2727
"21-exchange-rates": "../node_modules/.bin/ts-node ./src/21-exchange-rates.ts",
2828
"22-name-resolution": "../node_modules/.bin/ts-node ./src/22-name-resolution.ts",
29-
"24-account-investments": "../node_modules/.bin/ts-node ./src/24-account-investments.ts"
29+
"24-account-investments": "../node_modules/.bin/ts-node ./src/24-account-investments.ts",
30+
"25-token-details": "../node_modules/.bin/ts-node ./src/25-token-details.ts",
31+
"26-historical-token-price" : "../node_modules/.bin/ts-node ./src/26-historical-token-price.ts",
32+
"27-pools-activity" : "../node_modules/.bin/ts-node ./src/27-pools-activity.ts",
33+
"28-number-of-transactions" : "../node_modules/.bin/ts-node ./src/28-number-of-transactions.ts",
34+
"29-trading-history" : "../node_modules/.bin/ts-node ./src/29-trading-history.ts",
35+
"30-market-details" : "../node_modules/.bin/ts-node ./src/30-market-details.ts"
3036
},
3137
"dependencies": {
3238
"dotenv": "16.0.1"

examples/src/25-token-details.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get token details',
27+
await sdk.getTokenDetails({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
})
32+
);
33+
}
34+
35+
main()
36+
.catch(logger.error)
37+
.finally(() => process.exit());
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get historical token price',
27+
await sdk.getHistoricalTokenPrice({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
timePeriod: '1week', //specific time period optional
32+
})
33+
);
34+
}
35+
36+
main()
37+
.catch(logger.error)
38+
.finally(() => process.exit());

examples/src/27-pools-activity.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get pools activity of token',
27+
await sdk.getPoolsActivity({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
page: 1,
32+
type: "adds",
33+
})
34+
);
35+
}
36+
37+
main()
38+
.catch(logger.error)
39+
.finally(() => process.exit());
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get number of transactions of token',
27+
await sdk.getNumberOfTransactions({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
})
32+
);
33+
}
34+
35+
main()
36+
.catch(logger.error)
37+
.finally(() => process.exit());

examples/src/29-trading-history.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get trading history of token',
27+
await sdk.getTradingHistory({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
page: 1, //offset of records optional
32+
})
33+
);
34+
}
35+
36+
main()
37+
.catch(logger.error)
38+
.finally(() => process.exit());

examples/src/30-market-details.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { EnvNames, NetworkNames, Sdk } from '../../src';
2+
import { logger } from './common';
3+
4+
async function main(): Promise<void> {
5+
const PRIVATE_KEY = ''; //Privite key Example: get from metamask
6+
7+
const sdk = new Sdk(PRIVATE_KEY, { env: EnvNames.LocalNets, networkName: NetworkNames.Mainnet });
8+
9+
const { state } = sdk;
10+
11+
logger.log('key account', state.account);
12+
13+
logger.log(
14+
'contract account',
15+
await sdk.computeContractAccount({
16+
sync: false,
17+
}),
18+
);
19+
20+
await sdk.syncAccount();
21+
22+
logger.log('synced contract account', state.account);
23+
logger.log('synced contract account member', state.accountMember);
24+
25+
logger.log(
26+
'get market details of token',
27+
await sdk.getMarketDetails({
28+
chainId: 1, //Linked chain id
29+
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
30+
provider: '', //specific provider optional
31+
})
32+
);
33+
}
34+
35+
main()
36+
.catch(logger.error)
37+
.finally(() => process.exit());

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "etherspot",
3-
"version": "1.42.9",
3+
"version": "1.43.0",
44
"description": "Etherspot SDK",
55
"keywords": [
66
"ether",

schema.graphql

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,12 @@ type Query {
717717
gatewayTransaction(chainId: Int, hash: String!): GatewayTransaction
718718
getContractAbi(address: String!, chainId: Int): JSONObject
719719
isTokenOnTokenList(chainId: Int, name: String, token: String!): Boolean!
720+
tokenDetails(chainId: Int, tokenAddress: String!, provider: String): TokenDetails!
721+
historicalTokenPrice(chainId: Int, tokenAddress: String!, provider: String, timePeriod: String): HistoricalTokenPrices!
722+
poolsActivity(chainId: Int, tokenAddress: String!, provider: String, page: Int, type: String): PoolsActivities!
723+
numberOfTransactions(chainId: Int, tokenAddress: String!, provider: String): NumberOfTransactions!
724+
tradingHistory(chainId: Int, tokenAddress: String!, provider: String, page: Int): TradingHistories!
725+
marketDetails(chainId: Int, tokenAddress: String!, provider: String): MarketDetails!
720726
resolveName(chainId: Int, name: String!): NameResolutionsNodes
721727
nativeCurrencies: NativeCurrencies!
722728
nftList(account: String!, chainId: Int): NftList!
@@ -841,6 +847,81 @@ type TokenListToken {
841847
symbol: String
842848
}
843849

850+
type TokenDetails {
851+
usdPrice: number!
852+
tokenAddress: string!
853+
liquidityUSD: number!
854+
tradingVolume: number!
855+
}
856+
857+
type HistoricalTokenPrice {
858+
usdPrice: number!
859+
tokenAddress: string!
860+
timestamp: number!
861+
}
862+
863+
type HistoricalTokenPrices {
864+
items: [HistoricalTokenPrice!]!
865+
}
866+
867+
type PoolsActivityTokensInOut {
868+
symbol: string!
869+
amm: string!
870+
network: string!
871+
priceUSD: number!
872+
priceETH: number!
873+
amount: number!
874+
}
875+
876+
type PoolsActivity {
877+
amm: string!
878+
transactionAddress: string!
879+
timestamp: number!
880+
amountUSD: number!
881+
transactionType: string!
882+
tokensIn: [PoolsActivityTokensInOut!]!
883+
tokensOut: [PoolsActivityTokensInOut!]!
884+
}
885+
886+
type PoolsActivities {
887+
items: [PoolsActivity!]!
888+
}
889+
890+
type NumberOfTransactions {
891+
totalTransactions: number!
892+
}
893+
894+
type TradingHistory {
895+
amm: string!
896+
direction: string!
897+
transactionAddress: string!
898+
timestamp: number!
899+
amountUSD: number!
900+
walletAddress: string!
901+
tokensIn: [PoolsActivityTokensInOut!]!
902+
tokensOut: [PoolsActivityTokensInOut!]!
903+
}
904+
905+
type TradingHistories {
906+
items: [TradingHistory!]!
907+
}
908+
909+
type MarketDetails {
910+
id: string!
911+
symbol: string!
912+
name: string!
913+
image?: string!
914+
marketCap: number!
915+
allTimeHigh?: number!
916+
allTimeLow?: number!
917+
fullyDilutedValuation: number!
918+
priceChangePercentage1h: number!
919+
priceChangePercentage24h: number!
920+
priceChangePercentage7d: number!
921+
priceChangePercentage1m: number!
922+
priceChangePercentage1y?: number!
923+
}
924+
844925
type TokenLists {
845926
items: [TokenListPublic!]!
846927
}

0 commit comments

Comments
 (0)