diff --git a/apps/developer-hub/src/app/(homepage)/layout.tsx b/apps/developer-hub/src/app/(homepage)/layout.tsx index 85274122b3..0757b7bf9a 100644 --- a/apps/developer-hub/src/app/(homepage)/layout.tsx +++ b/apps/developer-hub/src/app/(homepage)/layout.tsx @@ -1,8 +1,14 @@ import { HomeLayout } from "fumadocs-ui/layouts/home"; import type { ReactNode } from "react"; +import { PageFooter } from "../../components/Shared/footer"; import { baseOptions } from "../../config/layout.config"; export default function Layout({ children }: { children: ReactNode }) { - return {children}; + return ( + +
{children}
+ +
+ ); } diff --git a/apps/developer-hub/src/components/Pages/Homepage/box-svg.tsx b/apps/developer-hub/src/components/Pages/Homepage/box-svg.tsx new file mode 100644 index 0000000000..91eaff6069 --- /dev/null +++ b/apps/developer-hub/src/components/Pages/Homepage/box-svg.tsx @@ -0,0 +1,440 @@ +import * as React from "react"; + +export const BoxSVG = (props: React.SVGProps) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/apps/developer-hub/src/components/Pages/Homepage/home-content-cards.tsx b/apps/developer-hub/src/components/Pages/Homepage/home-content-cards.tsx new file mode 100644 index 0000000000..b9d6c920c4 --- /dev/null +++ b/apps/developer-hub/src/components/Pages/Homepage/home-content-cards.tsx @@ -0,0 +1,172 @@ +import { + ArrowsDownUp, + Book, + ChartScatter, + CheckCircle, + CodeBlock, + Coin, + CurrencyBtc, + CurrencyDollarSimple, + DiceFive, + GlobeSimple, + Key, + Lightning, + ListChecks, + Network, + SlidersHorizontal, + Wrench, +} from "@phosphor-icons/react/dist/ssr"; +import type { ReactNode } from "react"; + +type Feature = { + label: string; + icon?: ReactNode | undefined; +}; + +type QuickLink = { + label: string; + href: string; +}; + +export type ProductCardConfigType = { + title: string; + badge?: string | undefined; + description?: string | undefined; + icon?: ReactNode | undefined; + features?: Feature[] | undefined; + quickLinks?: QuickLink[] | undefined; + buttonLabel?: string | undefined; + href?: string | undefined; + external?: boolean | undefined; + className?: string | undefined; +}; + +export const products: ProductCardConfigType[] = [ + { + title: "Pyth", + badge: "PRO", + description: + "Subscription-based price data for institutions and advanced use cases. Previously known as Lazer.", + href: "/price-feeds/pro", + features: [ + { label: "Ultra-low latency", icon: }, + { label: "Crypto, Equities & Indexes", icon: }, + { + label: "Customizable channels and latency", + icon: , + }, + { label: "Dedicated support", icon: }, + ], + quickLinks: [ + { + label: "Get Pyth Pro Access Token", + href: "/price-feeds/pro/acquire-access-token", + }, + { + label: "Browse Supported Feeds", + href: "/price-feeds/pro/price-feed-ids", + }, + { label: "Pricing", href: "https://www.pyth.network/pricing" }, + ], + }, + { + title: "Pyth", + badge: "CORE", + description: + "Decentralized price feeds for DeFi and TradFi builders with deterministic on-chain delivery.", + href: "/price-feeds/core", + features: [ + { label: "400ms update frequency", icon: }, + { label: "100+ blockchains", icon: }, + { label: "Supports Pull and Push updates", icon: }, + { label: "Decentralized Oracle", icon: }, + ], + quickLinks: [ + { + label: "Supported Blockchains", + href: "/price-feeds/core/contract-addresses", + }, + { + label: "Browse Supported Feeds", + href: "/price-feeds/core/price-feeds", + }, + { label: "API Reference", href: "/price-feeds/core/api-reference" }, + ], + }, + { + title: "Entropy", + description: + "Secure, Verifiable Random Number Generator for EVM-based smart contracts.", + href: "/entropy", + features: [ + { label: "On-chain randomness", icon: }, + { label: "Verifiable results", icon: }, + { label: "Pay in native token", icon: }, + { label: "Supports 20+ EVM chains", icon: }, + ], + quickLinks: [ + { + label: "Chainlist", + href: "/entropy/chainlist", + }, + { label: "Protocol Design", href: "/entropy/protocol-design" }, + { + label: "Entropy Explorer", + href: "https://entropy-explorer.pyth.network/", + }, + ], + }, +]; + +export const additionalResources = [ + { + title: "Pyth Token", + description: + "The native token powering governance and staking across the Pyth Network.", + href: "/pyth-token", + icon: , + }, + { + title: "Oracle Integrity Staking", + description: + "Stake PYTH to support data publishers and secure the integrity of Pyth price feeds.", + href: "/oracle-integrity-staking", + icon: , + }, + { + title: "Pyth Metrics", + description: + "Track network performance, feed activity, and ecosystem growth in real time.", + href: "/metrics", + icon: , + }, +]; + +export const developerResources = [ + { + title: "Get Your Access Token", + description: "Request access for the Pyth Ultra Low Latency price feeds.", + href: "/access-token", + icon: , + }, + { + title: "Supported Feeds", + description: + "Explore the complete list of supported price feeds for Pyth Pro.", + href: "/price-feeds/pro/price-feed-ids", + icon: , + }, + { + title: "Pyth API Documentation", + description: + "Learn how to use the Pyth API to access real-time price data.", + href: "/api-documentation", + icon: , + }, + { + title: "API Reference", + description: "Explore the complete API reference for Pyth Pro.", + href: "https://pyth-lazer.dourolabs.app/docs", + icon: , + }, +]; diff --git a/apps/developer-hub/src/components/Pages/Homepage/index.module.scss b/apps/developer-hub/src/components/Pages/Homepage/index.module.scss index 4a691f00d8..b0b58241cf 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/index.module.scss +++ b/apps/developer-hub/src/components/Pages/Homepage/index.module.scss @@ -8,25 +8,17 @@ } .sectionHero { - position: relative; - border-bottom: 1px solid theme.color("border"); - background: linear-gradient( - 180deg, - theme.color("background", "primary") 0%, - color-mix(in srgb, theme.color("background", "secondary") 70%, transparent) - 100% - ); + border-bottom: 1px solid var(--color-fd-border); + background: var(--color-fd-card); } .sectionHeroContent { display: flex; flex-direction: column; - gap: theme.spacing(10); + gap: theme.spacing(4); padding-top: theme.spacing(18); padding-bottom: theme.spacing(18); - @include theme.max-width; - @include theme.breakpoint("lg") { flex-direction: row; align-items: flex-start; @@ -37,10 +29,9 @@ .heroCopy { display: flex; flex-direction: column; - gap: theme.spacing(6); flex: 1; max-width: 34rem; - color: theme.color("foreground"); + color: var(--color-fd-foreground); @include theme.breakpoint("lg") { max-width: 28rem; @@ -52,7 +43,6 @@ line-height: 115%; letter-spacing: theme.letter-spacing("tight"); - color: theme.color("heading"); margin: 0; } @@ -60,7 +50,7 @@ @include theme.text("2xl", "normal"); line-height: 140%; - color: theme.color("paragraph"); + opacity: 0.7; margin: 0; } @@ -78,12 +68,7 @@ .sectionHeaderSubtitle { @include theme.text("xl", "normal"); - color: light-dark( - theme.pallette-color("stone", 500), - theme.pallette-color("steel", 400) - ); - margin-top: theme.spacing(4); - margin-bottom: theme.spacing(12); + opacity: 0.7; } .productsGrid { diff --git a/apps/developer-hub/src/components/Pages/Homepage/index.tsx b/apps/developer-hub/src/components/Pages/Homepage/index.tsx index 88abd19307..7354fdb264 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/index.tsx +++ b/apps/developer-hub/src/components/Pages/Homepage/index.tsx @@ -1,197 +1,98 @@ +import { Card, Cards } from "fumadocs-ui/components/card"; + +import { BoxSVG } from "./box-svg"; +import { + additionalResources, + developerResources, + products, +} from "./home-content-cards"; import styles from "./index.module.scss"; -import ResourcesForBuildersImage from "./resources-for-builders.svg"; -import { Section } from "./section"; -import { SectionCards, SectionCard } from "./section-card"; -import SignalImage from "./signal.svg"; import { ProductCard } from "../../ProductCard"; +import { SectionContainer } from "../../Shared/section-container"; +import { SectionTitle } from "../../Shared/section-title"; -export const Homepage = () => { - return ( -
-
-
-
-

Developer Hub

-

- Integrate with the global price layer. -

-
+export const Homepage = () => ( + <> +
+ +
+

Developer Hub

+

+ Integrate with the global price layer. +

-
+ +
-
-

Products

-

- Connect to the global market data and randomness layer. -

-
- {products.map((product: ProductCardConfig) => ( -
- -
+
+ + +
+ {products.map((product) => ( + ))}
-
- -
} - > - - } - /> - } - /> - } - /> - -
-
- - } - /> - } - /> - } - /> - } - target="_blank" - /> - -
- - -
- ); -}; - -function GradientDivider() { - return
; -} + +
-const products: ProductCardConfig[] = [ - { - title: "Pyth Pro", - description: - "Subscription-based price data for institutions and advanced use cases. Previously known as Lazer.", - href: "/price-feeds/pro", - features: [ - { label: "Ultra-low latency" }, - { label: "Crypto, Equities & Indexes" }, - { label: "Customizable channels and latency" }, - { label: "Dedicated support" }, - ], - quickLinks: [ - { - label: "Get Pyth Pro Access Token", - href: "/price-feeds/pro/acquire-access-token", - }, - { - label: "Browse Supported Feeds", - href: "/price-feeds/pro/price-feed-ids", - }, - { label: "Pricing", href: "https://www.pyth.network/pricing" }, - ], - }, - { - title: "Pyth Core", - description: - "Decentralized price feeds for DeFi and TradFi builders with deterministic on-chain delivery.", - href: "/price-feeds/core", - features: [ - { label: "400ms update frequency" }, - { label: "100+ blockchains" }, - { label: "Supports Pull and Push updates" }, - { label: "Decentralized Oracle" }, - ], - quickLinks: [ - { - label: "Supported Blockchains", - href: "/price-feeds/core/contract-addresses", - }, - { - label: "Browse Supported Feeds", - href: "/price-feeds/core/price-feeds", - }, - { label: "API Reference", href: "/price-feeds/core/api-reference" }, - ], - }, - { - title: "Entropy", - description: - "Secure, Verifiable Random Number Generator for EVM-based smart contracts.", - href: "/entropy", - features: [ - { label: "On-chain randomness" }, - { label: "Verifiable results" }, - { label: "Pay in native token" }, - { label: "Supports 20+ EVM chains" }, - ], - quickLinks: [ - { - label: "Chainlist", - href: "/entropy/chainlist", - }, - { label: "Protocol Design", href: "/entropy/protocol-design" }, - { - label: "Entropy Explorer", - href: "https://entropy-explorer.pyth.network/", - }, - ], - }, -]; +
+ + + + + + {additionalResources.map( + ({ title, description, href, icon }) => ( + + {description} + + ), + )} + + +
-type ProductCardConfig = { - title: string; - description: string; - href: string; - features: { label: string }[]; - quickLinks: { label: string; href: string }[]; -}; +
+ + + + {developerResources.map( + ({ title, description, href, icon }) => ( + + {description} + + ), + )} + + +
+ +); diff --git a/apps/developer-hub/src/components/Pages/Homepage/section-card.module.scss b/apps/developer-hub/src/components/Pages/Homepage/section-card.module.scss index db51efc840..2d168bd1d4 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/section-card.module.scss +++ b/apps/developer-hub/src/components/Pages/Homepage/section-card.module.scss @@ -5,10 +5,14 @@ flex-direction: column; gap: theme.spacing(2); padding: theme.spacing(6); - border: 1px solid theme.color("border"); + border: 1px solid var(--color-fd-border); border-radius: theme.border-radius("2xl"); - background-color: theme.color("background", "secondary"); - flex: 1; + + .sectionCardImage { + position: absolute; + top: 8px; + right: 8px; + } .sectionCardHeader { display: flex; @@ -24,15 +28,7 @@ .sectionCardDescription { line-height: 140%; - color: light-dark( - theme.pallette-color("stone", 500), - theme.pallette-color("steel", 400) - ); - } - - .sectionCardUrl { - font-weight: theme.font-weight("medium"); - text-decoration: underline; + opacity: 0.7; } } diff --git a/apps/developer-hub/src/components/Pages/Homepage/section-card.tsx b/apps/developer-hub/src/components/Pages/Homepage/section-card.tsx index 363029ad67..e50aac6a58 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/section-card.tsx +++ b/apps/developer-hub/src/components/Pages/Homepage/section-card.tsx @@ -21,7 +21,7 @@ export const SectionCard = ({

{title}

- {image} +
{image}

{description}

{url && urlLabel && ( diff --git a/apps/developer-hub/src/components/Pages/Homepage/section.module.scss b/apps/developer-hub/src/components/Pages/Homepage/section.module.scss index 727fabff5f..1c757c7130 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/section.module.scss +++ b/apps/developer-hub/src/components/Pages/Homepage/section.module.scss @@ -4,6 +4,7 @@ padding: theme.spacing(34) 0; padding-left: theme.spacing(20); padding-right: theme.spacing(20); + background: var(--color-fd-card); .sectionContent { margin: 0 auto; @@ -35,8 +36,4 @@ theme.pallette-color("steel", 400) ); } - - &[data-highlight] { - background-color: theme.color("background", "secondary"); - } } diff --git a/apps/developer-hub/src/components/Pages/Homepage/section.tsx b/apps/developer-hub/src/components/Pages/Homepage/section.tsx index 5ec93f2e25..f04d86c123 100644 --- a/apps/developer-hub/src/components/Pages/Homepage/section.tsx +++ b/apps/developer-hub/src/components/Pages/Homepage/section.tsx @@ -1,6 +1,7 @@ import type { ReactNode } from "react"; import styles from "./section.module.scss"; +import { SectionTitle } from "../../Shared/section-title"; export const Section = ({ title, @@ -18,10 +19,7 @@ export const Section = ({
-
-

{title}

-

{subtitle}

-
+ {image}
{children} diff --git a/apps/developer-hub/src/components/ProductCard/index.tsx b/apps/developer-hub/src/components/ProductCard/index.tsx index b8c2043d70..95a1c39ad5 100644 --- a/apps/developer-hub/src/components/ProductCard/index.tsx +++ b/apps/developer-hub/src/components/ProductCard/index.tsx @@ -1,120 +1,74 @@ "use client"; -import { Lightning } from "@phosphor-icons/react/dist/ssr"; import { Button } from "@pythnetwork/component-library/Button"; -import { clsx } from "clsx"; -import Link from "next/link"; -import { useRouter } from "next/navigation"; -import type { ReactNode } from "react"; +import { Link } from "@pythnetwork/component-library/Link"; -import styles from "./index.module.scss"; - -type Feature = { - label: string; - icon?: ReactNode; -}; - -type QuickLink = { - label: string; - href: string; -}; - -type ProductCardProps = { - title: string; - description?: string; - icon?: ReactNode; - features?: Feature[]; - quickLinks?: QuickLink[]; - buttonLabel?: string; - buttonHref?: string; - external?: boolean; - className?: string; -}; +import type { ProductCardConfigType } from "../Pages/Homepage/home-content-cards"; export function ProductCard({ title, description, - icon, features, quickLinks, buttonLabel, - buttonHref, - external, - className, -}: ProductCardProps) { - const router = useRouter(); - - const handleButtonClick = () => { - if (!buttonHref) return; - - if (external) { - window.open(buttonHref, "_blank", "noopener,noreferrer"); - } else { - router.push(buttonHref); - } - }; - + href, + badge, +}: ProductCardConfigType) { return ( -
-
-
-
-

{title}

- {description &&

{description}

} - {icon &&
{icon}
} +
+
+
+
+

{title}

+ {badge && }
- - {features && features.length > 0 && ( -
-

FEATURES

-
- {features.map((feature) => ( -
-
- {feature.icon ?? } -
- {feature.label} -
-
- ))} -
-
- )} - - {quickLinks && quickLinks.length > 0 && ( -
-

QUICK LINKS

-
- {quickLinks.map((link) => ( - - {link.label} - - ))} -
-
+ {description && ( +

{description}

)}
- - {buttonLabel && ( -
- -
- )} + +
+
+
+ + Features + +
    + {features?.map((feature, index) => ( +
  • + {feature.icon && ( + {feature.icon} + )}{" "} + {feature.label} +
  • + ))} +
+
+
+ + Quick Links + +
    + {quickLinks?.map((link, index) => ( +
  • + {link.label} +
  • + ))} +
+
); } + +const ProductBadge = ({ badge }: { badge: string }) => { + return ( +
+ {badge} +
+ ); +}; diff --git a/apps/developer-hub/src/components/Root/global.css b/apps/developer-hub/src/components/Root/global.css index 7af62f670a..a42cb6aefe 100644 --- a/apps/developer-hub/src/components/Root/global.css +++ b/apps/developer-hub/src/components/Root/global.css @@ -25,6 +25,10 @@ /* @import "./theme.css"; this overrides the default colors to match the pyth branding */ /* @import "./fumadocs-global-style-overrides.css"; */ +table { + border-color: var(--color-gray-200, #e5e7eb); +} + .light { --color-fd-background: hsla(0, 16%, 96%, 1); --color-fd-foreground: hsla(0, 16%, 5%, 1); @@ -45,6 +49,8 @@ } .dark { + /* + OLD COLORS --color-fd-background: hsl(240, 4%, 11%); --color-fd-foreground: hsl(250, 18%, 87%); --color-fd-muted: hsl(0, 3%, 6%); @@ -60,5 +66,21 @@ --color-fd-secondary-foreground: hsl(250, 18%, 87%); --color-fd-accent: hsla(0, 0%, 100%, 0.079); --color-fd-accent-foreground: hsl(250, 18%, 87%); - --color-fd-ring: hsla(262, 83%, 58%, 1); + --color-fd-ring: hsla(262, 83%, 58%, 1); */ + --color-fd-background: hsl(0, 0%, 7.04%); + --color-fd-foreground: hsl(0, 0%, 92%); + --color-fd-muted: hsl(0, 0%, 12.9%); + --color-fd-muted-foreground: hsla(0, 0%, 70%, 0.8); + --color-fd-popover: hsl(0, 0%, 11.6%); + --color-fd-popover-foreground: hsl(0, 0%, 86.9%); + --color-fd-card: hsl(0, 0%, 9.8%); + --color-fd-card-foreground: hsl(0, 0%, 98%); + --color-fd-border: hsla(0, 0%, 40%, 20%); + --color-fd-primary: hsla(263, 81%, 67%, 1); + --color-fd-primary-foreground: hsl(204, 90%, 51%); + --color-fd-secondary: hsl(0, 0%, 12.9%); + --color-fd-secondary-foreground: hsl(0, 0%, 92%); + --color-fd-accent: hsla(0, 0%, 40.9%, 30%); + --color-fd-accent-foreground: hsl(0, 0%, 90%); + --color-fd-ring: hsl(0, 0%, 54.9%); } diff --git a/apps/developer-hub/src/components/Shared/content-section.module.scss b/apps/developer-hub/src/components/Shared/content-section.module.scss new file mode 100644 index 0000000000..0bd9a5d0c9 --- /dev/null +++ b/apps/developer-hub/src/components/Shared/content-section.module.scss @@ -0,0 +1,16 @@ +@use "@pythnetwork/component-library/theme"; + +.section { + display: flex; + flex-direction: column; + gap: theme.spacing(8); +} + +.container { + max-width: var(--spacing-fd-container); + margin: 0 auto; + + > *:not(:last-child) { + margin-bottom: theme.spacing(20); + } +} diff --git a/apps/developer-hub/src/components/Shared/content-section.tsx b/apps/developer-hub/src/components/Shared/content-section.tsx new file mode 100644 index 0000000000..8659fe45ae --- /dev/null +++ b/apps/developer-hub/src/components/Shared/content-section.tsx @@ -0,0 +1,16 @@ +import styles from "./content-section.module.scss"; +import { SectionTitle } from "./section-title"; + +export const Section = ({ children }: { children: React.ReactNode }) => { + return ( +
+
+ + {children} +
+
+ ); +}; diff --git a/apps/developer-hub/src/components/Shared/footer.tsx b/apps/developer-hub/src/components/Shared/footer.tsx new file mode 100644 index 0000000000..9413d78293 --- /dev/null +++ b/apps/developer-hub/src/components/Shared/footer.tsx @@ -0,0 +1,13 @@ +export const PageFooter = () => { + return ( + <> +
+
+

+ © {new Date().getFullYear()} Pyth Network. All rights reserved. +

+

Privacy Policy | Terms of Use

+
+ + ); +}; diff --git a/apps/developer-hub/src/components/Shared/section-container.module.scss b/apps/developer-hub/src/components/Shared/section-container.module.scss new file mode 100644 index 0000000000..0a41c27618 --- /dev/null +++ b/apps/developer-hub/src/components/Shared/section-container.module.scss @@ -0,0 +1,16 @@ +@use "@pythnetwork/component-library/theme"; + +.container { + max-width: var(--spacing-fd-container); + margin: 0 auto; + width: 100%; + padding: 0 theme.spacing(4); + + > *:not(:last-child) { + margin-bottom: theme.spacing(20); + } + + @include theme.breakpoint("sm") { + padding: 0 theme.spacing(6); + } +} diff --git a/apps/developer-hub/src/components/Shared/section-container.tsx b/apps/developer-hub/src/components/Shared/section-container.tsx new file mode 100644 index 0000000000..368a2dcd04 --- /dev/null +++ b/apps/developer-hub/src/components/Shared/section-container.tsx @@ -0,0 +1,9 @@ +import styles from "./section-container.module.scss"; + +export const SectionContainer = ({ + children, +}: { + children: React.ReactNode; +}) => { + return
{children}
; +}; diff --git a/apps/developer-hub/src/components/Shared/section-title.module.scss b/apps/developer-hub/src/components/Shared/section-title.module.scss new file mode 100644 index 0000000000..842be9ad2e --- /dev/null +++ b/apps/developer-hub/src/components/Shared/section-title.module.scss @@ -0,0 +1,28 @@ +@use "@pythnetwork/component-library/theme"; + +.sectionTitle { + display: flex; + flex-direction: row; + gap: theme.spacing(8); + justify-content: space-between; + max-height: theme.spacing(16); + align-items: center; +} + +.title { + @include theme.text("2xl", "medium"); + + color: theme.color("heading"); + margin-bottom: theme.spacing(2); +} + +.subtitle { + @include theme.text("2xl", "normal"); + + opacity: 0.65; +} + +.slot { + position: relative; + z-index: 1; +} diff --git a/apps/developer-hub/src/components/Shared/section-title.tsx b/apps/developer-hub/src/components/Shared/section-title.tsx new file mode 100644 index 0000000000..b3d6eae4cb --- /dev/null +++ b/apps/developer-hub/src/components/Shared/section-title.tsx @@ -0,0 +1,21 @@ +import styles from "./section-title.module.scss"; + +export const SectionTitle = ({ + title, + subtitle, + children, +}: { + title: string; + subtitle: string; + children?: React.ReactNode; +}) => { + return ( +
+
+

{title}

+

{subtitle}

+
+ {children &&
{children}
} +
+ ); +}; diff --git a/target_chains/fuel/sdk/js/package.json b/target_chains/fuel/sdk/js/package.json index 1f318a2b4f..a282d16890 100644 --- a/target_chains/fuel/sdk/js/package.json +++ b/target_chains/fuel/sdk/js/package.json @@ -7,7 +7,7 @@ "name": "Pyth Data Association" }, "main": "./dist/cjs/index.cjs", - "types": "./dist/cjs/index.d.ts", + "types": "./dist/cjs/src/index.d.ts", "files": [ "dist/**/*" ], @@ -59,51 +59,41 @@ "exports": { ".": { "require": { - "types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.cjs" }, "import": { - "types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.mjs" } }, "./types/PythContract": { "require": { - "types": "./dist/cjs/types/PythContract.d.ts", "default": "./dist/cjs/types/PythContract.cjs" }, "import": { - "types": "./dist/esm/types/PythContract.d.ts", "default": "./dist/esm/types/PythContract.mjs" } }, "./types/PythContractFactory": { "require": { - "types": "./dist/cjs/types/PythContractFactory.d.ts", "default": "./dist/cjs/types/PythContractFactory.cjs" }, "import": { - "types": "./dist/esm/types/PythContractFactory.d.ts", "default": "./dist/esm/types/PythContractFactory.mjs" } }, "./types/common": { "require": { - "types": "./dist/cjs/types/common.d.ts", "default": "./dist/cjs/types/common.cjs" }, "import": { - "types": "./dist/esm/types/common.d.ts", "default": "./dist/esm/types/common.mjs" } }, "./types": { "require": { - "types": "./dist/cjs/types/index.d.ts", "default": "./dist/cjs/types/index.cjs" }, "import": { - "types": "./dist/esm/types/index.d.ts", "default": "./dist/esm/types/index.mjs" } },