import { APIResource } from "../../core/resource.js";
import { APIPromise } from "../../core/api-promise.js";
import { RequestOptions } from "../../internal/request-options.js";
export declare class BaseMaintenanceConfigs extends APIResource {
    static readonly _key: readonly ['basinCatalog', 'maintenanceConfigs'];
    /**
     * Update the maintenance configuration for a catalog. This allows you to enable or
     * disable compaction and adjust target file sizes for optimization.
     *
     * @example
     * ```ts
     * const maintenanceConfig =
     *   await client.basinCatalog.maintenanceConfigs.update(
     *     'my-data-bucket',
     *     {
     *       account_id: '0123456789abcdef0123456789abcdef',
     *       compaction: {
     *         state: 'enabled',
     *         target_size_mb: '256',
     *       },
     *       snapshot_expiration: {
     *         max_snapshot_age: '14d',
     *         min_snapshots_to_keep: 5,
     *         state: 'enabled',
     *       },
     *     },
     *   );
     * ```
     */
    update(bucketName: string, params: MaintenanceConfigUpdateParams, options?: RequestOptions): APIPromise<MaintenanceConfigUpdateResponse>;
    /**
     * Retrieve the maintenance configuration for a specific catalog, including
     * compaction settings and credential status.
     *
     * @example
     * ```ts
     * const maintenanceConfig =
     *   await client.basinCatalog.maintenanceConfigs.get(
     *     'my-data-bucket',
     *     { account_id: '0123456789abcdef0123456789abcdef' },
     *   );
     * ```
     */
    get(bucketName: string, params: MaintenanceConfigGetParams, options?: RequestOptions): APIPromise<MaintenanceConfigGetResponse>;
}
export declare class MaintenanceConfigs extends BaseMaintenanceConfigs {
}
/**
 * Configures maintenance for the catalog.
 */
export interface MaintenanceConfigUpdateResponse {
    /**
     * Configures compaction for catalog maintenance.
     */
    compaction?: MaintenanceConfigUpdateResponse.Compaction;
    /**
     * Scheduling interval between normal table maintenance runs.
     */
    interval?: string;
    /**
     * Configures snapshot expiration settings.
     */
    snapshot_expiration?: MaintenanceConfigUpdateResponse.SnapshotExpiration;
}
export declare namespace MaintenanceConfigUpdateResponse {
    /**
     * Configures compaction for catalog maintenance.
     */
    interface Compaction {
        /**
         * Specifies the state of maintenance operations.
         */
        state: 'enabled' | 'disabled';
        /**
         * Sets the target file size for compaction in megabytes. Defaults to "128".
         */
        target_size_mb: '64' | '128' | '256' | '512';
    }
    /**
     * Configures snapshot expiration settings.
     */
    interface SnapshotExpiration {
        /**
         * Specifies the maximum age for snapshots. The system deletes snapshots older than
         * this age. Format: <number><unit> where unit is d (days), h (hours), m (minutes),
         * or s (seconds). Examples: "7d" (7 days), "48h" (48 hours), "2880m" (2,880
         * minutes). Defaults to "7d".
         */
        max_snapshot_age: string;
        /**
         * Specifies the minimum number of snapshots to retain. Defaults to 100.
         */
        min_snapshots_to_keep: number;
        /**
         * Specifies the state of maintenance operations.
         */
        state: 'enabled' | 'disabled';
    }
}
/**
 * Contains maintenance configuration and credential status.
 */
export interface MaintenanceConfigGetResponse {
    /**
     * Shows the credential configuration status.
     */
    credential_status: 'present' | 'absent';
    /**
     * Configures maintenance for the catalog.
     */
    maintenance_config: MaintenanceConfigGetResponse.MaintenanceConfig;
}
export declare namespace MaintenanceConfigGetResponse {
    /**
     * Configures maintenance for the catalog.
     */
    interface MaintenanceConfig {
        /**
         * Configures compaction for catalog maintenance.
         */
        compaction?: MaintenanceConfig.Compaction;
        /**
         * Scheduling interval between normal table maintenance runs.
         */
        interval?: string;
        /**
         * Configures snapshot expiration settings.
         */
        snapshot_expiration?: MaintenanceConfig.SnapshotExpiration;
    }
    namespace MaintenanceConfig {
        /**
         * Configures compaction for catalog maintenance.
         */
        interface Compaction {
            /**
             * Specifies the state of maintenance operations.
             */
            state: 'enabled' | 'disabled';
            /**
             * Sets the target file size for compaction in megabytes. Defaults to "128".
             */
            target_size_mb: '64' | '128' | '256' | '512';
        }
        /**
         * Configures snapshot expiration settings.
         */
        interface SnapshotExpiration {
            /**
             * Specifies the maximum age for snapshots. The system deletes snapshots older than
             * this age. Format: <number><unit> where unit is d (days), h (hours), m (minutes),
             * or s (seconds). Examples: "7d" (7 days), "48h" (48 hours), "2880m" (2,880
             * minutes). Defaults to "7d".
             */
            max_snapshot_age: string;
            /**
             * Specifies the minimum number of snapshots to retain. Defaults to 100.
             */
            min_snapshots_to_keep: number;
            /**
             * Specifies the state of maintenance operations.
             */
            state: 'enabled' | 'disabled';
        }
    }
}
export interface MaintenanceConfigUpdateParams {
    /**
     * Path param: Identifies the account.
     */
    account_id: string;
    /**
     * Body param: Updates compaction configuration (all fields optional).
     */
    compaction?: MaintenanceConfigUpdateParams.Compaction;
    /**
     * Body param: Updates snapshot expiration configuration (all fields optional).
     */
    snapshot_expiration?: MaintenanceConfigUpdateParams.SnapshotExpiration;
}
export declare namespace MaintenanceConfigUpdateParams {
    /**
     * Updates compaction configuration (all fields optional).
     */
    interface Compaction {
        /**
         * Specifies the state of maintenance operations.
         */
        state?: 'enabled' | 'disabled';
        /**
         * Sets the target file size for compaction in megabytes. Defaults to "128".
         */
        target_size_mb?: '64' | '128' | '256' | '512';
    }
    /**
     * Updates snapshot expiration configuration (all fields optional).
     */
    interface SnapshotExpiration {
        /**
         * Updates the maximum age for snapshots optionally.
         */
        max_snapshot_age?: string;
        /**
         * Updates the minimum number of snapshots to retain optionally.
         */
        min_snapshots_to_keep?: number;
        /**
         * Specifies the state of maintenance operations.
         */
        state?: 'enabled' | 'disabled';
    }
}
export interface MaintenanceConfigGetParams {
    /**
     * Identifies the account.
     */
    account_id: string;
}
export declare namespace MaintenanceConfigs {
    export { type MaintenanceConfigUpdateResponse as MaintenanceConfigUpdateResponse, type MaintenanceConfigGetResponse as MaintenanceConfigGetResponse, type MaintenanceConfigUpdateParams as MaintenanceConfigUpdateParams, type MaintenanceConfigGetParams as MaintenanceConfigGetParams, };
}
//# sourceMappingURL=maintenance-configs.d.ts.map