import type { ClaimableTokensClient, DiscoveryNodeSelectorService, LoggerService } from '../../services';
import { AntiAbuseOracleService } from '../../services/AntiAbuseOracle/types';
import type { RewardManagerClient } from '../../services/Solana/programs/RewardManagerClient/RewardManagerClient';
import { BaseAPI, Configuration } from '../generated/default';
import type { UsersApi } from '../users/UsersApi';
import { ClaimRewardsRequest, GenerateSpecifierRequest } from './types';
export declare class ChallengesApi extends BaseAPI {
    private readonly usersApi;
    private readonly discoveryNodeSelector;
    private readonly rewardManager;
    private readonly claimableTokens;
    private readonly antiAbuseOracle;
    private readonly logger;
    constructor(config: Configuration, usersApi: UsersApi, discoveryNodeSelector: DiscoveryNodeSelectorService, rewardManager: RewardManagerClient, claimableTokens: ClaimableTokensClient, antiAbuseOracle: AntiAbuseOracleService, logger: LoggerService);
    /**
     * Formats the specifier for a claimable instance of a challenge.
     *
     * For most challenges, this is the user ID of the user that's claiming the
     * the challenge reward. For challenges like referrals or $AUDIO matching,
     * this includes more data like the referred user ID or purchased track ID
     * to allow the challenge to be claimed multiple times, but only once per
     * completed instance.
     *
     * @hidden subject to change
     */
    generateSpecifier(request: GenerateSpecifierRequest): Promise<string>;
    /**
     * Claims a reward on behalf of a user.
     *
     * @hidden subject to change
     *
     * @see {@link generateSpecifier} to create the specifier argument.
     */
    claimReward(request: ClaimRewardsRequest): Promise<string>;
    private submitAntiAbuseOracleAttestation;
    private submitDiscoveryAttestations;
    private evaluateAttestations;
}
