package iam import ( "context" "atlas9.dev/c/core" ) type Group struct { ID core.ID TenantID core.ID Path core.Path Name string } type GroupStore interface { Save(ctx context.Context, g *Group) (created bool, err error) Get(ctx context.Context, id core.ID) (*Group, error) GetByPath(ctx context.Context, tenantID core.ID, path core.Path) (*Group, error) Delete(ctx context.Context, id core.ID) error } type MembershipStore interface { Add(ctx context.Context, groupID core.ID, userID core.ID) error Remove(ctx context.Context, groupID core.ID, userID core.ID) error ListMembers(ctx context.Context, groupID core.ID) ([]core.ID, error) ListGroups(ctx context.Context, userID core.ID) ([]core.ID, error) }