import type { ConfigKey } from '../config/schema.js';
import type { CloudflareApiClient, CloudflareConsumerLike, CloudflareControlPlaneConfig, CloudflareDnsRecordLike, CloudflareDurableObjectNamespaceLike, CloudflareKvNamespaceLike, CloudflareProvisionStep, CloudflareQueueLike, CloudflareR2BucketLike, CloudflareSecretsStoreLike, CloudflareZoneLike } from './types.js';
export interface CloudflareProvisioningContext {
    readonly readConfig: () => CloudflareControlPlaneConfig;
    readonly setConfig: (key: ConfigKey, value: unknown, persist: boolean) => void;
    readonly storeSecret: (key: string, value: string) => Promise<void>;
}
export declare function ensureQueue(client: CloudflareApiClient, accountId: string, queueName: string, steps: CloudflareProvisionStep[], stepName: string): Promise<CloudflareQueueLike>;
export declare function ensureKvNamespace(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, namespaceName: string, configuredNamespaceId: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareKvNamespaceLike>;
export declare function ensureR2Bucket(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, bucketName: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareR2BucketLike>;
export declare function ensureSecretsStore(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, storeName: string, configuredStoreId: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareSecretsStoreLike>;
export declare function ensureTunnel(context: CloudflareProvisioningContext, client: CloudflareApiClient, input: {
    readonly accountId: string;
    readonly tunnelName: string;
    readonly tunnelId: string;
    readonly daemonHostname: string;
    readonly tunnelServiceUrl: string;
    readonly persist: boolean;
    readonly returnGeneratedSecrets: boolean;
    readonly steps: CloudflareProvisionStep[];
}): Promise<{
    readonly id: string;
    readonly name: string;
    readonly token?: string;
    readonly tokenRef?: string;
}>;
export declare function ensureAccess(context: CloudflareProvisioningContext, client: CloudflareApiClient, input: {
    readonly accountId: string;
    readonly daemonHostname: string;
    readonly accessAppId: string;
    readonly accessServiceTokenId: string;
    readonly accessServiceTokenRef: string;
    readonly zone?: CloudflareZoneLike | undefined;
    readonly persist: boolean;
    readonly returnGeneratedSecrets: boolean;
    readonly steps: CloudflareProvisionStep[];
}): Promise<{
    readonly appId?: string;
    readonly serviceTokenId?: string;
    readonly serviceTokenRef?: string;
    readonly clientId?: string;
    readonly clientSecret?: string;
}>;
export declare function configureDns(client: CloudflareApiClient, input: {
    readonly enabled: boolean;
    readonly zone?: CloudflareZoneLike | undefined;
    readonly daemonHostname: string;
    readonly tunnelId: string;
    readonly workerHostname: string;
    readonly workerBaseUrl: string;
    readonly steps: CloudflareProvisionStep[];
}): Promise<readonly CloudflareDnsRecordLike[]>;
export declare function findDurableObjectNamespace(context: CloudflareProvisioningContext, client: CloudflareApiClient, accountId: string, namespaceName: string, persist: boolean, steps: CloudflareProvisionStep[]): Promise<CloudflareDurableObjectNamespaceLike | undefined>;
export declare function ensureQueueConsumer(client: CloudflareApiClient, input: {
    readonly accountId: string;
    readonly queueId: string;
    readonly workerName: string;
    readonly deadLetterQueueName: string;
    readonly steps: CloudflareProvisionStep[];
}): Promise<CloudflareConsumerLike>;
//# sourceMappingURL=resources.d.ts.map