import * as core from "@terrascript/core";
export interface AuthenticateOidcArgs extends core.SchemaArgs {
    authenticationRequestExtraParams?: core.Map<string, string> | core.MapOut<core.StringOut>;
    authorizationEndpoint: string | core.StringOut;
    clientId: string | core.StringOut;
    clientSecret: string | core.StringOut;
    issuer: string | core.StringOut;
    onUnauthenticatedRequest?: string | core.StringOut;
    scope?: string | core.StringOut;
    sessionCookieName?: string | core.StringOut;
    sessionTimeout?: number | core.NumberOut;
    tokenEndpoint: string | core.StringOut;
    userInfoEndpoint: string | core.StringOut;
}
export declare class AuthenticateOidc extends core.Schema<AuthenticateOidcArgs> {
    authenticationRequestExtraParams?: core.Map<string, string> | core.MapOut<core.StringOut>;
    authorizationEndpoint: string | core.StringOut;
    clientId: string | core.StringOut;
    clientSecret: string | core.StringOut;
    issuer: string | core.StringOut;
    onUnauthenticatedRequest?: string | core.StringOut;
    scope?: string | core.StringOut;
    sessionCookieName?: string | core.StringOut;
    sessionTimeout?: number | core.NumberOut;
    tokenEndpoint: string | core.StringOut;
    userInfoEndpoint: string | core.StringOut;
}
export interface TargetGroupArgs extends core.SchemaArgs {
    arn: string | core.StringOut;
    weight?: number | core.NumberOut;
}
export declare class TargetGroup extends core.Schema<TargetGroupArgs> {
    arn: string | core.StringOut;
    weight?: number | core.NumberOut;
}
export interface StickinessArgs extends core.SchemaArgs {
    duration: number | core.NumberOut;
    enabled?: boolean | core.BooleanOut;
}
export declare class Stickiness extends core.Schema<StickinessArgs> {
    duration: number | core.NumberOut;
    enabled?: boolean | core.BooleanOut;
}
export interface ForwardArgs extends core.SchemaArgs {
    stickiness?: Stickiness;
    targetGroup: core.Array<TargetGroup> | core.ArrayOut<TargetGroup>;
}
export declare class Forward extends core.Schema<ForwardArgs> {
    stickiness?: Stickiness;
    targetGroup: core.Array<TargetGroup> | core.ArrayOut<TargetGroup>;
}
export interface RedirectArgs extends core.SchemaArgs {
    host?: string | core.StringOut;
    path?: string | core.StringOut;
    port?: string | core.StringOut;
    protocol?: string | core.StringOut;
    query?: string | core.StringOut;
    statusCode: string | core.StringOut;
}
export declare class Redirect extends core.Schema<RedirectArgs> {
    host?: string | core.StringOut;
    path?: string | core.StringOut;
    port?: string | core.StringOut;
    protocol?: string | core.StringOut;
    query?: string | core.StringOut;
    statusCode: string | core.StringOut;
}
export interface FixedResponseArgs extends core.SchemaArgs {
    contentType: string | core.StringOut;
    messageBody?: string | core.StringOut;
    statusCode?: string | core.StringOut;
}
export declare class FixedResponse extends core.Schema<FixedResponseArgs> {
    contentType: string | core.StringOut;
    messageBody?: string | core.StringOut;
    statusCode?: string | core.StringOut;
}
export interface AuthenticateCognitoArgs extends core.SchemaArgs {
    authenticationRequestExtraParams?: core.Map<string, string> | core.MapOut<core.StringOut>;
    onUnauthenticatedRequest?: string | core.StringOut;
    scope?: string | core.StringOut;
    sessionCookieName?: string | core.StringOut;
    sessionTimeout?: number | core.NumberOut;
    userPoolArn: string | core.StringOut;
    userPoolClientId: string | core.StringOut;
    userPoolDomain: string | core.StringOut;
}
export declare class AuthenticateCognito extends core.Schema<AuthenticateCognitoArgs> {
    authenticationRequestExtraParams?: core.Map<string, string> | core.MapOut<core.StringOut>;
    onUnauthenticatedRequest?: string | core.StringOut;
    scope?: string | core.StringOut;
    sessionCookieName?: string | core.StringOut;
    sessionTimeout?: number | core.NumberOut;
    userPoolArn: string | core.StringOut;
    userPoolClientId: string | core.StringOut;
    userPoolDomain: string | core.StringOut;
}
export interface ActionArgs extends core.SchemaArgs {
    authenticateCognito?: AuthenticateCognito;
    authenticateOidc?: AuthenticateOidc;
    fixedResponse?: FixedResponse;
    forward?: Forward;
    order?: number | core.NumberOut;
    redirect?: Redirect;
    targetGroupArn?: string | core.StringOut;
    type: string | core.StringOut;
}
export declare class Action extends core.Schema<ActionArgs> {
    authenticateCognito?: AuthenticateCognito;
    authenticateOidc?: AuthenticateOidc;
    fixedResponse?: FixedResponse;
    forward?: Forward;
    order?: number | core.NumberOut;
    redirect?: Redirect;
    targetGroupArn?: string | core.StringOut;
    type: string | core.StringOut;
}
export interface QueryStringArgs extends core.SchemaArgs {
    key?: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class QueryString extends core.Schema<QueryStringArgs> {
    key?: string | core.StringOut;
    value: string | core.StringOut;
}
export interface SourceIpArgs extends core.SchemaArgs {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class SourceIp extends core.Schema<SourceIpArgs> {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface HostHeaderArgs extends core.SchemaArgs {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class HostHeader extends core.Schema<HostHeaderArgs> {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface HttpHeaderArgs extends core.SchemaArgs {
    httpHeaderName: string | core.StringOut;
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class HttpHeader extends core.Schema<HttpHeaderArgs> {
    httpHeaderName: string | core.StringOut;
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface HttpRequestMethodArgs extends core.SchemaArgs {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class HttpRequestMethod extends core.Schema<HttpRequestMethodArgs> {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface PathPatternArgs extends core.SchemaArgs {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class PathPattern extends core.Schema<PathPatternArgs> {
    values: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface ConditionArgs extends core.SchemaArgs {
    hostHeader?: HostHeader;
    httpHeader?: HttpHeader;
    httpRequestMethod?: HttpRequestMethod;
    pathPattern?: PathPattern;
    queryString?: core.Array<QueryString> | core.ArrayOut<QueryString>;
    sourceIp?: SourceIp;
}
export declare class Condition extends core.Schema<ConditionArgs> {
    hostHeader?: HostHeader;
    httpHeader?: HttpHeader;
    httpRequestMethod?: HttpRequestMethod;
    pathPattern?: PathPattern;
    queryString?: core.Array<QueryString> | core.ArrayOut<QueryString>;
    sourceIp?: SourceIp;
}
export interface LbListenerRuleArgs extends core.ResourceArgs {
    action: core.Array<Action> | core.ArrayOut<Action>;
    condition: core.Array<Condition> | core.ArrayOut<Condition>;
    listenerArn: string | core.StringOut;
    priority?: number | core.NumberOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class LbListenerRule extends core.Resource<LbListenerRuleArgs> {
    action: core.Array<Action> | core.ArrayOut<Action>;
    arn: string | core.StringOut;
    condition: core.Array<Condition> | core.ArrayOut<Condition>;
    id: string | core.StringOut;
    listenerArn: string | core.StringOut;
    priority?: number | core.NumberOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    constructor(name: string, args?: LbListenerRuleArgs);
    getNamespace(): string;
}
//# sourceMappingURL=lb_listener_rule.d.ts.map