--- /dev/null
+from socket import _RetAddress, socket
+from threading import Thread
+from typing import Protocol, Tuple
+
+from paramiko.channel import Channel
+from paramiko.message import Message
+from paramiko.pkey import PKey
+from paramiko.transport import Transport
+
+class _AgentProxy(Protocol):
+ def connect(self) -> None: ...
+ def close(self) -> None: ...
+
+cSSH2_AGENTC_REQUEST_IDENTITIES: bytes
+SSH2_AGENT_IDENTITIES_ANSWER: int
+cSSH2_AGENTC_SIGN_REQUEST: bytes
+SSH2_AGENT_SIGN_RESPONSE: int
+
+class AgentSSH:
+ def __init__(self) -> None: ...
+ def get_keys(self) -> Tuple[AgentKey, ...]: ...
+
+class AgentProxyThread(Thread):
+ def __init__(self, agent: _AgentProxy) -> None: ...
+ def run(self) -> None: ...
+
+class AgentLocalProxy(AgentProxyThread):
+ def __init__(self, agent: AgentServerProxy) -> None: ...
+ def get_connection(self) -> tuple[socket, _RetAddress]: ...
+
+class AgentRemoteProxy(AgentProxyThread):
+ def __init__(self, agent: AgentClientProxy, chan: Channel) -> None: ...
+ def get_connection(self) -> tuple[socket, _RetAddress]: ...
+
+class AgentClientProxy:
+ thread: Thread
+ def __init__(self, chanRemote: Channel) -> None: ...
+ def __del__(self) -> None: ...
+ def connect(self) -> None: ...
+ def close(self) -> None: ...
+
+class AgentServerProxy(AgentSSH):
+ thread: Thread
+ def __init__(self, t: Transport) -> None: ...
+ def __del__(self) -> None: ...
+ def connect(self) -> None: ...
+ def close(self) -> None: ...
+ def get_env(self) -> dict[str, str]: ...
+
+class AgentRequestHandler:
+ def __init__(self, chanClient: Channel) -> None: ...
+ def __del__(self) -> None: ...
+ def close(self) -> None: ...
+
+class Agent(AgentSSH):
+ def __init__(self) -> None: ...
+ def close(self) -> None: ...
+
+class AgentKey(PKey):
+ agent: AgentSSH
+ blob: bytes
+ public_blob: None
+ name: str
+ def __init__(self, agent: AgentSSH, blob: bytes) -> None: ...
+ def asbytes(self) -> bytes: ...
+ def get_name(self) -> str: ...
+ def sign_ssh_data(self, data: bytes) -> Message: ...