native-fn
Version:
55 lines (54 loc) • 1.96 kB
TypeScript
import { AppOpenState, MessengerType } from "../constants";
import { OS } from "../../platform/constants";
export declare interface AppInfo {
scheme?: URLCandidate;
fallback?: URLCandidateOrFallback;
timeout?: number;
allowAppStore?: boolean;
allowWebStore?: boolean;
}
export declare interface AndroidAppInfo extends AppInfo {
packageName?: string;
intent?: URLCandidate;
}
export declare interface IOSAppInfo extends MacOSAppInfo {
universal?: URLCandidate;
}
export declare interface WindowsAppInfo extends AppInfo {
productId?: string;
}
export declare interface MacOSAppInfo extends AppInfo {
bundleId?: string;
trackId?: string;
}
export declare interface StoreInfo {
appStore?: string;
webStore?: string;
}
export declare interface AppOpenOptions {
[OS.Android]?: AndroidAppInfo;
['android']?: AndroidAppInfo;
[OS.iOS]?: IOSAppInfo;
['ios']?: IOSAppInfo;
[OS.Windows]?: WindowsAppInfo;
['windows']?: WindowsAppInfo;
[OS.MacOS]?: MacOSAppInfo;
['mac']?: MacOSAppInfo;
}
export declare type URLCandidate = URL | string;
export declare type URLCandidateOrFallback = URLCandidate | (() => any);
export declare type URLStringOrFallback = string | (() => any);
export declare type Stringifiable = string | number | boolean | HTMLElement | null | undefined;
export declare type StringifiableSequence = Stringifiable[] | NodeList | NodeListOf<Node> | HTMLCollectionBase;
export declare type MessengerOpenOptions = {
to?: Stringifiable | StringifiableSequence;
cc?: Stringifiable | StringifiableSequence;
bcc?: Stringifiable | StringifiableSequence;
subject?: Stringifiable;
body?: Stringifiable;
} | HTMLFormElement | FormData;
export declare type Messenger = Record<MessengerType, (options: MessengerOpenOptions) => Promise<void>>;
export declare interface AppInstance {
open(options: AppOpenOptions): Promise<AppOpenState>;
messenger: Messenger;
}