package shared import ( "context" "net/http" "ds2api/internal/account" "ds2api/internal/auth" "ds2api/internal/config" dsclient "ds2api/internal/deepseek/client" ) type ConfigStore interface { Snapshot() config.Config Keys() []string Accounts() []config.Account FindAccount(identifier string) (config.Account, bool) UpdateAccountToken(identifier, token string) error UpdateAccountTestStatus(identifier, status string) error AccountTestStatus(identifier string) (string, bool) Update(mutator func(*config.Config) error) error ExportJSONAndBase64() (string, string, error) IsEnvBacked() bool IsEnvWritebackEnabled() bool HasEnvConfigSource() bool ConfigPath() string SetVercelSync(hash string, ts int64) error AdminPasswordHash() string AdminJWTExpireHours() int AdminJWTValidAfterUnix() int64 RuntimeAccountMaxInflight() int RuntimeAccountMaxQueue(defaultSize int) int RuntimeGlobalMaxInflight(defaultSize int) int RuntimeTokenRefreshIntervalHours() int RuntimeBackupReleaseCount() int AutoDeleteMode() string CurrentInputFileEnabled() bool CurrentInputFileMinChars() int ThinkingInjectionEnabled() bool ThinkingInjectionPrompt() string AutoDeleteSessions() bool SetAccountBanned(identifier string, banned bool) (config.Account, error) SetAccountRole(identifier string, role string) (config.Account, error) PlatformMode() string ActiveNormalAccounts() int TotalNormalAccounts() int PromoteStandbyAccounts(n int) []string } type PoolController interface { Reset() Status() map[string]any ApplyRuntimeLimits(maxInflightPerAccount, maxQueueSize, globalMaxInflight int) } type OpenAIChatCaller interface { ChatCompletions(w http.ResponseWriter, r *http.Request) } type DeepSeekCaller interface { Login(ctx context.Context, acc config.Account) (string, error) CreateSession(ctx context.Context, a *auth.RequestAuth, maxAttempts int) (string, error) GetPow(ctx context.Context, a *auth.RequestAuth, maxAttempts int) (string, error) CallCompletion(ctx context.Context, a *auth.RequestAuth, payload map[string]any, powResp string, maxAttempts int) (*http.Response, error) GetSessionCountForToken(ctx context.Context, token string) (*dsclient.SessionStats, error) DeleteAllSessionsForToken(ctx context.Context, token string) error SetPlatform(platform string) } var _ ConfigStore = (*config.Store)(nil) var _ PoolController = (*account.Pool)(nil) var _ DeepSeekCaller = (*dsclient.Client)(nil)