import { OutputInstance } from "../index"; import { Resource } from "../resource"; /** * ResolvedResource is a `Resource` with all fields containing `Output` values fully resolved. This * is useful primarily when we're querying over resource outputs (e.g., using * `pulumi.runtime.listResourceOutputs`), and we expect all values to be present and fully-resolved. */ export declare type ResolvedResource = Omit, "urn" | "getProvider">; export declare type Resolved = T extends Promise ? ResolvedSimple : T extends OutputInstance ? ResolvedSimple : ResolvedSimple; declare type primitive = string | number | boolean | undefined | null; declare type ResolvedSimple = T extends primitive ? T : T extends Array ? ResolvedArray : T extends Function ? never : T extends object ? ResolvedObject : never; interface ResolvedArray extends Array> { } declare type ResolvedObject = ModifyOptionalProperties<{ [P in keyof T]: Resolved; }>; declare type RequiredKeys = { [P in keyof T]: undefined extends T[P] ? never : P; }[keyof T]; declare type OptionalKeys = { [P in keyof T]: undefined extends T[P] ? P : never; }[keyof T]; declare type ModifyOptionalProperties = { [P in RequiredKeys]: T[P]; } & { [P in OptionalKeys]?: T[P]; }; export {};