syntax = "proto3"; package nu.types; message Nft { string nft_id = 1; // same as canonical node_id string node_id = 2; string owner = 3; // Address string collection_id = 4; // empty until CollectionClaim uint32 depth = 5; // path length from root repeated string lineage = 6; // ancestor node_ids root → this int64 minted_at = 7; } message Collection { string collection_id = 1; // leaf node_id of the path string owner = 2; // Address repeated string nft_ids = 3; // ordered root → leaf int64 claimed_at = 4; }