$rotationKeys did:key strings, in priority order * @param string $signingKey did:key string for atproto signing key * @param string $handle bare handle (e.g. "alice.example.com") * @param string $pdsEndpoint full URL (e.g. "https://example.com") * * @return array the signed operation */ public function buildAndSignGenesisOp( array $rotationKeys, string $signingKey, string $handle, string $pdsEndpoint, Keypair $signer, ): array; /** * Sign an unsigned plcOp (operation lacking a `sig` field). * * @param array $unsignedOp * @return array the operation with a `sig` field appended */ public function signOp(array $unsignedOp, Keypair $signer): array; /** * Compute the `did:plc:*` derived from a signed (genesis) operation. * * @param array $signedOp */ public function didForOp(array $signedOp): string; /** * POST the signed operation to the PLC directory at the given DID. * * @param array $signedOp * * @throws PlcDirectoryClientException on transport/HTTP failure */ public function submit(string $did, array $signedOp): void; }