import type { PublicKey } from '@solana/web3.js';
import { z } from 'zod';
import type { LoggerService } from '../../../Logger';
import type { SolanaClient } from '../SolanaClient';
export type RewardManagerClientConfigInternal = {
    programId: PublicKey;
    rewardManagerState: PublicKey;
    rewardManagerLookupTable: PublicKey;
    logger: LoggerService;
};
export type RewardManagerClientConfig = Partial<RewardManagerClientConfigInternal> & {
    solanaClient: SolanaClient;
};
export declare const CreateSenderInstructionSchema: z.ZodObject<{
    manager: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
    sender: z.ZodString;
    operator: z.ZodString;
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strip", z.ZodTypeAny, {
    sender: string;
    manager: PublicKey;
    operator: string;
    feePayer?: PublicKey | undefined;
}, {
    sender: string;
    manager: (string | PublicKey) & (string | PublicKey | undefined);
    operator: string;
    feePayer?: string | PublicKey | undefined;
}>;
export type CreateSenderInstructionRequest = z.input<typeof CreateSenderInstructionSchema>;
export declare const CreateSubmitAttestationInstructionSchema: z.ZodObject<{
    challengeId: z.ZodString;
    specifier: z.ZodString;
    senderEthAddress: z.ZodString;
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strip", z.ZodTypeAny, {
    challengeId: string;
    specifier: string;
    senderEthAddress: string;
    feePayer?: PublicKey | undefined;
}, {
    challengeId: string;
    specifier: string;
    senderEthAddress: string;
    feePayer?: string | PublicKey | undefined;
}>;
export type CreateSubmitAttestationRequest = z.input<typeof CreateSubmitAttestationInstructionSchema>;
export declare const CreateSubmitAttestationSecpInstructionSchema: z.ZodObject<{
    challengeId: z.ZodString;
    specifier: z.ZodString;
    recipientEthAddress: z.ZodString;
    senderEthAddress: z.ZodString;
    amount: z.ZodBigInt;
    antiAbuseOracleEthAddress: z.ZodOptional<z.ZodString>;
    senderSignature: z.ZodString;
    instructionIndex: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    challengeId: string;
    specifier: string;
    senderEthAddress: string;
    recipientEthAddress: string;
    amount: bigint;
    senderSignature: string;
    antiAbuseOracleEthAddress?: string | undefined;
    instructionIndex?: number | undefined;
}, {
    challengeId: string;
    specifier: string;
    senderEthAddress: string;
    recipientEthAddress: string;
    amount: bigint;
    senderSignature: string;
    antiAbuseOracleEthAddress?: string | undefined;
    instructionIndex?: number | undefined;
}>;
export type CreateSubmitAttestationSecpInstructionRequest = z.input<typeof CreateSubmitAttestationSecpInstructionSchema>;
export declare const CreateEvaluateAttestationsInstructionSchema: z.ZodObject<{
    challengeId: z.ZodString;
    specifier: z.ZodString;
    recipientEthAddress: z.ZodString;
    destinationUserBank: z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>;
    antiAbuseOracleEthAddress: z.ZodString;
    amount: z.ZodBigInt;
    feePayer: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, PublicKey, string>, z.ZodType<PublicKey, z.ZodTypeDef, PublicKey>]>>;
}, "strip", z.ZodTypeAny, {
    challengeId: string;
    specifier: string;
    recipientEthAddress: string;
    amount: bigint;
    antiAbuseOracleEthAddress: string;
    destinationUserBank: PublicKey;
    feePayer?: PublicKey | undefined;
}, {
    challengeId: string;
    specifier: string;
    recipientEthAddress: string;
    amount: bigint;
    antiAbuseOracleEthAddress: string;
    destinationUserBank: (string | PublicKey) & (string | PublicKey | undefined);
    feePayer?: string | PublicKey | undefined;
}>;
export type CreateEvaluateAttestationsInstructionRequest = z.input<typeof CreateEvaluateAttestationsInstructionSchema>;
export declare const GetSubmittedAttestationsSchema: z.ZodObject<{
    challengeId: z.ZodString;
    specifier: z.ZodString;
}, "strip", z.ZodTypeAny, {
    challengeId: string;
    specifier: string;
}, {
    challengeId: string;
    specifier: string;
}>;
export type GetSubmittedAttestationsRequest = z.input<typeof GetSubmittedAttestationsSchema>;
