package memory

import "context"

// Store is the interface for persistent memory operations.
// Defined in the pure package; implemented by shell/memory.
type Store interface {
	// Facts
	SaveFact(ctx context.Context, fact Fact) error
	RecallFacts(ctx context.Context, agentID, subject string, key *string) ([]Fact, error)
	DeleteFacts(ctx context.Context, agentID, subject string, key *string) error

	// Message history
	SaveMessage(ctx context.Context, msg HistoryMessage) error
	LoadMessages(ctx context.Context, agentID, roomID string, limit int) ([]HistoryMessage, error)
	DeleteMessages(ctx context.Context, agentID string, roomID *string) error

	// Lifecycle
	Close() error
}
