import { CustomResourceOptions, Input, Output, Resource } from '@pulumi/pulumi'; import { IEnvRoleBuilder } from './Builder'; export declare enum Environments { Global = "global", Dev = "dev", Sandbox = "sandbox", Prd = "prd" } /** Omit all the key of OT from T */ export type TypeOmit = Omit; export type OmitOpts = TypeOmit; /** * Information about a resource group. */ export type ResourceGroupInfo = { resourceGroupName: string; location?: Input; }; /** * Information about a resource group with an ID. */ export type ResourceGroupWithIdInfo = ResourceGroupInfo & { id: Input; }; /** * Properties for lockable resources. */ export type WithLockable = { lock?: boolean; }; /** * Properties for resources with dependencies. */ export type WithDependsOn = { dependsOn?: Input[]> | Input; }; /** * Options arguments for resources. */ export type OptsArgs = WithDependsOn & { importUri?: string; ignoreChanges?: string[]; }; /** * Arguments for login credentials. */ export type LoginArgs = { adminLogin: Input; password: Input; }; /** * Properties for named types. */ export type WithNamedType = { name: string; }; /** * Properties for resources with an output ID. */ export type WithOutputId = { id: Output; }; /** * Properties for resources with a subscription ID. */ export type WithSubId = { subscriptionId?: string; }; /** * Properties for resources with principal IDs. */ export type WithPrincipalId = { clientId: Input; principalId: Input; }; /** * Properties for resources with environment roles. */ export type WithEnvRoles = { envRoles?: IEnvRoleBuilder; envUIDInfo?: IdentityInfo; }; /** * Properties for resources with encryption. */ export type WithEncryption = { enableEncryption?: boolean; }; /** * Properties for resources with disk encryption. */ export type WithDiskEncryption = { diskEncryptionSetId?: Input; }; /** * Properties for resources with vault information. */ export type WithVaultInfo = { vaultInfo?: KeyVaultInfo; }; /** * Properties for resources with resource group information. */ export type WithResourceGroupInfo = { group: ResourceGroupInfo; }; /** * Properties for resources with log information. */ export type WithLogInfo = { logInfo?: LogInfo; }; /** * Properties for resources with encryption information. */ export type WithEncryptionInfo = WithEnvRoles & WithVaultInfo & WithEncryption; /** * Properties for resources with Pulumi options. */ export type WithPulumiOpts = { opts?: CustomResourceOptions; }; /** * Arguments for login credentials with environment roles. */ export type LoginWithEnvRolesArgs = LoginArgs & WithEnvRoles; /** * Properties for named types with vault information. */ export type NamedWithVaultType = WithNamedType & WithVaultInfo; /** * Basic arguments for named resources. */ export type NamedBasicArgs = WithNamedType & OptsArgs; /** * Basic arguments for named resources with vault information. */ export type NamedWithVaultBasicArgs = NamedWithVaultType & OptsArgs; /** * Arguments for resources. */ export type ResourceArgs = WithNamedType & WithResourceGroupInfo; /** * Arguments for resources with vault information. */ export type ResourceWithVaultArgs = ResourceArgs & NamedWithVaultType; /** * Arguments for encrypted resources. */ export type EncryptResourceArgs = ResourceWithVaultArgs & WithEncryptionInfo; /** * Basic arguments for resources with formattable names. */ export type BasicResourceArgs = WithFormattableName & ResourceArgs & OptsArgs; /** * Basic arguments for resources with vault information. */ export type BasicResourceWithVaultArgs = WithVaultInfo & BasicResourceArgs; /** * Basic arguments for encrypted resources. */ export type BasicEncryptResourceArgs = BasicResourceWithVaultArgs & WithEncryptionInfo & OptsArgs; /** * Basic resource information. */ export type BasicResourceInfo = WithNamedType & WithOutputId; /** * Resource output information. */ export type ResourceInfo = BasicResourceInfo & ResourceArgs; /** * Resource information with subscription ID. */ export type ResourceInfoWithSub = ResourceInfo & WithSubId; /** * Key vault information. */ export type KeyVaultInfo = ResourceInfo; export type CertFile = { certificatePath: Input; certificatePassword?: Input; }; export type CertType = { certificate: Input; certificatePassword?: Input; }; export type VaultCertType = { vaultCertName: string; }; /** * Identity information. */ export type IdentityInfo = WithOutputId & WithPrincipalId; /** * Active Directory identity information. */ export type AdIdentityInfo = WithNamedType & { objectId: Output; clientId: Output; clientSecret: Output | undefined; principalId: Output | undefined; principalSecret: Output | undefined; }; /** * Active Directory identity information with instance. */ export type AdIdentityInfoWithInstance = AdIdentityInfo & WithInstance; /** * Storage connection information. */ export type StorageConnectionInfo = { primaryConnection?: Output; secondaryConnection?: Output; primaryKey?: Output; secondaryKey?: Output; }; /** * Storage information. */ export type StorageInfo = ResourceInfo & StorageConnectionInfo & { endpoints: { blob: string; file: string; table: string; }; }; /** * Application Insights secrets information. */ export type AppInsightSecretsInfo = { instrumentationKey: Output; }; /** * Application Insights information. */ export type AppInsightInfo = ResourceInfo & AppInsightSecretsInfo & { connectionString: Output; }; /** * Log workspace secrets information. */ export type LogWorkspaceSecretsInfo = { primarySharedKey?: Output; secondarySharedKey?: Output; workspaceId?: Output; }; /** * Log workspace information. */ export type LogWorkspaceInfo = ResourceInfo & LogWorkspaceSecretsInfo; /** * Log information. */ export type LogInfo = { logWp: LogWorkspaceInfo; logStorage: StorageInfo; appInsight: AppInsightInfo; }; /** * Interface for identity information with instance. */ export interface IdentityInfoWithInstance extends IdentityInfo, WithInstance { } /** * Interface for resources with instance. */ export interface WithInstance { instance: InstanceType; } /** * Interface for basic resource information with instance. */ export interface BasicResourceInfoWithInstance extends WithInstance, BasicResourceInfo { } /** * Interface for resource information with instance. */ export interface ResourceInfoWithInstance extends WithInstance, ResourceInfo { } /** * Properties for private link. */ export type PrivateLinkPropsType = { privateIpAddress?: Input; /** The Subnet that private links will be created.*/ subnetIds: Input[]; /** The extra Vnet that Private DNS Zone will be linked.*/ extraVnetIds?: Input[]; }; /** * Properties for network. */ export type NetworkPropsType = { subnetId?: Input; ipAddresses?: Input[]; privateLink?: PrivateLinkPropsType; }; /** * Properties for identity role assignment. */ export type IdentityRoleAssignment = WithVaultInfo & { role?: EnvRoleKeyTypes; }; /** * Interface for replace pattern. */ export interface ReplacePattern { from: string | RegExp; to: string; } /** * Properties for naming conventions. */ export type ConventionProps = { prefix?: string; suffix?: string; /**Whether include the Azure Region name at the end of the name or not*/ region?: string; /**Whether include the organization name at the end of the name or not*/ includeOrgName?: boolean; /**Remove number from the name*/ cleanName?: boolean; /** the max length of the name*/ maxLength?: number; /**The regex to replace specials characters from the name*/ replaces?: ReplacePattern[]; }; export type EnvRoleKeyTypes = 'readOnly' | 'contributor' | 'admin'; export type RoleEnableItem = boolean | { [k in EnvRoleKeyTypes]?: boolean; }; export type EnvRoleInfoType = { objectId: string; displayName: string; }; export type EnvRolesInfo = Record | EnvRoleInfoType>; export type RoleEnableTypes = { enableRGRoles?: RoleEnableItem; enableAksRoles?: RoleEnableItem; enableStorageRoles?: RoleEnableItem; enableIotRoles?: RoleEnableItem; enableVaultRoles?: RoleEnableItem; /** Container Registry Roles */ enableACRRoles?: RoleEnableItem; enableAppConfig?: RoleEnableItem; enableServiceBus?: RoleEnableItem; enableSignalR?: RoleEnableItem; enableRedisCache?: RoleEnableItem; /** Container App Roles */ enableContainerAppRoles?: RoleEnableItem; }; export type ListRoleType = Record>; /** * Type for naming. */ export type NamingType = string | { val: string; rule: ConventionProps; }; /** * Properties for formattable names. */ export type WithFormattableName = { name: NamingType; }; /** * Properties for diagnostic settings. */ export type DiagnosticProps = WithNamedType & WithDependsOn & { logInfo: Partial>; targetResourceId: Input; metricsCategories?: string[]; logsCategories?: string[]; };