import { type FlagPropsWithoutId } from './types';
export type FlagId = string | number;
export type Combine<First, Second> = Omit<First, keyof Second> & Second;
export interface CreateFlagArgs extends FlagPropsWithoutId {
    /**
     * A unique identifier used for rendering and onDismissed callbacks.
     * This will be autogenerated if you don’t supply one.
     * If you don’t want the same flag showing multiple times, provide a unique id.
     */
    id?: FlagId;
    /**
     * Marks whether the flag should render as an AutoDismissFlag
     */
    isAutoDismiss?: boolean;
}
export type FlagArgs = Combine<CreateFlagArgs, {
    id: FlagId;
}>;
export type DismissFn = () => void;
export type FlagAPI = {
    showFlag: (args: CreateFlagArgs) => DismissFn;
    /**
     * Programmatically dismiss a flag by id. No-op if the flag isn't currently shown.
     */
    hideFlag: (id: FlagId) => void;
};
/**
 * @deprecated Use `import { FlagContext } from '@atlaskit/flag/flag-context'` instead.
 */
export { FlagContext } from './flag-context';
/**
 * @deprecated Use `import { useFlags } from '@atlaskit/flag/use-flags'` instead.
 */
export { useFlags } from './use-flags';
/**
 * @deprecated Use `import { FlagsProvider } from '@atlaskit/flag/flags-provider'` instead.
 */
export { FlagsProvider } from './flags-provider';
/**
 * @deprecated Use `import { withFlagsProvider } from '@atlaskit/flag/with-flags-provider'` instead.
 */
export { withFlagsProvider } from './with-flags-provider';
