async def upload_sticker_file(self, user_id: base.Integer, png_sticker: base.InputFile) -> types.File:
        """
        Use this method to upload a .png file with a sticker for later use in createNewStickerSet
        and addStickerToSet methods (can be used multiple times).

        Source: https://core.telegram.org/bots/api#uploadstickerfile

        :param user_id: User identifier of sticker file owner
        :type user_id: :obj:`base.Integer`
        :param png_sticker: Png image with the sticker, must be up to 512 kilobytes in size,
            dimensions must not exceed 512px, and either width or height must be exactly 512px.
        :type png_sticker: :obj:`base.InputFile`
        :return: Returns the uploaded File on success
        :rtype: :obj:`types.File`
        """
        payload = generate_payload(**locals(), exclude=['png_sticker'])

        files = {}
        prepare_file(payload, files, 'png_sticker', png_sticker)

        result = await self.request(api.Methods.UPLOAD_STICKER_FILE, payload, files)
        return types.File(**result)