import type { BearerTokenProvider } from '@moonshot-ai/kimi-code-oauth'; import type { ModelCapability, ProviderConfig as KosongProviderConfig, ProviderRequestAuth, } from '@moonshot-ai/kosong'; import type { ModelAlias, OAuthRef, ProviderType } from '#/config/index'; import type { Logger } from '#/logging/index'; export type { BearerTokenProvider }; export type OAuthTokenProviderResolver = ( providerName: string, oauthRef?: OAuthRef, ) => BearerTokenProvider | undefined; export interface ResolvedRuntimeProvider { readonly providerName: string; readonly provider: KosongProviderConfig; readonly modelCapabilities: ModelCapability; readonly alwaysThinking?: boolean; readonly supportEfforts?: readonly string[]; readonly defaultEffort?: string; readonly maxOutputSize?: number; readonly type: ProviderType; readonly protocol: ModelAlias['protocol']; } type AuthorizedRequest = ( request: (auth: ProviderRequestAuth) => Promise, ) => Promise; export interface ModelProvider { readonly defaultModel?: string; resolveProviderConfig(model: string): ResolvedRuntimeProvider; resolveAuth?(model: string, options?: { readonly log?: Logger }): AuthorizedRequest | undefined; }