import azure = require('azure-storage'); export interface AzureTableStorageOptions { accountName?: string; sasKey?: string; connectionString?: string; } export interface AzureTableStorageFeatureOptions { table?: string; createTableIfNotExists?: boolean; } // tslint:disable-next-line: no-empty-interface export interface AzureTableStorageResponse extends azure.ServiceResponse {} // tslint:disable-next-line: no-empty-interface // export interface AzureTableStorageQuery extends azure.TableQuery {} export type AzureTableStorageQuery = azure.TableQuery; // tslint:disable-next-line: no-empty-interface export interface AzureTableContinuationToken extends azure.TableService.TableContinuationToken {} export interface AzureTableStorageResultList extends azure.TableService.QueryEntitiesResult {} export interface Repository { select(...args: any[]): Repository & AzureTableStorageQuery; top(top: number): Repository & AzureTableStorageQuery; where(condition: string, ...args: any[]): Repository & AzureTableStorageQuery; and(condition: string, ...args: any[]): Repository & AzureTableStorageQuery; or(condition: string, ...args: any[]): Repository & AzureTableStorageQuery; toQueryObject(): Object; findAll( tableQuery?: AzureTableStorageQuery, currentToken?: AzureTableContinuationToken, ): Promise>; find(rowKey: string, entity: Partial): Promise; create(entity: T, rowKeyValue?: string): Promise; update(rowKey: string, entity: Partial): Promise; delete(rowKey: string, entity: T): Promise; } export type ValueType = ((e: any) => string) | string;