import type { Arn } from "../../../aws/CustomTypes/Arn";
import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { TypeValidation } from '@altostra/type-validations';
import type { Resource } from "..";
import type { RelationalDBClusterType, RelationalDBEngine, RelationalDBInstanceType } from "../RelationalDatabase";
import type { ExternalResourceBase } from "./common";
export declare type ExternalRelationalDatabaseType = 'external.rdb';
export declare type ExternalRelationalDbResourceType = RelationalDBClusterType | RelationalDBInstanceType;
export declare const DB_TYPES: Record<ExternalRelationalDbResourceType, true>;
export declare function isExternalRelationalResource(resource: Resource): resource is ExternalRelationalDatabase;
export interface ExternalRelationalDatabase extends ExternalResourceBase {
    externalResourceType: ExternalRelationalDbResourceType;
    /** Database ARN */
    identifier: Arn;
    databaseSecretArn: Arn;
    endpoint: NonEmptyString;
    dbEngine: RelationalDBEngine;
}
export declare const isExternalRelationalDatabase: TypeValidation<ExternalRelationalDatabase>;
export declare const VALID_ARN_RESOURCE_TYPES: {
    db: boolean;
    cluster: boolean;
};
export declare type ValidArnDbResource = keyof typeof VALID_ARN_RESOURCE_TYPES;
export declare function isValidArnResourceTypePart(part: string): part is ValidArnDbResource;
export declare const ARN_SERVICE_PARTS_COUNT = 2;
export declare const ARN_SERVICE_NAME = "rds";
export declare enum RdbArnParts {
    resourceType = 0,
    dbName = 1
}
export declare function isValidDatabaseArn(arn: Arn): boolean;
export declare function validateArnParts(service: string, resourceParts: string[]): boolean;
