import * as appsync from "@distilled.cloud/aws/appsync";
import * as Effect from "effect/Effect";
/**
* AppSync serializes control-plane mutations per API; concurrent resolver /
* data-source / schema operations surface as `ConcurrentModificationException`.
* Ride out the contention window with a bounded retry (~40s).
*
* The helper carries an EXPLICIT return annotation so the conditional type
* of `Effect.retry` never leaks into declaration emit (which would widen the
* provider layer to `unknown` for every consumer of `AWS.providers()`).
*/
export declare const retryConcurrentModification: (effect: Effect.Effect) => Effect.Effect;
/**
* IAM changes (fresh service roles, updated trust policies) propagate to
* AppSync eventually; a `createDataSource` right after `createRole` can
* transiently fail with a `BadRequestException` complaining that AppSync
* is not authorized to assume the role. Bounded retry (~20s), scoped to
* role-assumption messages so genuine validation errors fail fast.
*/
export declare const retryWhileRolePropagates: (effect: Effect.Effect) => Effect.Effect;
/**
* AppSync data-source and pipeline-function names must match
* `[_A-Za-z][_0-9A-Za-z]*` (no dashes). Deterministic physical names are
* generated with dashes, so sanitize into the allowed alphabet.
*/
export declare const sanitizeAppSyncName: (name: string) => string;
/**
* Normalize the wire tag map (values may be `undefined`) to a plain record.
*/
export declare const tagRecord: (tags: {
[key: string]: string | undefined;
} | undefined) => Record;
/**
* Diff observed tags against desired tags and apply only the delta via the
* AppSync `tagResource`/`untagResource` operations.
*/
export declare const syncAppSyncTags: (args_0: {
resourceArn: string;
oldTags: Record;
newTags: Record;
}) => Effect.Effect;
//# sourceMappingURL=common.d.ts.map