diff --git a/src/index.ts b/src/index.ts index 002aa6c6..a7ce86fb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,6 +19,7 @@ import discoFetcher from "./tokens/disco"; import djedFetcher from "./tokens/djed"; import empFetcher from "./tokens/emp"; import encsFetcher from "./tokens/encs"; +import factFetcher from "./tokens/fact"; import flacFetcher from "./tokens/flac"; import gensFetcher from "./tokens/gens"; import gensxFetcher from "./tokens/gensx"; @@ -30,6 +31,7 @@ import ibtcFetcher from "./tokens/ibtc"; import iethFetcher from "./tokens/ieth"; import indyFetcher from "./tokens/indy"; import iusdFetcher from "./tokens/iusd"; +import lifiFetcher from "./tokens/lifi"; import lobsterFetcher from "./tokens/lobster"; import liqwidFetcher from "./tokens/lq"; import meldFetcher from "./tokens/meld"; @@ -44,6 +46,7 @@ import nmkrFetcher from "./tokens/nmkr"; import ntxFetcher from "./tokens/ntx"; import optFetcher from "./tokens/opt"; import paviaFetcher from "./tokens/pavia"; +import pepeblueFetcher from "./tokens/pepeblue"; import prsprFetcher from "./tokens/prspr"; import rjvFetcher from "./tokens/rjv"; import shenFetcher from "./tokens/shen"; @@ -52,6 +55,7 @@ import snowFetcher from "./tokens/snow"; import societyFetcher from "./tokens/society"; import stableFetcher from "./tokens/stable"; import sundaeFetcher from "./tokens/sundae"; +import utilFetcher from "./tokens/util"; import vnmFetcher from "./tokens/vnm"; import vyfiFetcher from "./tokens/vyfi"; import wmtFetcher from "./tokens/wmt"; @@ -168,4 +172,12 @@ export const supplyFetchers: Record = { b316f8f668aca7359ecc6073475c0c8106239bf87e05a3a1bd5697647856594649: xvyfiFetcher, "2d92af60ee429bce238d3fd9f2531b45457301d74dad1bcf3f9d1dca564e4d": vnmFetcher, + "21abdf54f427b378fe9ba07419eff6e8e8fe0c5932e1fee2d3853b9350455045424c5545": + pepeblueFetcher, + "7914fae20eb2903ed6fd5021a415c1bd2626b64a2d86a304cb40ff5e4c494649": + lifiFetcher, + "0d90046ad35546156aaf790525133f7fc713ca2790e397784b85f5c85554494c": + utilFetcher, + a3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e516f7263666178746f6b656e: + factFetcher, }; diff --git a/src/tokens/fact.ts b/src/tokens/fact.ts new file mode 100644 index 00000000..f55d0725 --- /dev/null +++ b/src/tokens/fact.ts @@ -0,0 +1,28 @@ +import { defaultFetcherOptions, SupplyFetcher } from "../types"; +import { getAmountInAddresses, getBlockFrostInstance } from "../utils"; + +const FACT = + "a3931691f5c4e65d01c429e473d0dd24c51afdb6daf88e632a6c1e516f7263666178746f6b656e"; + +const fetcher: SupplyFetcher = async (options = defaultFetcherOptions) => { + const blockFrost = getBlockFrostInstance(options); + const total = 1_000_000_000; + const treasuryRaw = await getAmountInAddresses(blockFrost, FACT, [ + "stake1uy4kjauul2gt5qqlqnn0dmtzj28hxyfzyxjfdz86r0cr87s0ukjhn", // Orcfax Validators + "stake1uxgrkg2rts6mq5h49y87mfldpt8tec0dj5lwgqg3twsslgse2ce4t", // Orcfax Launchpad + "stake1u8423m8m6fr5zmyrkf3h88cm8p95v4uu0w644ls777r0sash9a2hn", // Orcfax Team + "stake1uxuw8rufp4004efjhy9jx7l5q0sc9l6m5ynre0awpme3keqpgae4v", // Orcfax ISPO Rewards + "stake1u87ln5j5dmmhmaqytvwvwfpe7cfjmhfqd492xrlqhqtawwsfg2vjj", // Orcfax Foundation + "stake1u9sk73f326aynajlrxvwe6rf5nvaueegsen8rgszwfzjecq448gkg", // Orcfax Ecosystem + "stake1uyc63ewaqvtz7zzf3m23qmlyerlq768xv78y0n9k95y3qwggnajpq", // Orcfax Yield Farming APY + "stake1uyfc4cyqwn9m7wy67s4xnnct9um3kte7pe3t9arwp6v5vmqqtkqt2", // Orcfax Advisors + "stake1u98md374myy2lxdzdzcm8rrscqtaeserdn9ql5t7ds87mgssejnxp", // Orcfax Promotions + ]); + const treasury = Number(treasuryRaw) / 1e6; + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/lifi.ts b/src/tokens/lifi.ts new file mode 100644 index 00000000..a14891cc --- /dev/null +++ b/src/tokens/lifi.ts @@ -0,0 +1,23 @@ +import { defaultFetcherOptions, SupplyFetcher } from "../types"; +import { getAmountInAddresses, getBlockFrostInstance } from "../utils"; + +const OPT = "7914fae20eb2903ed6fd5021a415c1bd2626b64a2d86a304cb40ff5e4c494649"; +const TREASURY_ADDRESSES = [ + "addr1q9gt5vycpjqmqddvjrl6tf4ctn2tlvpsls5qa7h862vvqxgve9jeadjstl54dnds5ye4f8jnkm404ryhz527cucfgwlqnrargr", + "addr1q8n6xylsyg3fuye3xvxlpxvumdkutpvc07p6z6js6g85hn5gdxvcfq8mr6rzq7gkegy0xkt9kp6u8vxxrcvd4058p7aq7zn9jd", + "addr1q9t9dlhshmcdqsuu799mktwpxmw35w3rffj63xzphyquksyk2q0gxhpk3tlvuer9jyryxe73xzgc76n58vyg3d8kgcdqex46uk", +]; + +const fetcher: SupplyFetcher = async (options = defaultFetcherOptions) => { + const blockFrost = getBlockFrostInstance(options); + const total = 40e6; // 40 million + const treasury = + Number(await getAmountInAddresses(blockFrost, OPT, TREASURY_ADDRESSES)) / + 1e6; + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/pepeblue.ts b/src/tokens/pepeblue.ts new file mode 100644 index 00000000..b17479f0 --- /dev/null +++ b/src/tokens/pepeblue.ts @@ -0,0 +1,25 @@ +import { defaultFetcherOptions, SupplyFetcher } from "../types"; +import { getAmountInAddresses, getBlockFrostInstance } from "../utils"; + +const PEPEBLUE = + "21abdf54f427b378fe9ba07419eff6e8e8fe0c5932e1fee2d3853b9350455045424c5545"; + +const TREASURY_VAULT = [ + "addr1qxkmr0m22xeqludcg5rjdmecjxasu9fat0680qehtcsnftaadgykewa9ufvegeuca9yyq03d9v7ea2y2zthgu7hfgjtsddp6gr", // Yield Farming Rewards + "addr1q9vm0hf5388yk0gjdzl567thmy6f2mc3dt0p09dt6u7fp7qyvwjm865g78xqml08m3ae48qk2g0klwa63eawr05cw02qu72ey0", // Potential Staking Initiatives + "addr1qyxlw0wx4w7cdlwy4dtdygremqpfz7skyn60af8wl32a0jvq3mcxelvy8un2qlasklx5c326eqlzrwh25aaw2gumzw9qm5qc3q", // Ant Workers Vault +]; + +const fetcher: SupplyFetcher = async (options = defaultFetcherOptions) => { + const blockFrost = getBlockFrostInstance(options); + const total = 39e13; // 420T -> 390T + const treasury = Number( + await getAmountInAddresses(blockFrost, PEPEBLUE, TREASURY_VAULT) + ); + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher; diff --git a/src/tokens/util.ts b/src/tokens/util.ts new file mode 100644 index 00000000..dd4d7923 --- /dev/null +++ b/src/tokens/util.ts @@ -0,0 +1,24 @@ +import { defaultFetcherOptions, SupplyFetcher } from "../types"; +import { getAmountInAddresses, getBlockFrostInstance } from "../utils"; + +const UTIL = "0d90046ad35546156aaf790525133f7fc713ca2790e397784b85f5c85554494c"; +const TREASURY_ADDRESSES = [ + "addr1q93xkjyjltq2n8txhzs75ksh0m63t9pjq6tlyrdyyyw8gxru5vh778h5098lal266fkv3t0mke9w4wqde9et9jtgpxssaeg575", // incentives & partnerships + "addr1qymw4z9mwc350zp3fkgtmzs22rd4g66w6egpy7gtt4lnptjym6np02setzkqytguwrcm5dje0qzahxwrvc0pw07m6r7sfjpqln", // utility & dev fund + "addr1q9gc42cyxvxa07l5w8f6l62cztd4c3q2jaax2ujqgzxg0jz4rptm4dertnuude4kgx959z95tg2rxvxxcggr84ddr5wq4qpw3f", // marketing + "addr1q9g327d6c54tx6eek8xtclzavuneasslaq7pl9h7yu0nyshv7gwx2r64hkeyhtkdp9yky7feddfduq02ssgukxh5d6zsd0jf9a", // DAO +]; + +const fetcher: SupplyFetcher = async (options = defaultFetcherOptions) => { + const blockFrost = getBlockFrostInstance(options); + const total = 100e9; // 100 billion + const treasury = Number( + await getAmountInAddresses(blockFrost, UTIL, TREASURY_ADDRESSES) + ); + return { + circulating: (total - treasury).toString(), + total: total.toString(), + }; +}; + +export default fetcher;