import { IComGithubFluxcdPkgApisMetaLocalObjectReference } from "../../github.com/fluxcd/pkg/apis/meta/LocalObjectReference.js";
import { IComGithubFluxcdSourceControllerApiV1BucketSTSSpec } from "./BucketSTSSpec.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * BucketSpec specifies the required configuration to produce an Artifact for
 * an object storage bucket.
 */
export interface IBucketSpec {
    /**
     * BucketName is the name of the object storage bucket.
     */
    "bucketName": string;
    /**
     * CertSecretRef can be given the name of a Secret containing
     * either or both of
     *
     * - a PEM-encoded client certificate (`tls.crt`) and private
     * key (`tls.key`);
     * - a PEM-encoded CA certificate (`ca.crt`)
     *
     * and whichever are supplied, will be used for connecting to the
     * bucket. The client cert and key are useful if you are
     * authenticating with a certificate; the CA cert is useful if
     * you are using a self-signed server certificate. The Secret must
     * be of type `Opaque` or `kubernetes.io/tls`.
     *
     * This field is only supported for the `generic` provider.
     */
    "certSecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * Endpoint is the object storage address the BucketName is located at.
     */
    "endpoint": string;
    /**
     * Ignore overrides the set of excluded patterns in the .sourceignore format
     * (which is the same as .gitignore). If not provided, a default will be used,
     * consult the documentation for your version to find out what those are.
     */
    "ignore"?: string;
    /**
     * Insecure allows connecting to a non-TLS HTTP Endpoint.
     */
    "insecure"?: boolean;
    "interval": string;
    /**
     * Prefix to use for server-side filtering of files in the Bucket.
     */
    "prefix"?: string;
    /**
     * Provider of the object storage bucket.
     * Defaults to 'generic', which expects an S3 (API) compatible object
     * storage.
     */
    "provider"?: "generic" | "aws" | "gcp" | "azure";
    /**
     * ProxySecretRef specifies the Secret containing the proxy configuration
     * to use while communicating with the Bucket server.
     */
    "proxySecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * Region of the Endpoint where the BucketName is located in.
     */
    "region"?: string;
    /**
     * SecretRef specifies the Secret containing authentication credentials
     * for the Bucket.
     */
    "secretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    /**
     * ServiceAccountName is the name of the Kubernetes ServiceAccount used to authenticate
     * the bucket. This field is only supported for the 'gcp' and 'aws' providers.
     * For more information about workload identity:
     * https://fluxcd.io/flux/components/source/buckets/#workload-identity
     */
    "serviceAccountName"?: string;
    /**
     * STS specifies the required configuration to use a Security Token
     * Service for fetching temporary credentials to authenticate in a
     * Bucket provider.
     *
     * This field is only supported for the `aws` and `generic` providers.
     */
    "sts"?: IComGithubFluxcdSourceControllerApiV1BucketSTSSpec;
    /**
     * Suspend tells the controller to suspend the reconciliation of this
     * Bucket.
     */
    "suspend"?: boolean;
    "timeout"?: string;
}
/**
 * BucketSpec specifies the required configuration to produce an Artifact for
 * an object storage bucket.
 */
export declare class BucketSpec extends Model<IBucketSpec> implements IBucketSpec {
    "bucketName": string;
    "certSecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "endpoint": string;
    "ignore"?: string;
    "insecure"?: boolean;
    "interval": string;
    "prefix"?: string;
    "provider"?: "generic" | "aws" | "gcp" | "azure";
    "proxySecretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "region"?: string;
    "secretRef"?: IComGithubFluxcdPkgApisMetaLocalObjectReference;
    "serviceAccountName"?: string;
    "sts"?: IComGithubFluxcdSourceControllerApiV1BucketSTSSpec;
    "suspend"?: boolean;
    "timeout"?: string;
    constructor(data?: ModelData<IBucketSpec>);
}
export type { IBucketSpec as IComGithubFluxcdSourceControllerApiV1BucketSpec, BucketSpec as ComGithubFluxcdSourceControllerApiV1BucketSpec };
