import type { AdminAppPlayerMetaResponse, AdminAppPlayerMetaUserResponse, AdminAppVersionReviewsListResponse, AdminClaimNextAppVersionReviewResponse, AdminAppsListResponse, AdminGameCollectionCandidatesResponse, AdminGameCollectionResponse, AdminGameCollectionsResponse, AdminCreditTransactionsResponse, AdminMutateAchievementStateRequest, AdminMutateAchievementStateResponse, AdminMutateLeaderboardScoreRequest, AdminMutateLeaderboardScoreResponse, AdminPaymentDetailResponse, AdminPaymentsListResponse, AdminRefundPaymentRequest, AdminRetirePlayerMetaDefinitionResponse, AdminUpdateAppRequest, AdminUpdateAppVersionReviewRequest, AdminUpdateAppVersionReviewResponse, AdminUpdateAppResponse, AdminUserResponse, BatchCreateUsersResponse, CreateUserRequest, CreateUserResponse, CreditPackResponse, CreditPacksResponse, CreateAdminGameCollectionRequest, DeleteAdminUserResponse, DeleteAppResponse, DeleteAdminGameCollectionResponse, AiGenerationDetailResponse, AiGenerationsResponse, PaymentProvider, PaymentStatus, ReviewState, UpdateAdminGameCollectionGamesRequest, UpdateAdminGameCollectionRequest, UpdateAdminUserRequest, UsersListResponse } from '@playdrop/types';
type ApiResponseLike<T> = {
    status: number;
    body: T;
    headers: Headers;
};
type RequestExecutor = <T>(input: {
    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
    path: string;
    body?: unknown;
    headers?: Record<string, string>;
    signal?: AbortSignal;
}) => Promise<ApiResponseLike<T>>;
type ErrorHandler = (response: ApiResponseLike<unknown>, defaultMessage: string) => never;
type ParseResponseBody = <T>(response: Response) => Promise<T>;
type FetchAdminPaymentsOptions = {
    provider?: PaymentProvider;
    status?: PaymentStatus | PaymentStatus[];
    userId?: number;
    creditPackSku?: string;
    from?: string | Date;
    to?: string | Date;
    limit?: number;
    offset?: number;
};
type FetchAdminAppVersionReviewsOptions = {
    state?: ReviewState;
    limit?: number;
    offset?: number;
};
export declare function buildAdminApiClientMethods(input: {
    request: RequestExecutor;
    handleApiError: ErrorHandler;
    fetchImpl: typeof fetch;
    includeBrowserCredentials: boolean;
    resolveBaseUrl: () => string;
    resolveUrl: (base: string, path: string) => string;
    parseResponseBody: ParseResponseBody;
    resolveToken: () => Promise<string | null>;
    getClientHeaders: () => Record<string, string>;
}): {
    fetchUsers(): Promise<UsersListResponse>;
    createUser(userRequest: CreateUserRequest): Promise<CreateUserResponse>;
    batchCreateUsersFromCsv(formData: FormData): Promise<BatchCreateUsersResponse>;
    fetchAdminUser(userId: number): Promise<AdminUserResponse>;
    updateAdminUser(userId: number, updateRequest: UpdateAdminUserRequest): Promise<AdminUserResponse>;
    deleteAdminUser(userId: number): Promise<DeleteAdminUserResponse>;
    fetchAdminApps(): Promise<AdminAppsListResponse>;
    updateAdminApp(id: number, updateRequest: AdminUpdateAppRequest): Promise<AdminUpdateAppResponse>;
    deleteAdminApp(id: number): Promise<DeleteAppResponse>;
    fetchAdminGameCollections(): Promise<AdminGameCollectionsResponse>;
    createAdminGameCollection(requestBody: CreateAdminGameCollectionRequest): Promise<AdminGameCollectionResponse>;
    fetchAdminGameCollection(id: number): Promise<AdminGameCollectionResponse>;
    updateAdminGameCollection(id: number, requestBody: UpdateAdminGameCollectionRequest): Promise<AdminGameCollectionResponse>;
    replaceAdminGameCollectionGames(id: number, requestBody: UpdateAdminGameCollectionGamesRequest): Promise<AdminGameCollectionResponse>;
    searchAdminGameCollectionCandidates(options: {
        q: string;
        limit?: number;
    }): Promise<AdminGameCollectionCandidatesResponse>;
    uploadAdminGameCollectionIcon(id: number, formData: FormData): Promise<AdminGameCollectionResponse>;
    deleteAdminGameCollection(id: number): Promise<DeleteAdminGameCollectionResponse>;
    fetchAdminAppVersionReviews(options?: FetchAdminAppVersionReviewsOptions): Promise<AdminAppVersionReviewsListResponse>;
    claimNextAdminAppVersionReview(): Promise<AdminClaimNextAppVersionReviewResponse>;
    updateAdminAppVersionReview(versionId: number, requestBody: AdminUpdateAppVersionReviewRequest): Promise<AdminUpdateAppVersionReviewResponse>;
    fetchAdminAppPlayerMeta(appId: number): Promise<AdminAppPlayerMetaResponse>;
    fetchAdminAppPlayerMetaUser(appId: number, userId: number): Promise<AdminAppPlayerMetaUserResponse>;
    retireAdminAchievement(appId: number, key: string): Promise<AdminRetirePlayerMetaDefinitionResponse>;
    retireAdminLeaderboard(appId: number, key: string): Promise<AdminRetirePlayerMetaDefinitionResponse>;
    mutateAdminAchievementState(appId: number, userId: number, key: string, body: AdminMutateAchievementStateRequest): Promise<AdminMutateAchievementStateResponse>;
    mutateAdminLeaderboardScore(appId: number, userId: number, key: string, body: AdminMutateLeaderboardScoreRequest): Promise<AdminMutateLeaderboardScoreResponse>;
    fetchAdminCreditPacks(): Promise<CreditPacksResponse>;
    createAdminCreditPack(body: {
        sku: string;
        displayName: string;
        amount: number;
        costCents: number;
    }): Promise<CreditPackResponse>;
    updateAdminCreditPack(sku: string, body: {
        displayName?: string;
        amount?: number;
        costCents?: number;
    }): Promise<CreditPackResponse>;
    deleteAdminCreditPack(sku: string): Promise<{
        success: boolean;
    }>;
    syncAdminCreditPacksStripe(): Promise<CreditPacksResponse>;
    fetchAdminPayments(options?: FetchAdminPaymentsOptions): Promise<AdminPaymentsListResponse>;
    fetchAdminPayment(paymentId: number): Promise<AdminPaymentDetailResponse>;
    refundAdminPayment(paymentId: number, body: AdminRefundPaymentRequest): Promise<AdminPaymentDetailResponse>;
    reconcileAdminPayment(paymentId: number): Promise<AdminPaymentDetailResponse>;
    fetchAdminCreditTransactions(options?: {
        limit?: number;
        offset?: number;
    }): Promise<AdminCreditTransactionsResponse>;
    fetchAdminAiGenerations(options?: {
        limit?: number;
        offset?: number;
    }): Promise<AiGenerationsResponse>;
    fetchAdminAiGeneration(id: string): Promise<AiGenerationDetailResponse>;
};
export {};
//# sourceMappingURL=admin.d.ts.map