Skip to content

Model

The generated section below is sourced from runtime/types/model.d.ts.

Generated Type Declarations

AudioOption

ts
type AudioOption = 'mix' | 'duckOthers' | 'solo';

ColorScheme

ts
type ColorScheme = 'light' | 'dark';

RenderingMode

ts
type RenderingMode = 'fullColor' | 'accented' | 'vibrant';

Update

ts
type Update = Date | 'end' | 'rapid' | 'never';

WidgetFamily

ts
type WidgetFamily =
	| 'small'
	| 'medium'
	| 'large'
	| 'extraLarge'
	| 'fullscreen'
	| 'accessoryInline'
	| 'accessoryCircular'
	| 'accessoryRectangular'
	| 'unknown';

SingleNativeView

ts
type SingleNativeView =
	| string
	| number
	| undefined
	| {
			kind: string;
			flat?: unknown[];
			children?: NativeView;
	  };

NativeView

ts
type NativeView = SingleNativeView | NativeView[];

AudioConfig

ts
type AudioConfig = {
	soundFont?: string;
	volume?: number;
	duration?: number;
	delay?: number;
	velocity?: number;
	preset?: number;
	bank?: number;
	loop?: boolean;
	audioOption?: AudioOption;
};

SoundFontManualMapping

ts
type SoundFontManualMapping = {
	path: string;
	key: number;
};

SoundFontBuildConfig

ts
type SoundFontBuildConfig = {
	savePath: string;
	dataSizeLimitMB?: number;
	mediaFiles?: string[];
	mappings?: SoundFontManualMapping[];
};

SoundFontCompressConfig

ts
type SoundFontCompressConfig = {
	fromPath: string;
	savePath: string;
	dataSizeLimitMB?: number;
};

SoundFontBuildResult

ts
type SoundFontBuildResult = {
	ok: true;
	output: string;
	resolvedOutput: string;
	sizeBytes: number;
};

AwaitWeatherConfig

ts
type AwaitWeatherConfig = {
	latitude?: number;
	longitude?: number;
	hourlyLimit?: number;
	dailyLimit?: number;
};

AwaitWeatherCurrent

ts
type AwaitWeatherCurrent = {
	date: string;
	condition: string;
	symbolName: string;
	temperatureCelsius: number;
	apparentTemperatureCelsius: number;
	humidity: number;
	uvIndex: number;
	windSpeedMetersPerSecond: number;
	windDirectionDegrees: number;
	pressureHectopascals: number;
	visibilityKilometers: number;
};

AwaitWeatherHourly

ts
type AwaitWeatherHourly = {
	date: string;
	condition: string;
	symbolName: string;
	temperatureCelsius: number;
	humidity: number;
	uvIndex: number;
	windSpeedMetersPerSecond: number;
	precipitationChance: number;
};

AwaitWeatherDaily

ts
type AwaitWeatherDaily = {
	date: string;
	condition: string;
	symbolName: string;
	highTemperatureCelsius: number;
	lowTemperatureCelsius: number;
	precipitationChance: number;
	uvIndex: number;
};

AwaitWeatherResult

ts
type AwaitWeatherResult = {
	location: {
		latitude: number;
		longitude: number;
	};
	current: AwaitWeatherCurrent;
	hourly: AwaitWeatherHourly[];
	daily: AwaitWeatherDaily[];
};

AwaitHealthConfig

ts
type AwaitHealthConfig = {
	start: Date;
	end: Date;
};

AwaitHealthFitnessInfo

ts
type AwaitHealthFitnessInfo = {
	activeEnergyBurned?: number;
	activeEnergyBurnedGoal?: number;
	exerciseTime?: number;
	exerciseTimeGoal?: number;
	standHours?: number;
	standHoursGoal?: number;
};

AwaitHealthQuantitySample

ts
type AwaitHealthQuantitySample = {
	value: number;
	startDate: Date;
	endDate: Date;
};

AwaitHealthSleepAnalysisValue

ts
type AwaitHealthSleepAnalysisValue =
	| 'inBed'
	| 'awake'
	| 'asleepCore'
	| 'asleepDeep'
	| 'asleepREM'
	| 'asleepUnspecified';

AwaitHealthSleepAnalysisSample

ts
type AwaitHealthSleepAnalysisSample = {
	value: AwaitHealthSleepAnalysisValue;
	startDate: Date;
	endDate: Date;
};

AwaitHealthInfo

ts
type AwaitHealthInfo = {
	stepCount?: number;
	distanceWalkingRunning?: number;
	flightsClimbed?: number;
	fitness?: AwaitHealthFitnessInfo;
	heartRate?: number;
	restingHeartRate?: number;
	oxygenSaturation?: number;
};

AwaitHealthRangeFitnessInfo

ts
type AwaitHealthRangeFitnessInfo = AwaitHealthFitnessInfo & {
	date: Date;
};

AwaitHealthRangeInfo

