/**
 * The decorator lets you specify {@link PropertyMeta.id}.
 *
 * This is typically needed because those identifiers are usually generated automatically from the property name.
 * When a property is renamed the newly generated identifier (based on the new name) will differ and can break
 * existing data, links, or integrations. In such cases you should look up the identifier currently stored in the
 * {@link ResourceProperty} table and pass that identifier to the decorator
 *  so the {@link PropertyMeta.id} remains stable.
 *
 * Example:
 * ```typescript
 * / Before renaming:
 * class Student {
 *   firstName: string; / property id generated 'b3f1c8a2-5f7d-4e3b-8c2a-9d7f2c0a1b6e'
 *   lastName: string;
 * }
 *
 * / After renaming firstName -> givenName:
 * class Student {
 *   @resourcePropertyId ('b3f1c8a2-5f7d-4e3b-8c2a-9d7f2c0a1b6e')
 *   givenName: string; property id would be generated as '7a1f2e9c-3b4d-4f6a-9c8e-1b2a3d4c5e6f',
 *   decorator {@link resourcePropertyId} preserves 'b3f1c8a2-5f7d-4e3b-8c2a-9d7f2c0a1b6e',
 *   lastName: string;
 * }
 * ```
 *
 * Sets `{@link PropertyMeta.resourcePropertyId}`.
 *
 * @param oldId - The previous identifier for this property (copied from the database)
 */
export declare function resourcePropertyId(oldId: string): (target: object, key: string) => void;
