@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
211 lines (185 loc) • 4.68 kB
text/typescript
import IDictionary from "../utils/IDictionary";
export interface ISwrveCampaignResourceResponse
{
real_time_user_properties?: IDictionary<string>;
user_resources?: ReadonlyArray<IUserResource>;
location_campaigns?: object;
campaigns: ISwrveCampaigns;
qa?: {reset_device_state: boolean, logging: boolean, logging_url?: string, campaigns?: ReadonlyArray<ISwrveCampaign>};
flush_frequency: number;
flush_refresh_delay: number;
}
export interface IUserResource {
[key: string]: string;
}
export interface IQAUser
{
reset_device_state: boolean;
logging: boolean;
logging_url?: string;
campaigns?: ReadonlyArray<ISwrveCampaign>;
}
export interface ISwrveCampaigns
{
game_data: object;
campaigns: ReadonlyArray<ISwrveCampaign>;
rules: ISwrveGlobalRule;
cdn_root?: string;
cdn_paths?: {message_images: string, message_fonts: string};
version: number;
}
export interface ISwrveCampaign
{
id: number;
start_date: number;
end_date: number;
rules: ISwrveCampaignRule;
triggers?: ReadonlyArray<ISwrveTrigger>;
message_center: boolean;
embedded_message?: ISwrveEmbeddedMessage;
messages?: ReadonlyArray<ISwrveMessage>;
subject: string | null;
}
export interface ISwrveTrigger{
event_name: string;
conditions?: ISwrveCondition;
parentCampaign?: number;
}
export interface ISwrveConditionEq {
op: "eq";
key: string;
value: string;
}
export interface ISwrveConditionContains {
op: "contains";
key: string;
value: string;
}
export interface ISwrveConditionAnd {
op: "and";
args: ReadonlyArray<ISwrveCondition>;
}
export interface ISwrveConditionOr {
op: "or";
args: ReadonlyArray<ISwrveCondition>;
}
export interface ISwrveConditionEmpty {
op?: undefined;
}
export type ISwrveCondition = ISwrveConditionEq | ISwrveConditionContains | ISwrveConditionAnd | ISwrveConditionOr | ISwrveConditionEmpty;
export interface ISwrveCampaignRule
{
delay_first_message: number;
dismiss_after_views: number;
display_order: string;
min_delay_between_messages: number;
}
export interface ISwrveGlobalRule
{
delay_first_message?: number;
min_delay_between_messages?: number;
max_messages_per_session?: number;
}
export interface ISwrveBaseMessage {
id: number;
name: string;
priority: number;
rules: { orientations: string };
parentCampaign?: number;
}
export interface ISwrveEmbeddedMessage extends ISwrveBaseMessage {
data: string;
buttons: ReadonlyArray<string>;
type: "other" | "json";
}
export interface ISwrveMessage extends ISwrveBaseMessage {
template: { formats: ReadonlyArray<ISwrveFormat> };
}
export interface ISwrveFormat
{
name: string;
orientation: string;
language: string;
size: ISwrveSize;
images: ReadonlyArray<ISwrveImage>;
buttons: ReadonlyArray<ISwrveButton>;
scaled_by: number;
scaled_from: string;
scale: number;
color?: string;
pages?: Array<{
page_id: number;
page_name: string;
swipe_backward: number;
swipe_forward: number;
images: ReadonlyArray<ISwrveImage>;
buttons: ReadonlyArray<ISwrveButton>;
}>;
}
export interface ISwrveSize
{
w: ISwrveValue;
h: ISwrveValue;
}
export interface ISwrveValue
{
type: string;
value: number|string;
}
export interface ISwrveAsset {
getAssetID(): string|number;
getAssetPath(): string | number;
canRender(): boolean;
}
export interface ISwrveButton
{
name: string;
x: ISwrveValue;
y: ISwrveValue;
w: ISwrveValue;
h: ISwrveValue;
image_width: number;
image_height: number;
image_filename: string;
type: ISwrveValue;
action: ISwrveValue;
game_id: ISwrveValue;
image_up: ISwrveValue;
dynamic_image_url?: string;
text?: ISwrveValue;
button_id?: number;
events?: ReadonlyArray<IButtonCaptureEvent>;
user_updates?: ReadonlyArray<IButtonCaptureUserEvent>;
accessibility_text?: string;
}
export interface IButtonCaptureEvent
{
name: string;
payload?: ReadonlyArray<IPayloadItem>;
}
export interface IPayloadItem
{
key: string;
value: string | number;
}
export interface IButtonCaptureUserEvent
{
key: string;
value: string | number | boolean;
}
export interface ISwrveImage
{
color: ISwrveValue;
image: ISwrveValue;
image_filename: string;
image_height: number;
image_width: number;
name: string;
w: ISwrveValue;
x: ISwrveValue;
y: ISwrveValue;
h: ISwrveValue;
dynamic_image_url?: string;
text?: ISwrveValue;
accessibility_text?: string;
}