interface SocialSharingConfigurationServices {
    /**
     * Whether or not to include Facebook.
     * Defaults to `true`
     */
    facebook: boolean;
    /**
     * Whether or not to include Twitter.
     * Defaults to `true`
     */
    twitter: boolean;
    /**
     * Whether or not to include Tumblr.
     * Defaults to `true`
     */
    tumblr: boolean;
    /**
     * Whether or not to include Pinterest.
     * Defaults to `true`
     */
    pinterest: boolean;
    /**
     * Whether or not to include LinkedIn.
     * Defaults to `true`
     */
    linkedin: boolean;
}
interface SocialSharingConfiguration {
    /**
     * Used to provide a title for use in the social overlay.
     * Can be updated dynamically.
     * Defaults to an empty string.
     */
    title: string;
    /**
     * Used to provide a description for use in the social overlay.
     * Can be updated dynamically.
     * Defaults to an empty string.
     */
    description: string;
    /**
     * Used to provide a custom URL that replaces the generated one.
     * Can be updated dynamically.
     * Defaults to an empty string.
     */
    url: string;
    /**
     * Used to provide a label for the social overlay.
     * Can only be updated on initialization of the plugin.
     * Defaults to an empty string.
     */
    label: string;
    /**
     * Used to provide a custom embed code that replaces the generated one.
     * Can be updated dynamically.
     * Defaults to an empty string.
     */
    embedCode: string;
    /**
     * This value is only used when the embed code is not set.
     * Used to provide a custom domain if proxy is being used.
     * Can be updated dynamically.
     * Defaults to `'players.brightcove.net'`.
     */
    embedDomain: string;
    /**
     * If true, the current dimensions of the player will be provided in default embed code.
     * Can be updated dynamically.
     * Defaults to `false`.
     */
    embedDimensions: boolean;
    /**
     * If true, direct links will include a start offset.
     * Can be updated dynamically.
     * Defaults to `false`.
     */
    deeplinking: boolean;
    /**
     * An offset in "hh:mm:ss" format to use for sharing URLs.
     * Can be updated dynamically.
     * Defaults to `'00:00:00'`.
     */
    offset: string;
    /**
     * If true, turns off the direct link.
     * Can be updated dynamically.
     * Defaults to `false`.
     */
    removeDirect: boolean;
    /**
     * If true, turns off the embed code.
     * Can be updated dynamically.
     * Defaults to `false`.
     */
    removeEmbed: boolean;
    /**
     * Can be updated dynamically.
     * See SocialSharingConfigurationServices for defaults.
     */
    services: SocialSharingConfigurationServices;
}
interface CustomEndScreenConfiguration {
    /**
     * Any string literal or HTML that is rendered on the custom endscreen.
     * Defaults to an empty string.
     */
    content: string;
}
interface EndScreenConfiguration {
    social: SocialSharingConfiguration;
    custom: CustomEndScreenConfiguration;
}

interface EndScreenIntegration {
    /** @internal */
    updateConfiguration(endScreenConfiguration: EndScreenConfiguration, prev: EndScreenConfiguration): void;
    /** @internal */
    dispose(): void;
}

type CustomEndScreenIntegrationFactory = new (...args: Array<unknown>) => EndScreenIntegration;

export type { CustomEndScreenIntegrationFactory };
