import { ComponentBase } from '../ComponentBase';
import { RunConfig } from '../../DomRender';
import { OtherData } from '../../lifecycle/OnChangeAttrRender';
import { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';
export declare namespace PromiseSwitch {
    export const selector = "dr-promise-switch";
    export type ChangeParams<T> = {
        status: 'pending';
    } | {
        status: 'finally';
    } | {
        status: 'fulfilled';
        data: T;
    } | {
        status: 'rejected';
        data: any;
    };
    export type Attribute = {
        data: Promise<any> | (() => Promise<any>);
        change?: <T>(data: ChangeParams<T>) => void;
    };
    class ChildBase<T = any> extends ComponentBase<T> {
        hidden: boolean;
    }
    export class Default extends ChildBase {
    }
    export class Pending extends ChildBase<{
        defaultView?: null;
    }> {
    }
    export class Fulfilled<T = any> extends ChildBase {
        private data?;
        setData(data: T): void;
    }
    export class Rejected<T = any> extends ChildBase {
        private data?;
        setData(data: T): void;
    }
    export class PromiseSwitch extends ComponentBase<Attribute> {
        private promiseState?;
        onCreatedThisChild(child: any, data: OnCreateRenderDataParams): void;
        childStateChange(): void;
        onChangeAttrRender(name: string, value: any, other: OtherData): void;
    }
    export {};
}
declare const _default: {
    promiseDefault: (config?: RunConfig) => import("../../configs/TargetElement").TargetElement;
    promisePending: (config?: RunConfig) => import("../../configs/TargetElement").TargetElement;
    promiseFulfilled: (config?: RunConfig) => import("../../configs/TargetElement").TargetElement;
    promiseRejected: (config?: RunConfig) => import("../../configs/TargetElement").TargetElement;
    promiseSwitch: (config?: RunConfig) => import("../../configs/TargetElement").TargetElement;
};
export default _default;
//# sourceMappingURL=PromiseSwitch.d.ts.map