///
import { IMessageEncoder, IRequireInitialization } from "@walmartlabs/cookie-cutter-core";
import { SpanContext } from "opentracing";
import * as es from "./event-sourced";
import * as ma from "./materialized";
import * as st from "./streaming";
export declare const EventSourced: typeof es;
export declare const Materialized: typeof ma;
export declare const Streaming: typeof st;
export interface ICosmosConfiguration {
readonly url: string;
readonly key: string;
readonly databaseId: string;
readonly collectionId: string;
readonly encoder: IMessageEncoder;
}
/**
* When connecting to a blob, the BlobClient:
* uses the connectionString (if provided) to connect, otherwise
* uses the url (if provided) and account and key to connect, otherwise
* uses the account and key to construct a standard url and connect
*/
export interface IBlobStorageConfiguration {
readonly storageAccount?: string;
readonly storageAccessKey?: string;
readonly container: string;
/** Ex:
* `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
* AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
* BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
* QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
* TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;`
*/
readonly connectionString?: string;
/** Ex: `https://account.blob.core.windows.net`
* Deprecated: uses as a connection string
*/
readonly url?: string;
}
export interface ICosmosQuery {
query: string;
parameters?: {
name: string;
value: string | number | boolean;
}[];
}
export declare enum CosmosMetadata {
TTL = "ttl"
}
export interface ICosmosQueryClient {
query(spanContext: SpanContext, query: ICosmosQuery, collectionId?: string): Promise;
}
export declare function cosmosQueryClient(configuration: ICosmosConfiguration): ICosmosQueryClient;
export interface IBlobClient extends IRequireInitialization {
createContainerIfNotExists(context?: SpanContext): Promise;
write(context: SpanContext, blobId: string, content: Buffer | string): Promise;
readAsText(context: SpanContext, blobId: string): Promise;
exists(context: SpanContext, blobId: string): Promise;
deleteFolderIfExists(context: SpanContext, folderId: string): Promise;
deleteBlobIfExists(context: SpanContext, blobId: string): Promise;
listBlobs(context: SpanContext, prefix: string): AsyncIterableIterator;
}
export declare function createBlobClient(configuration: IBlobStorageConfiguration): IBlobClient;