interface Configuration$1 {
    getWalletAddress: () => Promise<WalletAddress>;
    walletAddressUpdateCallback?: (callback: () => void) => void;
    walletAddressListeners?: string[];
    promptLogin: () => Promise<void>;
    styleUrl?: string;
    theme: string;
    text: 'upper' | 'lower';
    switchWallet: boolean;
}
/**
 * Initializes the content script for the Bring extension.
 *
 * @async
 * @function bringInitContentScript
 * @param {Object} configuration - The configuration object.
 * @param {Function} configuration.getWalletAddress - A function that returns a Promise resolving to the wallet address.
 * @param {Function} configuration.promptLogin - A function to prompt the user to login.
 * @param {string[]} configuration.walletAddressListeners - An optional array of strings representing wallet address listeners.
 * @param {Function} [configuration.walletAddressUpdateCallback] - An optional callback function for wallet address updates.
 * @param {string} [configuration.styleUrl] - Optional URL to a remote JSON theme file.
 * @param {string} configuration.theme - The chosen theme, light | dark.
 * @param {string} configuration.text - The chosen case for some of the texts, upper | lower.
 * @throws {Error} Throws an error if any required configuration is missing.
 * @returns {Promise<void>}
 *
 * @description
 * This function sets up event listeners for wallet address changes, iframe messages,
 * and Chrome runtime messages. It handles actions such as getting the wallet address
 * and injecting iframes based on received messages.
 *
 * @example
 * bringInitContentScript({
 *   getWalletAddress: async () => '0x1234...',
 *   promptLogin: () => { ... },
 *   walletAddressListeners: ["listener1", "listener2"],
 *   theme: 'light',
 *   text: 'lower',
 *   styleUrl: 'https://example.com/theme.json'
 * });
 */
declare const bringInitContentScript: ({ getWalletAddress, promptLogin, walletAddressListeners, walletAddressUpdateCallback, styleUrl, theme, text, switchWallet }: Configuration$1) => Promise<void>;

interface Configuration {
    identifier: string;
    apiEndpoint: string;
    whitelistEndpoint?: string;
    cashbackPagePath?: string;
    isEnabledByDefault: boolean;
    showNotifications?: boolean;
    notificationCallback?: () => void;
}
declare const bringInitBackground: ({ identifier, apiEndpoint, cashbackPagePath, whitelistEndpoint, isEnabledByDefault, showNotifications, notificationCallback }: Configuration) => Promise<void>;

interface TurnOff {
    isTurnedOff: boolean;
}
/**
 * Retrieves the current "turn off" status, true means turned off and false is turned on
 *
 * @returns A Promise resolving to the turn-off state
 * @throws Will reject if there's an error communicating with the background script
 */
declare const getTurnOff: () => Promise<TurnOff>;
/**
 * Sets the opt-out status for the extension
 *
 * @param state - Boolean indicating whether to turn off (true) or turn on (false)
 * @returns A Promise resolving to the new turn-off state
 * @throws Will reject if there's an error communicating with the background script
 */
declare const setTurnOff: (state: boolean) => Promise<TurnOff>;

interface PopupEnabled {
    isPopupEnabled: boolean;
}
/**
 * Retrieves the current "turn off" status, true means turned off and false is turned on
 *
 * @returns A Promise resolving to the turn-off state
 * @throws Will reject if there's an error communicating with the background script
 */
declare const getPopupEnabled: () => Promise<PopupEnabled>;
/**
 * Sets if popup feature is enabled or disabled
 *
 * @param state - Boolean indicating whether popup feature is enabled (true) or disabled (false)
 * @returns A Promise resolving to the new turn-off state
 * @throws Will reject if there's an error communicating with the background script
 */
declare const setPopupEnabled: (state: boolean) => Promise<PopupEnabled>;

export { bringInitBackground, bringInitContentScript, getPopupEnabled, getTurnOff, setPopupEnabled, setTurnOff };
