IRelationRegistry

Git Source

Interface for registering and managing relations

Functions

relationRegister

Registers a new relation

function relationRegister(address code, bytes32 data, RelationRule memory rule, Adjacency[] memory adjs)
    external
    returns (uint64 id, Descriptor memory desc);

Parameters

NameTypeDescription
codeaddressOptional logic contract address
databytes32Hash of the relation’s associated data
ruleRelationRuleRule defining the behavior and constraints of the relation
adjsAdjacency[]Array of tail kind admissibility and degree limits

Returns

NameTypeDescription
iduint64New relation ID
descDescriptorDescriptor after registration

relationUpdate

Updates the data hash of a relation

function relationUpdate(uint64 id, bytes32 data) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID
databytes32New data hash

Returns

NameTypeDescription
descDescriptorUpdated descriptor

relationUpdate

Updates the data hash and adjacency configuration of a relation

function relationUpdate(uint64 id, bytes32 data, Adjacency[] memory adjs) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID
databytes32New data hash
adjsAdjacency[]New array of adjacency rules

Returns

NameTypeDescription
descDescriptorUpdated descriptor

relationUpgrade

Upgrades the kind or set revision of a relation

function relationUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID
kindRevuint32New kind revision (0 = no change)
setRevuint32New set revision (0 = no change)

Returns

NameTypeDescription
descDescriptorDescriptor after upgrade

relationTouch

Touches a relation (bumps revision without modifying content)

function relationTouch(uint64 id) external returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
descDescriptorDescriptor after touch

relationTransfer

Transfers ownership of a relation to a new address

function relationTransfer(uint64 id, address to) external returns (address from);

Parameters

NameTypeDescription
iduint64Relation ID
toaddressNew owner address

Returns

NameTypeDescription
fromaddressPrevious owner address

relationRevision

Resolves and validates a revision number

function relationRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Requested revision (0 = latest)

Returns

NameTypeDescription
revuint32Validated revision (0 if not found)

relationDescriptor

Returns descriptor of a relation at a specific revision

function relationDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at the specified revision

relationSnapshot

Returns descriptor and packed elements at a specific revision

function relationSnapshot(uint64 id, uint32 rev0)
    external
    view
    returns (Descriptor memory desc, bytes32[] memory elems);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at the revision
elemsbytes32[]Elements at the revision

relationOwner

Gets the current owner of a relation

function relationOwner(uint64 id) external view returns (address owner);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
owneraddressAddress of the current owner

relationSota

Returns the latest descriptor and current owner of a relation

function relationSota(uint64 id) external view returns (Descriptor memory desc, address owner);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
descDescriptorLatest descriptor
owneraddressCurrent owner

relationStatus

Checks whether all specified relations are active (rev > 0)

function relationStatus(uint64[] memory ids) external view returns (bool active);

Parameters

NameTypeDescription
idsuint64[]Array of relation IDs

Returns

NameTypeDescription
activeboolTrue if all are valid and active

relationRule

Returns the rule definition for a relation

function relationRule(uint64 id) external view returns (RelationRule memory rule);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
ruleRelationRulePossession and linkage rule for the relation

relationAdmit

Checks if a relation admits a specific kind as tail

function relationAdmit(uint64 id, uint32 rev, uint64 kind)
    external
    view
    returns (bool admit, uint48 effKind, uint16 effDegs, uint48 totalKind, uint16 totalDegs);

Parameters

NameTypeDescription
iduint64Relation ID
revuint32Revision to check
kinduint64Tail kind ID to evaluate

Returns

NameTypeDescription
admitboolWhether the kind is admitted
effKinduint48Matched kind (0 = wildcard match)
effDegsuint16Degree bounds for the matched kind
totalKinduint48Special marker for total-kind (2^48-1 if defined)
totalDegsuint16Degree bounds for the total-kind

Events

RelationRegistered

Emitted when a new relation is registered

event RelationRegistered(
    uint64 id, Descriptor desc, address code, bytes32 data, RelationRule rule, Adjacency[] adjs, address owner
);

Parameters

NameTypeDescription
iduint64ID of the relation
descDescriptorDescriptor of the relation
codeaddressOptional logic contract address
databytes32Hash of the associated metadata or logic
ruleRelationRuleRelation rule defining interaction logic
adjsAdjacency[]List of admitted tail kinds and degree constraints
owneraddressAddress of the relation's owner

RelationUpdated

Emitted when a relation is updated

event RelationUpdated(uint64 id, Descriptor desc, bytes32 data);

Parameters

NameTypeDescription
iduint64ID of the relation
descDescriptorUpdated descriptor
databytes32New data hash

RelationUpgraded

Emitted when a relation is upgraded (kind/set revision bumped)

event RelationUpgraded(uint64 id, Descriptor desc);

Parameters

NameTypeDescription
iduint64ID of the relation
descDescriptorDescriptor after upgrade

RelationTouched

Emitted when a relation is touched (revision incremented without content change)

event RelationTouched(uint64 id, Descriptor desc);

Parameters

NameTypeDescription
iduint64ID of the relation
descDescriptorDescriptor after touch

RelationTransferred

Emitted when ownership of a relation is transferred

event RelationTransferred(uint64 id, address from, address to);

Parameters

NameTypeDescription
iduint64ID of the relation
fromaddressPrevious owner
toaddressNew owner