import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "../../common";
export declare namespace IVideoPayment {
    type ContentPurchaseInfoStruct = {
        defaultViewCount: BigNumberish;
        viewDuration: BigNumberish;
        isActive: boolean;
        supportedTokens: string[];
        tokenPrices: BigNumberish[];
        isUnlimitedViewing: boolean;
    };
    type ContentPurchaseInfoStructOutput = [
        BigNumber,
        BigNumber,
        boolean,
        string[],
        BigNumber[],
        boolean
    ] & {
        defaultViewCount: BigNumber;
        viewDuration: BigNumber;
        isActive: boolean;
        supportedTokens: string[];
        tokenPrices: BigNumber[];
        isUnlimitedViewing: boolean;
    };
}
export declare namespace VideoPaymentStorage {
    type ViewPermissionStruct = {
        purchaseTime: BigNumberish;
        remainingViews: BigNumberish;
        isValid: boolean;
    };
    type ViewPermissionStructOutput = [BigNumber, BigNumber, boolean] & {
        purchaseTime: BigNumber;
        remainingViews: BigNumber;
        isValid: boolean;
    };
}
export interface IVideoPaymentInterface extends utils.Interface {
    functions: {
        "addAdmin(address)": FunctionFragment;
        "addSupportedToken(address)": FunctionFragment;
        "batchConsumeView(address[],uint256[])": FunctionFragment;
        "batchPurchase(uint256[],address,uint256)": FunctionFragment;
        "batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])": FunctionFragment;
        "batchUpdateTokenPrice(uint256[],address,uint256[])": FunctionFragment;
        "consumeView(address,uint256)": FunctionFragment;
        "getContentPurchaseInfo(uint256)": FunctionFragment;
        "getPermissionDetails(address,uint256)": FunctionFragment;
        "getUserPermissions(address,uint256[])": FunctionFragment;
        "hasViewPermission(address,uint256)": FunctionFragment;
        "isContentActive(uint256)": FunctionFragment;
        "isSupportedToken(address)": FunctionFragment;
        "migrate()": FunctionFragment;
        "pause()": FunctionFragment;
        "purchaseContent(uint256,address,uint256)": FunctionFragment;
        "purchaseWithNFT(uint256,address,uint256)": FunctionFragment;
        "removeAdmin(address)": FunctionFragment;
        "removeSupportedToken(address)": FunctionFragment;
        "setContentConfig(uint256,uint256,uint256,uint256,bool)": FunctionFragment;
        "unpause()": FunctionFragment;
        "updateTokenPrice(uint256,address,uint256)": FunctionFragment;
        "version()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "addAdmin" | "addSupportedToken" | "batchConsumeView" | "batchPurchase" | "batchSetContentConfig" | "batchUpdateTokenPrice" | "consumeView" | "getContentPurchaseInfo" | "getPermissionDetails" | "getUserPermissions" | "hasViewPermission" | "isContentActive" | "isSupportedToken" | "migrate" | "pause" | "purchaseContent" | "purchaseWithNFT" | "removeAdmin" | "removeSupportedToken" | "setContentConfig" | "unpause" | "updateTokenPrice" | "version"): FunctionFragment;
    encodeFunctionData(functionFragment: "addAdmin", values: [string]): string;
    encodeFunctionData(functionFragment: "addSupportedToken", values: [string]): string;
    encodeFunctionData(functionFragment: "batchConsumeView", values: [string[], BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "batchPurchase", values: [BigNumberish[], string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "batchSetContentConfig", values: [
        BigNumberish[],
        BigNumberish[],
        BigNumberish[],
        BigNumberish[],
        boolean[]
    ]): string;
    encodeFunctionData(functionFragment: "batchUpdateTokenPrice", values: [BigNumberish[], string, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "consumeView", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getContentPurchaseInfo", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "getPermissionDetails", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getUserPermissions", values: [string, BigNumberish[]]): string;
    encodeFunctionData(functionFragment: "hasViewPermission", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "isContentActive", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "isSupportedToken", values: [string]): string;
    encodeFunctionData(functionFragment: "migrate", values?: undefined): string;
    encodeFunctionData(functionFragment: "pause", values?: undefined): string;
    encodeFunctionData(functionFragment: "purchaseContent", values: [BigNumberish, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "purchaseWithNFT", values: [BigNumberish, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "removeAdmin", values: [string]): string;
    encodeFunctionData(functionFragment: "removeSupportedToken", values: [string]): string;
    encodeFunctionData(functionFragment: "setContentConfig", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, boolean]): string;
    encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateTokenPrice", values: [BigNumberish, string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "version", values?: undefined): string;
    decodeFunctionResult(functionFragment: "addAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addSupportedToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "batchConsumeView", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "batchPurchase", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "batchSetContentConfig", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "batchUpdateTokenPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "consumeView", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getContentPurchaseInfo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getPermissionDetails", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUserPermissions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasViewPermission", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isContentActive", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isSupportedToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "migrate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "purchaseContent", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "purchaseWithNFT", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "removeSupportedToken", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setContentConfig", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateTokenPrice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "version", data: BytesLike): Result;
    events: {
        "AdminAdded(address)": EventFragment;
        "AdminRemoved(address)": EventFragment;
        "BatchPurchased(address,uint256[],address,uint256)": EventFragment;
        "ContentConfigUpdated(uint256)": EventFragment;
        "ContentPurchased(address,uint256,address,uint256,uint256,uint256)": EventFragment;
        "NFTPurchased(address,uint256,address,uint256)": EventFragment;
        "Paused()": EventFragment;
        "PermissionExpired(address,uint256)": EventFragment;
        "SupportedTokenAdded(address)": EventFragment;
        "SupportedTokenRemoved(address)": EventFragment;
        "TokenPriceUpdated(uint256,address,uint256)": EventFragment;
        "Unpaused()": EventFragment;
        "ViewConsumed(address,uint256,uint256)": EventFragment;
        "ViewCountAdded(address,uint256,uint256,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AdminAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "AdminRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "BatchPurchased"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ContentConfigUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ContentPurchased"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NFTPurchased"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PermissionExpired"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SupportedTokenAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "SupportedTokenRemoved"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenPriceUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ViewConsumed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ViewCountAdded"): EventFragment;
}
export interface AdminAddedEventObject {
    admin: string;
}
export type AdminAddedEvent = TypedEvent<[string], AdminAddedEventObject>;
export type AdminAddedEventFilter = TypedEventFilter<AdminAddedEvent>;
export interface AdminRemovedEventObject {
    admin: string;
}
export type AdminRemovedEvent = TypedEvent<[string], AdminRemovedEventObject>;
export type AdminRemovedEventFilter = TypedEventFilter<AdminRemovedEvent>;
export interface BatchPurchasedEventObject {
    user: string;
    contentIds: BigNumber[];
    paymentToken: string;
    totalAmount: BigNumber;
}
export type BatchPurchasedEvent = TypedEvent<[
    string,
    BigNumber[],
    string,
    BigNumber
], BatchPurchasedEventObject>;
export type BatchPurchasedEventFilter = TypedEventFilter<BatchPurchasedEvent>;
export interface ContentConfigUpdatedEventObject {
    contentId: BigNumber;
}
export type ContentConfigUpdatedEvent = TypedEvent<[
    BigNumber
], ContentConfigUpdatedEventObject>;
export type ContentConfigUpdatedEventFilter = TypedEventFilter<ContentConfigUpdatedEvent>;
export interface ContentPurchasedEventObject {
    user: string;
    contentId: BigNumber;
    paymentToken: string;
    amount: BigNumber;
    viewCount: BigNumber;
    validUntil: BigNumber;
}
export type ContentPurchasedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], ContentPurchasedEventObject>;
export type ContentPurchasedEventFilter = TypedEventFilter<ContentPurchasedEvent>;
export interface NFTPurchasedEventObject {
    user: string;
    contentId: BigNumber;
    nftContract: string;
    tokenId: BigNumber;
}
export type NFTPurchasedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], NFTPurchasedEventObject>;
export type NFTPurchasedEventFilter = TypedEventFilter<NFTPurchasedEvent>;
export interface PausedEventObject {
}
export type PausedEvent = TypedEvent<[], PausedEventObject>;
export type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface PermissionExpiredEventObject {
    user: string;
    contentId: BigNumber;
}
export type PermissionExpiredEvent = TypedEvent<[
    string,
    BigNumber
], PermissionExpiredEventObject>;
export type PermissionExpiredEventFilter = TypedEventFilter<PermissionExpiredEvent>;
export interface SupportedTokenAddedEventObject {
    token: string;
}
export type SupportedTokenAddedEvent = TypedEvent<[
    string
], SupportedTokenAddedEventObject>;
export type SupportedTokenAddedEventFilter = TypedEventFilter<SupportedTokenAddedEvent>;
export interface SupportedTokenRemovedEventObject {
    token: string;
}
export type SupportedTokenRemovedEvent = TypedEvent<[
    string
], SupportedTokenRemovedEventObject>;
export type SupportedTokenRemovedEventFilter = TypedEventFilter<SupportedTokenRemovedEvent>;
export interface TokenPriceUpdatedEventObject {
    contentId: BigNumber;
    token: string;
    price: BigNumber;
}
export type TokenPriceUpdatedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber
], TokenPriceUpdatedEventObject>;
export type TokenPriceUpdatedEventFilter = TypedEventFilter<TokenPriceUpdatedEvent>;
export interface UnpausedEventObject {
}
export type UnpausedEvent = TypedEvent<[], UnpausedEventObject>;
export type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface ViewConsumedEventObject {
    user: string;
    contentId: BigNumber;
    remainingViews: BigNumber;
}
export type ViewConsumedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber
], ViewConsumedEventObject>;
export type ViewConsumedEventFilter = TypedEventFilter<ViewConsumedEvent>;
export interface ViewCountAddedEventObject {
    user: string;
    contentId: BigNumber;
    addedCount: BigNumber;
    totalRemaining: BigNumber;
}
export type ViewCountAddedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber
], ViewCountAddedEventObject>;
export type ViewCountAddedEventFilter = TypedEventFilter<ViewCountAddedEvent>;
export interface IVideoPayment extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IVideoPaymentInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        addAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        addSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        batchConsumeView(users: string[], contentIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        batchPurchase(contentIds: BigNumberish[], paymentToken: string, totalAmount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        batchSetContentConfig(contentIds: BigNumberish[], nativePrices: BigNumberish[], defaultViewCounts: BigNumberish[], viewDurations: BigNumberish[], isActiveArray: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        batchUpdateTokenPrice(contentIds: BigNumberish[], token: string, prices: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        consumeView(user: string, contentId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        getContentPurchaseInfo(contentId: BigNumberish, overrides?: CallOverrides): Promise<[IVideoPayment.ContentPurchaseInfoStructOutput]>;
        getPermissionDetails(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<[VideoPaymentStorage.ViewPermissionStructOutput]>;
        getUserPermissions(user: string, contentIds: BigNumberish[], overrides?: CallOverrides): Promise<[VideoPaymentStorage.ViewPermissionStructOutput[]]>;
        hasViewPermission(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
        isContentActive(contentId: BigNumberish, overrides?: CallOverrides): Promise<[boolean]>;
        isSupportedToken(token: string, overrides?: CallOverrides): Promise<[boolean]>;
        migrate(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        pause(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        purchaseContent(contentId: BigNumberish, paymentToken: string, amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        purchaseWithNFT(contentId: BigNumberish, nftContract: string, tokenId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        removeAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        removeSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        setContentConfig(contentId: BigNumberish, nativePrice: BigNumberish, defaultViewCount: BigNumberish, viewDuration: BigNumberish, isActive: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        unpause(overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        updateTokenPrice(contentId: BigNumberish, token: string, price: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<ContractTransaction>;
        version(overrides?: CallOverrides): Promise<[BigNumber]>;
    };
    addAdmin(admin: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    addSupportedToken(token: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    batchConsumeView(users: string[], contentIds: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    batchPurchase(contentIds: BigNumberish[], paymentToken: string, totalAmount: BigNumberish, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    batchSetContentConfig(contentIds: BigNumberish[], nativePrices: BigNumberish[], defaultViewCounts: BigNumberish[], viewDurations: BigNumberish[], isActiveArray: boolean[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    batchUpdateTokenPrice(contentIds: BigNumberish[], token: string, prices: BigNumberish[], overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    consumeView(user: string, contentId: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    getContentPurchaseInfo(contentId: BigNumberish, overrides?: CallOverrides): Promise<IVideoPayment.ContentPurchaseInfoStructOutput>;
    getPermissionDetails(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<VideoPaymentStorage.ViewPermissionStructOutput>;
    getUserPermissions(user: string, contentIds: BigNumberish[], overrides?: CallOverrides): Promise<VideoPaymentStorage.ViewPermissionStructOutput[]>;
    hasViewPermission(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
    isContentActive(contentId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
    isSupportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;
    migrate(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    pause(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    purchaseContent(contentId: BigNumberish, paymentToken: string, amount: BigNumberish, overrides?: PayableOverrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    purchaseWithNFT(contentId: BigNumberish, nftContract: string, tokenId: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    removeAdmin(admin: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    removeSupportedToken(token: string, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    setContentConfig(contentId: BigNumberish, nativePrice: BigNumberish, defaultViewCount: BigNumberish, viewDuration: BigNumberish, isActive: boolean, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    unpause(overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    updateTokenPrice(contentId: BigNumberish, token: string, price: BigNumberish, overrides?: Overrides & {
        from?: string;
    }): Promise<ContractTransaction>;
    version(overrides?: CallOverrides): Promise<BigNumber>;
    callStatic: {
        addAdmin(admin: string, overrides?: CallOverrides): Promise<void>;
        addSupportedToken(token: string, overrides?: CallOverrides): Promise<void>;
        batchConsumeView(users: string[], contentIds: BigNumberish[], overrides?: CallOverrides): Promise<boolean[]>;
        batchPurchase(contentIds: BigNumberish[], paymentToken: string, totalAmount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        batchSetContentConfig(contentIds: BigNumberish[], nativePrices: BigNumberish[], defaultViewCounts: BigNumberish[], viewDurations: BigNumberish[], isActiveArray: boolean[], overrides?: CallOverrides): Promise<void>;
        batchUpdateTokenPrice(contentIds: BigNumberish[], token: string, prices: BigNumberish[], overrides?: CallOverrides): Promise<void>;
        consumeView(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        getContentPurchaseInfo(contentId: BigNumberish, overrides?: CallOverrides): Promise<IVideoPayment.ContentPurchaseInfoStructOutput>;
        getPermissionDetails(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<VideoPaymentStorage.ViewPermissionStructOutput>;
        getUserPermissions(user: string, contentIds: BigNumberish[], overrides?: CallOverrides): Promise<VideoPaymentStorage.ViewPermissionStructOutput[]>;
        hasViewPermission(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        isContentActive(contentId: BigNumberish, overrides?: CallOverrides): Promise<boolean>;
        isSupportedToken(token: string, overrides?: CallOverrides): Promise<boolean>;
        migrate(overrides?: CallOverrides): Promise<void>;
        pause(overrides?: CallOverrides): Promise<void>;
        purchaseContent(contentId: BigNumberish, paymentToken: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
        purchaseWithNFT(contentId: BigNumberish, nftContract: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise<void>;
        removeAdmin(admin: string, overrides?: CallOverrides): Promise<void>;
        removeSupportedToken(token: string, overrides?: CallOverrides): Promise<void>;
        setContentConfig(contentId: BigNumberish, nativePrice: BigNumberish, defaultViewCount: BigNumberish, viewDuration: BigNumberish, isActive: boolean, overrides?: CallOverrides): Promise<void>;
        unpause(overrides?: CallOverrides): Promise<void>;
        updateTokenPrice(contentId: BigNumberish, token: string, price: BigNumberish, overrides?: CallOverrides): Promise<void>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        "AdminAdded(address)"(admin?: string | null): AdminAddedEventFilter;
        AdminAdded(admin?: string | null): AdminAddedEventFilter;
        "AdminRemoved(address)"(admin?: string | null): AdminRemovedEventFilter;
        AdminRemoved(admin?: string | null): AdminRemovedEventFilter;
        "BatchPurchased(address,uint256[],address,uint256)"(user?: string | null, contentIds?: null, paymentToken?: null, totalAmount?: null): BatchPurchasedEventFilter;
        BatchPurchased(user?: string | null, contentIds?: null, paymentToken?: null, totalAmount?: null): BatchPurchasedEventFilter;
        "ContentConfigUpdated(uint256)"(contentId?: BigNumberish | null): ContentConfigUpdatedEventFilter;
        ContentConfigUpdated(contentId?: BigNumberish | null): ContentConfigUpdatedEventFilter;
        "ContentPurchased(address,uint256,address,uint256,uint256,uint256)"(user?: string | null, contentId?: BigNumberish | null, paymentToken?: null, amount?: null, viewCount?: null, validUntil?: null): ContentPurchasedEventFilter;
        ContentPurchased(user?: string | null, contentId?: BigNumberish | null, paymentToken?: null, amount?: null, viewCount?: null, validUntil?: null): ContentPurchasedEventFilter;
        "NFTPurchased(address,uint256,address,uint256)"(user?: string | null, contentId?: BigNumberish | null, nftContract?: null, tokenId?: null): NFTPurchasedEventFilter;
        NFTPurchased(user?: string | null, contentId?: BigNumberish | null, nftContract?: null, tokenId?: null): NFTPurchasedEventFilter;
        "Paused()"(): PausedEventFilter;
        Paused(): PausedEventFilter;
        "PermissionExpired(address,uint256)"(user?: string | null, contentId?: BigNumberish | null): PermissionExpiredEventFilter;
        PermissionExpired(user?: string | null, contentId?: BigNumberish | null): PermissionExpiredEventFilter;
        "SupportedTokenAdded(address)"(token?: string | null): SupportedTokenAddedEventFilter;
        SupportedTokenAdded(token?: string | null): SupportedTokenAddedEventFilter;
        "SupportedTokenRemoved(address)"(token?: string | null): SupportedTokenRemovedEventFilter;
        SupportedTokenRemoved(token?: string | null): SupportedTokenRemovedEventFilter;
        "TokenPriceUpdated(uint256,address,uint256)"(contentId?: BigNumberish | null, token?: string | null, price?: null): TokenPriceUpdatedEventFilter;
        TokenPriceUpdated(contentId?: BigNumberish | null, token?: string | null, price?: null): TokenPriceUpdatedEventFilter;
        "Unpaused()"(): UnpausedEventFilter;
        Unpaused(): UnpausedEventFilter;
        "ViewConsumed(address,uint256,uint256)"(user?: string | null, contentId?: BigNumberish | null, remainingViews?: null): ViewConsumedEventFilter;
        ViewConsumed(user?: string | null, contentId?: BigNumberish | null, remainingViews?: null): ViewConsumedEventFilter;
        "ViewCountAdded(address,uint256,uint256,uint256)"(user?: string | null, contentId?: BigNumberish | null, addedCount?: null, totalRemaining?: null): ViewCountAddedEventFilter;
        ViewCountAdded(user?: string | null, contentId?: BigNumberish | null, addedCount?: null, totalRemaining?: null): ViewCountAddedEventFilter;
    };
    estimateGas: {
        addAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        addSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        batchConsumeView(users: string[], contentIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        batchPurchase(contentIds: BigNumberish[], paymentToken: string, totalAmount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        batchSetContentConfig(contentIds: BigNumberish[], nativePrices: BigNumberish[], defaultViewCounts: BigNumberish[], viewDurations: BigNumberish[], isActiveArray: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        batchUpdateTokenPrice(contentIds: BigNumberish[], token: string, prices: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        consumeView(user: string, contentId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        getContentPurchaseInfo(contentId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getPermissionDetails(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        getUserPermissions(user: string, contentIds: BigNumberish[], overrides?: CallOverrides): Promise<BigNumber>;
        hasViewPermission(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isContentActive(contentId: BigNumberish, overrides?: CallOverrides): Promise<BigNumber>;
        isSupportedToken(token: string, overrides?: CallOverrides): Promise<BigNumber>;
        migrate(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        purchaseContent(contentId: BigNumberish, paymentToken: string, amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<BigNumber>;
        purchaseWithNFT(contentId: BigNumberish, nftContract: string, tokenId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        removeAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        removeSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        setContentConfig(contentId: BigNumberish, nativePrice: BigNumberish, defaultViewCount: BigNumberish, viewDuration: BigNumberish, isActive: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        updateTokenPrice(contentId: BigNumberish, token: string, price: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        addAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        addSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        batchConsumeView(users: string[], contentIds: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        batchPurchase(contentIds: BigNumberish[], paymentToken: string, totalAmount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        batchSetContentConfig(contentIds: BigNumberish[], nativePrices: BigNumberish[], defaultViewCounts: BigNumberish[], viewDurations: BigNumberish[], isActiveArray: boolean[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        batchUpdateTokenPrice(contentIds: BigNumberish[], token: string, prices: BigNumberish[], overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        consumeView(user: string, contentId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        getContentPurchaseInfo(contentId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPermissionDetails(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUserPermissions(user: string, contentIds: BigNumberish[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasViewPermission(user: string, contentId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isContentActive(contentId: BigNumberish, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isSupportedToken(token: string, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        migrate(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        purchaseContent(contentId: BigNumberish, paymentToken: string, amount: BigNumberish, overrides?: PayableOverrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        purchaseWithNFT(contentId: BigNumberish, nftContract: string, tokenId: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        removeAdmin(admin: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        removeSupportedToken(token: string, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        setContentConfig(contentId: BigNumberish, nativePrice: BigNumberish, defaultViewCount: BigNumberish, viewDuration: BigNumberish, isActive: boolean, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        updateTokenPrice(contentId: BigNumberish, token: string, price: BigNumberish, overrides?: Overrides & {
            from?: string;
        }): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
