import { ExecutionContext } from 'hono';

type R2ExplorerConfig = {
	readonly?: boolean;
	cors?: boolean;
	cfAccessTeamName?: string;
	dashboardUrl?: string;
	emailRouting?: {
		targetBucket: string;
	};
	showHiddenFiles?: boolean;
	basicAuth?: BasicAuth | BasicAuth[];
};

type AppEnv = {
	ASSETS: Fetcher;
	[key: string]: R2Bucket;
};

declare function R2Explorer(config?: R2ExplorerConfig): {
    email(event: {
        raw: unknown;
        rawSize: unknown;
    }, env: AppEnv, context: ExecutionContext): Promise<void>;
    fetch(request: Request, env: AppEnv, context: ExecutionContext): Promise<Response>;
};

export { R2Explorer };
