/// <reference types="react" />
export interface BlockComponentProps {
    close(): void;
    children?: React.ReactNode;
}
export declare type BlockComponent = React.ComponentClass<BlockComponentProps> | React.FunctionComponent<BlockComponentProps> | React.ExoticComponent<BlockComponentProps>;
export interface SeedBuilderValues<BlockComponentProps extends object> {
    key: string;
    name: string;
    message: string | JSX.Element;
    transitionTimingFunction: string;
    timeout: number | false;
    props: BlockComponentProps;
}
export declare type ISeedBuilder<BlockComponentProps extends object = {}, B extends BlockComponentProps = BlockComponentProps> = SeedBuilderStruct<B> & SeedBuilderImpl<B>;
export interface SeedBuilderStruct<BlockComponentProps extends object = {}, B extends BlockComponentProps = BlockComponentProps> {
    values: Partial<SeedBuilderValues<B>>;
    seed: {
        issue(): AsyncIterable<unknown> & {
            values: any;
        };
    };
}
export interface SeedBuilderImpl<BlockComponentAdditionalProps extends object = {}, B extends BlockComponentAdditionalProps = BlockComponentAdditionalProps> {
    transitionTimingFunction(value: SeedBuilderValues<B>['transitionTimingFunction']): ISeedBuilder<B>;
    message(value: NonNullable<SeedBuilderValues<B>['message']>): ISeedBuilder<B>;
    timeout(value: NonNullable<SeedBuilderValues<B>['timeout']>): ISeedBuilder<B>;
    prop<Key extends keyof B>(key: Key, value: NonNullable<B[Key]>): ISeedBuilder<B>;
    props(values: B): ISeedBuilder<B>;
}
