import * as Schema from 'effect/Schema'; type SchemaBuilderReturn = Schema.Schema.AnyNoContext | Schema.PropertySignature; type SchemaBuilder = (propertyId: any) => SchemaBuilderReturn; type RelationPropertiesDefinition = Record; type RelationOptionsBase = { backlink?: boolean; }; type RelationOptions = RelationOptionsBase & { properties: RP; }; export declare const relationSchemaBrand: "__hypergraphRelationSchema"; type RelationSchemaMarker = { readonly [relationSchemaBrand]: true; }; export declare const relationBuilderBrand: "__hypergraphRelationBuilder"; type RelationBuilderMarker = { readonly [relationBuilderBrand]: true; }; type RelationMappingInput = RP extends RelationPropertiesDefinition ? { propertyId: string; properties: { [K in keyof RP]: Parameters[0]; }; } : string | { propertyId: string; }; type RelationPropertyValue = RP extends RelationPropertiesDefinition ? { readonly [K in keyof RP]: Schema.Schema.Type>; } : Record; type RelationPropertyEncoded = RP extends RelationPropertiesDefinition ? { readonly [K in keyof RP]: Schema.Schema.Encoded>; } : Record; type RelationMetadata = { readonly id: string; } & RelationPropertyValue; type RelationMetadataEncoded = { readonly id: string; } & RelationPropertyEncoded; type RelationSchema = Schema.Schema & { readonly id: string; readonly _relation: RelationMetadata; })[], readonly (Schema.Schema.Encoded & { readonly id: string; readonly _relation: RelationMetadataEncoded; })[], never> & RelationSchemaMarker; type RelationSchemaBuilder = ((mapping: RelationMappingInput) => RelationSchema) & RelationBuilderMarker; export type AnyRelationSchema = (Schema.Schema & RelationSchemaMarker) | (Schema.PropertySignature & RelationSchemaMarker); export type AnyRelationBuilder = RelationSchemaBuilder; /** * Creates a String schema with the specified GRC-20 property ID */ export declare const String: (propertyId: string) => Schema.SchemaClass; /** * Creates a Number schema with the specified GRC-20 property ID */ export declare const Number: (propertyId: string) => Schema.SchemaClass; /** * Creates a Boolean schema with the specified GRC-20 property ID */ export declare const Boolean: (propertyId: string) => Schema.SchemaClass; /** * Creates a Date schema with the specified GRC-20 property ID */ export declare const Date: (propertyId: string) => Schema.refine; /** * Creates a ScheduleString schema with the specified GRC-20 property ID */ export declare const ScheduleString: (propertyId: string) => Schema.SchemaClass; export declare const Point: (propertyId: string) => Schema.transform>; export declare function Relation(schema: S, options?: RelationOptionsBase): RelationSchemaBuilder; export declare function Relation(schema: S, options: RelationOptions): RelationSchemaBuilder; export declare function Backlink(schema: S, options?: RP extends RelationPropertiesDefinition ? RelationOptions : RelationOptionsBase): RelationSchemaBuilder; export declare const optional: (schemaFn: (propertyId: string) => S) => (propertyId: string) => Schema.optional & RelationSchemaMarker; export {}; //# sourceMappingURL=type.d.ts.map