import * as Schema from 'effect/Schema';
/**
 * Entity function for creating schemas with a nicer API.
 * Takes a schema configuration object and a property ID mapping object.
 *
 * @example
 * ```typescript
 * const User = EntityDefinition({
 *   name: Type.String,
 *   age: Type.Number,
 * }, {
 *   name: "grc-20-name",
 *   age: "grc-20-age"
 * });
 * ```
 */
export declare function EntitySchema<T extends Record<string, (propertyId: string) => Schema.Schema<any> | Schema.PropertySignature<any, any, any, any, any, any, any>>, P extends Record<keyof T, string>>(schemaTypes: T, mapping: {
    types: Array<string>;
    properties: P;
}): Schema.Struct<{
    [K in keyof T]: ReturnType<T[K]> & {
        id: string;
    };
}>;
export declare function encodeToGrc20Json<T extends object, E>(schema: Schema.Schema<T, E>, value: T): Record<string, unknown>;
export declare function decodeFromGrc20Json<T extends object, E>(schema: Schema.Schema<T, E>, grc20Data: Record<string, unknown>): T;
declare const EntityNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
    readonly _tag: "EntityNotFoundError";
} & Readonly<A>;
export declare class EntityNotFoundError extends EntityNotFoundError_base<{
    id: string;
    type: Schema.Schema.AnyNoContext;
    cause?: unknown;
}> {
}
export {};
//# sourceMappingURL=entity.d.ts.map