export interface CloudFrontPolicyOptions {
    resource: string;
    expiresAt: Date | number;
    activeAt?: Date | number;
    ipAddress?: string;
}
export interface CloudFrontSignerOptions {
    keyPairId: string;
    privateKey: string | Buffer;
}
export interface CloudFrontSignedCookies {
    'CloudFront-Key-Pair-Id': string;
    'CloudFront-Policy': string;
    'CloudFront-Signature': string;
}
export interface MediaAccessTokenOptions {
    resource: string;
    secret: string | Uint8Array;
    expiresAt: Date | number;
    keyId?: string;
    audience?: string;
}
export interface VerifiedMediaAccessToken {
    resource: string;
    expiresAt: number;
    keyId?: string;
    audience?: string;
}
export interface MediaCdnPlanOptions {
    bucket: string;
    region: string;
    domain?: string;
    prefix?: string;
    protected?: boolean;
    trustedKeyGroupIds?: string[];
}
export interface MediaCdnBehavior {
    pathPattern: string;
    cacheControl: string;
    compress: boolean;
    signed: boolean;
}
export interface MediaCdnPlan {
    originDomain: string;
    originPath: string;
    domain?: string;
    behaviors: MediaCdnBehavior[];
    trustedKeyGroupIds: string[];
    responseHeaders: Record<string, string>;
}
export declare function createCloudFrontPolicy(options: CloudFrontPolicyOptions): string;
export declare function signCloudFrontUrl(resource: string, expiresAt: Date | number, signer: CloudFrontSignerOptions): string;
export declare function signCloudFrontCookies(policyOptions: CloudFrontPolicyOptions, signer: CloudFrontSignerOptions): CloudFrontSignedCookies;
export declare function createMediaAccessToken(options: MediaAccessTokenOptions): string;
export declare function verifyMediaAccessToken(token: string, options: {
    secret: string | Uint8Array;
    now?: Date | number;
    resource?: string;
    audience?: string;
}): VerifiedMediaAccessToken | null;
export declare function mediaObjectHeaders(path: string, protectedMedia?: boolean): Record<string, string>;
export declare function buildMediaCdnPlan(options: MediaCdnPlanOptions): MediaCdnPlan;
