import * as agw2 from "@distilled.cloud/aws/apigatewayv2"; import * as Effect from "effect/Effect"; /** * API Gateway v2 ARN helpers. Unlike most services the resource ARNs used * for tagging omit the account id (`arn:aws:apigateway:{region}::/apis/{id}`). */ export declare const apiArn: (region: string, apiId: string) => string; export declare const stageArn: (region: string, apiId: string, stageName: string) => string; export declare const domainNameArn: (region: string, domainName: string) => string; export declare const vpcLinkArn: (region: string, vpcLinkId: string) => string; /** * The `execute-api` ARN that IAM policies (Lambda resource policies, * `execute-api:Invoke`/`ManageConnections` statements) use to scope access * to an API. Wildcards match across path segments. */ export declare const executeApiArn: (region: string, accountId: string, apiId: string, suffix?: string) => string; /** * `Create/Update/Delete` operations across API Gateway v2 share an * account-wide throttle; parallel test suites and deploys routinely see * `TooManyRequestsException` outlast the blanket SDK retry budget. The * schedule below (exponential base 1s capped at 20s, 10 attempts, ~60s * total) rides out the throttle window without hiding real failures. * * 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 retryOnTooManyRequests: (effect: Effect.Effect) => Effect.Effect; /** * Normalize the wire tag map (values may be `undefined`) to a plain record. */ export declare const tagRecord: (tags: { [key: string]: string | undefined; } | undefined) => Record; /** * API Gateway v2 collection operations (`getApis`, `getRoutes`, `getStages`, * …) return `{ Items, NextToken }` pages without a Smithy pagination trait, * so distilled exposes no `.pages` stream for them. Collect every page * manually, bounded at 100 pages so a misbehaving token can never hang the * engine. */ export declare const collectAllPages: (fetchPage: (nextToken: string | undefined) => Effect.Effect<{ Items?: readonly A[] | A[]; NextToken?: string; }, E, R>) => Effect.Effect; /** * Diff observed tags against desired tags and apply only the delta via the * v2 `tagResource`/`untagResource` operations. */ export declare const syncTags: (args_0: { resourceArn: string; oldTags: Record; newTags: Record; }) => Effect.Effect; //# sourceMappingURL=common.d.ts.map