/* tslint:disable:no-unused-variable */
// Android specific TypeScript declarations
declare var app;
declare var telerik;
declare var gc: () => void;

interface ArrayConstructor {
    create(type: any, count: number): any;
}

declare module android {
    module support {
        module v4 {
            module widget {
                class DrawerLayout {
                    constructor(context: android.content.Context);
                }

                module DrawerLayout {
                    class DrawerListener implements IDrawerListener {
                        constructor(implementation: IDrawerListener);

                        onDrawerClosed(drawerView: android.view.View): void;
                        onDrawerOpened(drawerView: android.view.View): void;
                        onDrawerSlide(drawerView: android.view.View, offset: number): void;
                        onDrawerStateChanged(newState: number): void;
                    }

                    class LayoutParams extends android.view.ViewGroup.MarginLayoutParams {
                        constructor(width: number, height: number, gravity?: number);
                        gravity: number;
                    }

                    interface IDrawerListener {
                        onDrawerClosed(drawerView: android.view.View): void;
                        onDrawerOpened(drawerView: android.view.View): void;
                        onDrawerSlide(drawerView: android.view.View, offset: number): void;
                        onDrawerStateChanged(newState: number): void;
                    }
                }
            }

            module app {
                class ActionBarDrawerToggle {
                    constructor(activity: android.app.Activity, layout: widget.DrawerLayout, imageResId: number, openResId: number, closeResId: number);
                }
            }
        }
    }
}

declare module org {
    export module nativescript {
        export module widgets {
            export module Async {
                export class CompleteCallback {
                    constructor(implementation: ICompleteCallback);
                    onComplete(result: Object, context: Object): void;
                }

                export interface ICompleteCallback {
                    onComplete(result: Object, context: Object): void;
                }

                export module Image {
                    export function download(url: string, callback: CompleteCallback, context: any);
                }

                export module Http {
                    export class KeyValuePair {
                        public key: string;
                        public value: string;
                        constructor(key: string, value: string);
                    }

                    export class RequestOptions {
                        public url: string;
                        public method: string;
                        public headers: java.util.ArrayList<KeyValuePair>;
                        public content: string;
                        public timeout: number;
                        public screenWidth: number;
                        public screenHeight: number;
                    }

                    export class RequestResult {
                        public raw: java.io.ByteArrayOutputStream;
                        public headers: java.util.ArrayList<KeyValuePair>;
                        public statusCode: number;
                        public responseAsString: string;
                        public responseAsImage: android.graphics.Bitmap;
                        public error: java.lang.Exception;
                    }

                    export function MakeRequest(options: RequestOptions, callback: CompleteCallback, context: any);
                }
            }
        }
    }
}