import { PublicClient, Client, Address } from 'viem';
import { D as DeleGatorEnvironment, h as Delegation } from './types-DvZXSma6.cjs';

type CaveatEnforcerParams = {
    delegation: Delegation;
};
type PeriodTransferResult = {
    availableAmount: bigint;
    isNewPeriod: boolean;
    currentPeriod: bigint;
};
type StreamingResult = {
    availableAmount: bigint;
};
declare function getErc20PeriodTransferEnforcerAvailableAmount(client: PublicClient, environment: DeleGatorEnvironment, params: CaveatEnforcerParams): Promise<PeriodTransferResult>;
declare function getErc20StreamingEnforcerAvailableAmount(client: PublicClient, environment: DeleGatorEnvironment, params: CaveatEnforcerParams): Promise<StreamingResult>;
declare function getMultiTokenPeriodEnforcerAvailableAmount(client: PublicClient, environment: DeleGatorEnvironment, params: CaveatEnforcerParams): Promise<PeriodTransferResult>;
declare function getNativeTokenPeriodTransferEnforcerAvailableAmount(client: PublicClient, environment: DeleGatorEnvironment, params: CaveatEnforcerParams): Promise<PeriodTransferResult>;
declare function getNativeTokenStreamingEnforcerAvailableAmount(client: PublicClient, environment: DeleGatorEnvironment, params: CaveatEnforcerParams): Promise<StreamingResult>;
declare const caveatEnforcerActions: ({ environment }: {
    environment: DeleGatorEnvironment;
}) => (client: PublicClient) => {
    getErc20PeriodTransferEnforcerAvailableAmount: (params: CaveatEnforcerParams) => Promise<PeriodTransferResult>;
    getErc20StreamingEnforcerAvailableAmount: (params: CaveatEnforcerParams) => Promise<StreamingResult>;
    getMultiTokenPeriodEnforcerAvailableAmount: (params: CaveatEnforcerParams) => Promise<PeriodTransferResult>;
    getNativeTokenPeriodTransferEnforcerAvailableAmount: (params: CaveatEnforcerParams) => Promise<PeriodTransferResult>;
    getNativeTokenStreamingEnforcerAvailableAmount: (params: CaveatEnforcerParams) => Promise<StreamingResult>;
};

type IsValid7702ImplementationParameters = {
    client: Client;
    accountAddress: Address;
    environment: DeleGatorEnvironment;
};
declare function isValid7702Implementation({ client, accountAddress, environment, }: IsValid7702ImplementationParameters): Promise<boolean>;

type index_CaveatEnforcerParams = CaveatEnforcerParams;
type index_PeriodTransferResult = PeriodTransferResult;
type index_StreamingResult = StreamingResult;
declare const index_caveatEnforcerActions: typeof caveatEnforcerActions;
declare const index_getErc20PeriodTransferEnforcerAvailableAmount: typeof getErc20PeriodTransferEnforcerAvailableAmount;
declare const index_getErc20StreamingEnforcerAvailableAmount: typeof getErc20StreamingEnforcerAvailableAmount;
declare const index_getMultiTokenPeriodEnforcerAvailableAmount: typeof getMultiTokenPeriodEnforcerAvailableAmount;
declare const index_getNativeTokenPeriodTransferEnforcerAvailableAmount: typeof getNativeTokenPeriodTransferEnforcerAvailableAmount;
declare const index_getNativeTokenStreamingEnforcerAvailableAmount: typeof getNativeTokenStreamingEnforcerAvailableAmount;
declare const index_isValid7702Implementation: typeof isValid7702Implementation;
declare namespace index {
  export { type index_CaveatEnforcerParams as CaveatEnforcerParams, type index_PeriodTransferResult as PeriodTransferResult, type index_StreamingResult as StreamingResult, index_caveatEnforcerActions as caveatEnforcerActions, index_getErc20PeriodTransferEnforcerAvailableAmount as getErc20PeriodTransferEnforcerAvailableAmount, index_getErc20StreamingEnforcerAvailableAmount as getErc20StreamingEnforcerAvailableAmount, index_getMultiTokenPeriodEnforcerAvailableAmount as getMultiTokenPeriodEnforcerAvailableAmount, index_getNativeTokenPeriodTransferEnforcerAvailableAmount as getNativeTokenPeriodTransferEnforcerAvailableAmount, index_getNativeTokenStreamingEnforcerAvailableAmount as getNativeTokenStreamingEnforcerAvailableAmount, index_isValid7702Implementation as isValid7702Implementation };
}

export { type CaveatEnforcerParams as C, type PeriodTransferResult as P, type StreamingResult as S, getErc20StreamingEnforcerAvailableAmount as a, getMultiTokenPeriodEnforcerAvailableAmount as b, caveatEnforcerActions as c, getNativeTokenPeriodTransferEnforcerAvailableAmount as d, getNativeTokenStreamingEnforcerAvailableAmount as e, isValid7702Implementation as f, getErc20PeriodTransferEnforcerAvailableAmount as g, index as i };
