import type { ClineAccountBalance, ClineAccountOrganization, ClineAccountOrganizationBalance, ClineAccountOrganizationUsageTransaction, ClineAccountPaymentTransaction, ClineAccountUsageTransaction, ClineAccountUser, ClineOrganization, FeaturebaseTokenResponse, UserRemoteConfigResponse } from "./types";
export interface ClineAccountServiceOptions {
    apiBaseUrl: string;
    getAuthToken: () => Promise<string | undefined | null>;
    getCurrentUserId?: () => Promise<string | undefined | null> | string | undefined | null;
    getOrganizationMemberId?: (organizationId: string) => Promise<string | undefined | null> | string | undefined | null;
    getHeaders?: () => Promise<Record<string, string> | undefined> | Record<string, string> | undefined;
    requestTimeoutMs?: number;
    fetchImpl?: typeof fetch;
}
export declare class ClineAccountService {
    private readonly apiBaseUrl;
    private readonly getAuthTokenFn;
    private readonly getCurrentUserIdFn;
    private readonly getOrganizationMemberIdFn;
    private readonly getHeadersFn;
    private readonly requestTimeoutMs;
    private readonly fetchImpl;
    constructor(options: ClineAccountServiceOptions);
    fetchMe(): Promise<ClineAccountUser>;
    fetchRemoteConfig(): Promise<UserRemoteConfigResponse>;
    fetchFeaturebaseToken(): Promise<FeaturebaseTokenResponse | undefined>;
    fetchBalance(userId?: string): Promise<ClineAccountBalance>;
    fetchUsageTransactions(userId?: string): Promise<ClineAccountUsageTransaction[]>;
    fetchPaymentTransactions(userId?: string): Promise<ClineAccountPaymentTransaction[]>;
    fetchUserOrganizations(): Promise<ClineAccountOrganization[]>;
    fetchOrganization(organizationId: string): Promise<ClineOrganization>;
    fetchOrganizationBalance(organizationId: string): Promise<ClineAccountOrganizationBalance>;
    fetchOrganizationUsageTransactions(input: {
        organizationId: string;
        memberId?: string;
    }): Promise<ClineAccountOrganizationUsageTransaction[]>;
    switchAccount(organizationId?: string | null): Promise<void>;
    private resolveUserId;
    private resolveOrganizationMemberId;
    private request;
}
//# sourceMappingURL=cline-account-service.d.ts.map