import type { NodeShapeDefinition } from './definitions'; import type { ModelInfo } from './model-info'; import type { HTTPStatusCodes } from '../utils/http'; export declare enum ResourcePropertyBindingType { Path = 0, QueryParameter = 1, BodyParameter = 2 } export interface ResourcePropertyBinding { property: { binding: ResourcePropertyBindingType; name: string; }; target: { binding: ResourcePropertyBindingType; name: string; }; } export type SingleIteratorParamCompositeResource = BaseCompositeResource & { bindings: { urlParameters: ResourcePropertyBinding[]; queryParameters: ResourcePropertyBinding[]; bodyParameters: ResourcePropertyBinding[]; }; iterate: { binding: ResourcePropertyBindingType; name: string; }; }; export type CustomMappingCompositeResource = BaseCompositeResource & { mappingFunction: string; }; export type BaseCompositeResource = { childEndpoint: { path: string; name: string; id: string; }; envelope: { path: string; statusCode: string; body: string; shapeId: string; responsesWithKnownShapes: Array<{ shapeName: string; statusCode: HTTPStatusCodes; label: string; shapeId: string | null; }>; responses: Array<{ shapeName: string | null; statusCode: HTTPStatusCodes; label: string; shapeId: string | null; }>; visitedShapeIds: { [key: string]: true; }; }; }; export type CompositeResource = CustomMappingCompositeResource | SingleIteratorParamCompositeResource; export interface CompositeResourceMap { [key: string]: CompositeResource; } export declare function findCompositeByEnvelopeShape(shape: NodeShapeDefinition, modelInfo: ModelInfo): CompositeResource | undefined; export declare function isCompositeContainerShape(shape: NodeShapeDefinition, modelInfo: ModelInfo): boolean; export declare function isCustomMappingCompositeResource(compositeResource: CompositeResource): compositeResource is CustomMappingCompositeResource;