/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import * as z from "zod";
import { encodeFormQuery } from "../lib/encodings.js";
import * as M from "../lib/matchers.js";
import { safeParse } from "../lib/schemas.js";
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
import { pathToFunc } from "../lib/url.js";
import { GetIntegrationLogDrainsRequest$outboundSchema, GetIntegrationLogDrainsResponseBody$inboundSchema, } from "../models/getintegrationlogdrainsop.js";
import { VercelBadRequestError$inboundSchema, } from "../models/vercelbadrequesterror.js";
import { VercelForbiddenError$inboundSchema, } from "../models/vercelforbiddenerror.js";
/**
 * Retrieves a list of Integration log drains
 *
 * @remarks
 * Retrieves a list of all Integration log drains that are defined for the authenticated user or team. When using an OAuth2 token, the list is limited to log drains created by the authenticated integration.
 */
export async function logDrainsGetIntegrationLogDrains(client, request, options) {
    const parsed = safeParse(request, (value) => GetIntegrationLogDrainsRequest$outboundSchema.parse(value), "Input validation failed");
    if (!parsed.ok) {
        return parsed;
    }
    const payload = parsed.value;
    const body = null;
    const path = pathToFunc("/v2/integrations/log-drains")();
    const query = encodeFormQuery({
        "slug": payload.slug,
        "teamId": payload.teamId,
    });
    const headers = new Headers({
        Accept: "application/json",
    });
    const secConfig = await extractSecurity(client._options.bearerToken);
    const securityInput = secConfig == null ? {} : { bearerToken: secConfig };
    const requestSecurity = resolveGlobalSecurity(securityInput);
    const context = {
        operationID: "getIntegrationLogDrains",
        oAuth2Scopes: [],
        resolvedSecurity: requestSecurity,
        securitySource: client._options.bearerToken,
        retryConfig: options?.retries
            || client._options.retryConfig
            || { strategy: "none" },
        retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
    };
    const requestRes = client._createRequest(context, {
        security: requestSecurity,
        method: "GET",
        baseURL: options?.serverURL,
        path: path,
        headers: headers,
        query: query,
        body: body,
        timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
    }, options);
    if (!requestRes.ok) {
        return requestRes;
    }
    const req = requestRes.value;
    const doResult = await client._do(req, {
        context,
        errorCodes: ["400", "401", "403", "4XX", "5XX"],
        retryConfig: context.retryConfig,
        retryCodes: context.retryCodes,
    });
    if (!doResult.ok) {
        return doResult;
    }
    const response = doResult.value;
    const responseFields = {
        HttpMeta: { Response: response, Request: req },
    };
    const [result] = await M.match(M.json(200, z.array(GetIntegrationLogDrainsResponseBody$inboundSchema)), M.jsonErr(400, VercelBadRequestError$inboundSchema), M.jsonErr(401, VercelForbiddenError$inboundSchema), M.fail([403, "4XX", "5XX"]))(response, { extraFields: responseFields });
    if (!result.ok) {
        return result;
    }
    return result;
}
//# sourceMappingURL=logDrainsGetIntegrationLogDrains.js.map