import type { Arn } from "../../aws/CustomTypes/Arn";
import type { IamRoleName } from "../../aws/CustomTypes/IamRoleName";
import type { CloudFormationString } from "../../aws/SamTemplate/AwsSamTemplate";
import type { IamPolicyDocument } from "../../aws/SamTemplate/IamPolicyDocument";
import type { NonEmptyString } from "../../common/CustomTypes/NonEmptyString";
import type { NaturalNumber } from "../../common/CustomTypes/Numerics";
import type { Path } from "../../common/CustomTypes/Path";
import type { SecurityGroupId } from "../../common/CustomTypes/SecurityGroupId";
import type { SubnetId } from "../../common/CustomTypes/SubnetId";
import type { Dict } from "../Common";
import type { ResourceBase } from "./Common";
export declare const MAX_FUNCTION_LAYERS_COUNT = 5;
export declare const MAX_SUPPORTED_CONCURRENCY = 10000;
export declare type ComputeFunctionType = 'resource.compute.function';
interface ImageConfig {
    workingDirectory?: string;
    commands?: string[];
    entryPoints?: string[];
}
interface ComputeFunctionBase extends ResourceBase {
    type: ComputeFunctionType;
    packageType?: PackageType;
    entryPoint?: string;
    runtime?: string;
    code?: string;
    imageUri?: string;
    imageConfig?: ImageConfig;
    memory: number;
    timeout: number;
    layers?: Arn[];
    environment?: FunctionEnvironment;
    tags?: Record<string, string>;
    policies?: PolicyReference | PolicyReference[];
    reservedConcurrency?: NaturalNumber | 0;
    provisionedConcurrency?: NaturalNumber | 0;
    vpcConfig?: FunctionVpcConfiguration;
    trace?: boolean;
    endpointUrl?: EndpointUrlConfiguration;
}
export interface ZipComputeFunction extends ComputeFunctionBase {
    packageType?: 'zip';
    entryPoint: string;
    runtime: string;
    snapStart?: boolean;
}
export interface ImageComputeFunction extends ComputeFunctionBase {
    packageType: 'image';
    imageUri: string;
    snapStart?: false;
}
export declare type PackageType = 'image' | 'zip';
export declare type ComputeFunction = ImageComputeFunction | ZipComputeFunction;
export interface FunctionVpcConfiguration {
    securityGroupIds: SecurityGroupId[];
    subnetIds: SubnetId[];
}
export declare const isFunctionVpcConfiguration: import("@altostra/type-validations").ObjectOfTypeValidation<FunctionVpcConfiguration>;
export interface FunctionEnvironment {
    variables?: Dict<string, string>;
}
export declare type PolicyReference = CloudFormationString<Arn | IamRoleName> | IamPolicyDocument;
export declare const isPolicyRef: import("@altostra/type-validations").TypeValidation<Arn | IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | IamPolicyDocument | (Arn | IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | IamPolicyDocument)[]>;
export declare const functionPolicyFromString: (data: string) => Arn | IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | IamPolicyDocument | (Arn | IamRoleName | import("../../aws/CloudFormation/IntrinsicFunctions").Cidr | import("../../aws/CloudFormation/IntrinsicFunctions").Base64 | import("../../aws/CloudFormation/IntrinsicFunctions").And | import("../../aws/CloudFormation/IntrinsicFunctions").Equals | import("../../aws/CloudFormation/IntrinsicFunctions").Not | import("../../aws/CloudFormation/IntrinsicFunctions").Or | import("../../aws/CloudFormation/IntrinsicFunctions").FindInMap | import("../../aws/CloudFormation/IntrinsicFunctions").GetAtt | import("../../aws/CloudFormation/IntrinsicFunctions").GetAZs | import("../../aws/CloudFormation/IntrinsicFunctions").If | import("../../aws/CloudFormation/IntrinsicFunctions").ImportValue | import("../../aws/CloudFormation/IntrinsicFunctions").Join | import("../../aws/CloudFormation/IntrinsicFunctions").Length | import("../../aws/CloudFormation/IntrinsicFunctions").Ref | import("../../aws/CloudFormation/IntrinsicFunctions").Select | import("../../aws/CloudFormation/IntrinsicFunctions").Split | import("../../aws/CloudFormation/IntrinsicFunctions").Sub | import("../../aws/CloudFormation/IntrinsicFunctions/Transform").Transform | IamPolicyDocument)[];
export declare const isEnvironment: import("@altostra/type-validations").ObjectOfTypeValidation<FunctionEnvironment>;
export declare const isComputeFunction: import("@altostra/type-validations").TypeValidation<ZipComputeFunction | ImageComputeFunction>;
export declare function isSecurityGroupIds(val: unknown): boolean;
export declare function isSubnetIds(val: unknown): boolean;
export interface EndpointUrlConfiguration {
    enabled: boolean;
    authenticated: boolean;
}
export interface EntryPoint {
    path?: Path;
    fileName: NonEmptyString;
    handler: NonEmptyString;
}
export declare function parseEntryPoint(entryPoint: string): EntryPoint;
export declare function isEntryPoint(value: unknown): boolean;
export {};
