import type { SatMiningConfig } from "./config.js";
type SolanaModuleLike = typeof import("@solana/web3.js");
type SatMiningStakeSummary = {
    authority: string;
    shares: string;
    originalStake: string;
    rewardOwed: string;
    jackpotOwed: string;
    slashPenaltyOwed: string;
    autoUnstakeThresholdBps: number;
};
export type SatRoundBucketView = {
    address: string;
    epochId: number;
    microRoundId: number;
    bucketVersion: number;
    roundOpenTs: number;
    roundCloseTs: number;
    roundSeed: string;
    bucketHash: string;
};
type SatRecordLocator = {
    roundKey: string;
    epochId: number;
    microRoundId: number;
    validatorAuthority: string;
    targetAuthority: string;
};
type SatValidatorAttestationView = {
    address: string;
    recordLocator: SatRecordLocator;
    validatorAuthority: string;
    targetAuthority: string;
    epochId: number;
    microRoundId: number;
    decisionFlag: number;
    reasonCode: number;
    bucketRoot: string;
    scoreRoot: string;
    coordinationRoot: string;
    evidenceHash: string;
    attestedAt: number;
    decisionLabel: string;
    epochClaimStatus?: {
        blocked: boolean;
        blockedReason: {
            kind: string;
            slashReasonCode?: number;
        } | string | null;
        openDisputeCount: number;
        validatorRejectCount: number;
        slashReasonCode: number;
    };
    targetMiningStake: SatMiningStakeSummary;
};
export type SatEpochView = {
    address: string;
    epochId: number;
    claimsBlocked: boolean;
    blockedReason: {
        kind: string;
        slashReasonCode?: number;
    } | string | null;
    openDisputeCount: number;
    validatorRejectCount: number;
    slashReasonCode: number;
    bucketRoot: string;
    scoreRoot: string;
    coordinationRoot: string;
    republishStatus: SatRepublishStatus;
    epoch: {
        startTs: number;
        endTs: number;
        microRoundsTotal: number;
        validWalletCount: number;
        baseEligibleWalletCount: number;
        skillEligibleWalletCount: number;
        settledEmissionSat: number;
    };
};
export type SatWalletEpochView = {
    address: string;
    authority: string;
    aggregateScoreFp: string;
    epochId: number;
    validRoundCount: number;
    heartbeatCount: number;
    revealFaultCount: number;
    finalizationFaultCount: number;
    baseEligible: boolean;
    skillEligible: boolean;
    settled: boolean;
    baseRewardSatOwed: string;
    skillRewardSatOwed: string;
    rebateSolOwed: string;
    performanceSolOwed: string;
};
export type SatRoundCommitView = {
    address: string;
    authority: string;
    epochId: number;
    microRoundId: number;
    submittedAt: number;
    revealed: boolean;
    finalized: boolean;
    allocationSum: string;
    revealBucketHash: string;
};
export type SatRoundStateView = {
    address: string;
    epochId: number;
    microRoundId: number;
    bucketHash: string;
    revealedWalletCount: number;
    finalized: boolean;
};
export type SatClaimReceipt = {
    signature: string;
    feeLamports: string;
    claimedSatRaw: string;
    transferredSatRaw: string;
    solRebateLamports: string;
    payoutExecuted: boolean;
    pendingPayoutRaw: string;
};
export type SatTxReceipt = {
    signature: string;
    feeLamports: string;
    slot?: number;
    blockTime?: number | null;
    logMessages?: string[];
};
export type SatGlobalStateView = {
    address: string;
    version?: number;
    hardCapSatRaw?: string;
    issuanceYearIndex?: number;
    yearBudgetSatRaw?: string;
    yearIssuedSatRaw?: string;
    launchCycleId?: string;
    totalIssuedSatRaw?: string;
    cycleSeconds?: number;
    currentUnlockSolLamports: string;
    minimumEntryLamports: string;
    cycleErosionPpm: number;
    treasuryRecipient?: string;
    stakingRecipient?: string;
};
export type SatCycleView = {
    address: string;
    cycleId: number;
    openTs: number;
    closeTs: number;
    status: number;
    unlockTargetLamports: string;
    totalCommittedLamports: string;
    validMinerCount: string;
    unlockRatioFp: string;
    issuedCycleMinerSatRaw: string;
    unissuedCycleMinerSatRaw: string;
    solErosionPoolLamports: string;
    deterministicRebatePoolLamports: string;
    performanceRebatePoolLamports: string;
    treasurySolLamports: string;
    stakingSolLamports: string;
    submittedSolErosionPoolLamports?: string;
    keeperBountyPaidLamports?: string;
};
export type SatMinerCycleView = {
    address: string;
    placementReturnFp?: string;
    benchmarkReturnFp?: string;
    skillScoreFp?: string;
    rewardWeightFp?: string;
    authority: string;
    cycleId: number;
    committedLamports: string;
    submissionTs?: number;
    powerWeightFp?: string;
    claimableSatRaw: string;
    claimableDetRebateLamports: string;
    claimablePerfRebateLamports: string;
    claimedSatRaw: string;
    claimedDetRebateLamports: string;
    claimedPerfRebateLamports: string;
    validParticipation: boolean;
    capitalLockReleased?: boolean;
};
export type SatMinerCapitalView = {
    address: string;
    authority: string;
    fundedLamports: string;
    lockedLamports: string;
    freeLamports: string;
    activeCommitLamports: string;
    firstPendingCycleId?: number;
    lastPendingCycleId?: number;
};
export type SatBondPositionView = {
    address: string;
    authority: string;
    bondMint: string;
    bondVault: string;
    expectedBondVault: string;
    amountRaw: string;
    bump?: number;
    policyVersion?: number;
    tier: number;
    tierLabel: "none" | "basic-bond" | "operator-bond";
    status: number;
    statusLabel: "inactive" | "active" | "unlocking" | "unlocked";
    createdAtSlot: number;
    updatedAtSlot: number;
    unlockRequestedAtSlot: number;
    unlockAvailableAtSlot: number;
    mintMatchesRuntime: boolean;
    vaultMatchesExpected: boolean;
};
export type SatBondTierPolicyView = {
    address: string;
    version: number;
    bump: number;
    policyVersion: number;
    basicMinRaw: string;
    operatorMinRaw: string;
    unlockDelaySlots: number;
    scheduledEffectiveSlot: number;
    lastUpdatedSlot: number;
    updateAuthority: string;
};
export type SatBondStakingDistributorView = {
    address: string;
    version: number;
    bump: number;
    status: number;
    statusLabel: "inactive" | "active";
    policyVersion: number;
    rewardMint: string;
    rewardVault: string;
    expectedRewardVault: string;
    updateAuthority: string;
    minStakeRaw: string;
    totalActiveStakeRaw: string;
    rewardIndexFp: string;
    observedRewardVaultRaw: string;
    rewardVaultBalanceRaw?: string;
    lastSyncedSlot: number;
    mintMatchesRuntime: boolean;
    vaultMatchesExpected: boolean;
};
export type SatBondStakingPositionView = {
    address: string;
    version: number;
    status: number;
    statusLabel: "inactive" | "active";
    bump: number;
    policyVersion: number;
    authority: string;
    bondPosition: string;
    activeStakeRaw: string;
    claimableRewardRaw: string;
    rewardDebtFp: string;
    lastSyncedSlot: number;
};
export type SatCycleRegistryMetaView = {
    address: string;
    cycleId: number;
    participantCount: number;
    pageCount: number;
    closeTrackingInitialized: boolean;
    remainingParticipantCount: number;
    remainingPageCount: number;
};
export type SatCycleRegistryPageView = {
    address: string;
    cycleId: number;
    pageIndex: number;
    participantCount: number;
    participants: string[];
};
export type SatCycleSettlementProgressV2View = {
    address: string;
    cycleId: number;
    expectedPageCount: number;
    processedPageCount: number;
    settleChunkIndex: number;
    scoredPageCount: number;
    scoreChunkIndex: number;
    distributedPageCount: number;
    distributeChunkIndex: number;
    finalized: boolean;
    scored: boolean;
    settleExclusiveUntilSlot?: number | undefined;
    finalizeExclusiveUntilSlot?: number | undefined;
    scoreExclusiveUntilSlot?: number | undefined;
    distributeExclusiveUntilSlot?: number | undefined;
    keeperBountyPaidLamports?: string | undefined;
};
export type SatTreasuryStateView = {
    address: string;
    pendingStakingSatRaw: string;
    pendingTreasurySatRaw: string;
    pendingStakingSolLamports: string;
    pendingTreasurySolLamports: string;
    stakingSolRecipient?: string;
};
export type SatPayoutReadinessView = {
    treasuryAddress: string;
    treasuryAta: string;
    recipientAta: string;
    treasuryAtaExists: boolean;
    recipientAtaExists: boolean;
    treasuryBalanceRaw?: string;
    recipientBalanceRaw?: string;
};
export type SatMiningStatusAccountsView = {
    globalState: SatGlobalStateView | null;
    currentCycle: SatCycleView | null;
    currentMinerCycle: SatMinerCycleView | null;
    claimMinerCycle: SatMinerCycleView | null;
    minerCapital: SatMinerCapitalView | null;
    payoutReadiness: SatPayoutReadinessView | null;
    treasuryState: SatTreasuryStateView | null;
};
type SatRepublishStatusReason = {
    code: string;
    message: string;
    openDisputeCount?: number;
};
type SatRepublishProposalCheck = {
    inputRoots: {
        bucketRoot: string;
        scoreRoot: string;
        coordinationRoot: string;
    };
    derivedRoots: {
        bucketRoot: string;
        scoreRoot: string;
        coordinationRoot: string;
    };
};
type SatRepublishStatus = {
    canRepublish: boolean;
    blockedReason: {
        kind: string;
        slashReasonCode?: number;
    } | string | null;
    correctionSignal: {
        validatorRejectCount: number;
        slashReasonCode: number;
    };
    currentRoots: {
        bucketRoot: string;
        scoreRoot: string;
        coordinationRoot: string;
    };
    proposalCheck: SatRepublishProposalCheck | null;
    rejectionReasons: SatRepublishStatusReason[];
};
type SatDisputeView = {
    address: string;
    recordLocator: SatRecordLocator;
    validatorAuthority: string;
    targetAuthority: string;
    epochId: number;
    microRoundId: number;
    reasonCode: number;
    evidenceHash: string;
    targetRoot: string;
    openedAt: number;
    disputeDeadlineTs: number;
    statusFlag: number;
    statusLabel: string;
    epochClaimStatus?: {
        blocked: boolean;
        blockedReason: {
            kind: string;
            slashReasonCode?: number;
        } | string | null;
        openDisputeCount: number;
        validatorRejectCount: number;
        slashReasonCode: number;
    };
    targetMiningStake: SatMiningStakeSummary;
};
type SatRoundAttestationListView = {
    validatorAuthority: string;
    epochId: number;
    microRoundId: number;
    count: number;
    filters: SatListFilters;
    attestations: SatValidatorAttestationView[];
};
type SatRoundDisputeListView = {
    validatorAuthority: string;
    epochId: number;
    microRoundId: number;
    count: number;
    filters: SatListFilters;
    disputes: SatDisputeView[];
};
type SatListSortField = "targetAuthority" | "reasonCode" | "decisionFlag" | "slashPenaltyOwed" | "attestedAt" | "openedAt";
type SatListFilters = {
    reasonCode?: number;
    decisionFlag?: number;
    requireNonzeroSlashPenalty?: boolean;
    sortBy?: SatListSortField;
    sortOrder?: "asc" | "desc";
};
export declare function decodeSatRoundBucket(data: Buffer, address: string): SatRoundBucketView;
export declare function decodeSatGlobalState(data: Buffer, address: string): SatGlobalStateView;
export declare function decodeSatMinerCycle(data: Buffer, address: string): SatMinerCycleView;
export declare function decodeSatBondPosition(data: Buffer, address: string): SatBondPositionView;
export declare function decodeSatCycleRegistryPage(data: Buffer, address: string): SatCycleRegistryPageView;
export declare function inspectSatRepublishProposal(epoch: SatEpochView, proposal: {
    bucketRoot: string;
    scoreRoot: string;
    coordinationRoot: string;
}): SatRepublishStatus;
type SatReadRpcConfig = {
    primaryUrl: string;
    secondaryUrl: string | null;
};
type SatReadConnectionLike = {
    rpcEndpoint: string;
    secondaryRpcEndpoint: string | null;
    getAccountInfo: InstanceType<SolanaModuleLike["Connection"]>["getAccountInfo"];
    getProgramAccounts: InstanceType<SolanaModuleLike["Connection"]>["getProgramAccounts"];
    getMinimumBalanceForRentExemption: InstanceType<SolanaModuleLike["Connection"]>["getMinimumBalanceForRentExemption"];
};
export declare function resolveDefaultSolanaPublicReadFallbackUrl(params: {
    network?: string;
    primaryUrl?: string;
}): string;
export declare function invalidateSatReadCaches(options?: {
    preserveStable?: boolean;
}): void;
export declare function resolveEffectiveReadRpcConfig(): SatReadRpcConfig;
export declare function createReadConnection(solana: SolanaModuleLike, rpc: SatReadRpcConfig): SatReadConnectionLike;
export declare function inspectSatChainUnixTime(_config: SatMiningConfig): Promise<number>;
export declare function inspectSatChainSlot(_config: SatMiningConfig): Promise<number>;
export declare function inspectSatLamportBalance(_config: SatMiningConfig, params: {
    address: string;
}): Promise<string | null>;
export declare function inspectSatMinerCycleAccountExists(_config: SatMiningConfig, params: {
    authority: string;
    cycleId: number;
}): Promise<boolean>;
export declare function inspectSatCycleAccountExists(_config: SatMiningConfig, params: {
    cycleId: number;
}): Promise<boolean>;
export declare function inspectSatGlobalState(_config: SatMiningConfig): Promise<SatGlobalStateView | null>;
export declare function inspectSatCycle(_config: SatMiningConfig, params: {
    cycleId: number;
}): Promise<SatCycleView | null>;
export declare function inspectSatMinerCycle(_config: SatMiningConfig, params: {
    authority: string;
    cycleId: number;
}): Promise<SatMinerCycleView | null>;
export declare function deriveSatMinerCycleAddress(_config: SatMiningConfig, params: {
    authority: string;
    cycleId: number;
}): Promise<string>;
export declare function inspectSatMinerCycleByAddress(_config: SatMiningConfig, params: {
    address: string;
}): Promise<SatMinerCycleView | null>;
export declare function inspectSatMinerCyclesByAddress(_config: SatMiningConfig, params: {
    addresses: readonly string[];
}): Promise<Array<SatMinerCycleView | null>>;
export declare function inspectSatMinerCapital(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<SatMinerCapitalView | null>;
export declare function inspectSatMiningStatusAccounts(_config: SatMiningConfig, params: {
    authority: string | null | undefined;
    currentCycleId: number;
    claimCycleId?: number | null;
}): Promise<SatMiningStatusAccountsView>;
export type SatMinerCapitalAccountStatusView = {
    address: string;
    exists: boolean;
    owner: string | null;
    expectedOwner: string;
    dataLength: number;
};
export declare function inspectSatMinerCapitalAccountStatus(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<SatMinerCapitalAccountStatusView>;
export declare function deriveSatBondPositionAddress(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<string>;
export declare function inspectSatBondPosition(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<SatBondPositionView | null>;
export declare function deriveSatBondTierPolicyAddress(_config: SatMiningConfig): Promise<string>;
export declare function inspectSatBondTierPolicy(_config: SatMiningConfig): Promise<SatBondTierPolicyView | null>;
export declare function inspectSatBondStakingDistributor(_config: SatMiningConfig): Promise<SatBondStakingDistributorView | null>;
export declare function inspectSatBondStakingPosition(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<SatBondStakingPositionView | null>;
export declare function inspectSatCycleRegistryMeta(_config: SatMiningConfig, params: {
    cycleId: number;
}): Promise<SatCycleRegistryMetaView | null>;
export declare function listSettledSatCycleIds(_config: SatMiningConfig): Promise<number[]>;
export declare function inspectSatCycleSettlementProgressV2(_config: SatMiningConfig, params: {
    cycleId: number;
}): Promise<SatCycleSettlementProgressV2View | null>;
export declare function inspectSatCycleRegistryPage(_config: SatMiningConfig, params: {
    cycleId: number;
    pageIndex: number;
}): Promise<SatCycleRegistryPageView | null>;
export declare function listSatMinerCycleAddressesForCycle(_config: SatMiningConfig, params: {
    cycleId: number;
}): Promise<string[]>;
export declare function inspectSatClaimReceipt(_config: SatMiningConfig, params: {
    signature: string;
}): Promise<SatClaimReceipt | null>;
export declare function inspectSatTxReceipt(_config: SatMiningConfig, params: {
    signature: string;
}): Promise<SatTxReceipt | null>;
export declare function inspectSatSolBalanceLamports(_config: SatMiningConfig, params: {
    address: string;
}): Promise<string | null>;
export declare function inspectSatMiningStake(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<SatMiningStakeSummary | null>;
export declare function inspectSatPayoutReadiness(_config: SatMiningConfig, params: {
    authority: string;
}): Promise<{
    treasuryAddress: string;
    treasuryAta: string;
    recipientAta: string;
    treasuryAtaExists: boolean;
    recipientAtaExists: boolean;
    treasuryBalanceRaw: string | undefined;
    recipientBalanceRaw: string | undefined;
}>;
export declare function inspectSatTreasuryState(_config: SatMiningConfig): Promise<SatTreasuryStateView | null>;
export declare function inspectSatRegistryReserveLamports(_config: SatMiningConfig): Promise<{
    address: string;
    lamports: string | null;
}>;
export declare function inspectSatTreasuryVaultLamports(_config: SatMiningConfig): Promise<{
    address: string;
    lamports: string | null;
}>;
export declare function inspectSatRentExemptionLamports(_config: SatMiningConfig): Promise<{
    registryReserveTargetLamports: string;
    protocolVaultLamports: string;
    cycleStateLamports: string;
    cycleRegistryMetaLamports: string;
    cycleRegistryPageLamports: string;
    cycleSettlementProgressLamports: string;
    minerCycleLamports: string;
    openCycleLamports: string;
    submitCycleSharedLamports: string;
    submitCycleSignerLamports: string;
}>;
export declare function inspectSatValidatorAttestation(_config: SatMiningConfig, params: {
    validatorAuthority: string;
    targetAuthority: string;
    epochId: number;
    microRoundId: number;
}): Promise<SatValidatorAttestationView>;
export declare function inspectSatDispute(_config: SatMiningConfig, params: {
    validatorAuthority: string;
    targetAuthority: string;
    epochId: number;
    microRoundId: number;
}): Promise<SatDisputeView>;
export declare function inspectSatEpoch(_config: SatMiningConfig, params: {
    epochId: number;
}): Promise<SatEpochView>;
export declare function inspectSatWalletEpoch(_config: SatMiningConfig, params: {
    authority: string;
    epochId: number;
}): Promise<SatWalletEpochView | null>;
export declare function inspectSatRoundCommit(_config: SatMiningConfig, params: {
    authority: string;
    epochId: number;
    microRoundId: number;
}): Promise<SatRoundCommitView | null>;
export declare function inspectSatRoundState(_config: SatMiningConfig, params: {
    epochId: number;
    microRoundId: number;
}): Promise<SatRoundStateView | null>;
export declare function inspectSatConnectionDetails(): {
    programId: string;
    bondProgramId: string;
    rpcUrl: string;
    readRpcFallbackUrl: string | null;
    rpcState: {
        quotaLikely: boolean;
        lastMode: "primary" | "fallback" | "unavailable";
        fallbackCount: number;
        lastError: string | null;
        lastFailureAt: string | null;
        lastSuccessAt: string | null;
        lastRpcUrl: string | null;
    };
    rpcMetrics: {
        windowLastHourMs: number;
        windowLast24HoursMs: number;
        methods: {
            method: string;
            requestsSinceStart: number;
            successesSinceStart: number;
            failuresSinceStart: number;
            requestsLastHour: number;
            successesLastHour: number;
            failuresLastHour: number;
            requestsLast24Hours: number;
            successesLast24Hours: number;
            failuresLast24Hours: number;
            lastRequestAt: string | null;
            lastSuccessAt: string | null;
            lastFailureAt: string | null;
        }[];
        accountReads: {
            label: string;
            requestsSinceStart: number;
            successesSinceStart: number;
            nullsSinceStart: number;
            failuresSinceStart: number;
            lastRequestAt: string | null;
            lastSuccessAt: string | null;
            lastNullAt: string | null;
            lastFailureAt: string | null;
        }[];
    };
};
export declare function inspectCurrentSatRoundBucket(_config: SatMiningConfig): Promise<SatRoundBucketView | null>;
export declare function listSatValidatorAttestations(_config: SatMiningConfig, params: {
    validatorAuthority: string;
    epochId: number;
    microRoundId: number;
    reasonCode?: number;
    decisionFlag?: number;
    requireNonzeroSlashPenalty?: boolean;
    sortBy?: SatListSortField;
    sortOrder?: "asc" | "desc";
}): Promise<SatRoundAttestationListView>;
export declare function listSatDisputes(_config: SatMiningConfig, params: {
    validatorAuthority: string;
    epochId: number;
    microRoundId: number;
    reasonCode?: number;
    requireNonzeroSlashPenalty?: boolean;
    sortBy?: SatListSortField;
    sortOrder?: "asc" | "desc";
}): Promise<SatRoundDisputeListView>;
export {};
