32 lines
828 B
Python
32 lines
828 B
Python
import time
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class Delegation:
|
|
delegator_pubkey: str
|
|
delegatee_pubkey: str
|
|
event_kind: int
|
|
duration_secs: int = 30 * 24 * 60 # default to 30 days
|
|
signature: str = None # set in PrivateKey.sign_delegation
|
|
|
|
@property
|
|
def expires(self) -> int:
|
|
return int(time.time()) + self.duration_secs
|
|
|
|
@property
|
|
def conditions(self) -> str:
|
|
return f"kind={self.event_kind}&created_at<{self.expires}"
|
|
|
|
@property
|
|
def delegation_token(self) -> str:
|
|
return f"nostr:delegation:{self.delegatee_pubkey}:{self.conditions}"
|
|
|
|
def get_tag(self) -> list[str]:
|
|
"""Called by Event"""
|
|
return [
|
|
"delegation",
|
|
self.delegator_pubkey,
|
|
self.conditions,
|
|
self.signature,
|
|
]
|