import { IsCompleteResponse, OnEventResponse } from '@aws-cdk/custom-resources/lib/provider-framework/types'; import * as aws from 'aws-sdk'; export interface EksUpdateId { /** * If this field is included in an event passed to "IsComplete", it means we * initiated an EKS update that should be monitored using eks:DescribeUpdate * instead of just looking at the cluster status. */ EksUpdateId?: string; } export declare type ResourceEvent = AWSLambda.CloudFormationCustomResourceEvent & EksUpdateId; export declare abstract class ResourceHandler { protected readonly eks: EksClient; protected readonly requestId: string; protected readonly logicalResourceId: string; protected readonly requestType: 'Create' | 'Update' | 'Delete'; protected readonly physicalResourceId?: string; protected readonly event: ResourceEvent; constructor(eks: EksClient, event: ResourceEvent); onEvent(): Promise; isComplete(): Promise; protected log(x: any): void; protected abstract onCreate(): Promise; protected abstract onDelete(): Promise; protected abstract onUpdate(): Promise<(OnEventResponse & EksUpdateId) | void>; protected abstract isCreateComplete(): Promise; protected abstract isDeleteComplete(): Promise; protected abstract isUpdateComplete(): Promise; } export interface EksClient { configureAssumeRole(request: aws.STS.AssumeRoleRequest): void; createCluster(request: aws.EKS.CreateClusterRequest): Promise; deleteCluster(request: aws.EKS.DeleteClusterRequest): Promise; describeCluster(request: aws.EKS.DescribeClusterRequest): Promise; updateClusterConfig(request: aws.EKS.UpdateClusterConfigRequest): Promise; updateClusterVersion(request: aws.EKS.UpdateClusterVersionRequest): Promise; describeUpdate(req: aws.EKS.DescribeUpdateRequest): Promise; createFargateProfile(request: aws.EKS.CreateFargateProfileRequest): Promise; describeFargateProfile(request: aws.EKS.DescribeFargateProfileRequest): Promise; deleteFargateProfile(request: aws.EKS.DeleteFargateProfileRequest): Promise; }