code: def pop(
      self, credentials: SyftVerifyKey, uid: UID
  ) -> Result[Optional[QueueItem], str]:
      item = self.get_by_uid(credentials=credentials, uid=uid)
      self.delete_by_uid(credentials=credentials, uid=uid)
      return item
  
imports: from enum import Enum
  from typing import Any
  from typing import Dict
  from typing import List
  from typing import Optional
  from result import Ok
  from result import Result
  from ...node.credentials import SyftVerifyKey
  from ...node.worker_settings import WorkerSettings
  from ...serde.serializable import serializable
  from ...store.document_store import BaseStash
  from ...store.document_store import DocumentStore
  from ...store.document_store import PartitionKey
  from ...store.document_store import PartitionSettings
  from ...store.document_store import QueryKeys
  from ...store.document_store import UIDPartitionKey
  from ...store.linked_obj import LinkedObject
  from ...types.syft_migration import migrate
  from ...types.syft_object import SYFT_OBJECT_VERSION_1
  from ...types.syft_object import SYFT_OBJECT_VERSION_2
  from ...types.syft_object import SYFT_OBJECT_VERSION_3
  from ...types.syft_object import SyftObject
  from ...types.transforms import drop
  from ...types.transforms import make_set_default
  from ...types.uid import UID
  from ...util.telemetry import instrument
  from ..action.action_permissions import ActionObjectPermission
  from ..response import SyftError
  from ..response import SyftSuccess
label_desc: Use image node_id 5 for calling the QueueStash obj's underlying member method code with example usage: obj.pop(credentials, uid) and returns: item