import { IComGithubFluxcdPkgApisMetaLocalObjectReference } from "../../github.com/fluxcd/pkg/apis/meta/LocalObjectReference.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * ProviderSpec defines the desired state of the Provider.
 */
export interface IProviderSpec {
    /**
     * Address specifies the endpoint, in a generic sense, to where alerts are sent.
     * What kind of endpoint depends on the specific Provider type being used.
     * For the generic Provider, for example, this is an HTTP/S address.
     * For other Provider types this could be a project ID or a namespace.
     */
    "address"?: string;
    /**
     * CertSecretRef specifies the Secret containing TLS certificates
     * for secure communication.
     *
     * Supported configurations:
     * - CA-only: Server authentication (provide ca.crt only)
     * - mTLS: Mutual authentication (provide ca.crt + tls.crt + tls.key)
     * - Client-only: Client authentication with system CA (provide tls.crt + tls.key only)
     *
     * Legacy keys "caFile", "certFile", "keyFile" are supported but deprecated. Use "ca.crt", "tls.crt", "tls.key" instead.
     */
    "certSecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * Channel specifies the destination channel where events should be posted.
     */
    "channel"?: string;
    /**
     * CommitStatusExpr is a CEL expression that evaluates to a string value
     * that can be used to generate a custom commit status message for use
     * with eligible Provider types (github, gitlab, gitea, bitbucketserver,
     * bitbucket, azuredevops). Supported variables are: event, provider,
     * and alert.
     */
    "commitStatusExpr"?: string;
    "interval"?: string;
    /**
     * Proxy the HTTP/S address of the proxy server.
     * Deprecated: Use ProxySecretRef instead. Will be removed in v1.
     */
    "proxy"?: string;
    /**
     * ProxySecretRef specifies the Secret containing the proxy configuration
     * for this Provider. The Secret should contain an 'address' key with the
     * HTTP/S address of the proxy server. Optional 'username' and 'password'
     * keys can be provided for proxy authentication.
     */
    "proxySecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * SecretRef specifies the Secret containing the authentication
     * credentials for this Provider.
     */
    "secretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * ServiceAccountName is the name of the Kubernetes ServiceAccount used to
     * authenticate with cloud provider services through workload identity.
     * This enables multi-tenant authentication without storing static credentials.
     *
     * Supported provider types: azureeventhub, azuredevops, googlepubsub
     *
     * When specified, the controller will:
     * 1. Create an OIDC token for the specified ServiceAccount
     * 2. Exchange it for cloud provider credentials via STS
     * 3. Use the obtained credentials for API authentication
     *
     * When unspecified, controller-level authentication is used (single-tenant).
     *
     * An error is thrown if static credentials are also defined in SecretRef.
     * This field requires the ObjectLevelWorkloadIdentity feature gate to be enabled.
     */
    "serviceAccountName"?: string;
    /**
     * Suspend tells the controller to suspend subsequent
     * events handling for this Provider.
     */
    "suspend"?: boolean;
    "timeout"?: string;
    /**
     * Type specifies which Provider implementation to use.
     */
    "type": "slack" | "discord" | "msteams" | "rocket" | "generic" | "generic-hmac" | "github" | "gitlab" | "gitea" | "giteapullrequestcomment" | "bitbucketserver" | "bitbucket" | "azuredevops" | "googlechat" | "googlepubsub" | "webex" | "sentry" | "azureeventhub" | "telegram" | "lark" | "matrix" | "opsgenie" | "alertmanager" | "grafana" | "githubdispatch" | "githubpullrequestcomment" | "gitlabmergerequestcomment" | "pagerduty" | "datadog" | "nats" | "zulip" | "otel";
    /**
     * Username specifies the name under which events are posted.
     */
    "username"?: string;
}
/**
 * ProviderSpec defines the desired state of the Provider.
 */
export declare class ProviderSpec extends Model<IProviderSpec> implements IProviderSpec {
    "address"?: string;
    "certSecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "channel"?: string;
    "commitStatusExpr"?: string;
    "interval"?: string;
    "proxy"?: string;
    "proxySecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "secretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "serviceAccountName"?: string;
    "suspend"?: boolean;
    "timeout"?: string;
    "type": "slack" | "discord" | "msteams" | "rocket" | "generic" | "generic-hmac" | "github" | "gitlab" | "gitea" | "giteapullrequestcomment" | "bitbucketserver" | "bitbucket" | "azuredevops" | "googlechat" | "googlepubsub" | "webex" | "sentry" | "azureeventhub" | "telegram" | "lark" | "matrix" | "opsgenie" | "alertmanager" | "grafana" | "githubdispatch" | "githubpullrequestcomment" | "gitlabmergerequestcomment" | "pagerduty" | "datadog" | "nats" | "zulip" | "otel";
    "username"?: string;
    constructor(data?: ModelData<IProviderSpec>);
}
export type { IProviderSpec as IComGithubFluxcdNotificationControllerApiV1beta3ProviderSpec, ProviderSpec as ComGithubFluxcdNotificationControllerApiV1beta3ProviderSpec };
