import { RemovalPolicy } from 'aws-cdk-lib'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as kms from 'aws-cdk-lib/aws-kms'; import { Construct } from 'constructs'; export declare enum GitHubAppSecretsStorage { PARAMETER_STORE = "PARAMETER_STORE", SECRETS_MANAGER = "SECRETS_MANAGER" } export declare class GitHubApp { readonly name: string; readonly appId: number; static create(name: string, appId: number): GitHubApp; private constructor(); } export interface IGitHubApps { get secretsPrefix(): string; get secretsStorage(): GitHubAppSecretsStorage; grantAccess(principal: iam.IPrincipal): iam.Grant | undefined; getAppIdForAppName(name?: string): number; } export interface GitHubAppsProps { readonly storage: GitHubAppSecretsStorage; readonly defaultAppId: number; /** * @default /catnekaise/github-apps */ readonly prefix?: string; readonly additionalApps?: GitHubApp[]; } export declare abstract class BaseGitHubApps extends Construct implements IGitHubApps { private readonly baseProps; protected constructor(scope: Construct, id: string, baseProps: GitHubAppsProps); get secretsPrefix(): string; abstract grantAccess(principal: iam.IPrincipal): iam.Grant | undefined; get secretsStorage(): GitHubAppSecretsStorage; getAppIdForAppName(name?: string | undefined): number; } export interface ManagedGitHubAppsProps extends GitHubAppsProps { /** * @default AWS_MANAGED */ readonly kmsKey?: kms.IKey; readonly removalPolicy?: RemovalPolicy; } export declare class ManagedGitHubApps extends BaseGitHubApps implements IGitHubApps { private readonly props; constructor(scope: Construct, id: string, props: ManagedGitHubAppsProps); grantAccess(principal: iam.IPrincipal): iam.Grant | undefined; } export declare class SelfManagedGitHubApps extends BaseGitHubApps implements IGitHubApps { constructor(scope: Construct, id: string, props: GitHubAppsProps); grantAccess(principal: iam.IPrincipal): iam.Grant | undefined; }