import { AwsCustomResource, AwsCustomResourcePolicy, AwsCustomResourceProps, AwsSdkCall } from 'aws-cdk-lib/custom-resources'; import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; import { Stack } from 'aws-cdk-lib'; export type LambdaSdkCallInput = Readonly<{ payload: any; functionArn: string; /** Arbitrary string injected into the payload to force re-invocation on redeploy. */ hash: string; }>; export type DynamoWriteCallInput = Readonly<{ tableName: string; tableArn: string; name: string; /** Items to write. Maximum 25 (DynamoDB BatchWriteItem limit). */ items: Array; }>; /** An AWS SDK call paired with the IAM policy statement needed to execute it. */ export type AwsSdkCallOutput = Readonly<{ awsSdkCall: AwsSdkCall; policyStatement: PolicyStatement; }>; /** Builds an SDK call that invokes a Lambda function, with a scoped IAM policy. */ export declare const withLambdaSdkCall: (input: LambdaSdkCallInput) => AwsSdkCallOutput; /** * Builds an SDK call for a DynamoDB BatchWriteItem operation, with a scoped IAM policy. * Throws if items exceed the 25-item BatchWriteItem limit. */ export declare const withDynamoBatchWriteCall: (input: DynamoWriteCallInput) => AwsSdkCallOutput; /** Custom resource configuration requiring an explicit IAM policy. */ export type CustomResourceConfiguration = Partial & Readonly<{ policy: AwsCustomResourcePolicy; }>; /** Returns a default configuration with a 10-minute timeout and a broad SDK-calls policy. */ export declare const withDefaultCustomResourceConfiguration: () => CustomResourceConfiguration; export type CustomResourceInput = Readonly<{ name: string; }>; /** * Creates a CloudFormation custom resource backed by an AWS SDK call. * Supports onCreate, onUpdate, and onDelete lifecycle hooks, each with their own scoped IAM policy. */ export declare const withCustomResource: (deps: { stack: Stack; customResourceConfiguration: CustomResourceConfiguration; onCreateSdkCall?: AwsSdkCallOutput; onUpdateSdkCall?: AwsSdkCallOutput; onDeleteSdkCall?: AwsSdkCallOutput; }) => (input: CustomResourceInput, configuration?: Partial) => AwsCustomResource; //# sourceMappingURL=custom-resource.d.ts.map