├── .env.example ├── public ├── libraries │ ├── datafeeds │ │ ├── udf │ │ │ ├── .gitignore │ │ │ ├── lib │ │ │ │ ├── irequester.js │ │ │ │ ├── iquotes-provider.js │ │ │ │ ├── provider-interfaces.js │ │ │ │ ├── udf-compatible-datafeed.js │ │ │ │ ├── helpers.js │ │ │ │ ├── quotes-provider.js │ │ │ │ └── requester.js │ │ │ ├── .npmrc │ │ │ ├── types.d.ts │ │ │ ├── src │ │ │ │ ├── iquotes-provider.ts │ │ │ │ ├── irequester.ts │ │ │ │ ├── udf-compatible-datafeed.ts │ │ │ │ ├── provider-interfaces.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── quotes-provider.ts │ │ │ │ └── requester.ts │ │ │ ├── package.json │ │ │ ├── tsconfig.json │ │ │ ├── rollup.config.js │ │ │ └── README.md │ │ └── README.md │ └── charting_library │ │ ├── bundles │ │ ├── 2666.fbb750fd312778403036.css │ │ ├── 2666.fbb750fd312778403036.rtl.css │ │ ├── 7807.8577632fdab29ee53ddf.css │ │ ├── 7807.8577632fdab29ee53ddf.rtl.css │ │ ├── 5145.a2b224fd27ab2941c565.css │ │ ├── 5145.a2b224fd27ab2941c565.rtl.css │ │ ├── dot.3d617b6b01edba83a7f4.cur │ │ ├── eraser.c80610a04a92d2465b03.cur │ │ ├── icons.4d39018d0766cf7006bc.png │ │ ├── mock-dark.16b5f3a431f502b03ae3.svg │ │ ├── mock-light.d201313017eb2c1b989f.svg │ │ ├── opacity-slider.4f3ca6b00b45fd71da5f.png │ │ ├── EuclidCircular.be8f862db48c2976009f.woff2 │ │ ├── linewidth-slider.8e3d0520d28ce8259ccf.png │ │ ├── opacity-pattern.4d8fbb552dde3db26f4a.svg │ │ ├── hammerjs.6e30e0c48af40bf2f6c0.js │ │ ├── prediction-clock-white.c4675d37769f1df4c9ec.png │ │ ├── prediction-failure-white.a838a6689f951970e715.png │ │ ├── prediction-success-white.2fb9966b4c0f3529a2ea.png │ │ ├── 1033.5197f9f8b8500206d06c.css │ │ ├── 1033.5197f9f8b8500206d06c.rtl.css │ │ ├── 6.362fa6a7ab1f3e3b06c4.css │ │ ├── 6.362fa6a7ab1f3e3b06c4.rtl.css │ │ ├── 4215.d24836a292b1969ab4bb.css │ │ ├── 4215.d24836a292b1969ab4bb.rtl.css │ │ ├── 524.ef662c4bc3e57dd91171.css │ │ ├── 524.ef662c4bc3e57dd91171.rtl.css │ │ ├── 6949.19355e81a60b640ea097.css │ │ ├── 6949.19355e81a60b640ea097.rtl.css │ │ ├── ichart-storage.1144e5a1b4f8503ee572.js │ │ ├── 6036.3b493a9f0ab052e6447c.css │ │ ├── 6036.3b493a9f0ab052e6447c.rtl.css │ │ ├── large-slider-handle.18e9ee5923db4eac2c43.svg │ │ ├── 7391.9c809fa91ed0c8f75bc0.css │ │ ├── 7391.9c809fa91ed0c8f75bc0.rtl.css │ │ ├── 3939.4d0187960a564ff5a557.css │ │ ├── 3939.4d0187960a564ff5a557.rtl.css │ │ ├── 6884.bb7d30a7bbbe5af36556.css │ │ ├── 6884.bb7d30a7bbbe5af36556.rtl.css │ │ ├── 7413.f830ad1ad6ee6f9b1cb3.css │ │ ├── 5166.a12c50ad6225ca6de843.css │ │ ├── 7413.f830ad1ad6ee6f9b1cb3.rtl.css │ │ ├── 5166.a12c50ad6225ca6de843.rtl.css │ │ ├── 6747.c7d403ae692f88568278.css │ │ ├── 6747.c7d403ae692f88568278.rtl.css │ │ ├── 1762.7ff6b353c441db2276da.css │ │ ├── 1762.7ff6b353c441db2276da.rtl.css │ │ ├── 9138.03b8fbcfabcae851949a.css │ │ ├── 9138.03b8fbcfabcae851949a.rtl.css │ │ ├── 2587.1f1100dc01693edfe269.css │ │ ├── 2587.1f1100dc01693edfe269.rtl.css │ │ ├── 6025.263b457b1a7f9ca139b2.css │ │ ├── 6025.263b457b1a7f9ca139b2.rtl.css │ │ ├── 5649.b60ed09c5ea8c55827d4.css │ │ ├── 5649.b60ed09c5ea8c55827d4.rtl.css │ │ ├── share-chart-to-social-utils.d7331dbca4a2aa0909e7.js │ │ ├── 7194.e04f69c8933166966874.css │ │ ├── 7194.e04f69c8933166966874.rtl.css │ │ ├── 3842.8cf6b523fd5a5b6fb022.css │ │ ├── 3842.8cf6b523fd5a5b6fb022.rtl.css │ │ ├── favorite-drawings-api.340e60e2342b0d93ebe7.js │ │ ├── performance.769cf9dda2ede7d12b74.svg │ │ ├── 2260.b98824e4829a1aa9b444.css │ │ ├── 9789.cb5ad20bc727d3820b6c.css │ │ ├── 2260.b98824e4829a1aa9b444.rtl.css │ │ ├── 9789.cb5ad20bc727d3820b6c.rtl.css │ │ ├── 4015.1d0e3a62a59d173c81f3.css │ │ ├── 4015.1d0e3a62a59d173c81f3.rtl.css │ │ ├── 855.56a5e53c97d91a9f96f7.css │ │ ├── 855.56a5e53c97d91a9f96f7.rtl.css │ │ ├── 2676.2d3cabbd39a3b0d6e9ea.css │ │ ├── 2676.2d3cabbd39a3b0d6e9ea.rtl.css │ │ ├── manage-drawings-dialog.5f8ccee744105adf029e.js │ │ ├── 8904.a302177fe7e3ccd50cb0.css │ │ ├── 8904.a302177fe7e3ccd50cb0.rtl.css │ │ ├── 6985.2cd225354e2fd236e8e9.css │ │ ├── chart-storage-external-adapter.9c1267d07e48b8d8f53f.js │ │ ├── 6985.2cd225354e2fd236e8e9.rtl.css │ │ ├── 5866.f164dd2a584ab0f493cf.css │ │ ├── 5866.f164dd2a584ab0f493cf.rtl.css │ │ ├── 956.1e89775cfd644d656c56.css │ │ ├── 956.1e89775cfd644d656c56.rtl.css │ │ ├── 7555.8c1e3939e7666b0f8c69.css │ │ ├── 7555.8c1e3939e7666b0f8c69.rtl.css │ │ ├── 6214.65b7dbf8be6cca5ac143.css │ │ ├── zh.9417.7ff64779d43389a1bb41.js │ │ ├── zh_TW.9417.7ff64779d43389a1bb41.js │ │ ├── 6214.65b7dbf8be6cca5ac143.rtl.css │ │ ├── zh.2285.1268ecef367debd2960b.js │ │ ├── zh.3236.e12bb9a536432e97ec0c.js │ │ ├── zh_TW.2285.1268ecef367debd2960b.js │ │ ├── zh_TW.3236.e12bb9a536432e97ec0c.js │ │ ├── 6639.885b5577e3fb71ee2bea.css │ │ ├── 6639.885b5577e3fb71ee2bea.rtl.css │ │ ├── ko.9417.7ff64779d43389a1bb41.js │ │ ├── 7871.fff454908cba03863eb7.css │ │ ├── 7871.fff454908cba03863eb7.rtl.css │ │ ├── ja.9417.7ff64779d43389a1bb41.js │ │ ├── ja.2285.1268ecef367debd2960b.js │ │ ├── 7149.12adbb19fdefe9b66b18.css │ │ ├── 7149.12adbb19fdefe9b66b18.rtl.css │ │ ├── 4781.cf1365a3bf51d9989978.css │ │ ├── 4781.cf1365a3bf51d9989978.rtl.css │ │ ├── ko.2285.1268ecef367debd2960b.js │ │ ├── ko.3236.e12bb9a536432e97ec0c.js │ │ ├── ja.3236.e12bb9a536432e97ec0c.js │ │ ├── zh_TW.6306.b88dcc3f0d7db89ebfc1.js │ │ ├── zh.6306.b88dcc3f0d7db89ebfc1.js │ │ ├── he_IL.2285.1268ecef367debd2960b.js │ │ ├── 2731.ec19f123cabf8efd03a4.css │ │ ├── 2731.ec19f123cabf8efd03a4.rtl.css │ │ ├── ja.6306.b88dcc3f0d7db89ebfc1.js │ │ ├── ko.6306.b88dcc3f0d7db89ebfc1.js │ │ ├── en.2285.1268ecef367debd2960b.js │ │ ├── el.2285.1268ecef367debd2960b.js │ │ ├── cs.2285.1268ecef367debd2960b.js │ │ ├── ro.2285.1268ecef367debd2960b.js │ │ ├── nl_NL.2285.1268ecef367debd2960b.js │ │ ├── he_IL.9417.7ff64779d43389a1bb41.js │ │ ├── ar.2285.1268ecef367debd2960b.js │ │ ├── fa.2285.1268ecef367debd2960b.js │ │ ├── hu_HU.2285.1268ecef367debd2960b.js │ │ ├── zh_TW.3175.e0a2c845c5cba23f42fb.js │ │ ├── zh.3175.e0a2c845c5cba23f42fb.js │ │ ├── en.3236.e12bb9a536432e97ec0c.js │ │ ├── id_ID.2285.1268ecef367debd2960b.js │ │ └── ro.3236.e12bb9a536432e97ec0c.js │ │ └── package.json ├── bonkz10157.png ├── bonkz14134.png ├── vercel.svg └── next.svg ├── .eslintrc.json ├── src ├── app │ ├── favicon.ico │ ├── dashboard │ │ └── page.tsx │ ├── globals.css │ └── layout.tsx ├── program │ └── cli │ │ ├── programId.ts │ │ ├── accounts │ │ └── index.ts │ │ └── errors │ │ └── index.ts ├── components │ ├── ReplyModal.tsx │ ├── Spinner.tsx │ ├── Modal.tsx │ ├── Header.tsx │ ├── Trade.tsx │ ├── MessageForm.tsx │ ├── CoinBlog.tsx │ ├── ToastGroup.tsx │ ├── TVChart │ │ └── TradingChart.tsx │ ├── Holders.tsx │ └── providers.tsx ├── context │ ├── CoinContex.ts │ └── UserContext.ts ├── config.ts ├── contexts │ ├── PageContext.tsx │ ├── ModalProvider.tsx │ └── SolanaWalletProvider.tsx └── utils │ ├── getChartTable.ts │ └── types.ts ├── postcss.config.mjs ├── README.md ├── next.config.mjs ├── .gitignore ├── tailwind.config.ts ├── tsconfig.json └── package.json /.env.example: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_SOLANA_RPC= -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/.gitignore: -------------------------------------------------------------------------------- 1 | !types.d.ts 2 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/irequester.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2666.fbb750fd312778403036.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/iquotes-provider.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/provider-interfaces.js: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2666.fbb750fd312778403036.rtl.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | audit=false 3 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/types.d.ts: -------------------------------------------------------------------------------- 1 | export * from './src/udf-compatible-datafeed'; 2 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/src/app/favicon.ico -------------------------------------------------------------------------------- /public/bonkz10157.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/bonkz10157.png -------------------------------------------------------------------------------- /public/bonkz14134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/bonkz14134.png -------------------------------------------------------------------------------- /src/app/dashboard/page.tsx: -------------------------------------------------------------------------------- 1 | export default function Page() { 2 | return

Hello, Home page!

3 | } -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7807.8577632fdab29ee53ddf.css: -------------------------------------------------------------------------------- 1 | .icon-OJpk_CAQ{border-radius:50%;overflow:hidden} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7807.8577632fdab29ee53ddf.rtl.css: -------------------------------------------------------------------------------- 1 | .icon-OJpk_CAQ{border-radius:50%;overflow:hidden} -------------------------------------------------------------------------------- /public/libraries/datafeeds/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Charts Datafeeds 2 | 3 | This folder contains implementation of Advanced Charts Datafeeds. 4 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5145.a2b224fd27ab2941c565.css: -------------------------------------------------------------------------------- 1 | .separator-Pf4rIzEt{background-color:#e0e3eb;height:1px;margin:8px 0}html.theme-dark .separator-Pf4rIzEt{background-color:#434651} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5145.a2b224fd27ab2941c565.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-Pf4rIzEt{background-color:#e0e3eb;height:1px;margin:8px 0}html.theme-dark .separator-Pf4rIzEt{background-color:#434651} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/dot.3d617b6b01edba83a7f4.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/dot.3d617b6b01edba83a7f4.cur -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/eraser.c80610a04a92d2465b03.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/eraser.c80610a04a92d2465b03.cur -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/icons.4d39018d0766cf7006bc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/icons.4d39018d0766cf7006bc.png -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/mock-dark.16b5f3a431f502b03ae3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/mock-light.d201313017eb2c1b989f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/opacity-slider.4f3ca6b00b45fd71da5f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/opacity-slider.4f3ca6b00b45fd71da5f.png -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/EuclidCircular.be8f862db48c2976009f.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/EuclidCircular.be8f862db48c2976009f.woff2 -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/linewidth-slider.8e3d0520d28ce8259ccf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/linewidth-slider.8e3d0520d28ce8259ccf.png -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/opacity-pattern.4d8fbb552dde3db26f4a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/hammerjs.6e30e0c48af40bf2f6c0.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[2377],{13367:(e,a,r)=>{r.r(a),r.d(a,{HammerJS:()=>n.a});var i=r(11553),n=r.n(i)}}]); -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/prediction-clock-white.c4675d37769f1df4c9ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/prediction-clock-white.c4675d37769f1df4c9ec.png -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/prediction-failure-white.a838a6689f951970e715.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/prediction-failure-white.a838a6689f951970e715.png -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/prediction-success-white.2fb9966b4c0f3529a2ea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frankykevin/pump-fun-frontend/HEAD/public/libraries/charting_library/bundles/prediction-success-white.2fb9966b4c0f3529a2ea.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Basic frontend for pump.fun 2 | 3 | Many parts are under private status. 4 | 5 | You can check smart contract and backend repo as well. 6 | 7 | You can contact me if you want a better product. 8 | 9 | Telegram: https://t.me/frankiekevin 10 | -------------------------------------------------------------------------------- /public/libraries/charting_library/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "description": "CL v27.001 (internal id 3eb6c0e5 @ 2024-02-02T14:43:45.314Z)", 4 | "type": "module", 5 | "main": "charting_library.cjs.js", 6 | "module": "charting_library.esm.js", 7 | "types": "charting_library.d.ts" 8 | } 9 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/1033.5197f9f8b8500206d06c.css: -------------------------------------------------------------------------------- 1 | .title-u3QJgF_p{cursor:default;font-size:11px;letter-spacing:.4px;line-height:16px;margin:6px 0;padding:0 12px;text-transform:uppercase}.title-u3QJgF_p,html.theme-dark .title-u3QJgF_p{color:var(--tv-color-popup-element-secondary-text,#787b86)} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/1033.5197f9f8b8500206d06c.rtl.css: -------------------------------------------------------------------------------- 1 | .title-u3QJgF_p{cursor:default;font-size:11px;letter-spacing:.4px;line-height:16px;margin:6px 0;padding:0 12px;text-transform:uppercase}.title-u3QJgF_p,html.theme-dark .title-u3QJgF_p{color:var(--tv-color-popup-element-secondary-text,#787b86)} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6.362fa6a7ab1f3e3b06c4.css: -------------------------------------------------------------------------------- 1 | .icon-WB2y0EnP{align-items:center;display:flex;flex-direction:row;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-WB2y0EnP svg{fill:currentColor;display:block;height:4px;width:8px}.icon-WB2y0EnP.dropped-WB2y0EnP{transform:rotate(180deg)} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6.362fa6a7ab1f3e3b06c4.rtl.css: -------------------------------------------------------------------------------- 1 | .icon-WB2y0EnP{align-items:center;display:flex;flex-direction:row;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-WB2y0EnP svg{fill:currentColor;display:block;height:4px;width:8px}.icon-WB2y0EnP.dropped-WB2y0EnP{transform:rotate(-180deg)} -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | eslint: { 4 | // Warning: This allows production builds to successfully complete even if 5 | // your project has ESLint errors. 6 | ignoreDuringBuilds: true, 7 | }, 8 | }; 9 | 10 | export default nextConfig; 11 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/4215.d24836a292b1969ab4bb.css: -------------------------------------------------------------------------------- 1 | .footer-PhMf7PhQ{border-top:1px solid #e0e3eb;display:flex;flex:0 0 auto;padding:16px 20px}html.theme-dark .footer-PhMf7PhQ{border-top:1px solid #434651}@media screen and (max-height:360px){.footer-PhMf7PhQ{padding:10px 20px}}.footer-PhMf7PhQ .submitButton-PhMf7PhQ{padding-left:12px}.footer-PhMf7PhQ .buttons-PhMf7PhQ{margin-left:auto} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/4215.d24836a292b1969ab4bb.rtl.css: -------------------------------------------------------------------------------- 1 | .footer-PhMf7PhQ{border-top:1px solid #e0e3eb;display:flex;flex:0 0 auto;padding:16px 20px}html.theme-dark .footer-PhMf7PhQ{border-top:1px solid #434651}@media screen and (max-height:360px){.footer-PhMf7PhQ{padding:10px 20px}}.footer-PhMf7PhQ .submitButton-PhMf7PhQ{padding-right:12px}.footer-PhMf7PhQ .buttons-PhMf7PhQ{margin-right:auto} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/524.ef662c4bc3e57dd91171.css: -------------------------------------------------------------------------------- 1 | .button-Y1TCZogJ{all:unset;display:flex;position:relative}.button-Y1TCZogJ:before{border-radius:4px;content:none;height:100%;left:0;outline:2px none #2962ff;outline-offset:-2px;position:absolute;top:0;width:100%}.button-Y1TCZogJ:focus-visible:before{content:"";outline-style:solid}.button-Y1TCZogJ.active-Y1TCZogJ:before{outline-color:#fffc} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/524.ef662c4bc3e57dd91171.rtl.css: -------------------------------------------------------------------------------- 1 | .button-Y1TCZogJ{all:unset;display:flex;position:relative}.button-Y1TCZogJ:before{border-radius:4px;content:none;height:100%;outline:2px none #2962ff;outline-offset:-2px;position:absolute;right:0;top:0;width:100%}.button-Y1TCZogJ:focus-visible:before{content:"";outline-style:solid}.button-Y1TCZogJ.active-Y1TCZogJ:before{outline-color:#fffc} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6949.19355e81a60b640ea097.css: -------------------------------------------------------------------------------- 1 | .footer-dwINHZFL{align-items:center;background-color:#f8f9fd;border-radius:0 0 6px 6px;box-sizing:border-box;color:#6a6d78;cursor:default;display:flex;flex:0 0 auto;font-size:13px;justify-content:center;line-height:17px;max-height:65px;min-height:40px;padding:9px 20px;text-align:center}html.theme-dark .footer-dwINHZFL{background-color:#2a2e39;color:#868993} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6949.19355e81a60b640ea097.rtl.css: -------------------------------------------------------------------------------- 1 | .footer-dwINHZFL{align-items:center;background-color:#f8f9fd;border-radius:0 0 6px 6px;box-sizing:border-box;color:#6a6d78;cursor:default;display:flex;flex:0 0 auto;font-size:13px;justify-content:center;line-height:17px;max-height:65px;min-height:40px;padding:9px 20px;text-align:center}html.theme-dark .footer-dwINHZFL{background-color:#2a2e39;color:#868993} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/ichart-storage.1144e5a1b4f8503ee572.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[5565],{98653:(r,s,e)=>{e.r(s),e.d(s,{SavingLineToolsError:()=>o,SavingLineToolsLibraryError:()=>i});class o extends Error{constructor(r,s){super(s),this.shouldBeCooled=r}}class i extends Error{constructor(r,s=!1){super(r),this.safe=s,this.name="SavingLineToolsLibraryError"}}}}]); -------------------------------------------------------------------------------- /src/program/cli/programId.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey } from "@solana/web3.js" 2 | 3 | // Program ID defined in the provided IDL. Do not edit, it will get overwritten. 4 | export const PROGRAM_ID_IDL = new PublicKey( 5 | "7wUQXRQtBzTmyp9kcrmok9FKcc4RSYXxPYN9FGDLnqxb" 6 | ) 7 | 8 | // This constant will not get overwritten on subsequent code generations and it's safe to modify it's value. 9 | export const PROGRAM_ID: PublicKey = PROGRAM_ID_IDL 10 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6036.3b493a9f0ab052e6447c.css: -------------------------------------------------------------------------------- 1 | .separator-QjUlCDId{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);flex-shrink:0;height:1px;margin:6px 0}html.theme-dark .separator-QjUlCDId{background-color:var(--tv-color-popup-element-divider-background,#434651)}.small-QjUlCDId{margin-bottom:4px;margin-top:4px}.normal-QjUlCDId{margin-bottom:6px;margin-top:6px}.large-QjUlCDId{margin-bottom:8px;margin-top:8px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6036.3b493a9f0ab052e6447c.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-QjUlCDId{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);flex-shrink:0;height:1px;margin:6px 0}html.theme-dark .separator-QjUlCDId{background-color:var(--tv-color-popup-element-divider-background,#434651)}.small-QjUlCDId{margin-bottom:4px;margin-top:4px}.normal-QjUlCDId{margin-bottom:6px;margin-top:6px}.large-QjUlCDId{margin-bottom:8px;margin-top:8px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/iquotes-provider.ts: -------------------------------------------------------------------------------- 1 | import { QuoteData } from '../../../charting_library/datafeed-api'; 2 | 3 | import { 4 | UdfOkResponse, 5 | } from './helpers'; 6 | 7 | export interface UdfQuotesResponse extends UdfOkResponse { 8 | d: QuoteData[]; 9 | } 10 | 11 | export interface IQuotesProvider { 12 | // tslint:disable-next-line:variable-name tv-variable-name 13 | getQuotes(symbols: string[]): Promise; 14 | } 15 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/irequester.ts: -------------------------------------------------------------------------------- 1 | import { RequestParams, UdfErrorResponse, UdfResponse } from './helpers'; 2 | 3 | export interface IRequester { 4 | sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; 5 | sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; 6 | sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /src/program/cli/accounts/index.ts: -------------------------------------------------------------------------------- 1 | export { CurveConfiguration } from "./CurveConfiguration" 2 | export type { 3 | CurveConfigurationFields, 4 | CurveConfigurationJSON, 5 | } from "./CurveConfiguration" 6 | export { LiquidityProvider } from "./LiquidityProvider" 7 | export type { 8 | LiquidityProviderFields, 9 | LiquidityProviderJSON, 10 | } from "./LiquidityProvider" 11 | export { LiquidityPool } from "./LiquidityPool" 12 | export type { LiquidityPoolFields, LiquidityPoolJSON } from "./LiquidityPool" 13 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/large-slider-handle.18e9ee5923db4eac2c43.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/ReplyModal.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const ReplyModal = ({ show, onClose, children }) => { 4 | if (!show) { 5 | return null; 6 | } 7 | 8 | return ( 9 |
10 |
11 | 12 | {children} 13 |
14 |
15 | ); 16 | }; 17 | 18 | export default ReplyModal; 19 | -------------------------------------------------------------------------------- /src/context/CoinContex.ts: -------------------------------------------------------------------------------- 1 | import { createContext, useContext, useState, ReactNode } from 'react'; 2 | import { coinInfo } from '@/utils/types'; 3 | // interface WalletContextType { 4 | // user : userInfo; 5 | // setUser: (value: userInfo)=> void; 6 | 7 | 8 | // } 9 | // const walletContext = createContext ; 10 | 11 | // export default walletContext; 12 | 13 | const CoinContext = createContext({ 14 | coin:{} as coinInfo, 15 | setCoin: (value: coinInfo) => {}, 16 | 17 | }) 18 | 19 | export default CoinContext; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | .env 9 | 10 | # testing 11 | /coverage 12 | 13 | # next.js 14 | /.next/ 15 | /out/ 16 | 17 | # production 18 | /build 19 | 20 | # misc 21 | .DS_Store 22 | *.pem 23 | 24 | # debug 25 | npm-debug.log* 26 | yarn-debug.log* 27 | yarn-error.log* 28 | 29 | # local env files 30 | .env*.local 31 | 32 | # vercel 33 | .vercel 34 | 35 | # typescript 36 | *.tsbuildinfo 37 | next-env.d.ts 38 | -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "tslib": "2.5.0" 5 | }, 6 | "devDependencies": { 7 | "@rollup/plugin-node-resolve": "~9.0.0", 8 | "rollup": "~2.28.2", 9 | "rollup-plugin-terser": "~7.0.2", 10 | "typescript": "5.3.2" 11 | }, 12 | "scripts": { 13 | "compile": "tsc", 14 | "bundle-js": "rollup -c rollup.config.js", 15 | "build": "npm run compile && npm run bundle-js" 16 | }, 17 | "type": "module", 18 | "main": "./lib/udf-compatible-datafeed.js", 19 | "types": "./types.d.ts" 20 | } -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "importHelpers": true, 5 | "lib": [ 6 | "dom", 7 | "es2018" 8 | ], 9 | "module": "es6", 10 | "moduleResolution": "node", 11 | "noEmitOnError": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "noImplicitReturns": true, 14 | "noUnusedLocals": true, 15 | "outDir": "./lib/", 16 | "rootDir": "src", 17 | "sourceMap": false, 18 | "strict": true, 19 | "target": "es2018", 20 | "types": [] 21 | }, 22 | "include": [ 23 | "./src/**/*.ts" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7391.9c809fa91ed0c8f75bc0.css: -------------------------------------------------------------------------------- 1 | .defaultsButtonText-zcLkuEMM{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-zcLkuEMM{color:#d1d4dc}.defaultsButtonItem-zcLkuEMM{min-width:100px}.defaultsButtonIcon-zcLkuEMM{display:flex}.themesButtonText-AeBgp7zz{color:#131722;font-size:14px;width:100px}html.theme-dark .themesButtonText-AeBgp7zz{color:#d1d4dc}.themesButtonIcon-AeBgp7zz{display:flex}.defaultsButtonText-AeBgp7zz{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-AeBgp7zz{color:#d1d4dc}.defaultsButtonItem-AeBgp7zz{min-width:100px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7391.9c809fa91ed0c8f75bc0.rtl.css: -------------------------------------------------------------------------------- 1 | .defaultsButtonText-zcLkuEMM{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-zcLkuEMM{color:#d1d4dc}.defaultsButtonItem-zcLkuEMM{min-width:100px}.defaultsButtonIcon-zcLkuEMM{display:flex}.themesButtonText-AeBgp7zz{color:#131722;font-size:14px;width:100px}html.theme-dark .themesButtonText-AeBgp7zz{color:#d1d4dc}.themesButtonIcon-AeBgp7zz{display:flex}.defaultsButtonText-AeBgp7zz{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-AeBgp7zz{color:#d1d4dc}.defaultsButtonItem-AeBgp7zz{min-width:100px} -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | const config: Config = { 4 | content: [ 5 | "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", 6 | "./src/components/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./src/app/**/*.{js,ts,jsx,tsx,mdx}", 8 | ], 9 | theme: { 10 | extend: { 11 | backgroundImage: { 12 | "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", 13 | "gradient-conic": 14 | "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", 15 | }, 16 | }, 17 | }, 18 | plugins: [], 19 | }; 20 | export default config; 21 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/3939.4d0187960a564ff5a557.css: -------------------------------------------------------------------------------- 1 | .button-LkmyTVRc{all:unset;display:flex;position:relative}.button-LkmyTVRc:before{border-radius:4px;content:none;height:100%;left:0;outline:2px none #2962ff;outline-offset:-2px;pointer-events:none;position:absolute;top:0;width:100%}.button-LkmyTVRc:focus-visible:before{content:"";outline-style:solid}.button-LkmyTVRc.active-LkmyTVRc:before{outline-color:#fffc}.item-zwyEh4hn{align-items:flex-start;font-size:16px;padding-right:20px;white-space:normal}.label-zwyEh4hn{line-height:24px;overflow:visible}.labelRow-zwyEh4hn{margin-bottom:2px;margin-top:2px}.toolbox-zwyEh4hn{margin-top:3px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/udf-compatible-datafeed.js: -------------------------------------------------------------------------------- 1 | import { UDFCompatibleDatafeedBase } from './udf-compatible-datafeed-base'; 2 | import { QuotesProvider } from './quotes-provider'; 3 | import { Requester } from './requester'; 4 | export class UDFCompatibleDatafeed extends UDFCompatibleDatafeedBase { 5 | constructor(datafeedURL, updateFrequency = 10 * 10000, limitedServerResponse) { 6 | const requester = new Requester(); 7 | const quotesProvider = new QuotesProvider(datafeedURL, requester); 8 | super(datafeedURL, quotesProvider, requester, updateFrequency, limitedServerResponse); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/3939.4d0187960a564ff5a557.rtl.css: -------------------------------------------------------------------------------- 1 | .button-LkmyTVRc{all:unset;display:flex;position:relative}.button-LkmyTVRc:before{border-radius:4px;content:none;height:100%;outline:2px none #2962ff;outline-offset:-2px;pointer-events:none;position:absolute;right:0;top:0;width:100%}.button-LkmyTVRc:focus-visible:before{content:"";outline-style:solid}.button-LkmyTVRc.active-LkmyTVRc:before{outline-color:#fffc}.item-zwyEh4hn{align-items:flex-start;font-size:16px;padding-left:20px;white-space:normal}.label-zwyEh4hn{line-height:24px;overflow:visible}.labelRow-zwyEh4hn{margin-bottom:2px;margin-top:2px}.toolbox-zwyEh4hn{margin-top:3px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/helpers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * If you want to enable logs from datafeed set it to `true` 3 | */ 4 | const isLoggingEnabled = false; 5 | export function logMessage(message) { 6 | if (isLoggingEnabled) { 7 | const now = new Date(); 8 | // tslint:disable-next-line:no-console 9 | console.log(`${now.toLocaleTimeString()}.${now.getMilliseconds()}> ${message}`); 10 | } 11 | } 12 | export function getErrorMessage(error) { 13 | if (error === undefined) { 14 | return ''; 15 | } 16 | else if (typeof error === 'string') { 17 | return error; 18 | } 19 | return error.message; 20 | } 21 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6884.bb7d30a7bbbe5af36556.css: -------------------------------------------------------------------------------- 1 | .checkbox-vyj6oJxw{-webkit-tap-highlight-color:transparent;align-items:center;cursor:default;display:inline-flex;font-size:14px;font-stretch:normal;font-style:normal;font-weight:400;letter-spacing:normal;line-height:normal;position:relative;-webkit-user-select:none;user-select:none}.checkbox-vyj6oJxw.reverse-vyj6oJxw{flex-direction:row-reverse}.checkbox-vyj6oJxw.reverse-vyj6oJxw .label-vyj6oJxw{margin-left:0;margin-right:8px}.checkbox-vyj6oJxw.baseline-vyj6oJxw{align-items:baseline}.checkbox-vyj6oJxw .label-vyj6oJxw{color:#131722;margin-left:8px;min-width:0}html.theme-dark .checkbox-vyj6oJxw .label-vyj6oJxw{color:#d1d4dc} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/rollup.config.js: -------------------------------------------------------------------------------- 1 | /* globals process */ 2 | 3 | import { terser } from 'rollup-plugin-terser'; 4 | import { nodeResolve } from '@rollup/plugin-node-resolve'; 5 | 6 | const environment = process.env.ENV || 'development'; 7 | const isDevelopmentEnv = (environment === 'development'); 8 | 9 | export default [ 10 | { 11 | input: 'lib/udf-compatible-datafeed.js', 12 | output: { 13 | name: 'Datafeeds', 14 | format: 'umd', 15 | file: 'dist/bundle.js', 16 | }, 17 | plugins: [ 18 | nodeResolve(), 19 | !isDevelopmentEnv && terser({ 20 | ecma: 2018, 21 | output: { inline_script: true }, 22 | }), 23 | ], 24 | }, 25 | ]; 26 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6884.bb7d30a7bbbe5af36556.rtl.css: -------------------------------------------------------------------------------- 1 | .checkbox-vyj6oJxw{-webkit-tap-highlight-color:transparent;align-items:center;cursor:default;display:inline-flex;font-size:14px;font-stretch:normal;font-style:normal;font-weight:400;letter-spacing:normal;line-height:normal;position:relative;-webkit-user-select:none;user-select:none}.checkbox-vyj6oJxw.reverse-vyj6oJxw{flex-direction:row-reverse}.checkbox-vyj6oJxw.reverse-vyj6oJxw .label-vyj6oJxw{margin-left:8px;margin-right:0}.checkbox-vyj6oJxw.baseline-vyj6oJxw{align-items:baseline}.checkbox-vyj6oJxw .label-vyj6oJxw{color:#131722;margin-right:8px;min-width:0}html.theme-dark .checkbox-vyj6oJxw .label-vyj6oJxw{color:#d1d4dc} -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import { LAMPORTS_PER_SOL, PublicKey } from "@solana/web3.js"; 2 | 3 | export const SOLANA_RPC = process.env.NEXT_PUBLIC_SOLANA_RPC ?? ""; 4 | 5 | 6 | 7 | const endpoints = { 8 | tradingVariables:"", 9 | tradingHistory24:"", 10 | prices24Ago:"", 11 | pricingChart: "https://tizz-be-api-production.up.railway.app/charts", 12 | chartSocket: "http://", 13 | personalTradingHistoryTable: 14 | "https://backend-$$network_name$$$$collateral_type$$.gains.trade/personal-trading-history-table", 15 | userTradingVariables: 16 | "https://backend-$$network_name$$$$collateral_type$$.gains.trade/user-trading-variables", 17 | backendSocket: "wss://tizz-be-api-production.up.railway.app", 18 | }; 19 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7413.f830ad1ad6ee6f9b1cb3.css: -------------------------------------------------------------------------------- 1 | .dialog-lmxpCvnK{display:flex;min-height:300px;min-width:380px}.dialogWrapper-lmxpCvnK{flex-grow:1}.wrap-lmxpCvnK{display:flex;flex-direction:column;flex-grow:1;overflow-y:auto;position:relative;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .wrap-lmxpCvnK{scrollbar-color:#363a45 #0000}.wrap-lmxpCvnK::-webkit-scrollbar{height:5px;width:5px}.wrap-lmxpCvnK::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .wrap-lmxpCvnK::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.wrap-lmxpCvnK::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.wrap-lmxpCvnK::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5166.a12c50ad6225ca6de843.css: -------------------------------------------------------------------------------- 1 | .accessible-NQERJsv9{outline:none;overflow:visible;position:relative}.accessible-NQERJsv9:focus{outline:none}.accessible-NQERJsv9:focus-visible{outline:none}.accessible-NQERJsv9:after{border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:none;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.accessible-NQERJsv9:focus:after{display:block}.accessible-NQERJsv9:focus-visible:after{display:block}.accessible-NQERJsv9:focus:not(:focus-visible):after{display:none}.accessible-NQERJsv9:after{border-radius:6px}.accessible-NQERJsv9:not(.accessible-NQERJsv9.active-NQERJsv9):after{border-color:#2962ff}.accessible-NQERJsv9.active-NQERJsv9:after{border-color:#fffc} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7413.f830ad1ad6ee6f9b1cb3.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-lmxpCvnK{display:flex;min-height:300px;min-width:380px}.dialogWrapper-lmxpCvnK{flex-grow:1}.wrap-lmxpCvnK{display:flex;flex-direction:column;flex-grow:1;overflow-y:auto;position:relative;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .wrap-lmxpCvnK{scrollbar-color:#363a45 #0000}.wrap-lmxpCvnK::-webkit-scrollbar{height:5px;width:5px}.wrap-lmxpCvnK::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .wrap-lmxpCvnK::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.wrap-lmxpCvnK::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.wrap-lmxpCvnK::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5166.a12c50ad6225ca6de843.rtl.css: -------------------------------------------------------------------------------- 1 | .accessible-NQERJsv9{outline:none;overflow:visible;position:relative}.accessible-NQERJsv9:focus{outline:none}.accessible-NQERJsv9:focus-visible{outline:none}.accessible-NQERJsv9:after{border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:none;height:100%;pointer-events:none;position:absolute;right:0;top:0;width:100%;z-index:1}.accessible-NQERJsv9:focus:after{display:block}.accessible-NQERJsv9:focus-visible:after{display:block}.accessible-NQERJsv9:focus:not(:focus-visible):after{display:none}.accessible-NQERJsv9:after{border-radius:6px}.accessible-NQERJsv9:not(.accessible-NQERJsv9.active-NQERJsv9):after{border-color:#2962ff}.accessible-NQERJsv9.active-NQERJsv9:after{border-color:#fffc} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/udf-compatible-datafeed.ts: -------------------------------------------------------------------------------- 1 | import { UDFCompatibleDatafeedBase } from './udf-compatible-datafeed-base'; 2 | import { QuotesProvider } from './quotes-provider'; 3 | import { Requester } from './requester'; 4 | import { LimitedResponseConfiguration } from './history-provider'; 5 | 6 | export class UDFCompatibleDatafeed extends UDFCompatibleDatafeedBase { 7 | public constructor( 8 | datafeedURL: string, 9 | updateFrequency: number = 10 * 1000, 10 | limitedServerResponse?: LimitedResponseConfiguration 11 | ) { 12 | const requester = new Requester(); 13 | const quotesProvider = new QuotesProvider(datafeedURL, requester); 14 | super(datafeedURL, quotesProvider, requester, updateFrequency, limitedServerResponse); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": false, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"], 23 | "@/libraries/*": ["./public/libraries/*"], 24 | } 25 | }, 26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 27 | "exclude": ["node_modules"] 28 | } 29 | -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --foreground-rgb: 0, 0, 0; 7 | --background-start-rgb: 214, 219, 220; 8 | --background-end-rgb: 255, 255, 255; 9 | } 10 | 11 | @media (prefers-color-scheme: dark) { 12 | :root { 13 | --foreground-rgb: 255, 255, 255; 14 | --background-start-rgb: 0, 0, 0; 15 | --background-end-rgb: 0, 0, 0; 16 | } 17 | } 18 | 19 | body { 20 | color: rgb(var(--foreground-rgb)); 21 | background-color: rgb(49, 49, 49); 22 | /* background: linear-gradient( 23 | to bottom, 24 | transparent, 25 | rgb(var(--background-end-rgb)) 26 | ) 27 | rgb(var(--background-start-rgb)); */ 28 | } 29 | 30 | @layer utilities { 31 | .text-balance { 32 | text-wrap: balance; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6747.c7d403ae692f88568278.css: -------------------------------------------------------------------------------- 1 | .wrap-vSb6C0Bj{bottom:0;cursor:default;pointer-events:all;position:absolute;right:0;top:0;width:8px;will-change:height}.wrap--horizontal-vSb6C0Bj{height:8px;left:0;right:0;top:auto;will-change:width}.bar-vSb6C0Bj{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0;width:100%;will-change:height,transform}.bar-vSb6C0Bj .barInner-vSb6C0Bj{background-color:#d1d4dc;border-radius:2px;height:calc(100% - 4px);width:4px}html.theme-dark .bar-vSb6C0Bj .barInner-vSb6C0Bj{background-color:#50535e}.bar-vSb6C0Bj .barInner--horizontal-vSb6C0Bj{height:4px;width:calc(100% - 4px)}.bar--horizontal-vSb6C0Bj{height:100%;left:0;top:0;width:auto;will-change:width,transform}.scrollWrap-FaOvTD2r{pointer-events:none;position:absolute;will-change:visibility} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6747.c7d403ae692f88568278.rtl.css: -------------------------------------------------------------------------------- 1 | .wrap-vSb6C0Bj{bottom:0;cursor:default;left:0;pointer-events:all;position:absolute;top:0;width:8px;will-change:height}.wrap--horizontal-vSb6C0Bj{height:8px;left:0;right:0;top:auto;will-change:width}.bar-vSb6C0Bj{align-items:center;display:flex;justify-content:center;position:absolute;right:0;top:0;width:100%;will-change:height,transform}.bar-vSb6C0Bj .barInner-vSb6C0Bj{background-color:#d1d4dc;border-radius:2px;height:calc(100% - 4px);width:4px}html.theme-dark .bar-vSb6C0Bj .barInner-vSb6C0Bj{background-color:#50535e}.bar-vSb6C0Bj .barInner--horizontal-vSb6C0Bj{height:4px;width:calc(100% - 4px)}.bar--horizontal-vSb6C0Bj{height:100%;right:0;top:0;width:auto;will-change:width,transform}.scrollWrap-FaOvTD2r{pointer-events:none;position:absolute;will-change:visibility} -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | import Providers from "@/components/providers"; 5 | import "dotenv/config.js"; 6 | import Header from "@/components/Header"; 7 | 8 | const inter = Inter({ 9 | subsets: ["latin"], 10 | }); 11 | 12 | export const metadata: Metadata = { 13 | title: "Pump.fun", 14 | description: "Generated by create next app", 15 | }; 16 | 17 | export default function RootLayout({ 18 | children, 19 | }: Readonly<{ 20 | children: React.ReactNode; 21 | }>) { 22 | return ( 23 | 24 | 25 | 26 |
27 | {children} 28 |
29 | 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/components/Spinner.tsx: -------------------------------------------------------------------------------- 1 | import { Circles } from "react-loader-spinner" 2 | 3 | export const Spinner = () => { 4 | return ( 5 |
6 |
7 |
8 | 17 |
18 |
19 |
20 | ) 21 | 22 | } -------------------------------------------------------------------------------- /src/contexts/PageContext.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { createContext, useContext, ReactNode } from "react"; 3 | 4 | interface PageContextType { 5 | solPrice: number; 6 | } 7 | 8 | export const PageContext = createContext( 9 | undefined 10 | ); 11 | 12 | export function useData() { 13 | const context = useContext(PageContext); 14 | if (!context) { 15 | throw new Error("useData must be used within a ModalProvider"); 16 | } 17 | return context; 18 | } 19 | 20 | interface PageProviderProps { 21 | children: ReactNode; 22 | } 23 | 24 | export function PageProvider({ children }: PageProviderProps) { 25 | 26 | const pageContextValue: PageContextType = { 27 | solPrice: 101, 28 | }; 29 | return ( 30 | 31 | {children} 32 | 33 | ); 34 | } 35 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/1762.7ff6b353c441db2276da.css: -------------------------------------------------------------------------------- 1 | .separator-EI7Qsb2Q{border-top:1px solid #e0e3eb}html.theme-dark .separator-EI7Qsb2Q{border-top:1px solid #434651}.scrollable-EI7Qsb2Q{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-EI7Qsb2Q{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-EI7Qsb2Q{min-height:auto}}.scrollable-EI7Qsb2Q::-webkit-scrollbar{height:5px;width:5px}.scrollable-EI7Qsb2Q::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-EI7Qsb2Q::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-EI7Qsb2Q::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-EI7Qsb2Q::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/1762.7ff6b353c441db2276da.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-EI7Qsb2Q{border-top:1px solid #e0e3eb}html.theme-dark .separator-EI7Qsb2Q{border-top:1px solid #434651}.scrollable-EI7Qsb2Q{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-EI7Qsb2Q{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-EI7Qsb2Q{min-height:auto}}.scrollable-EI7Qsb2Q::-webkit-scrollbar{height:5px;width:5px}.scrollable-EI7Qsb2Q::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-EI7Qsb2Q::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-EI7Qsb2Q::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-EI7Qsb2Q::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/provider-interfaces.ts: -------------------------------------------------------------------------------- 1 | import { Bar, HistoryMetadata, LibrarySymbolInfo, PeriodParams, ResolutionString, SubscribeBarsCallback, SymbolResolveExtension } from '../../../charting_library/datafeed-api'; 2 | 3 | export interface IDataPulseProvider { 4 | subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, newDataCallback: SubscribeBarsCallback, listenerGuid: string): void; 5 | unsubscribeBars(listenerGuid: string): void; 6 | } 7 | 8 | export interface GetBarsResult { 9 | bars: Bar[]; 10 | meta: HistoryMetadata; 11 | } 12 | 13 | export interface IHistoryProvider { 14 | getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, periodParams: PeriodParams): Promise; 15 | } 16 | 17 | export interface IResolveProvider { 18 | resolveSymbol(symbolName: string, extension?: SymbolResolveExtension | undefined): Promise; 19 | } 20 | -------------------------------------------------------------------------------- /src/utils/getChartTable.ts: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { ChartTable } from "./types"; 4 | import { BACKEND_URL } from "./util"; 5 | 6 | export async function getChartTable({ 7 | pairIndex, 8 | from, 9 | to, 10 | range, 11 | token 12 | }: { 13 | pairIndex: number; 14 | from: number; 15 | to: number; 16 | range: number; 17 | token: string; 18 | }): Promise { 19 | try { 20 | console.log("GET bars", token, from,) 21 | const res = await fetch( 22 | `${BACKEND_URL}/chart/${pairIndex}/${from}/${to}/${range}/${token}`, 23 | ).then((data) => data.json()); 24 | 25 | if (!res) { 26 | throw new Error(); 27 | } 28 | console.log("tradingchart === getch data", res) 29 | return res as ChartTable; 30 | } catch (err) { 31 | return Promise.reject(new Error("Failed at fetching charts")); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/9138.03b8fbcfabcae851949a.css: -------------------------------------------------------------------------------- 1 | .dialog-UGdC69sw{min-width:254px;padding:40px;width:auto}.dialogInner-UGdC69sw{align-items:center;display:flex;flex-direction:column}.titleWrapper-UGdC69sw{align-items:center;display:flex;justify-content:center;margin-bottom:16px;max-width:100%}.title-UGdC69sw{color:#131722;cursor:default;font-size:20px;font-weight:700;line-height:28px;overflow:hidden;white-space:nowrap}html.theme-dark .title-UGdC69sw{color:#d1d4dc}.infoHint-UGdC69sw{color:#6a6d78;height:18px;margin-left:8px;width:18px}html.theme-dark .infoHint-UGdC69sw{color:#868993}.form-UGdC69sw{display:flex;max-width:200px;width:100%}.inputWrapper-UGdC69sw{flex-grow:1}.input-UGdC69sw{font-size:24px;text-align:center}.hint-UGdC69sw{color:#6a6d78;cursor:default;font-size:12px;line-height:18px;margin-top:3px;max-width:100%;overflow:hidden;white-space:nowrap}html.theme-dark .hint-UGdC69sw{color:#868993}.error-UGdC69sw{color:#f23645} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/9138.03b8fbcfabcae851949a.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-UGdC69sw{min-width:254px;padding:40px;width:auto}.dialogInner-UGdC69sw{align-items:center;display:flex;flex-direction:column}.titleWrapper-UGdC69sw{align-items:center;display:flex;justify-content:center;margin-bottom:16px;max-width:100%}.title-UGdC69sw{color:#131722;cursor:default;font-size:20px;font-weight:700;line-height:28px;overflow:hidden;white-space:nowrap}html.theme-dark .title-UGdC69sw{color:#d1d4dc}.infoHint-UGdC69sw{color:#6a6d78;height:18px;margin-right:8px;width:18px}html.theme-dark .infoHint-UGdC69sw{color:#868993}.form-UGdC69sw{display:flex;max-width:200px;width:100%}.inputWrapper-UGdC69sw{flex-grow:1}.input-UGdC69sw{font-size:24px;text-align:center}.hint-UGdC69sw{color:#6a6d78;cursor:default;font-size:12px;line-height:18px;margin-top:3px;max-width:100%;overflow:hidden;white-space:nowrap}html.theme-dark .hint-UGdC69sw{color:#868993}.error-UGdC69sw{color:#f23645} -------------------------------------------------------------------------------- /src/components/Modal.tsx: -------------------------------------------------------------------------------- 1 | // components/Modal.tsx 2 | import React from 'react'; 3 | 4 | interface ModalProps { 5 | isOpen: boolean; 6 | onClose: () => void; 7 | children: React.ReactNode; 8 | } 9 | 10 | const Modal: React.FC = ({ isOpen, onClose, children }) => { 11 | if (!isOpen) return null; 12 | 13 | return ( 14 |
15 |
16 | 21 | {children} 22 |
23 |
24 | ); 25 | }; 26 | 27 | export default Modal; 28 | -------------------------------------------------------------------------------- /src/context/UserContext.ts: -------------------------------------------------------------------------------- 1 | "use client" 2 | import { msgInfo, userInfo } from '@/utils/types'; 3 | import { createContext, useContext, useState, ReactNode } from 'react'; 4 | 5 | // interface WalletContextType { 6 | // user : userInfo; 7 | // setUser: (value: userInfo)=> void; 8 | 9 | 10 | // } 11 | // const walletContext = createContext ; 12 | 13 | // export default walletContext; 14 | 15 | const UserContext = createContext({ 16 | user: {} as userInfo, 17 | setUser: (value: userInfo) => { }, 18 | login: false, 19 | setLogin: (value: boolean) => { }, 20 | isLoading: false, 21 | setIsLoading: (value: boolean) => { }, 22 | imageUrl: '/upload-bg.png', 23 | setImageUrl: (value: string) => { }, 24 | isCreated: false, 25 | setIsCreated: (value: boolean) => { }, 26 | messages: [] as msgInfo[], 27 | setMessages: (value: msgInfo[]) => {}, 28 | }) 29 | 30 | export default UserContext; -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2587.1f1100dc01693edfe269.css: -------------------------------------------------------------------------------- 1 | .container-qm7Rg5MB{align-items:center;border-bottom:1px solid #e0e3eb;border-color:#e0e3eb currentcolor;border-top:1px solid #e0e3eb;cursor:default;display:flex;flex-shrink:0;position:relative}html.theme-dark .container-qm7Rg5MB{border-color:#434651}.inputContainer-qm7Rg5MB{height:24px;padding:8px 16px 8px 47px;width:100%}.inputContainer-qm7Rg5MB.withCancel-qm7Rg5MB{padding-right:70px}.input-qm7Rg5MB{background-color:initial;border:none;color:#131722;font-size:16px;height:100%;margin:0;padding:0;width:100%}html.theme-dark .input-qm7Rg5MB{color:#a3a6af}.input-qm7Rg5MB::placeholder{color:#a3a6af;font-weight:400}html.theme-dark .input-qm7Rg5MB::placeholder{color:#434651}.icon-qm7Rg5MB{color:#a3a6af;height:18px;left:20px;pointer-events:none;position:absolute;top:calc(50% - 9px)}.cancel-qm7Rg5MB{color:#6a6d78;position:absolute;right:20px}html.theme-dark .cancel-qm7Rg5MB{color:#868993}.highlighted-cwp8YRo6,html.theme-dark .highlighted-cwp8YRo6{color:#2962ff} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2587.1f1100dc01693edfe269.rtl.css: -------------------------------------------------------------------------------- 1 | .container-qm7Rg5MB{align-items:center;border-bottom:1px solid #e0e3eb;border-color:#e0e3eb currentcolor;border-top:1px solid #e0e3eb;cursor:default;display:flex;flex-shrink:0;position:relative}html.theme-dark .container-qm7Rg5MB{border-color:#434651}.inputContainer-qm7Rg5MB{height:24px;padding:8px 47px 8px 16px;width:100%}.inputContainer-qm7Rg5MB.withCancel-qm7Rg5MB{padding-left:70px}.input-qm7Rg5MB{background-color:initial;border:none;color:#131722;font-size:16px;height:100%;margin:0;padding:0;width:100%}html.theme-dark .input-qm7Rg5MB{color:#a3a6af}.input-qm7Rg5MB::placeholder{color:#a3a6af;font-weight:400}html.theme-dark .input-qm7Rg5MB::placeholder{color:#434651}.icon-qm7Rg5MB{color:#a3a6af;height:18px;pointer-events:none;position:absolute;right:20px;top:calc(50% - 9px)}.cancel-qm7Rg5MB{color:#6a6d78;left:20px;position:absolute}html.theme-dark .cancel-qm7Rg5MB{color:#868993}.highlighted-cwp8YRo6,html.theme-dark .highlighted-cwp8YRo6{color:#2962ff} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6025.263b457b1a7f9ca139b2.css: -------------------------------------------------------------------------------- 1 | .summary-ynHBVe1n{align-items:center;box-sizing:border-box;cursor:default;display:flex;flex:none;font-size:11px;letter-spacing:.4px;line-height:16px;min-width:0;padding:0 8px 0 12px;text-transform:uppercase;width:100%}.summary-ynHBVe1n,html.theme-dark .summary-ynHBVe1n{color:var(--tv-color-popup-element-secondary-text,#787b86)}.summary-ynHBVe1n.hovered-ynHBVe1n,.summary-ynHBVe1n:active{background-color:var(--tv-color-popup-element-background-hover,#f0f3fa)}@media (any-hover:hover){.summary-ynHBVe1n:hover{background-color:var(--tv-color-popup-element-background-hover,#f0f3fa)}}html.theme-dark .summary-ynHBVe1n.hovered-ynHBVe1n,html.theme-dark .summary-ynHBVe1n:active{background-color:var(--tv-color-popup-element-background-hover,#2a2e39)}@media (any-hover:hover){html.theme-dark .summary-ynHBVe1n:hover{background-color:var(--tv-color-popup-element-background-hover,#2a2e39)}}.caret-ynHBVe1n{height:18px;justify-content:center;margin:2px 0 2px auto;width:18px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/helpers.ts: -------------------------------------------------------------------------------- 1 | export interface RequestParams { 2 | [paramName: string]: string | string[] | number; 3 | } 4 | 5 | export interface UdfResponse { 6 | s: string; 7 | } 8 | 9 | export interface UdfOkResponse extends UdfResponse { 10 | s: 'ok'; 11 | } 12 | 13 | export interface UdfErrorResponse { 14 | s: 'error'; 15 | errmsg: string; 16 | } 17 | 18 | /** 19 | * If you want to enable logs from datafeed set it to `true` 20 | */ 21 | const isLoggingEnabled = false; 22 | export function logMessage(message: string): void { 23 | if (isLoggingEnabled) { 24 | const now = new Date(); 25 | // tslint:disable-next-line:no-console 26 | console.log(`${now.toLocaleTimeString()}.${now.getMilliseconds()}> ${message}`); 27 | } 28 | } 29 | 30 | export function getErrorMessage(error: string | Error | undefined): string { 31 | if (error === undefined) { 32 | return ''; 33 | } else if (typeof error === 'string') { 34 | return error; 35 | } 36 | 37 | return error.message; 38 | } 39 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6025.263b457b1a7f9ca139b2.rtl.css: -------------------------------------------------------------------------------- 1 | .summary-ynHBVe1n{align-items:center;box-sizing:border-box;cursor:default;display:flex;flex:none;font-size:11px;letter-spacing:.4px;line-height:16px;min-width:0;padding:0 12px 0 8px;text-transform:uppercase;width:100%}.summary-ynHBVe1n,html.theme-dark .summary-ynHBVe1n{color:var(--tv-color-popup-element-secondary-text,#787b86)}.summary-ynHBVe1n.hovered-ynHBVe1n,.summary-ynHBVe1n:active{background-color:var(--tv-color-popup-element-background-hover,#f0f3fa)}@media (any-hover:hover){.summary-ynHBVe1n:hover{background-color:var(--tv-color-popup-element-background-hover,#f0f3fa)}}html.theme-dark .summary-ynHBVe1n.hovered-ynHBVe1n,html.theme-dark .summary-ynHBVe1n:active{background-color:var(--tv-color-popup-element-background-hover,#2a2e39)}@media (any-hover:hover){html.theme-dark .summary-ynHBVe1n:hover{background-color:var(--tv-color-popup-element-background-hover,#2a2e39)}}.caret-ynHBVe1n{height:18px;justify-content:center;margin:2px auto 2px 0;width:18px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5649.b60ed09c5ea8c55827d4.css: -------------------------------------------------------------------------------- 1 | .wrap-_HnK0UIN{bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:0}.wrap-_HnK0UIN.positionBottom-_HnK0UIN{align-items:flex-end}.backdrop-_HnK0UIN{background-color:#9598a1;bottom:0;left:0;opacity:.7;position:absolute;right:0;top:0;transform:translateZ(0)}html.theme-dark .backdrop-_HnK0UIN{background-color:#0c0e15}.drawer-_HnK0UIN{-webkit-overflow-scrolling:touch;background-color:var(--tv-color-popup-background,#fff);box-shadow:0 2px 4px #0003;box-sizing:border-box;padding:6px 0;z-index:1}html.theme-dark .drawer-_HnK0UIN{background-color:var(--tv-color-popup-background,#1e222d);box-shadow:0 2px 4px #0006}.drawer-_HnK0UIN.positionLeft-_HnK0UIN{margin-right:40px;max-width:calc(100% - 40px);min-width:260px}.drawer-_HnK0UIN.positionBottom-_HnK0UIN{border-top-left-radius:6px;border-top-right-radius:6px;flex-basis:100%;margin-top:var(--drawer-margin-top-distance,100px);max-height:calc(100% - var(--drawer-min-top-distance, 100px));overflow:auto}.drawer-_HnK0UIN:focus{outline:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5649.b60ed09c5ea8c55827d4.rtl.css: -------------------------------------------------------------------------------- 1 | .wrap-_HnK0UIN{bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:0}.wrap-_HnK0UIN.positionBottom-_HnK0UIN{align-items:flex-end}.backdrop-_HnK0UIN{background-color:#9598a1;bottom:0;left:0;opacity:.7;position:absolute;right:0;top:0;transform:translateZ(0)}html.theme-dark .backdrop-_HnK0UIN{background-color:#0c0e15}.drawer-_HnK0UIN{-webkit-overflow-scrolling:touch;background-color:var(--tv-color-popup-background,#fff);box-shadow:0 2px 4px #0003;box-sizing:border-box;padding:6px 0;z-index:1}html.theme-dark .drawer-_HnK0UIN{background-color:var(--tv-color-popup-background,#1e222d);box-shadow:0 2px 4px #0006}.drawer-_HnK0UIN.positionLeft-_HnK0UIN{margin-left:40px;max-width:calc(100% - 40px);min-width:260px}.drawer-_HnK0UIN.positionBottom-_HnK0UIN{border-top-left-radius:6px;border-top-right-radius:6px;flex-basis:100%;margin-top:var(--drawer-margin-top-distance,100px);max-height:calc(100% - var(--drawer-min-top-distance, 100px));overflow:auto}.drawer-_HnK0UIN:focus{outline:none} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/quotes-provider.js: -------------------------------------------------------------------------------- 1 | import { getErrorMessage, logMessage, } from './helpers'; 2 | export class QuotesProvider { 3 | constructor(datafeedUrl, requester) { 4 | this._datafeedUrl = datafeedUrl; 5 | this._requester = requester; 6 | } 7 | getQuotes(symbols) { 8 | return new Promise((resolve, reject) => { 9 | this._requester.sendRequest(this._datafeedUrl, 'quotes', { symbols: symbols }) 10 | .then((response) => { 11 | if (response.s === 'ok') { 12 | resolve(response.d); 13 | } 14 | else { 15 | reject(response.errmsg); 16 | } 17 | }) 18 | .catch((error) => { 19 | const errorMessage = getErrorMessage(error); 20 | logMessage(`QuotesProvider: getQuotes failed, error=${errorMessage}`); 21 | reject(`network error: ${errorMessage}`); 22 | }); 23 | }); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Header.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useContext, useMemo } from "react"; 2 | import { ConnectButton } from "./ConnectButton"; 3 | import Link from "next/link"; 4 | import UserContext from "@/context/UserContext"; 5 | 6 | interface HeaderProps { 7 | staked: number; 8 | } 9 | const Header: FC = () => { 10 | return ( 11 |
12 |
13 |
14 | 15 | 24 | 25 |
26 | 27 |
28 |
29 | ); 30 | }; 31 | export default Header; 32 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/share-chart-to-social-utils.d7331dbca4a2aa0909e7.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[4665],{65692:(t,n,e)=>{var o;e.r(n),e.d(n,{Twitter:()=>o}),function(t){function n(t,n){return"cme"===TradingView.widgetCustomer?n+" from cmegroup.com via @tradingview $"+t:`Check out my #${t} analysis on @TradingView: ${n}`}function e(t="about:blank",n="snapshot_tweet"){const e=Math.round(screen.width/2-275),o=Math.round(screen.height/2-210);return window.open(t,n,`scrollbars=yes,resizable=yes,toolbar=no,location=yes,\n\t\t\t\twidth=550,height=420,\n\t\t\t\tleft=${e},top=${o}`)}t.getStatus=n,t.shareSnapshot=function(t){const o=e();return{onFailure:()=>{o.close()},onSuccess:e=>{o.location.href=function(t,e){return"https://twitter.com/intent/tweet?&text="+encodeURIComponent(n(t,function(t){return window.location.protocol+"//"+window.location.host+"/x/"+t+"/"}(e)))}(t,e)}}},t.shareSnapshotInstantly=function(t,o){e(function(t,e){return"https://twitter.com/intent/tweet?&text="+encodeURIComponent(n(t,e))}(t,o))}}(o||(o={}))}}]); -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7194.e04f69c8933166966874.css: -------------------------------------------------------------------------------- 1 | .button-PYEOTd6i{align-items:center;background-color:initial;border:none;border-radius:4px;box-sizing:border-box;cursor:default;display:flex;flex:none;height:100%;justify-content:center;margin:0;outline:none!important;padding:0;width:20px}.button-PYEOTd6i:hover:not(.disabled-PYEOTd6i){background-color:#f0f3fa}html.theme-dark .button-PYEOTd6i:hover:not(.disabled-PYEOTd6i){background-color:#363a45}.button-PYEOTd6i.hidden-PYEOTd6i{display:none}.icon-PYEOTd6i{align-items:center;display:flex;flex:none;justify-content:center;transition:transform .35s ease}.icon-PYEOTd6i.dropped-PYEOTd6i{transform:rotate(180deg)}.button-tFul0OhX{cursor:default;-webkit-user-select:none;user-select:none}.button-children-tFul0OhX{display:block;overflow:hidden;padding:0 2px 0 6px;text-overflow:ellipsis;white-space:nowrap;width:100%}.button-children-tFul0OhX.hiddenArrow-tFul0OhX{padding-right:6px}.invisibleFocusHandler-tFul0OhX{height:0;opacity:0;pointer-events:none;width:0}.placeholder-V6ceS6BN{-webkit-text-fill-color:currentColor;color:#a3a6af;opacity:1}html.theme-dark .placeholder-V6ceS6BN{color:#434651} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/7194.e04f69c8933166966874.rtl.css: -------------------------------------------------------------------------------- 1 | .button-PYEOTd6i{align-items:center;background-color:initial;border:none;border-radius:4px;box-sizing:border-box;cursor:default;display:flex;flex:none;height:100%;justify-content:center;margin:0;outline:none!important;padding:0;width:20px}.button-PYEOTd6i:hover:not(.disabled-PYEOTd6i){background-color:#f0f3fa}html.theme-dark .button-PYEOTd6i:hover:not(.disabled-PYEOTd6i){background-color:#363a45}.button-PYEOTd6i.hidden-PYEOTd6i{display:none}.icon-PYEOTd6i{align-items:center;display:flex;flex:none;justify-content:center;transition:transform .35s ease}.icon-PYEOTd6i.dropped-PYEOTd6i{transform:rotate(-180deg)}.button-tFul0OhX{cursor:default;-webkit-user-select:none;user-select:none}.button-children-tFul0OhX{display:block;overflow:hidden;padding:0 6px 0 2px;text-overflow:ellipsis;white-space:nowrap;width:100%}.button-children-tFul0OhX.hiddenArrow-tFul0OhX{padding-left:6px}.invisibleFocusHandler-tFul0OhX{height:0;opacity:0;pointer-events:none;width:0}.placeholder-V6ceS6BN{-webkit-text-fill-color:currentColor;color:#a3a6af;opacity:1}html.theme-dark .placeholder-V6ceS6BN{color:#434651} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/3842.8cf6b523fd5a5b6fb022.css: -------------------------------------------------------------------------------- 1 | .menuWrap-Kq3ruQo8{background-color:var(--tv-color-popup-background,#fff);border-radius:6px;box-shadow:0 2px 4px #0003;box-sizing:border-box;text-align:left;-webkit-user-select:none;user-select:none;z-index:100}html.theme-dark .menuWrap-Kq3ruQo8{background-color:var(--tv-color-popup-background,#1e222d);box-shadow:0 2px 4px #0006}.menuWrap-Kq3ruQo8.isMeasuring-Kq3ruQo8{opacity:0;pointer-events:none;position:fixed;visibility:hidden}.menuWrap-Kq3ruQo8:focus{outline:none}.scrollWrap-Kq3ruQo8{height:100%;overflow-x:hidden;overflow-y:auto}.scrollWrap-Kq3ruQo8.momentumBased-Kq3ruQo8{-webkit-overflow-scrolling:touch}.scrollWrap-Kq3ruQo8::-webkit-scrollbar{height:5px;width:5px}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollWrap-Kq3ruQo8::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-corner{display:none}.menuBox-Kq3ruQo8{padding:6px 0}.isHidden-Kq3ruQo8{display:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/3842.8cf6b523fd5a5b6fb022.rtl.css: -------------------------------------------------------------------------------- 1 | .menuWrap-Kq3ruQo8{background-color:var(--tv-color-popup-background,#fff);border-radius:6px;box-shadow:0 2px 4px #0003;box-sizing:border-box;text-align:right;-webkit-user-select:none;user-select:none;z-index:100}html.theme-dark .menuWrap-Kq3ruQo8{background-color:var(--tv-color-popup-background,#1e222d);box-shadow:0 2px 4px #0006}.menuWrap-Kq3ruQo8.isMeasuring-Kq3ruQo8{opacity:0;pointer-events:none;position:fixed;visibility:hidden}.menuWrap-Kq3ruQo8:focus{outline:none}.scrollWrap-Kq3ruQo8{height:100%;overflow-x:hidden;overflow-y:auto}.scrollWrap-Kq3ruQo8.momentumBased-Kq3ruQo8{-webkit-overflow-scrolling:touch}.scrollWrap-Kq3ruQo8::-webkit-scrollbar{height:5px;width:5px}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollWrap-Kq3ruQo8::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollWrap-Kq3ruQo8::-webkit-scrollbar-corner{display:none}.menuBox-Kq3ruQo8{padding:6px 0}.isHidden-Kq3ruQo8{display:none} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/favorite-drawings-api.340e60e2342b0d93ebe7.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[5551],{71355:(i,t,e)=>{e.r(t),e.d(t,{FavoriteDrawingsApi:()=>l});var s=e(50151),a=e(97145),o=e(241);class l{constructor(){this._visibility=new a.WatchedValue(!1),this._canBeShownValue=new a.WatchedValue(!1),this._toolbarPromise=null,this._toolbar=null,this._init()}visible(){return this._visibility.readonly()}canBeShown(){return this._canBeShownValue.readonly()}show(){(0,s.ensureNotNull)(this._toolbarPromise).then((i=>{i.showAndSaveSettingsValue()}))}hide(){null!==this._toolbarPromise&&this._toolbarPromise.then((i=>{i.hideAndSaveSettingsValue()}))}_init(){(0,o.createFavoriteDrawingToolbar)();const i=(0,s.ensureNotNull)((0,o.getFavoriteDrawingToolbarPromise)());this._toolbarPromise=i.then((i=>(this._toolbar=i,this._visibility.setValue(this._toolbar.visibility().value()),this._canBeShownValue.setValue(this._toolbar.canBeShown().value()),this._toolbar.visibility().subscribe((i=>{this._visibility.setValue(i)})),this._toolbar.canBeShown().subscribe((i=>{this._canBeShownValue.setValue(i)})),this._toolbar)))}}}}]); -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/performance.769cf9dda2ede7d12b74.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2260.b98824e4829a1aa9b444.css: -------------------------------------------------------------------------------- 1 | .row-Sj9z7O1v{grid-gap:12px;display:grid;grid-template-columns:150px 100px;margin-bottom:16px;padding-left:20px;padding-right:20px}.mobileRow-Sj9z7O1v{justify-content:flex-start;padding-left:20px}.calendar-PM3TZruR{margin-left:8px;margin-right:8px;padding-bottom:15px;padding-top:1px}.dialogWrapper-P_IVoUsZ{min-width:302px}.dialogWrapperSmall-P_IVoUsZ{max-width:419px;width:100%}.tabs-P_IVoUsZ{--ui-lib-underline-tabs-hor-padding:20px;padding:0 var(--ui-lib-underline-tabs-hor-padding)}.content-P_IVoUsZ{overflow:auto;padding-top:17px;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .content-P_IVoUsZ{scrollbar-color:#363a45 #0000}.content-P_IVoUsZ::-webkit-scrollbar{height:5px;width:5px}.content-P_IVoUsZ::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .content-P_IVoUsZ::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.content-P_IVoUsZ::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.content-P_IVoUsZ::-webkit-scrollbar-corner{display:none}.contentMobile-P_IVoUsZ{display:flex;flex-direction:column;flex-grow:1}.bodyWrapper-P_IVoUsZ{flex:0 1 201px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/9789.cb5ad20bc727d3820b6c.css: -------------------------------------------------------------------------------- 1 | .tooltip-eSLcXvvL{background:#fff;border-radius:8px;cursor:default;filter:drop-shadow(0 1px 4px rgba(0,0,0,.2));position:absolute;visibility:hidden;z-index:7}html.theme-dark .tooltip-eSLcXvvL{background:#1e222d}.tooltip-eSLcXvvL.show-eSLcXvvL{visibility:unset}html.theme-dark .tooltip-eSLcXvvL{filter:drop-shadow(0 1px 4px rgba(0,0,0,.4))}.tooltip-eSLcXvvL:after,.tooltip-eSLcXvvL:before{border:10px solid #0000;content:" ";height:0;margin-top:-10px;pointer-events:none;position:absolute;top:50%;width:0}.tooltip-eSLcXvvL:not(.right-eSLcXvvL):after{border-color:#0000 #0000 #0000 #fff;border-left-width:13px;left:100%}html.theme-dark .tooltip-eSLcXvvL:not(.right-eSLcXvvL):after{border-left-color:#1e222d}.tooltip-eSLcXvvL.right-eSLcXvvL:before{border-color:#0000 #fff #0000 #0000;border-right-width:13px;right:100%}html.theme-dark .tooltip-eSLcXvvL.right-eSLcXvvL:before{border-right-color:#1e222d}.text-hF57_4zZ{font-feature-settings:"tnum" on,"lnum" on;color:#131722;font-family:-apple-system,BlinkMacSystemFont,Trebuchet MS,Roboto,Ubuntu,sans-serif;font-size:14px;line-height:18px;max-width:244px;min-width:25px;padding:12px}html.theme-dark .text-hF57_4zZ{color:#d1d4dc} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2260.b98824e4829a1aa9b444.rtl.css: -------------------------------------------------------------------------------- 1 | .row-Sj9z7O1v{grid-gap:12px;display:grid;grid-template-columns:150px 100px;margin-bottom:16px;padding-left:20px;padding-right:20px}.mobileRow-Sj9z7O1v{justify-content:flex-start;padding-right:20px}.calendar-PM3TZruR{margin-left:8px;margin-right:8px;padding-bottom:15px;padding-top:1px}.dialogWrapper-P_IVoUsZ{min-width:302px}.dialogWrapperSmall-P_IVoUsZ{max-width:419px;width:100%}.tabs-P_IVoUsZ{--ui-lib-underline-tabs-hor-padding:20px;padding:0 var(--ui-lib-underline-tabs-hor-padding)}.content-P_IVoUsZ{overflow:auto;padding-top:17px;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .content-P_IVoUsZ{scrollbar-color:#363a45 #0000}.content-P_IVoUsZ::-webkit-scrollbar{height:5px;width:5px}.content-P_IVoUsZ::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .content-P_IVoUsZ::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.content-P_IVoUsZ::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.content-P_IVoUsZ::-webkit-scrollbar-corner{display:none}.contentMobile-P_IVoUsZ{display:flex;flex-direction:column;flex-grow:1}.bodyWrapper-P_IVoUsZ{flex:0 1 201px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/9789.cb5ad20bc727d3820b6c.rtl.css: -------------------------------------------------------------------------------- 1 | .tooltip-eSLcXvvL{background:#fff;border-radius:8px;cursor:default;filter:drop-shadow(0 1px 4px rgba(0,0,0,.2));position:absolute;visibility:hidden;z-index:7}html.theme-dark .tooltip-eSLcXvvL{background:#1e222d}.tooltip-eSLcXvvL.show-eSLcXvvL{visibility:unset}html.theme-dark .tooltip-eSLcXvvL{filter:drop-shadow(0 1px 4px rgba(0,0,0,.4))}.tooltip-eSLcXvvL:after,.tooltip-eSLcXvvL:before{border:10px solid #0000;content:" ";height:0;margin-top:-10px;pointer-events:none;position:absolute;top:50%;width:0}.tooltip-eSLcXvvL:not(.right-eSLcXvvL):after{border-color:#0000 #fff #0000 #0000;border-right-width:13px;right:100%}html.theme-dark .tooltip-eSLcXvvL:not(.right-eSLcXvvL):after{border-right-color:#1e222d}.tooltip-eSLcXvvL.right-eSLcXvvL:before{border-color:#0000 #0000 #0000 #fff;border-left-width:13px;left:100%}html.theme-dark .tooltip-eSLcXvvL.right-eSLcXvvL:before{border-left-color:#1e222d}.text-hF57_4zZ{font-feature-settings:"tnum" on,"lnum" on;color:#131722;font-family:-apple-system,BlinkMacSystemFont,Trebuchet MS,Roboto,Ubuntu,sans-serif;font-size:14px;line-height:18px;max-width:244px;min-width:25px;padding:12px}html.theme-dark .text-hF57_4zZ{color:#d1d4dc} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/4015.1d0e3a62a59d173c81f3.css: -------------------------------------------------------------------------------- 1 | .tv-circle-logo{align-items:center;border-radius:50%;color:#fff;display:inline-flex;font-style:normal;font-weight:700;justify-content:center}html.theme-dark .tv-circle-logo{color:#5d606b}.tv-circle-logo:not(img){background-color:#e0e3eb}html.theme-dark .tv-circle-logo:not(img){background-color:#2a2e39}.tv-circle-logo--xxxsmall{font-size:11px;height:18px;line-height:16px;width:18px}.tv-circle-logo--xxsmall{font-size:11px;height:20px;line-height:16px;width:20px}.tv-circle-logo--xsmall{font-size:11px;height:24px;line-height:16px;width:24px}.tv-circle-logo--small{font-size:14px;height:28px;line-height:16px;width:28px}.tv-circle-logo--medium{font-size:16px;height:36px;line-height:16px;width:36px}.tv-circle-logo--large{font-size:24px;height:48px;line-height:32px;width:48px}.tv-circle-logo--xlarge{font-size:40px;height:56px;line-height:40px;width:56px}.tv-circle-logo--xxlarge{font-size:80px;height:112px;line-height:80px;width:112px}.tv-circle-logo--xxxlarge{font-size:160px;height:168px;line-height:160px;width:168px}.tv-circle-logo--border{border:1px solid #fff}html.theme-dark .tv-circle-logo--border{border:1px solid #1e222d}.tv-circle-logo--visually-hidden{opacity:0;position:absolute} -------------------------------------------------------------------------------- /src/components/Trade.tsx: -------------------------------------------------------------------------------- 1 | import { recordInfo } from "@/utils/types"; 2 | import Link from "next/link"; 3 | import React from "react"; 4 | interface TradePropsInfo { 5 | trade: recordInfo; 6 | } 7 | 8 | export const Trade: React.FC = ({ trade }) => { 9 | 10 | return ( 11 |
12 |
13 | Token IMG 20 |
21 | {trade.holder.name} 22 |
23 |
24 |

{trade.holdingStatus ==2 ? "BUY":"SELL"}

25 |

{trade.amount}

26 |

{trade.time.toString()}

27 | 28 |

{trade.tx.slice(0,6)}

29 | 30 |
31 | ); 32 | }; 33 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/4015.1d0e3a62a59d173c81f3.rtl.css: -------------------------------------------------------------------------------- 1 | .tv-circle-logo{align-items:center;border-radius:50%;color:#fff;display:inline-flex;font-style:normal;font-weight:700;justify-content:center}html.theme-dark .tv-circle-logo{color:#5d606b}.tv-circle-logo:not(img){background-color:#e0e3eb}html.theme-dark .tv-circle-logo:not(img){background-color:#2a2e39}.tv-circle-logo--xxxsmall{font-size:11px;height:18px;line-height:16px;width:18px}.tv-circle-logo--xxsmall{font-size:11px;height:20px;line-height:16px;width:20px}.tv-circle-logo--xsmall{font-size:11px;height:24px;line-height:16px;width:24px}.tv-circle-logo--small{font-size:14px;height:28px;line-height:16px;width:28px}.tv-circle-logo--medium{font-size:16px;height:36px;line-height:16px;width:36px}.tv-circle-logo--large{font-size:24px;height:48px;line-height:32px;width:48px}.tv-circle-logo--xlarge{font-size:40px;height:56px;line-height:40px;width:56px}.tv-circle-logo--xxlarge{font-size:80px;height:112px;line-height:80px;width:112px}.tv-circle-logo--xxxlarge{font-size:160px;height:168px;line-height:160px;width:168px}.tv-circle-logo--border{border:1px solid #fff}html.theme-dark .tv-circle-logo--border{border:1px solid #1e222d}.tv-circle-logo--visually-hidden{opacity:0;position:absolute} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/lib/requester.js: -------------------------------------------------------------------------------- 1 | import { logMessage } from './helpers'; 2 | export class Requester { 3 | constructor(headers) { 4 | if (headers) { 5 | this._headers = headers; 6 | } 7 | } 8 | sendRequest(datafeedUrl, urlPath, params) { 9 | if (params !== undefined) { 10 | const paramKeys = Object.keys(params); 11 | if (paramKeys.length !== 0) { 12 | urlPath += '?'; 13 | } 14 | urlPath += paramKeys.map((key) => { 15 | return `${encodeURIComponent(key)}=${encodeURIComponent(params[key].toString())}`; 16 | }).join('&'); 17 | } 18 | logMessage('New request: ' + urlPath); 19 | // Send user cookies if the URL is on the same origin as the calling script. 20 | const options = { credentials: 'same-origin' }; 21 | if (this._headers !== undefined) { 22 | options.headers = this._headers; 23 | } 24 | // eslint-disable-next-line no-restricted-globals 25 | return fetch(`${datafeedUrl}/${urlPath}`, options) 26 | .then((response) => response.text()) 27 | .then((responseTest) => JSON.parse(responseTest)); 28 | } 29 | } -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/855.56a5e53c97d91a9f96f7.css: -------------------------------------------------------------------------------- 1 | .container-BZKENkhT{align-items:center;cursor:default;display:flex;flex:0 0 auto;padding:0 20px}.unsetAlign-BZKENkhT{align-items:stretch}.title-BZKENkhT{color:#131722;flex-grow:1;font-size:20px;font-weight:600;line-height:28px;min-width:0;padding:17px 0}html.theme-dark .title-BZKENkhT{color:#d1d4dc}@media screen and (max-height:360px){.title-BZKENkhT{padding:10px 0}}.subtitle-BZKENkhT{font-size:16px;font-weight:400;line-height:24px;margin:8px 0 3px}.textWrap-BZKENkhT{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;line-height:28px;max-height:56px;overflow:hidden}.ellipsis-BZKENkhT{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-BZKENkhT{margin:17px -3px 17px 0}@media screen and (max-height:360px){.close-BZKENkhT{margin-bottom:10px;margin-top:10px}}.icon-BZKENkhT{height:17px}.dialog-b8SxMnzX{display:block;max-width:550px;min-width:380px;width:auto}@media screen and (max-width:379px){.dialog-b8SxMnzX{min-height:auto;min-width:100%}}.wrapper-b8SxMnzX{display:flex;flex-direction:column;height:100%}.dialog-b8SxMnzX .separator-b8SxMnzX{flex:none;margin:0 0 2px}.bounded-b8SxMnzX{box-shadow:0 0 0 1px #e0e3eb}html.theme-dark .bounded-b8SxMnzX{box-shadow:0 0 0 1px #434651} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/855.56a5e53c97d91a9f96f7.rtl.css: -------------------------------------------------------------------------------- 1 | .container-BZKENkhT{align-items:center;cursor:default;display:flex;flex:0 0 auto;padding:0 20px}.unsetAlign-BZKENkhT{align-items:stretch}.title-BZKENkhT{color:#131722;flex-grow:1;font-size:20px;font-weight:600;line-height:28px;min-width:0;padding:17px 0}html.theme-dark .title-BZKENkhT{color:#d1d4dc}@media screen and (max-height:360px){.title-BZKENkhT{padding:10px 0}}.subtitle-BZKENkhT{font-size:16px;font-weight:400;line-height:24px;margin:8px 0 3px}.textWrap-BZKENkhT{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;line-height:28px;max-height:56px;overflow:hidden}.ellipsis-BZKENkhT{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-BZKENkhT{margin:17px 0 17px -3px}@media screen and (max-height:360px){.close-BZKENkhT{margin-bottom:10px;margin-top:10px}}.icon-BZKENkhT{height:17px}.dialog-b8SxMnzX{display:block;max-width:550px;min-width:380px;width:auto}@media screen and (max-width:379px){.dialog-b8SxMnzX{min-height:auto;min-width:100%}}.wrapper-b8SxMnzX{display:flex;flex-direction:column;height:100%}.dialog-b8SxMnzX .separator-b8SxMnzX{flex:none;margin:0 0 2px}.bounded-b8SxMnzX{box-shadow:0 0 0 1px #e0e3eb}html.theme-dark .bounded-b8SxMnzX{box-shadow:0 0 0 1px #434651} -------------------------------------------------------------------------------- /src/components/MessageForm.tsx: -------------------------------------------------------------------------------- 1 | import { msgInfo, userInfo } from "@/utils/types"; 2 | 3 | interface MessageFormProps { 4 | msg: msgInfo; 5 | } 6 | 7 | export const MessageForm: React.FC = ({ msg }) => { 8 | return ( 9 |
10 |
11 |
12 | Token IMG 19 |

20 | {(msg.sender as userInfo).name} 21 |

22 | {msg.time &&

{msg.time.toString()}

} 23 |
24 |
25 | {msg.img !== undefined && ( 26 | Token IMG 33 | )} 34 |
35 |

{msg.msg}

36 |
37 |
38 |
39 |
40 | ); 41 | }; 42 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2676.2d3cabbd39a3b0d6e9ea.css: -------------------------------------------------------------------------------- 1 | .scrollable-uT4IUFMG{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-uT4IUFMG{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-uT4IUFMG{min-height:auto}}.scrollable-uT4IUFMG::-webkit-scrollbar{height:5px;width:5px}.scrollable-uT4IUFMG::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-uT4IUFMG::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-uT4IUFMG::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-uT4IUFMG::-webkit-scrollbar-corner{display:none}.content-uT4IUFMG{border-color:currentcolor #e0e3eb #e0e3eb;border-top:1px solid #e0e3eb;box-sizing:border-box;flex:1 1 auto;padding:24px 20px}html.theme-dark .content-uT4IUFMG{border-color:#434651}.content-uT4IUFMG .row-uT4IUFMG{align-items:center;color:#131722;display:flex;margin-top:16px}html.theme-dark .content-uT4IUFMG .row-uT4IUFMG{color:#d1d4dc}.content-uT4IUFMG .row-uT4IUFMG:first-child{margin-top:0}.content-uT4IUFMG .row-uT4IUFMG .title-uT4IUFMG{display:flex;flex:none;line-height:21px;margin-right:20px;width:80px;word-break:break-word}.content-uT4IUFMG .row-uT4IUFMG .control-uT4IUFMG{line-height:21px;width:100px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/2676.2d3cabbd39a3b0d6e9ea.rtl.css: -------------------------------------------------------------------------------- 1 | .scrollable-uT4IUFMG{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-uT4IUFMG{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-uT4IUFMG{min-height:auto}}.scrollable-uT4IUFMG::-webkit-scrollbar{height:5px;width:5px}.scrollable-uT4IUFMG::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-uT4IUFMG::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-uT4IUFMG::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-uT4IUFMG::-webkit-scrollbar-corner{display:none}.content-uT4IUFMG{border-color:currentcolor #e0e3eb #e0e3eb;border-top:1px solid #e0e3eb;box-sizing:border-box;flex:1 1 auto;padding:24px 20px}html.theme-dark .content-uT4IUFMG{border-color:#434651}.content-uT4IUFMG .row-uT4IUFMG{align-items:center;color:#131722;display:flex;margin-top:16px}html.theme-dark .content-uT4IUFMG .row-uT4IUFMG{color:#d1d4dc}.content-uT4IUFMG .row-uT4IUFMG:first-child{margin-top:0}.content-uT4IUFMG .row-uT4IUFMG .title-uT4IUFMG{display:flex;flex:none;line-height:21px;margin-left:20px;width:80px;word-break:break-word}.content-uT4IUFMG .row-uT4IUFMG .control-uT4IUFMG{line-height:21px;width:100px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/quotes-provider.ts: -------------------------------------------------------------------------------- 1 | import { UdfQuotesResponse, IQuotesProvider } from './iquotes-provider'; 2 | import { QuoteData } from '../../../charting_library/datafeed-api'; 3 | 4 | import { 5 | getErrorMessage, 6 | logMessage, 7 | UdfErrorResponse, 8 | } from './helpers'; 9 | import { IRequester } from './irequester'; 10 | 11 | export class QuotesProvider implements IQuotesProvider { 12 | private readonly _datafeedUrl: string; 13 | private readonly _requester: IRequester; 14 | 15 | public constructor(datafeedUrl: string, requester: IRequester) { 16 | this._datafeedUrl = datafeedUrl; 17 | this._requester = requester; 18 | } 19 | 20 | public getQuotes(symbols: string[]): Promise { 21 | return new Promise((resolve: (data: QuoteData[]) => void, reject: (reason: string) => void) => { 22 | this._requester.sendRequest(this._datafeedUrl, 'quotes', { symbols: symbols }) 23 | .then((response: UdfQuotesResponse | UdfErrorResponse) => { 24 | if (response.s === 'ok') { 25 | resolve(response.d); 26 | } else { 27 | reject(response.errmsg); 28 | } 29 | }) 30 | .catch((error?: string | Error) => { 31 | const errorMessage = getErrorMessage(error); 32 | logMessage(`QuotesProvider: getQuotes failed, error=${errorMessage}`); 33 | reject(`network error: ${errorMessage}`); 34 | }); 35 | }); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pump-frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@coral-xyz/anchor": "^0.30.0", 13 | "@gainsnetwork/sdk": "^0.2.1", 14 | "@solana/spl-token": "^0.4.6", 15 | "@solana/wallet-adapter-base": "^0.9.23", 16 | "@solana/wallet-adapter-react": "^0.15.35", 17 | "@solana/wallet-adapter-react-ui": "^0.9.35", 18 | "@solana/wallet-adapter-wallets": "^0.19.32", 19 | "@solana/web3.js": "^1.91.8", 20 | "@types/bn.js": "^5.1.5", 21 | "axios": "^1.7.2", 22 | "bs58": "^5.0.0", 23 | "dotenv": "^16.4.5", 24 | "lightweight-charts": "^4.1.5", 25 | "next": "14.2.3", 26 | "react": "^18", 27 | "react-dom": "^18", 28 | "react-loader-spinner": "^6.1.6", 29 | "react-loading": "^2.0.3", 30 | "react-query": "^3.39.3", 31 | "react-spinners": "^0.13.8", 32 | "react-toastify": "^10.0.5", 33 | "react-use": "^17.5.0", 34 | "tailwind-merge": "^2.3.0", 35 | "viem": "^2.14.2" 36 | }, 37 | "devDependencies": { 38 | "@types/node": "^20", 39 | "@types/react": "^18", 40 | "@types/react-dom": "^18", 41 | "eslint": "^8", 42 | "eslint-config-next": "14.2.3", 43 | "postcss": "^8", 44 | "tailwindcss": "^3.4.1", 45 | "typescript": "^5" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/components/CoinBlog.tsx: -------------------------------------------------------------------------------- 1 | import { coinInfo, userInfo } from "@/utils/types"; 2 | import { getUserInfo } from "@/utils/util"; 3 | import Link from "next/link"; 4 | import { FC, useEffect } from "react"; 5 | 6 | interface CoinBlogProps { 7 | coin: coinInfo; 8 | componentKey: string; 9 | } 10 | 11 | export const CoinBlog: React.FC = ({ coin, componentKey }) => { 12 | return ( 13 |
14 | image 15 | {/* */} 16 |
17 |
18 |
Created by 🐸
19 | 20 |
21 | {(coin?.creator as userInfo)?.name} 22 |
23 | 24 |
25 |
market cap: 32.25k{coin?.marketcap} [badge:👑]
26 |
replies: {coin?.replies}
27 |
28 | {coin?.name} [ticker: {coin?.ticker}] 29 |
30 | 31 | {componentKey === "coin" ? ( 32 | coin?.description &&
{coin?.description}
33 | ) : ( 34 | <> 35 | )} 36 |
37 |
38 | ); 39 | }; 40 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/manage-drawings-dialog.5f8ccee744105adf029e.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[1702],{95002:e=>{e.exports={dialog:"dialog-lmxpCvnK",dialogWrapper:"dialogWrapper-lmxpCvnK",wrap:"wrap-lmxpCvnK"}},41662:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ManageDrawingsDialogRenderer:()=>c});var s=i(50959),a=i(962),n=i(11542),r=i(16216),l=i(98310),o=i(35057),d=i(23263),h=i(95002);class p extends s.PureComponent{constructor(e){super(e),this._dialogRef=s.createRef(),this._renderChildren=e=>s.createElement("div",{className:h.wrap},s.createElement(d.ManageDrawings,{onInitialized:e.centerAndFit,chartWidget:this._activeChartWidget}));const t=(0,r.service)(l.CHART_WIDGET_COLLECTION_SERVICE);this._activeChartWidget=t.activeChartWidget.value(),this.state={layoutName:t.metaInfo.name.value()}}render(){return s.createElement(o.AdaptivePopupDialog,{wrapperClassName:h.dialogWrapper,className:h.dialog,dataName:"manage-drawings-dialog",isOpened:!0,onClickOutside:this.props.onClose,onClose:this.props.onClose,ref:this._dialogRef,render:this._renderChildren,showSeparator:!0,title:n.t(null,void 0,i(72357)),subtitle:this.state.layoutName})}}class c{constructor(e){this._container=document.createElement("div"),this._isVisible=!1,this._handleClose=()=>{this._onClose&&this._onClose(),a.unmountComponentAtNode(this._container),this._isVisible=!1},this._onClose=e}hide(){this._handleClose()}isVisible(){return this._isVisible}show(){a.render(s.createElement(p,{onClose:this._handleClose}),this._container),this._isVisible=!0}}}}]); -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/8904.a302177fe7e3ccd50cb0.css: -------------------------------------------------------------------------------- 1 | .titleWrap-e3jFxbHm{align-items:center;display:flex}.ellipsis-e3jFxbHm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hideInput-e3jFxbHm,.hideText-e3jFxbHm{height:0;visibility:hidden}.empty-e3jFxbHm{height:34px;margin-right:-3px;width:34px}.hideEmpty-e3jFxbHm{margin:0;width:0}.editIcon-e3jFxbHm{align-items:center;border-radius:2px;color:#131722;cursor:default;display:flex;flex-shrink:0;height:34px;justify-content:center;margin-left:5px;width:34px}html.theme-dark .editIcon-e3jFxbHm{color:#d1d4dc}@media (any-hover:hover){.editIcon-e3jFxbHm:hover{background-color:#f0f3fa}html.theme-dark .editIcon-e3jFxbHm:hover{background-color:#2a2e39}}.scrollable-Ycj0dUGE{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-Ycj0dUGE{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-Ycj0dUGE{min-height:auto}}.scrollable-Ycj0dUGE::-webkit-scrollbar{height:5px;width:5px}.scrollable-Ycj0dUGE::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-Ycj0dUGE::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-Ycj0dUGE::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-Ycj0dUGE::-webkit-scrollbar-corner{display:none}.tabs-Ycj0dUGE,.tabs-xNPrJ8dY{--ui-lib-underline-tabs-hor-padding:20px;padding:0 var(--ui-lib-underline-tabs-hor-padding)} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/8904.a302177fe7e3ccd50cb0.rtl.css: -------------------------------------------------------------------------------- 1 | .titleWrap-e3jFxbHm{align-items:center;display:flex}.ellipsis-e3jFxbHm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hideInput-e3jFxbHm,.hideText-e3jFxbHm{height:0;visibility:hidden}.empty-e3jFxbHm{height:34px;margin-left:-3px;width:34px}.hideEmpty-e3jFxbHm{margin:0;width:0}.editIcon-e3jFxbHm{align-items:center;border-radius:2px;color:#131722;cursor:default;display:flex;flex-shrink:0;height:34px;justify-content:center;margin-right:5px;width:34px}html.theme-dark .editIcon-e3jFxbHm{color:#d1d4dc}@media (any-hover:hover){.editIcon-e3jFxbHm:hover{background-color:#f0f3fa}html.theme-dark .editIcon-e3jFxbHm:hover{background-color:#2a2e39}}.scrollable-Ycj0dUGE{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-Ycj0dUGE{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-Ycj0dUGE{min-height:auto}}.scrollable-Ycj0dUGE::-webkit-scrollbar{height:5px;width:5px}.scrollable-Ycj0dUGE::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-Ycj0dUGE::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-Ycj0dUGE::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-Ycj0dUGE::-webkit-scrollbar-corner{display:none}.tabs-Ycj0dUGE,.tabs-xNPrJ8dY{--ui-lib-underline-tabs-hor-padding:20px;padding:0 var(--ui-lib-underline-tabs-hor-padding)} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6985.2cd225354e2fd236e8e9.css: -------------------------------------------------------------------------------- 1 | .row-DFIg7eOh{vertical-align:top}.line-DFIg7eOh{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);height:1px;margin:6px 0}html.theme-dark .line-DFIg7eOh{background-color:var(--tv-color-popup-element-divider-background,#434651)}.hint-DFIg7eOh{color:#9598a1;font-size:12px;margin-left:6px;margin-top:12px;text-align:left}html.theme-dark .hint-DFIg7eOh{color:#50535e}.separator-Ymxd0dt_{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);height:1px;margin:6px 0}html.theme-dark .separator-Ymxd0dt_{background-color:var(--tv-color-popup-element-divider-background,#434651)}.loaderWrap-jGEARQlM{height:32px;margin-left:-2px;position:relative}.loaderWrap-jGEARQlM.big-jGEARQlM{min-width:100px}.loaderWrap-jGEARQlM.big-jGEARQlM .loader-jGEARQlM{position:absolute}.loader-jGEARQlM{position:static}.menu-Tx5xMZww{border-collapse:collapse;cursor:default;overflow:visible;-webkit-user-select:none;user-select:none;z-index:500}.accessible-rm8yeqY4{outline:none;overflow:visible;position:relative}.accessible-rm8yeqY4:focus{outline:none}.accessible-rm8yeqY4:focus-visible{outline:none}.accessible-rm8yeqY4:after{border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:none;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1}.accessible-rm8yeqY4:focus:after{display:block}.accessible-rm8yeqY4:focus-visible:after{display:block}.accessible-rm8yeqY4:focus:not(:focus-visible):after{display:none}.accessible-rm8yeqY4:after{border-color:#2962ff;border-radius:6px} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/chart-storage-external-adapter.9c1267d07e48b8d8f53f.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[8313],{33047:(e,o,r)=>{r.r(o),r.d(o,{ChartStorageExternalAdapter:()=>a});class a{constructor(e){this._externalAdapter=e,this._externalAdapter.saveLineToolsAndGroups&&this._externalAdapter.loadLineToolsAndGroups||console.warn("saveLineToolsAndGroups and loadLineToolsAndGroups are required in the SaveLoad Adapter when `saveload_separate_drawings_storage` featureset is enabled.")}async saveLineToolsAndGroups(e,o,r,a,t){if(!this._externalAdapter.saveLineToolsAndGroups)throw new Error("saveLineToolsAndGroups should be implemented within the SaveLoad Adapter when `saveload_separate_drawings_storage` featureset is enabled.");if(void 0===e)throw new Error("Cannot save line tools without a layout");return await this._externalAdapter.saveLineToolsAndGroups(e,o,r),{chartId:o,content:"",layoutId:e,savedDto:r,sharingMode:a}}async loadLineToolsAndGroups(e,o,r){if(!this._externalAdapter.loadLineToolsAndGroups)throw new Error("loadLineToolsAndGroups should be implemented within the SaveLoad Adapter when `saveload_separate_drawings_storage` featureset is enabled.");const a={};"mainSeriesLineTools"===r.requestType&&(a.symbol=r.symbol);return await this._externalAdapter.loadLineToolsAndGroups(e,o,r.requestType,a)}removeLineTools(e,o,r,a){throw new Error("Method not implemented.")}getLayoutDrawingsSizeInfo(e,o){throw new Error("Method not implemented.")}getUserGlobalDrawingsSizeInfo(e){throw new Error("Method not implemented.")}}}}]); -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/6985.2cd225354e2fd236e8e9.rtl.css: -------------------------------------------------------------------------------- 1 | .row-DFIg7eOh{vertical-align:top}.line-DFIg7eOh{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);height:1px;margin:6px 0}html.theme-dark .line-DFIg7eOh{background-color:var(--tv-color-popup-element-divider-background,#434651)}.hint-DFIg7eOh{color:#9598a1;font-size:12px;margin-right:6px;margin-top:12px;text-align:right}html.theme-dark .hint-DFIg7eOh{color:#50535e}.separator-Ymxd0dt_{background-color:var(--tv-color-popup-element-divider-background,#e0e3eb);height:1px;margin:6px 0}html.theme-dark .separator-Ymxd0dt_{background-color:var(--tv-color-popup-element-divider-background,#434651)}.loaderWrap-jGEARQlM{height:32px;margin-right:-2px;position:relative}.loaderWrap-jGEARQlM.big-jGEARQlM{min-width:100px}.loaderWrap-jGEARQlM.big-jGEARQlM .loader-jGEARQlM{position:absolute}.loader-jGEARQlM{position:static}.menu-Tx5xMZww{border-collapse:collapse;cursor:default;overflow:visible;-webkit-user-select:none;user-select:none;z-index:500}.accessible-rm8yeqY4{outline:none;overflow:visible;position:relative}.accessible-rm8yeqY4:focus{outline:none}.accessible-rm8yeqY4:focus-visible{outline:none}.accessible-rm8yeqY4:after{border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:none;height:100%;pointer-events:none;position:absolute;right:0;top:0;width:100%;z-index:1}.accessible-rm8yeqY4:focus:after{display:block}.accessible-rm8yeqY4:focus-visible:after{display:block}.accessible-rm8yeqY4:focus:not(:focus-visible):after{display:none}.accessible-rm8yeqY4:after{border-color:#2962ff;border-radius:6px} -------------------------------------------------------------------------------- /public/libraries/datafeeds/udf/src/requester.ts: -------------------------------------------------------------------------------- 1 | import { RequestParams, UdfResponse, UdfErrorResponse, logMessage } from './helpers'; 2 | import { IRequester } from './irequester'; 3 | 4 | export class Requester implements IRequester { 5 | private _headers: HeadersInit | undefined; 6 | 7 | public constructor(headers?: HeadersInit) { 8 | if (headers) { 9 | this._headers = headers; 10 | } 11 | } 12 | 13 | public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; 14 | public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise; 15 | public sendRequest(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise { 16 | if (params !== undefined) { 17 | const paramKeys = Object.keys(params); 18 | if (paramKeys.length !== 0) { 19 | urlPath += '?'; 20 | } 21 | 22 | urlPath += paramKeys.map((key: string) => { 23 | return `${encodeURIComponent(key)}=${encodeURIComponent(params[key].toString())}`; 24 | }).join('&'); 25 | } 26 | 27 | logMessage('New request: ' + urlPath); 28 | 29 | // Send user cookies if the URL is on the same origin as the calling script. 30 | const options: RequestInit = { credentials: 'same-origin' }; 31 | 32 | if (this._headers !== undefined) { 33 | options.headers = this._headers; 34 | } 35 | 36 | // eslint-disable-next-line no-restricted-globals 37 | return fetch(`${datafeedUrl}/${urlPath}`, options) 38 | .then((response: Response) => response.text()) 39 | .then((responseTest: string) => JSON.parse(responseTest)); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/components/ToastGroup.tsx: -------------------------------------------------------------------------------- 1 | import { toast } from "react-toastify"; 2 | import "react-toastify/dist/ReactToastify.css"; 3 | 4 | export const errorAlert = (text: string) => { 5 | toast.error(text, { 6 | position: "bottom-right", 7 | autoClose: 5000, 8 | hideProgressBar: false, 9 | closeOnClick: true, 10 | pauseOnHover: true, 11 | draggable: true, 12 | theme: "colored", 13 | }); 14 | }; 15 | 16 | export const errorAlertCenter = (text: string) => { 17 | toast.error(text, { 18 | position: "top-center", 19 | autoClose: false, 20 | hideProgressBar: false, 21 | closeOnClick: true, 22 | pauseOnHover: true, 23 | draggable: true, 24 | theme: "colored", 25 | }); 26 | }; 27 | 28 | export const warningAlert = (text: string) => { 29 | toast.warning(text, { 30 | className: "bg-black", 31 | position: "top-right", 32 | autoClose: 5000, 33 | hideProgressBar: false, 34 | closeOnClick: true, 35 | pauseOnHover: true, 36 | draggable: true, 37 | theme: "colored", 38 | }); 39 | }; 40 | 41 | export const successAlert = (text: string) => { 42 | toast.success(text, { 43 | position: "bottom-right", 44 | autoClose: 5000, 45 | hideProgressBar: false, 46 | closeOnClick: true, 47 | pauseOnHover: true, 48 | draggable: true, 49 | theme: "colored", 50 | }); 51 | }; 52 | 53 | export const infoAlert = (text: string) => { 54 | toast.info(text, { 55 | position: "bottom-right", 56 | autoClose: 5000, 57 | hideProgressBar: false, 58 | closeOnClick: true, 59 | pauseOnHover: true, 60 | draggable: true, 61 | theme: "colored", 62 | }); 63 | }; 64 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5866.f164dd2a584ab0f493cf.css: -------------------------------------------------------------------------------- 1 | .errorCard-S9sXvhAu{align-items:center;background:var(--backgroundColor,#fff);color:var(--textColor,#434651);display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}html.theme-dark .errorCard-S9sXvhAu{background:var(--backgroundColor,#131722);color:var(--textColor,#9598a1)}.errorCard__icon-S9sXvhAu{margin-bottom:12px}.errorCard_size_big-S9sXvhAu .errorCard__icon-S9sXvhAu{margin-bottom:21px}.errorCard__message-S9sXvhAu{font-size:14px;line-height:22px;text-align:center}.errorCard_size_big-S9sXvhAu .errorCard__message-S9sXvhAu{font-size:18px;line-height:28px}.errorCard_limitWidth-S9sXvhAu .errorCard__message-S9sXvhAu{max-width:350px}.errorCard__link-S9sXvhAu{fill:#2962ff;color:#2962ff;cursor:pointer;line-height:28px}html.theme-dark .errorCard__link-S9sXvhAu{fill:#3179f5;color:#3179f5}.errorCard__link-S9sXvhAu:visited{fill:#2962ff;color:#2962ff}html.theme-dark .errorCard__link-S9sXvhAu:visited{fill:#3179f5;color:#3179f5}@media (any-hover:hover){.errorCard__link-S9sXvhAu:hover{fill:#1e53e5;color:#1e53e5}html.theme-dark .errorCard__link-S9sXvhAu:hover{fill:#2962ff;color:#2962ff}}.errorCard__link-S9sXvhAu:active{fill:#1848cc;color:#1848cc}html.theme-dark .errorCard__link-S9sXvhAu:active{fill:#1e53e5;color:#1e53e5}.errorCard__link-S9sXvhAu:focus{outline:auto;outline-offset:2px}.errorCard__link-S9sXvhAu:focus-visible{outline:auto;outline-offset:2px}.errorCard__link-S9sXvhAu:focus:not(:focus-visible){outline:none}.errorCardRendererContainer-S9sXvhAu{--backgroundColor:initial;--textColor:initial;cursor:default;height:100%;position:absolute;width:100%}.errorCardRendererContainer-S9sXvhAu:empty{visibility:hidden} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/5866.f164dd2a584ab0f493cf.rtl.css: -------------------------------------------------------------------------------- 1 | .errorCard-S9sXvhAu{align-items:center;background:var(--backgroundColor,#fff);color:var(--textColor,#434651);display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}html.theme-dark .errorCard-S9sXvhAu{background:var(--backgroundColor,#131722);color:var(--textColor,#9598a1)}.errorCard__icon-S9sXvhAu{margin-bottom:12px}.errorCard_size_big-S9sXvhAu .errorCard__icon-S9sXvhAu{margin-bottom:21px}.errorCard__message-S9sXvhAu{font-size:14px;line-height:22px;text-align:center}.errorCard_size_big-S9sXvhAu .errorCard__message-S9sXvhAu{font-size:18px;line-height:28px}.errorCard_limitWidth-S9sXvhAu .errorCard__message-S9sXvhAu{max-width:350px}.errorCard__link-S9sXvhAu{fill:#2962ff;color:#2962ff;cursor:pointer;line-height:28px}html.theme-dark .errorCard__link-S9sXvhAu{fill:#3179f5;color:#3179f5}.errorCard__link-S9sXvhAu:visited{fill:#2962ff;color:#2962ff}html.theme-dark .errorCard__link-S9sXvhAu:visited{fill:#3179f5;color:#3179f5}@media (any-hover:hover){.errorCard__link-S9sXvhAu:hover{fill:#1e53e5;color:#1e53e5}html.theme-dark .errorCard__link-S9sXvhAu:hover{fill:#2962ff;color:#2962ff}}.errorCard__link-S9sXvhAu:active{fill:#1848cc;color:#1848cc}html.theme-dark .errorCard__link-S9sXvhAu:active{fill:#1e53e5;color:#1e53e5}.errorCard__link-S9sXvhAu:focus{outline:auto;outline-offset:2px}.errorCard__link-S9sXvhAu:focus-visible{outline:auto;outline-offset:2px}.errorCard__link-S9sXvhAu:focus:not(:focus-visible){outline:none}.errorCardRendererContainer-S9sXvhAu{--backgroundColor:initial;--textColor:initial;cursor:default;height:100%;position:absolute;width:100%}.errorCardRendererContainer-S9sXvhAu:empty{visibility:hidden} -------------------------------------------------------------------------------- /src/program/cli/errors/index.ts: -------------------------------------------------------------------------------- 1 | import { PublicKey } from "@solana/web3.js" 2 | import { PROGRAM_ID } from "../programId" 3 | import * as anchor from "./anchor" 4 | import * as custom from "./custom" 5 | 6 | export function fromCode( 7 | code: number, 8 | logs?: string[] 9 | ): custom.CustomError | anchor.AnchorError | null { 10 | return code >= 6000 11 | ? custom.fromCode(code, logs) 12 | : anchor.fromCode(code, logs) 13 | } 14 | 15 | function hasOwnProperty( 16 | obj: X, 17 | prop: Y 18 | ): obj is X & Record { 19 | return Object.hasOwnProperty.call(obj, prop) 20 | } 21 | 22 | const errorRe = /Program (\w+) failed: custom program error: (\w+)/ 23 | 24 | export function fromTxError( 25 | err: unknown, 26 | programId: PublicKey = PROGRAM_ID 27 | ): custom.CustomError | anchor.AnchorError | null { 28 | if ( 29 | typeof err !== "object" || 30 | err === null || 31 | !hasOwnProperty(err, "logs") || 32 | !Array.isArray(err.logs) 33 | ) { 34 | return null 35 | } 36 | 37 | let firstMatch: RegExpExecArray | null = null 38 | for (const logLine of err.logs) { 39 | firstMatch = errorRe.exec(logLine) 40 | if (firstMatch !== null) { 41 | break 42 | } 43 | } 44 | 45 | if (firstMatch === null) { 46 | return null 47 | } 48 | 49 | const [programIdRaw, codeRaw] = firstMatch.slice(1) 50 | if (programIdRaw !== programId.toString()) { 51 | return null 52 | } 53 | 54 | let errorCode: number 55 | try { 56 | errorCode = parseInt(codeRaw, 16) 57 | } catch (parseErr) { 58 | return null 59 | } 60 | 61 | return fromCode(errorCode, err.logs) 62 | } 63 | -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/956.1e89775cfd644d656c56.css: -------------------------------------------------------------------------------- 1 | .dialog-aRAWUDhF{background-color:#fff;box-sizing:border-box;display:flex;flex-direction:column;min-width:280px;text-align:left}html.theme-dark .dialog-aRAWUDhF{background-color:#1e222d}.dialog-aRAWUDhF.rounded-aRAWUDhF{border-radius:6px}.dialog-aRAWUDhF.shadowed-aRAWUDhF{box-shadow:0 2px 4px #0003}html.theme-dark .dialog-aRAWUDhF.shadowed-aRAWUDhF{box-shadow:0 2px 4px #0006}.dialog-aRAWUDhF.fullscreen-aRAWUDhF{bottom:0;height:100%;left:0;max-height:100%;max-width:100%;min-height:100%;position:fixed;right:0;top:0;width:100%}.dialog-aRAWUDhF.darker-aRAWUDhF{background-color:#fff}html.theme-dark .dialog-aRAWUDhF.darker-aRAWUDhF{background-color:#131722}.backdrop-aRAWUDhF{background-color:#9598a1;bottom:0;left:0;opacity:.5;position:fixed;right:0;top:0;transform:translateZ(0);z-index:-1}html.theme-dark .backdrop-aRAWUDhF{background-color:#0c0e15}.dialog-qyCw0PaN{max-width:380px;min-width:280px;position:fixed;width:100%}.dialog-qyCw0PaN [data-dragg-area=true]{cursor:grab}.dialog-qyCw0PaN [data-dragg-area=true].dragging-qyCw0PaN{cursor:grabbing}.dialogAnimatedAppearance-qyCw0PaN{animation-duration:.3s;animation-name:dialogAnimation-qyCw0PaN;transform-origin:0 0}@keyframes dialogAnimation-qyCw0PaN{0%{opacity:0;transform:translate(var(--animationTranslateStartX),var(--animationTranslateStartY)) scale(0)}to{opacity:1;transform:translate(var(--animationTranslateEndX),var(--animationTranslateEndY)) scale(1)}}.dialogTooltip-qyCw0PaN{color:#fff;font-size:14px;left:50%;line-height:21px;max-width:540px;position:absolute;top:-20px;transform:translateX(-50%);width:-webkit-max-content;width:max-content}@media screen and (max-width:768px){.dialogTooltip-qyCw0PaN{max-width:240px}} -------------------------------------------------------------------------------- /public/libraries/charting_library/bundles/956.1e89775cfd644d656c56.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-aRAWUDhF{background-color:#fff;box-sizing:border-box;display:flex;flex-direction:column;min-width:280px;text-align:right}html.theme-dark .dialog-aRAWUDhF{background-color:#1e222d}.dialog-aRAWUDhF.rounded-aRAWUDhF{border-radius:6px}.dialog-aRAWUDhF.shadowed-aRAWUDhF{box-shadow:0 2px 4px #0003}html.theme-dark .dialog-aRAWUDhF.shadowed-aRAWUDhF{box-shadow:0 2px 4px #0006}.dialog-aRAWUDhF.fullscreen-aRAWUDhF{bottom:0;height:100%;left:0;max-height:100%;max-width:100%;min-height:100%;position:fixed;right:0;top:0;width:100%}.dialog-aRAWUDhF.darker-aRAWUDhF{background-color:#fff}html.theme-dark .dialog-aRAWUDhF.darker-aRAWUDhF{background-color:#131722}.backdrop-aRAWUDhF{background-color:#9598a1;bottom:0;left:0;opacity:.5;position:fixed;right:0;top:0;transform:translateZ(0);z-index:-1}html.theme-dark .backdrop-aRAWUDhF{background-color:#0c0e15}.dialog-qyCw0PaN{max-width:380px;min-width:280px;position:fixed;width:100%}.dialog-qyCw0PaN [data-dragg-area=true]{cursor:grab}.dialog-qyCw0PaN [data-dragg-area=true].dragging-qyCw0PaN{cursor:grabbing}.dialogAnimatedAppearance-qyCw0PaN{animation-duration:.3s;animation-name:dialogAnimation-qyCw0PaN;transform-origin:100% 0}@keyframes dialogAnimation-qyCw0PaN{0%{opacity:0;transform:translate(var(--animationTranslateStartX),var(--animationTranslateStartY)) scale(0)}to{opacity:1;transform:translate(var(--animationTranslateEndX),var(--animationTranslateEndY)) scale(1)}}.dialogTooltip-qyCw0PaN{color:#fff;font-size:14px;line-height:21px;max-width:540px;position:absolute;right:50%;top:-20px;transform:translateX(50%);width:-webkit-max-content;width:max-content}@media screen and (max-width:768px){.dialogTooltip-qyCw0PaN{max-width:240px}} -------------------------------------------------------------------------------- /src/components/TVChart/TradingChart.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | import Head from "next/head"; 3 | import dynamic from "next/dynamic"; 4 | import { useEffect, useState } from "react"; 5 | import Script from "next/script"; 6 | 7 | import { 8 | ChartingLibraryWidgetOptions, 9 | ResolutionString, 10 | } from "@/libraries/charting_library/charting_library"; 11 | import { coinInfo } from "@/utils/types"; 12 | // import { TVChartContainer } from "@/components/TVChartContainer"; 13 | 14 | 15 | interface TradingChartProps { 16 | param: coinInfo 17 | } 18 | 19 | const TVChartContainer = dynamic( 20 | () => 21 | import("@/components/TVChart/TVChartContainer").then((mod) => mod.TVChartContainer), 22 | { ssr: false } 23 | ); 24 | 25 | export const TradingChart: React.FC = ({ param }) => { 26 | 27 | const [isScriptReady, setIsScriptReady] = useState(false); 28 | 29 | console.log("tradingview chart", param) 30 | 31 | return ( 32 | <> 33 | 34 | Sample Demo TradingView with NextJS 35 | 36 | {/*