import { FoodsResource } from './resources/foods.js'; import { FoodLogsResource } from './resources/food-logs.js'; import { GlucoseResource } from './resources/glucose.js'; import { FoodAnalysisResource } from './resources/photo-scanning.js'; import { RestaurantsResource } from './resources/restaurants.js'; import { WaterLogsResource } from './resources/water-logs.js'; import { WeightLogsResource } from './resources/weight-logs.js'; import type { PartnerUserContext } from './models.js'; import { type JanuaryPartnerUserClient } from './user-client.js'; interface JanuaryPartnerClientBaseOptions { fetch?: typeof globalThis.fetch; } export interface JanuaryClientToken { /** Opaque bearer-token value. Never log or persist it. */ readonly token: string; /** Lifetime in seconds, measured from when the provider receives the token. */ readonly expiresIn: number; } export type JanuaryClientTokenResponse = JanuaryClientToken | { readonly token: string; readonly expires_in: number; }; export interface JanuaryTokenProvider { fetchClientToken(): Promise; } export type JanuaryTokenProviderCallback = () => Promise; /** A token-provider failure with an explicit retry decision. */ export declare class JanuaryTokenProviderError extends Error { readonly retryable: boolean; constructor(message: string, options?: { retryable?: boolean; cause?: unknown; }); } /** Controls bounded retries when the app's token provider fails to fetch a credential. */ export interface JanuaryTokenRetryPolicy { /** Total attempts including the initial provider call. Defaults to 9. */ readonly maximumAttempts?: number; /** Delay before the first retry. Defaults to 1,000 milliseconds. */ readonly initialDelayMs?: number; /** Exponential multiplier. Defaults to 2. */ readonly multiplier?: number; /** Maximum delay between attempts. Defaults to 8,000 milliseconds. */ readonly maximumDelayMs?: number; /** Random variation from zero to one. Defaults to 0.2 (plus or minus 20%). */ readonly jitterRatio?: number; } /** @deprecated Use JanuaryTokenProvider. */ export type JanuaryClientTokenProvider = JanuaryTokenProvider; /** @deprecated Use JanuaryTokenProviderCallback. */ export type JanuaryClientTokenProviderCallback = JanuaryTokenProviderCallback; export type JanuaryPartnerClientOptions = JanuaryPartnerClientBaseOptions & ({ /** @deprecated Local testing only. Use clientTokenProvider in production. */ apiKey: string; developmentApiKey?: never; accessToken?: never; clientTokenProvider?: never; tokenRetryPolicy?: never; } | { /** @deprecated Local testing only. Use clientTokenProvider in production. */ developmentApiKey: string; apiKey?: never; accessToken?: never; clientTokenProvider?: never; tokenRetryPolicy?: never; } | { apiKey?: never; developmentApiKey?: never; accessToken: string; clientTokenProvider?: never; tokenRetryPolicy?: never; } | { apiKey?: never; developmentApiKey?: never; accessToken?: never; clientTokenProvider: JanuaryTokenProvider | JanuaryTokenProviderCallback; tokenRetryPolicy?: JanuaryTokenRetryPolicy; }); interface ResolvedTokenRetryPolicy { maximumAttempts: number; initialDelayMs: number; multiplier: number; maximumDelayMs: number; jitterRatio: number; } export declare class JanuaryPartnerClient { readonly foods: FoodsResource; readonly restaurants: RestaurantsResource; readonly foodAnalysis: FoodAnalysisResource; readonly foodLogs: FoodLogsResource; readonly glucose: GlucoseResource; readonly waterLogs: WaterLogsResource; readonly weightLogs: WeightLogsResource; constructor(options: JanuaryPartnerClientOptions); forUser(context: PartnerUserContext): JanuaryPartnerUserClient; forUser(endUserId: string, endUserTimezone?: string): JanuaryPartnerUserClient; } export declare function resolveTokenRetryPolicy(policy?: JanuaryTokenRetryPolicy): ResolvedTokenRetryPolicy; export declare function retryDelay(policy: ResolvedTokenRetryPolicy, failedAttempt: number, unitRandom: number): number; export {}; //# sourceMappingURL=client.d.ts.map