// Type definitions for agate/FullscreenPopup

import { TransitionProps as ui_Transition_TransitionProps } from "@enact/ui/Transition";
import * as React from "react";
import { SkinnableProps as agate_Skinnable_SkinnableProps } from "@enact/agate/Skinnable";

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;

export interface FullscreenPopupBaseProps
  extends ui_Transition_TransitionProps {}
/**
 * Full screen popup component.
 * 
 * Usage:
 * ```
<FullscreenPopup open>
  Hello Fullscreen Popup
</FullscreenPopup>
```
 */

export class FullscreenPopupBase extends React.Component<
  Merge<React.HTMLProps<HTMLElement>, FullscreenPopupBaseProps>
> {}

export interface FullscreenPopupDecoratorProps
  extends agate_Skinnable_SkinnableProps {}
export function FullscreenPopupDecorator<P>(
  Component: React.ComponentType<P> | string
): React.ComponentType<P & FullscreenPopupDecoratorProps>;

export interface FullscreenPopupProps
  extends Merge<FullscreenPopupBaseProps, FullscreenPopupDecoratorProps> {}
/**
 * Full screen popup component, ready to use in Agate applications.
 */

export class FullscreenPopup extends React.Component<
  Merge<React.HTMLProps<HTMLElement>, FullscreenPopupProps>
> {}

export default FullscreenPopup;
