import { type Address } from "viem";
import type { MoonwellClient } from "../../client/createMoonwellClient.js";
import type { OptionalNetworkParameterType } from "../../common/types.js";
import type { Chain, GovernanceToken } from "../../environments/index.js";
import type { UserVotingPowers } from "../../types/userVotingPowers.js";
export type GetUserVotingPowersParameters<environments, network extends Chain | undefined> = OptionalNetworkParameterType<environments, network> & {
    /** Governance token */
    governanceToken: GovernanceToken;
    /** User address*/
    userAddress: Address;
    /**
     * Block number to read voting power at. Applied to every queried chain — only safe
     * for single-chain governance tokens. For cross-chain tokens (e.g. WELL) prefer
     * `snapshotTimestamp`, which resolves a correct per-chain block.
     */
    blockNumber?: bigint;
    /**
     * Unix timestamp (seconds) at which to read voting power. When set, the SDK looks up
     * the block on each queried chain whose timestamp is the latest one ≤ this value, and
     * uses that per-chain block. Use this for cross-chain governance tokens; supplying a
     * single block number across heterogeneous chains is unsafe because chain heights
     * diverge. Takes priority over `blockNumber` when both are provided.
     */
    snapshotTimestamp?: number;
};
export type GetUserVotingPowersReturnType = Promise<UserVotingPowers[]>;
export declare function getUserVotingPowers<environments, Network extends Chain | undefined>(client: MoonwellClient, args: GetUserVotingPowersParameters<environments, Network>): GetUserVotingPowersReturnType;
//# sourceMappingURL=getUserVotingPowers.d.ts.map