import { WorkspaceScopedResource, extractData } from './base.js';
/**
 * Workspace-level settings — configure voice, branding, data
 * retention, outreach rules, and more.
 *
 * Each sub-resource has `get()` and `update()`.
 */
export class SettingsResource extends WorkspaceScopedResource {
    voice = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/voice', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/voice', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
    branding = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/branding', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/branding', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
    outreach = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/outreach', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/outreach', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
    retention = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/retention', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/retention', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
    gapScanner = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/gap-scanner', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/gap-scanner', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
        /**
         * Preview which calls would be flagged by the current gap-scanner config.
         *
         * The spec types the body as `GapScannerPreviewRequest | null`, but the
         * `null` branch only matters when the caller wants to *explicitly* clear
         * the body. Modeling as `body?: GapScannerPreviewRequest` keeps the SDK
         * surface consistent with every other POST wrapper; consumers who need
         * to send the literal `null` can do so via `client.POST(...)` directly.
         */
        preview: async (body) => extractData(await this.client.POST('/v1/{workspace_id}/settings/gap-scanner/preview', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
        /** Trigger an on-demand scan with the current gap-scanner config */
        scan: async () => extractData(await this.client.POST('/v1/{workspace_id}/settings/gap-scanner/scan', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
    };
    metrics = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/metrics', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/metrics', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
    environments = {
        get: async () => extractData(await this.client.GET('/v1/{workspace_id}/settings/environments', {
            params: { path: { workspace_id: this.workspaceId } },
        })),
        update: async (body) => extractData(await this.client.PUT('/v1/{workspace_id}/settings/environments', {
            params: { path: { workspace_id: this.workspaceId } },
            body,
        })),
    };
}
//# sourceMappingURL=settings.js.map