import Adapt, { AdaptElement, BuildData, BuiltinProps, ChangeType, FinalDomElement, ObserveForStatus } from "@adpt/core";
import { Action, ActionContext, ShouldAct } from "../action";
import { ResourceProps, ResourcePropsWithConfig } from "./common";
import { Manifest } from "./manifest_support";
/**
 * Type assertion to see if an element is both a {@link k8s.Resource | Resource}
 * and a {@link @adpt/core#FinalElement | FinalElement}
 *
 * @param e - element to test
 * @returns `true` if e is both a FinalElement and a {@link k8s.Resource | Resource}, `false` otherwise
 *
 * @public
 */
export declare function isResourceFinalElement(e: AdaptElement): e is FinalDomElement<ResourceProps & Adapt.BuiltinProps>;
/**
 * Primitive Component recognized by the k8s plugin to represent resources
 * @public
 */
export declare class Resource extends Action<ResourceProps> {
    defaultProps: {
        apiVersion: "v1";
        con: false;
    };
    manifest_: Manifest;
    constructor(props: ResourceProps);
    validate(): "Resource elements cannot have children" | undefined;
    shouldAct(op: ChangeType, ctx: ActionContext): Promise<ShouldAct>;
    action(op: ChangeType, ctx: ActionContext): Promise<void>;
    deployedWhen: (goalStatus: Adapt.GoalStatus, helpers: Adapt.DeployHelpers) => Promise<true | Adapt.Waiting | Adapt.Waiting[]>;
    status(observe: ObserveForStatus, buildData: BuildData): Promise<any>;
    private mountedElement;
    private manifest;
}
/**
 * Tests whether a ResourceProps is for a template object
 *
 * @public
 */
export declare function isResourcePropsWithConfig(x: ResourceProps & Partial<BuiltinProps>): x is ResourcePropsWithConfig & Partial<BuiltinProps>;
/**
 * Tests to see if an object is a {@link k8s.Resource} element
 * @param x - object to test
 * @returns true if object is an AdaptElement of type {@link k8s.Resource}
 *
 * @public
 */
export declare function isResource(x: any): x is AdaptElement<ResourceProps>;
//# sourceMappingURL=Resource.d.ts.map