import * as React from 'react';
import type { Code, ContentLoadingProps, ContentProps } from "../CodeHighlighter/types.js";
import { DemoGlobalData } from "../createDemoData/types.js";
type CreateDemoMeta = {
  name?: string;
  slug?: string;
  displayName?: string;
  variantType?: string;
  skipPrecompute?: boolean;
  precompute?: Code;
  CodeExternalsProvider?: React.ComponentType<{
    children: React.ReactNode;
  }>;
};
type AbstractCreateDemoOptions<T extends {}> = {
  DemoContent: React.ComponentType<ContentProps<T>>;
  DemoContentLoading?: React.ComponentType<ContentLoadingProps<T>>;
  DemoTitle?: React.ComponentType<{
    slug?: string;
    children?: string;
  }>;
  controlled?: boolean;
  demoGlobalData?: DemoGlobalData[];
  variantTypes?: Record<string, string>;
};
export declare function abstractCreateDemo<T extends {}>(options: AbstractCreateDemoOptions<T>, url: string, variants: {
  [key: string]: React.ComponentType;
}, meta: CreateDemoMeta | undefined): React.ComponentType<T> & {
  Title: React.ComponentType;
};
export declare function createDemoFactory<T extends {}>(options: AbstractCreateDemoOptions<T>): (url: string, component: React.ComponentType, meta?: CreateDemoMeta) => React.ComponentType<T> & {
  Title: React.ComponentType;
};
export declare function createDemoWithVariantsFactory<T extends {}>(options: AbstractCreateDemoOptions<T>): (url: string, variants: Record<string, React.ComponentType>, meta?: CreateDemoMeta) => React.ComponentType<T> & {
  Title: React.ComponentType;
};
export {};