diff --git a/azure-mobile-apps/azure-mobile-apps-tests.ts b/azure-mobile-apps/azure-mobile-apps-tests.ts
new file mode 100644
index 000000000..093932c2f
--- /dev/null
+++ b/azure-mobile-apps/azure-mobile-apps-tests.ts
@@ -0,0 +1,87 @@
+///
+
+import express = require('express');
+import mobileApps = require('azure-mobile-apps');
+import logger = require('azure-mobile-apps/src/logger');
+import queries = require('azure-mobile-apps/src/query');
+
+var app = express(),
+ mobileApp = mobileApps();
+
+// various configuration permutations
+mobileApps({
+ debug: true,
+ data: {
+ provider: 'mssql',
+ server: '',
+ user: '',
+ database: '',
+ password: ''
+ }
+});
+
+mobileApps({
+ data: {
+ provider: 'memory'
+ }
+})
+
+// it would be nice to integrate with winston
+mobileApps({ logging: { level: 'silly', transports: [{}] } })
+
+// various custom middleware syntaxes
+mobileApp.use(function (req: any, res: any, next: any) { next(); });
+mobileApp.use([function () {}, function () {}]);
+mobileApp.use(function () {}, function () {});
+mobileApp.use(function () {}).use(function () {});
+
+// basic syntax for tables and api
+mobileApp.tables.add('todoitem');
+mobileApp.tables.add('todoitem', { authorize: true });
+mobileApp.tables.add('todoitem', mobileApps.table());
+mobileApp.tables.import('tables');
+mobileApp.api.add('api', { authorize: true, get: function () {}, delete: function () {} });
+mobileApp.api.import('api');
+
+// Express.Table, instantiated from the mobile app
+var table = mobileApp.table()
+table.use(function (req: Express.Request, res: Express.Response, next: any) {
+ next(new Error());
+});
+table.use([function () {}, function () {}]);
+table.read(function (context: Azure.MobileApps.Context) {
+ context.query.where({ p1: 'test' });
+ return context.execute()
+ .then(function (result: any) {
+ return result;
+ })
+ .catch(function (error: any) { })
+ .then(function () {});
+});
+table.insert(function (context: Azure.MobileApps.Context) {
+ context.query.id = 'anotherId';
+ context.query.single = true;
+ context.item.userId = context.user.id;
+ context.push.send('tag', {}, function (error, result) {});
+ context.push.gcm.send('tag', {}, function (error, result) {});
+ context.push.apns.send('tag', { payload: { } }, function (error, result) {});
+ context.push.wns.sendToastText01('tag', '', { headers: { } }, function (error, result) {});
+});
+table.read.use(function () {});
+table.read.use([function () {}, function () {}]);
+table.read.use(function () {}, function () {});
+table.use(function () {}).use(function () {}).read(function () {}).use(function () {})
+
+// Express.Table, instantiated from the static require('azure-mobile-apps').table()
+// This is going to be interesting if we ever support more than one provider
+var table2 = mobileApps.table();
+table2.read(function (context: Azure.MobileApps.Context) {})
+
+// Logger
+logger.silly('test', 'message');
+logger.error('Something happened', new Error());
+mobileApps.logger.debug('a debug message')
+
+// Query
+queries.create('table').where({ x: 10 }).select('col1,col2');
+mobileApps.query.create('table');
\ No newline at end of file
diff --git a/azure-mobile-apps/azure-mobile-apps.d.ts b/azure-mobile-apps/azure-mobile-apps.d.ts
new file mode 100644
index 000000000..5441515fe
--- /dev/null
+++ b/azure-mobile-apps/azure-mobile-apps.d.ts
@@ -0,0 +1,279 @@
+// Type definitions for azure-mobile-apps v2.0.0-beta3
+// Project: https://github.com/Azure/azure-mobile-apps-node/
+// Definitions by: Microsoft Azure
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+///
+
+declare module "azure-mobile-apps" {
+ interface AzureMobileApps {
+ (configuration?: Azure.MobileApps.Configuration): Azure.MobileApps.Platforms.Express.MobileApp;
+ table(): Azure.MobileApps.Platforms.Express.Table;
+ logger: Azure.MobileApps.Logger;
+ query: Azure.MobileApps.Query;
+ }
+
+ var out: AzureMobileApps;
+ export = out;
+}
+declare module "azure-mobile-apps/src/logger" {
+ var logger: Azure.MobileApps.Logger;
+ export = logger;
+}
+
+declare module "azure-mobile-apps/src/query" {
+ var query: Azure.MobileApps.Query;
+ export = query;
+}
+
+declare module Azure.MobileApps {
+ // the additional Platforms namespace is required to avoid collisions with the main Express namespace
+ export module Platforms {
+ export module Express {
+ interface MobileApp {
+ configuration: Configuration;
+ tables: Tables;
+ table(): Table;
+ api: Api;
+ use(...middleware: Middleware[]): MobileApp;
+ use(middleware: Middleware[]): MobileApp;
+ }
+
+ interface Api {
+ add(name: string, definition: ApiDefinition): void;
+ import(fileOrFolder: string): void;
+ }
+
+ interface Table {
+ authorize?: boolean;
+ autoIncrement?: boolean;
+ dynamicSchema?: boolean;
+ name: string;
+ columns?: any;
+ schema: string;
+
+ use(...middleware: Middleware[]): Table;
+ use(middleware: Middleware[]): Table;
+ read: TableOperation;
+ update: TableOperation;
+ insert: TableOperation;
+ delete: TableOperation;
+ undelete: TableOperation;
+ }
+
+ interface TableOperation {
+ (operationHandler: (context: Context) => void): Table;
+ use(...middleware: Middleware[]): Table;
+ use(middleware: Middleware[]): Table;
+ }
+
+ interface Tables {
+ configuration: Configuration;
+ add(name: string, definition?: Table | TableDefinition): void;
+ import(fileOrFolder: string): void;
+ initialize(): Thenable;
+ }
+ }
+ }
+
+ export module Data {
+ interface Table {
+ read(query: QueryJs): Thenable;
+ update(item: any, query: QueryJs): Thenable;
+ insert(item: any): Thenable;
+ delete(query: QueryJs, version: string): Thenable;
+ undelete(query: QueryJs, version: string): Thenable;
+ truncate(): Thenable;
+ initialize(): Thenable;
+ schema(): Thenable;
+ }
+
+ interface Column {
+ name: string;
+ type: string;
+ }
+ }
+
+ // auth
+ interface User {
+ id: string;
+ claims: any[];
+ token: string;
+ getIdentity(provider: string): Thenable;
+ }
+
+ interface Auth {
+ validate(token: string): Thenable;
+ decode(token: string): User;
+ sign(payload: any): string;
+ }
+
+ // configuration
+ interface Configuration {
+ platform?: string;
+ basePath?: string;
+ configFile?: string;
+ promiseConstructor?: (resolve: (result: any) => void, reject: (error: any) => void) => Thenable;
+ apiRootPath?: string;
+ tableRootPath?: string;
+ notificationRootPath?: string;
+ swaggerPath?: string;
+ authStubRoute?: string;
+ debug?: boolean;
+ version?: string;
+ apiVersion?: string;
+ homePage?: boolean;
+ swagger?: boolean;
+ maxTop?: number;
+ pageSize?: number;
+ logging?: Configuration.Logging;
+ data?: Configuration.Data;
+ auth?: Configuration.Auth;
+ cors?: Configuration.Cors;
+ notifications?: Configuration.Notifications;
+ }
+
+ export module Configuration {
+ // it would be nice to have the config for various providers in separate interfaces,
+ // but this is the simplest solution to support variations of the current setup
+ interface Data {
+ provider: string;
+ user?: string;
+ password?: string;
+ server?: string;
+ port?: number;
+ database?: string;
+ connectionTimeout?: string;
+ options?: { encrypt: boolean };
+ schema?: string;
+ dynamicSchema?: boolean;
+ }
+
+ interface Auth {
+ secret: string;
+ validateTokens?: boolean;
+ }
+
+ interface Logging {
+ level?: string;
+ transports?: LoggingTransport[];
+ }
+
+ interface LoggingTransport { }
+
+ interface Cors {
+ maxAge?: number;
+ origins: string[];
+ }
+
+ interface Notifications {
+ hubName: string;
+ connectionString?: string;
+ endpoint?: string;
+ sharedAccessKeyName?: string;
+ sharedAccessKeyValue?: string;
+ }
+ }
+
+ // query
+ interface Query {
+ create(tableName: string): QueryJs;
+ fromRequest(req: Express.Request): QueryJs;
+ toOData(query: QueryJs): OData;
+ }
+
+ interface QueryJs {
+ includeTotalCount?: boolean;
+ orderBy(properties: string): QueryJs;
+ orderByDescending(properties: string): QueryJs;
+ select(properties: string): QueryJs;
+ skip(count: number): QueryJs;
+ take(count: number): QueryJs;
+ where(filter: any): QueryJs;
+ // these are properties added by the SDK
+ id?: string | number;
+ single?: boolean;
+ }
+
+ interface OData {
+ table: string;
+ filters?: string;
+ ordering?: string;
+ orderClauses?: string;
+ skip?: number;
+ take?: number;
+ selections?: string;
+ includeTotalCount?: boolean;
+ }
+
+ // general
+ var nh: Azure.ServiceBus.NotificationHubService;
+ interface Context {
+ query: QueryJs;
+ id: string | number;
+ item: any;
+ req: Express.Request;
+ res: Express.Response;
+ data: (table: TableDefinition) => Data.Table;
+ tables: (tableName: string) => Data.Table;
+ user: User;
+ push: typeof nh;
+ logger: Logger;
+ execute(): Thenable;
+ }
+
+ interface TableDefinition {
+ authorize?: boolean;
+ autoIncrement?: boolean;
+ dynamicSchema?: boolean;
+ name?: string;
+ columns?: any;
+ schema?: string;
+ }
+
+ interface ApiDefinition {
+ authorize?: boolean;
+ get?: Middleware | Middleware[];
+ post?: Middleware | Middleware[];
+ patch?: Middleware | Middleware[];
+ put?: Middleware | Middleware[];
+ delete?: Middleware | Middleware[];
+ }
+
+ interface Thenable {
+ then(onFulfilled?: (value: R) => U | Thenable, onRejected?: (error: any) => U | Thenable): Thenable;
+ then(onFulfilled?: (value: R) => U | Thenable, onRejected?: (error: any) => void): Thenable;
+ catch(onRejected?: (error: any) => U | Thenable): Thenable;
+ catch(onRejected?: (error: any) => void): Thenable;
+ }
+
+ interface Logger {
+ log(level: string, ...message: any[]): void;
+ silly(...message: any[]): void;
+ debug(...message: any[]): void;
+ verbose(...message: any[]): void;
+ info(...message: any[]): void;
+ warn(...message: any[]): void;
+ error(...message: any[]): void;
+ }
+
+ interface Middleware {
+ (req: Express.Request, res: Express.Response, next: NextMiddleware): void;
+ }
+
+ interface NextMiddleware {
+ (error?: any): void;
+ }
+}
+
+// additions to the Express modules
+declare module Express {
+ interface Request {
+ azureMobile: Azure.MobileApps.Context
+ }
+
+ interface Response {
+ results?: any;
+ }
+}
\ No newline at end of file
diff --git a/azure-sb/azure-sb-tests.ts b/azure-sb/azure-sb-tests.ts
new file mode 100644
index 000000000..508685181
--- /dev/null
+++ b/azure-sb/azure-sb-tests.ts
@@ -0,0 +1,16 @@
+///
+
+var nh = new Azure.ServiceBus.NotificationHubService();
+nh.send('tag', '', function (error, result) {});
+nh.send('tag', '', { headers: {} }, function (error, result) {});
+
+nh.apns.send('tag', { payload: { } }, function (error, result) {});
+nh.apns.send(['tag'], { payload: { } }, function (error, result) {});
+nh.gcm.send('tag', { }, function (error, result) {});
+nh.gcm.send(['tag'], { }, function (error, result) {});
+nh.wns.send('tag', '', 'wns/toast', function (error, result) {});
+nh.wns.send(['tag'], '', 'wns/toast', function (error, result) {});
+nh.wns.send('tag', '', 'wns/toast', { headers: {} }, function (error, result) {});
+nh.wns.sendToastText01('tag', '', function (error, result) {});
+nh.wns.sendToastText01(['tag'], '', function (error, result) {});
+nh.wns.sendToastText01('tag', '', { headers: {} }, function (error, result) {});
\ No newline at end of file
diff --git a/azure-sb/azure-sb.d.ts b/azure-sb/azure-sb.d.ts
new file mode 100644
index 000000000..afa4074a9
--- /dev/null
+++ b/azure-sb/azure-sb.d.ts
@@ -0,0 +1,173 @@
+// Type definitions for azure-sb
+// Project: https://github.com/Azure/azure-sdk-for-node/tree/master/lib/services/serviceBus
+// Definitions by: Microsoft Azure
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare module Azure.ServiceBus {
+ interface Callback {
+ (error: any, response: any): void;
+ }
+
+ interface NotificationHubRegistration {
+ RegistrationId: string;
+ ChannelUri?: string;
+ DeviceToken?: string;
+ gcmRegistrationId?: string;
+ Tags?: string;
+ BodyTemplate?: any;
+ WnsHeaders?: any;
+ MpnsHeaders?: any;
+ Expiry?: Date;
+ }
+
+ export class NotificationHubService {
+ new(hubName: string, endpointOrConnectionString: string, sharedAccessKeyName?: string, sharedAccessKeyValue?: string): NotificationHubService;
+ hubName: string;
+ wns: Wns.Service;
+ apns: Apns.Service;
+ gcm: Gcm.Service;
+ mpns: Mpns.Service;
+ send(tags: string, payload: Object | string, optionsOrCallback?: { headers: Object } | Callback, callback?: Callback): void;
+
+ createOrUpdateInstallation(installation: string, options: any, callback?: Callback): void;
+ patchInstallation(installationId: string, partialUpdateOperations: any[], options: any, callback?: Callback): void;
+ deleteInstallation(installationId: string, options: any, callback?: Callback): void;
+ getInstallation(installationId: string, options: any, callback?: Callback): void;
+
+ /*
+ // old school?
+ createRegistrationId(callback?: Callback): void;
+ getRegistration(registrationId: string, options: any, callback?: Callback): void;
+ deleteRegistration(registrationId: string, options?: { etag: any }, callback?: Callback): void;
+ updateRegistration(registration: NotificationHubRegistration, options?: { etag: any }, callback?: Callback): void;
+ createOrUpdateRegistration(registration: NotificationHubRegistration, options?: { etag: any }, callback?: Callback): void;
+ listRegistrations(options?: { top: number, skip: number }, callback?: Callback): void;
+ listRegistrationsByTag(tag: string, options?: { top: number, skip: number }, callback?: Callback): void;
+ */
+ }
+
+ export module Apns {
+ interface Payload {
+ expiry?: Date;
+ aps?: Object;
+ badge?: number;
+ alert?: string;
+ sound?: string;
+ payload: Object;
+ }
+
+ interface Service {
+ new(service: NotificationHubService): Service;
+ send(tags: string | string[], payload: Apns.Payload, callback?: Callback): void;
+ createNativeRegistration(token: string, tags: string | string[], optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createOrUpdateNativeRegistration(registrationId: string, token: string, tags: string | string[], optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createTemplateRegistration(token: string, tags: string | string[], template: Apns.Payload, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createOrUpdateTemplateRegistration(registrationId: string, token: string, tags: string | string[], template: Apns.Payload, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ updateTemplateRegistration(registrationId: string, token: string, tags: string | string[], template: Apns.Payload, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ listRegistrationsByToken(token: string, optionsOrCallback?: { top: number, skip: number } | Callback, callback?: Callback): void;
+ }
+ }
+ export module Gcm {
+ interface Service {
+ new(service: NotificationHubService): Service;
+ send(tags: string | string[], payload: any, callback?: Callback): void;
+ createNativeRegistration(gcmRegistrationId: string, tags: string | string[], optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createOrUpdateNativeRegistration(registrationId: string, gcmRegistrationId: string, tags: string | string[], optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createTemplateRegistration(gcmRegistrationId: string, tags: string | string[], template: any, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ createOrUpdateTemplateRegistration(registrationId: string, gcmRegistrationId: string, tags: string | string[], template: any, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ updateTemplateRegistration(registrationId: string, gcmRegistrationId: string, tags: string | string[], template: any, optionsOrCallback?: Object | Callback, callback?: Callback): void;
+ listRegistrationsByGcmRegistrationId(gcmRegistrationId: string, optionsOrCallback?: { top: number, skip: number } | Callback, callback?: Callback): void;
+ }
+ }
+
+ export module Mpns { interface Service { } }
+
+ export module Wns {
+ interface Payload {
+ text1?: string;
+ text2?: string;
+ text3?: string;
+ text4?: string;
+ image1src?: string;
+ image1alt?: string;
+ image2src?: string;
+ image2alt?: string;
+ image3src?: string;
+ image3alt?: string;
+ image4src?: string;
+ image4alt?: string;
+ lang?: string;
+ type?: string;
+ }
+
+ interface Options {
+ headers: Object;
+ }
+
+ interface Service {
+ new(service: NotificationHubService): Service;
+ sendTileSquareBlock(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquareText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquareText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquareText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquareText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText05(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText06(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText07(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText08(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText09(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText10(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideText11(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquareImage(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquarePeekImageAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquarePeekImageAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquarePeekImageAndText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileSquarePeekImageAndText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideImage(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideImageCollection(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideImageAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideImageAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideBlockAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideBlockAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideSmallImageAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideSmallImageAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideSmallImageAndText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideSmallImageAndText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWideSmallImageAndText05(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection05(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageCollection06(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImageAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage05(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendTileWidePeekImage06(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastImageAndText01(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastImageAndText02(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastImageAndText03(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendToastImageAndText04(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ // badges = ['none','activity','alert','available','away','busy','newMessage','paused','playing','unavailable','error', 'attention']
+ sendBadge(tags: string | string[], value: string | number, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ sendRaw(tags: string | string[], payload: any, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ // types = ['wns/toast', 'wns/badge', 'wns/tile', 'wns/raw']
+ send(tags: string | string[], payload: string, type: string, optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ createNativeRegistration(channel: string, tags: string | string[], optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ createOrUpdateNativeRegistration(registrationId: string, channel: string, tags: string | string[], optionsOrCallback?: Options | Callback, callback?: Callback): void;
+ listRegistrationsByChannel(channel: string, optionsOrCallback?: { top: number, skip: number } | Callback, callback?: Callback): void;
+ }
+ }
+}
\ No newline at end of file