import * as cdk from 'aws-cdk-lib';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as sec from 'aws-cdk-lib/aws-secretsmanager';
import * as constructs from 'constructs';
declare abstract class SharedSecret extends constructs.Construct implements sec.ISecret {
    private static setupCustomResource;
    protected readonly secret: sec.ISecret;
    private customResource;
    protected constructor(scope: constructs.IConstruct, id: string, secretName: string);
    get stack(): cdk.Stack;
    get env(): cdk.ResourceEnvironment;
    get encryptionKey(): cdk.aws_kms.IKey | undefined;
    get secretArn(): string;
    get secretFullArn(): string | undefined;
    get secretName(): string;
    get secretRef(): sec.SecretReference;
    get secretValue(): cdk.SecretValue;
    secretValueFromJson(key: string): cdk.SecretValue;
    grantRead(grantee: iam.IGrantable, versionStages?: string[]): iam.Grant;
    grantWrite(_grantee: iam.IGrantable): iam.Grant;
    addRotationSchedule(_id: string, _options: sec.RotationScheduleOptions): sec.RotationSchedule;
    addToResourcePolicy(_statement: iam.PolicyStatement): iam.AddToResourcePolicyResult;
    denyAccountRootDelete(): void;
    attach(_target: sec.ISecretAttachmentTarget): sec.ISecret;
    applyRemovalPolicy(_policy: cdk.RemovalPolicy): void;
    cfnDynamicReferenceKey(options?: cdk.SecretsManagerSecretOptions): string;
}
/**
 * A custom resource that resolves the Datadog API keys from a shared secret
 * @example
 * const datadogApiKey = DatadogSharedSecret.apiKeySecret(this);
 *
 * const datadogSecret = DatadogSharedSecret.credentialsSecret(this);
 * const datadogSite = datadogSecret.getSecret('Site');
 * const datadogApiKey = datadogSecret.getSecret('ApiKey');
 * const datadogApiKeyValue = datadogSecret.getSecretValue('ApiKey');
 * const datadogApiKeyValue = datadogSecret.getSecretValue('ApplicationKey');
 */
export declare class DatadogSharedSecret extends SharedSecret {
    /**
     * This static function resolves to the plain api-key secret, that can be used for the log forwarder or the Lambda instrumentation.
     */
    static apiKeySecret(scope: constructs.Construct): DatadogSharedSecret;
    /**
     * This static function resolves to the json credentials secret that contains ['ApiKey', 'ApplicationKey', 'Site'].
     */
    static credentialsSecret(scope: constructs.Construct): DatadogSharedCredentials;
}
type Field = 'ApplicationKey' | 'Site' | 'ApiKey';
export declare class DatadogSharedCredentials extends SharedSecret {
    getSecretValue(field: Field): cdk.SecretValue;
    getSecret(field: Field): cdk.aws_ecs.Secret;
}
export {};
