import { ENV } from '../constants';
import { SignerType, ISendNotificationInputOptions } from '../types';
import { NotificationOptions, CreateChannelOptions, NotificationSettings, UserSetting } from './PushNotificationTypes';
import { Chain } from 'viem';
export declare const FEED_MAP: {
    INBOX: boolean;
    SPAM: boolean;
};
export declare class PushNotificationBaseClass {
    protected signer: SignerType | undefined;
    protected account: string | undefined;
    protected env: ENV | undefined;
    protected guestMode: boolean;
    protected coreContract: any;
    constructor(signer?: SignerType, env?: ENV, account?: string);
    private initializeCoreContract;
    protected checkUserAddressExists(user?: string): boolean;
    protected checkSignerObjectExists(): boolean;
    protected getNotificationType(recipient: string[], channel: string): {
        recipient: string[] | string;
        type: number;
    };
    protected generateNotificationLowLevelPayload({ signer, env, recipients, options, channel, channelInfo, }: {
        signer: SignerType;
        env: ENV;
        recipients: string[];
        options: NotificationOptions;
        channel?: string;
        channelInfo: any | null;
    }): ISendNotificationInputOptions;
    protected isEmpty(field: string): boolean;
    protected isValidLength(data: string, upperLen?: number, lowerLen?: number): boolean;
    protected isValidUrl(urlString: string): boolean;
    protected verifyEmptyChannelParameters(options: CreateChannelOptions): boolean;
    protected validateParameterLength(options: CreateChannelOptions): boolean;
    protected validateChannelParameters(options: CreateChannelOptions): boolean;
    protected createContractInstance(contractAddress: string | `0x${string}`, contractABI: any, network: Chain): any;
    protected fetchBalance(contract: any, userAddress: string): Promise<bigint>;
    protected fetchAllownace(contract: any, userAddress: string, spenderAddress: string): Promise<bigint>;
    protected fetchUpdateCounter(contract: any, userAddress: string): Promise<bigint>;
    protected approveToken(contract: any, spenderAddress: string, amount: string | bigint): Promise<boolean>;
    protected createChannel(contract: any, channelType: number, identityBytes: Uint8Array, fees: bigint): Promise<any>;
    protected updateChannel(contract: any, account: string, identityBytes: Uint8Array, fees: bigint): Promise<any>;
    protected verifyChannel(contract: any, channelToBeVerified: string): Promise<any>;
    protected createChanelSettings(contract: any, numberOfSettings: number, settings: string, description: string, fees: bigint): Promise<any>;
    protected addDelegator(contract: any, delegatee: string): Promise<any>;
    protected removeDelegator(contract: any, delegatee: string): Promise<any>;
    protected getChainId(signer: SignerType): Promise<number>;
    protected uploadToIPFSViaPushNode(data: string): Promise<string>;
    protected getTimeBound(timeStamp?: number): number;
    protected getMinimalSetting(configuration: NotificationSettings): {
        setting: string;
        description: string;
    };
    protected getMinimalUserSetting(setting: UserSetting[]): string | null;
    /**
     * @param address Address of the channel or alias
     * @returns Channel info for the address
     */
    protected getChannelOrAliasInfo(address: string): Promise<any>;
    protected initiateAddAlias(contract: any, alias: string): Promise<any>;
    protected verifyAlias(contract: any, channelAddress: string): Promise<{
        verifyAliasRes: any;
        channelInfo: any;
    }>;
    /**
     * @param aliasInCaip Alias address in CAIP format
     * @returns Channel info for the alias
     */
    private getAliasInfo;
    protected getAddressFromCaip(caipAddress: string): string;
    protected isValidPCaip(address: string): boolean;
}
