import type { IApi } from './api';
import { ApiMapping } from './api-mapping';
import type { DomainMappingOptions, IAccessLogSettings, IStage } from './stage';
import type { AccessLogFormat } from '../../../aws-apigateway/lib';
import * as cloudwatch from '../../../aws-cloudwatch';
import { Resource } from '../../../core';
import type { CfnStage, IApiRef, StageReference } from '../apigatewayv2.generated';
/**
 * Base class representing an API
 * @internal
 */
export declare abstract class ApiBase extends Resource implements IApi {
    abstract readonly apiId: string;
    abstract readonly apiEndpoint: string;
    metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric;
    get apiRef(): IApiRef['apiRef'];
}
/**
 * Base class representing a Stage
 * @internal
 */
export declare abstract class StageBase extends Resource implements IStage {
    private stageVariables;
    abstract readonly stageName: string;
    protected abstract readonly baseApi: IApi;
    /**
     * The created ApiMapping if domain mapping has been added
     * @internal
     */
    protected _apiMapping?: ApiMapping;
    /**
     * The URL to this stage.
     */
    abstract get url(): string;
    /**
     * The default Access Logging format of this stage.
     */
    abstract defaultAccessLogFormat(): AccessLogFormat;
    /**
     * @internal
     */
    protected _addDomainMapping(domainMapping: DomainMappingOptions): void;
    /**
     * @internal
     */
    protected _validateAccessLogSettings(props?: IAccessLogSettings): CfnStage.AccessLogSettingsProperty | undefined;
    metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric;
    addStageVariable(name: string, value: string): void;
    /**
     * Returns the stage variables for this stage.
     * @internal
     */
    protected get _stageVariables(): {
        [key: string]: string;
    } | undefined;
    get stageRef(): StageReference;
}
