mod credential;
mod device;
mod doctor;
mod error;
pub(crate) mod file_store;
pub(crate) mod lock;
pub(crate) mod login;
pub(crate) mod policy;
pub(crate) mod refresh;
pub(crate) mod stores;
pub(crate) mod time;
pub use credential::{
is_jwt, looks_like_access_token, select_scheme, AuthScheme, Credential, CredentialKind,
CredentialProvider, CredentialSource, FnCredential, SourcedCredential, StaticCredential,
EXPIRY_SKEW_SECONDS,
};
pub use device::{
login, login_xai, pkce_challenge, poll_device_code, poll_xai_device_login,
start_xai_device_login, DeviceAuthorization, DevicePoll, Echo, LoginOptions, Sleeper,
};
pub use doctor::{explain_auth, ExplainOptions, Report, Step, StepState};
pub use error::AuthError;
pub use file_store::{default_credentials_path, CredentialFileStore};
pub use lock::{
lock_dir, lock_path_for, try_lock_path_for, write_private_json_atomic, FileLock,
DEFAULT_LOCK_TIMEOUT,
};
pub use login::{stored_login_paths, StoredLogin, StoredState};
pub use policy::{
access_policy, canonical_provider, claude_code_version_guidance, known_providers, AccessPolicy,
AnthropicVersionIn, CredentialPolicy, EndpointSupport, HostSetting, HostSpec, ModelPlacement,
StreamFraming, ACCESS_POLICIES, ANTHROPIC_API, AWS_ANTHROPIC, AZURE, AZURE_ANTHROPIC,
AZURE_CHAT, BEDROCK_ANTHROPIC, BEDROCK_CHAT, BEDROCK_MANTLE_CHAT, CLAUDE_CODE,
CLAUDE_CODE_VERSION_ENV, CODEX_CLIENT_VERSION_ENV, DEEPINFRA, DEEPSEEK, DEEPSEEK_ANTHROPIC,
DEFAULT_CLAUDE_CODE_SYSTEM_PROMPT, DEFAULT_CLAUDE_CODE_VERSION, DEFAULT_CODEX_BASE_URL,
DEFAULT_CODEX_CLIENT_VERSION, DEFAULT_CODEX_INSTRUCTIONS, DEFAULT_CODEX_ORIGINATOR,
DEFAULT_XAI_BASE_URL, FIREWORKS, GEMINI_API, GITHUB_COPILOT, GROQ, KIMI_CODE, META,
META_ANTHROPIC, META_CHAT, MOONSHOTAI, MOONSHOTAI_ANTHROPIC, MOONSHOTAI_RESPONSES, OLLAMA,
OPENAI_API, OPENAI_CHAT_API, OPENAI_CODEX, OPENROUTER, PARASAIL, SGLANG, TOGETHER, TYPESAFE,
VERTEX, VERTEX_ANTHROPIC, VERTEX_EXPRESS, VLLM, XAI, ZAI,
};
pub use refresh::{
credential_from_token_response, merged_file, refresh_request, LoginProvider,
CLAUDE_CODE_CLIENT_ID, CLAUDE_CODE_TOKEN_URL, OPENAI_CODEX_CLIENT_ID, OPENAI_CODEX_TOKEN_URL,
XAI_CLIENT_ID, XAI_DEVICE_CODE_URL, XAI_OAUTH_SCOPE, XAI_TOKEN_URL,
};
pub use stores::{
extract_chatgpt_account_id, jwt_expires_at_ms, read_claude_code_credential,
read_codex_cli_credential, read_xai_credential, Expiry, LocalOAuthCredential,
CLAUDE_CODE_LOGIN_HINT, OPENAI_CODEX_LOGIN_HINT, XAI_LOGIN_HINT,
};
pub use time::{format_rfc3339, parse_rfc3339};
pub fn time_now() -> i64 {
time::now_unix()
}