package nostr

import "context"

type Keyer interface {
	Signer
	Cipher
}

// A Signer provides basic public key signing methods.
type Signer interface {
	GetPublicKey(context.Context) (string, error)
	SignEvent(context.Context, *Event) error
}

// A Cipher provides NIP-44 encryption and decryption methods.
type Cipher interface {
	Encrypt(ctx context.Context, plaintext string, recipientPublicKey string) (base64ciphertext string, err error)
	Decrypt(ctx context.Context, base64ciphertext string, senderPublicKey string) (plaintext string, err error)
}