import { z } from 'zod';
/**
 * Make a POST request to a URL with JSON body
 * @param url The URL to post to
 * @param data The data to send in the request body
 * @returns The JSON response
 */
export declare function post<T>(url: string, data: Record<string, unknown>): Promise<T>;
/**
 * Zod schema for client registration response
 */
export declare const ClientRegistrationResponseSchema: z.ZodObject<{
    clientId: z.ZodString;
    clientSecret: z.ZodString;
    expiresAt: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    clientId: string;
    clientSecret: string;
    expiresAt?: string | undefined;
}, {
    clientId: string;
    clientSecret: string;
    expiresAt?: string | undefined;
}>;
/**
 * Zod schema for device authorization response
 */
export declare const DeviceAuthorizationResponseSchema: z.ZodObject<{
    deviceCode: z.ZodString;
    userCode: z.ZodString;
    verificationUri: z.ZodString;
    verificationUriComplete: z.ZodString;
    expiresIn: z.ZodNumber;
    interval: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    expiresIn: number;
    deviceCode: string;
    verificationUri: string;
    verificationUriComplete: string;
    userCode: string;
    interval: number;
}, {
    expiresIn: number;
    deviceCode: string;
    verificationUri: string;
    verificationUriComplete: string;
    userCode: string;
    interval: number;
}>;
/**
 * Zod schema for token response
 */
export declare const TokenResponseSchema: z.ZodObject<{
    accessToken: z.ZodOptional<z.ZodString>;
    access_token: z.ZodOptional<z.ZodString>;
    refreshToken: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    refresh_token: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    tokenType: z.ZodOptional<z.ZodString>;
    token_type: z.ZodOptional<z.ZodString>;
    expires_in: z.ZodOptional<z.ZodNumber>;
    expiresIn: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    accessToken?: string | undefined;
    expiresIn?: number | undefined;
    refreshToken?: string | null | undefined;
    tokenType?: string | undefined;
    access_token?: string | undefined;
    refresh_token?: string | null | undefined;
    token_type?: string | undefined;
    expires_in?: number | undefined;
}, {
    accessToken?: string | undefined;
    expiresIn?: number | undefined;
    refreshToken?: string | null | undefined;
    tokenType?: string | undefined;
    access_token?: string | undefined;
    refresh_token?: string | null | undefined;
    token_type?: string | undefined;
    expires_in?: number | undefined;
}>;
