@swrve/smarttv-sdk
Version:
Swrve marketing engagement platform SDK for SmartTV OTT devices
184 lines (183 loc) • 4.76 kB
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 declare 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;
}