ts
type AwaitHealthRangeInfo = {
	stepCount?: AwaitHealthQuantitySample[];
	distanceWalkingRunning?: AwaitHealthQuantitySample[];
	flightsClimbed?: AwaitHealthQuantitySample[];
	fitness?: AwaitHealthRangeFitnessInfo[];
	heartRate?: AwaitHealthQuantitySample[];
	restingHeartRate?: AwaitHealthQuantitySample[];
	oxygenSaturation?: AwaitHealthQuantitySample[];
	respiratoryRate?: AwaitHealthQuantitySample[];
	appleSleepingWristTemperature?: AwaitHealthQuantitySample[];
	sleepAnalysis?: AwaitHealthSleepAnalysisSample[];
};

AwaitLocationConfig

ts
type AwaitLocationConfig = {
	desiredAccuracyMeters?: number;
	timeoutSeconds?: number;
};

AwaitLocationInfo

ts
type AwaitLocationInfo = {
	latitude: number;
	longitude: number;
	date: Date;
	altitudeMeters?: number;
	speedMetersPerSecond?: number;
	courseDegrees?: number;
};

AwaitNowPlayingConfig

ts
type AwaitNowPlayingConfig = {
	artworkSize?: number;
};

AwaitMusicSource

ts
type AwaitMusicSource =
	| {
			type: 'song';
	  }
	| {
			type: 'artist';
			id: string;
			name: string;
	  }
	| {
			type: 'album';
			id: string;
			name: string;
	  }
	| {
			type: 'station';
			id: string;
			name: string;
	  };

AwaitNowPlayingInfo

ts
type AwaitNowPlayingInfo = {
	state?:
		| 'playing'
		| 'paused'
		| 'stopped'
		| 'interrupted'
		| 'seekingForward'
		| 'seekingBackward';
	source?: AwaitMusicSource;
	id?: string;
	title?: string;
	artistName?: string;
	albumTitle?: string;
	duration?: number;
	isFavorite?: boolean;
	artworkURL?: string;
	maximumWidth?: number;
	maximumHeight?: number;
	backgroundColor?: Color;
	primaryTextColor?: Color;
	secondaryTextColor?: Color;
	tertiaryTextColor?: Color;
	quaternaryTextColor?: Color;
};

AwaitMusicPlayerCommand

ts
type AwaitMusicPlayerCommand =
	| 'start'
	| 'stop'
	| 'toggle'
	| 'next'
	| 'previous'
	| 'favorite'
	| 'clearRating'
	| 'dislike';

AwaitMusicPlayConfig

ts
type AwaitMusicPlayConfig =
	| {
			source: 'song';
			id?: string;
			query?: string;
			limit?: number;
			shuffle?: boolean;
			loop?: boolean;
	  }
	| {
			source: 'artist';
			id?: string;
			query?: string;
			limit?: number;
			shuffle?: boolean;
			loop?: boolean;
	  }
	| {
			source: 'album';
			id?: string;
			query?: string;
			shuffle?: boolean;
			loop?: boolean;
	  }
	| {
			source: 'station';
			query?: string;
			type?: 'discovery' | 'user';
			id?: string;
	  };

AwaitCalendarConfig

ts
type AwaitCalendarConfig = {
	start?: Date;
	end?: Date;
	limit?: number;
};

AwaitCalendarItem

ts
type AwaitCalendarItem = {
	calendarTitle: string;
	title: string;
	startDate: Date;
	endDate: Date;
	isAllDay: boolean;
	location?: string;
	notes?: string;
	url?: string;
};

AwaitReminderConfig

ts
type AwaitReminderConfig = {
	type?: 'all' | 'incomplete' | 'completed';
	limit?: number;
};

AwaitReminderItem

ts
type AwaitReminderItem = {
	calendarTitle: string;
	title: string;
	notes?: string;
	isCompleted: boolean;
	priority: number;
	startDate?: Date;
	dueDate?: Date;
	completionDate?: Date;
};

AwaitSystemInfo

ts
type AwaitSystemInfo = {
	battery: {
		state: 'charging' | 'full' | 'unplugged' | 'unknown';
		percent: number;
		lowPowerMode: boolean;
	};
	memory?: {
		used: number;
		free: number;
		total: number;
		percent: number;
	};
	cpu: {
		percent?: number;
	};
	storage?: {
		total: number;
		free: number;
		used: number;
		percent: number;
	};
};

AwaitAlarmScheduleConfig

ts
type AwaitAlarmScheduleConfig = {
	title?: string;
	duration?: number;
	date?: Date;
	tint?: Color;
};

WidgetEntryData

ts
type WidgetEntryData<T extends Record<string, unknown>> = Omit<
	T,
	keyof TimelineContext | 'date' | 'colorScheme' | 'renderingMode'
>;

WidgetEntry

ts
type WidgetEntry<T extends Record<string, unknown> = Record<string, unknown>> =
	TimelineContext &
		WidgetEntryData<T> & {
			date: Date;
			colorScheme: ColorScheme;
			renderingMode: RenderingMode;
		};

TimelineContext

ts
type TimelineContext = {
	size: Size;
	family: WidgetFamily;
};

Timeline

ts
type Timeline<T extends Record<string, unknown> = Record<string, unknown>> = {
	entries: Array<{date: Date} & T>;
	update?: Update;
	skipOnPlayingNote?: boolean;
};