func (v Wall) EditComment(params WallEditCommentParams) (bool, error) {
	r, err := v.API.Request("wall.editComment", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
EditComment Edits a comment on a user wall or community wall.
package vkapi
import (
	"encoding/json"
	"github.com/stek29/vk"
)
type Wall struct {
	API vk.API
}
type WallGetParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	Domain string `url:"domain,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
	Filter string `url:"filter,omitempty"`
	Extended bool           `url:"extended,omitempty"`
	Fields   CSVStringSlice `url:"fields,omitempty"`
}
type WallGetResponse interface {
	isWallGet()
}
type WallGetResponseNormal struct {
	Count int       `json:"count,omitempty"`
	Items []vk.Post `json:"items,omitempty"`
}
func (WallGetResponseNormal) isWallGet() {}
type WallGetResponseExtended struct {
	Count    int        `json:"count,omitempty"`
	Items    []vk.Post  `json:"items,omitempty"`
	Profiles []vk.User  `json:"profiles,omitempty"`
	Groups   []vk.Group `json:"groups,omitempty"`
}
func (WallGetResponseExtended) isWallGet() {}
func (v Wall) Get(params WallGetParams) (WallGetResponse, error) {
	r, err := v.API.Request("wall.get", params)
	if err != nil {
		return nil, err
	}
	var resp WallGetResponse
	if params.Extended {
		var tmp WallGetResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp WallGetResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type WallSearchParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	Domain string `url:"domain,omitempty"`
	Query string `url:"query,omitempty"`
	OwnersOnly bool `url:"owners_only,omitempty"`
	Count int `url:"count,omitempty"`
	Offset int `url:"offset,omitempty"`
	Extended bool           `url:"extended,omitempty"`
	Fields   CSVStringSlice `url:"fields,omitempty"`
}
type WallSearchResponse interface {
	isWallSearch()
}
type WallSearchResponseNormal struct {
	Count int       `json:"count,omitempty"`
	Items []vk.Post `json:"items,omitempty"`
}
func (WallSearchResponseNormal) isWallSearch() {}
type WallSearchResponseExtended struct {
	Count    int        `json:"count,omitempty"`
	Items    []vk.Post  `json:"items,omitempty"`
	Profiles []vk.User  `json:"profiles,omitempty"`
	Groups   []vk.Group `json:"groups,omitempty"`
}
func (WallSearchResponseExtended) isWallSearch() {}
func (v Wall) Search(params WallSearchParams) (WallSearchResponse, error) {
	r, err := v.API.Request("wall.search", params)
	if err != nil {
		return nil, err
	}
	var resp WallSearchResponse
	if params.Extended {
		var tmp WallSearchResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp WallSearchResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type WallGetByIDParams struct {
	Posts CSVStringSlice `url:"posts"`
	Extended bool `url:"extended,omitempty"`
	CopyHistoryDepth int            `url:"copy_history_depth,omitempty"`
	Fields           CSVStringSlice `url:"fields,omitempty"`
}
type WallGetByIDResponse interface {
	isWallGetByID()
}
type WallGetByIDResponseNormal []vk.Post
func (WallGetByIDResponseNormal) isWallGetByID() {}
type WallGetByIDResponseExtended struct {
	Items    []vk.Post  `json:"items,omitempty"`
	Profiles []vk.User  `json:"profiles,omitempty"`
	Groups   []vk.Group `json:"groups,omitempty"`
}
func (WallGetByIDResponseExtended) isWallGetByID() {}
func (v Wall) GetByID(params WallGetByIDParams) (WallGetByIDResponse, error) {
	r, err := v.API.Request("wall.getById", params)
	if err != nil {
		return nil, err
	}
	var resp WallGetByIDResponse
	if params.Extended {
		var tmp WallGetByIDResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp WallGetByIDResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type WallPostParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	FriendsOnly bool `url:"friends_only,omitempty"`
	FromGroup bool `url:"from_group,omitempty"`
	Message string `url:"message,omitempty"`
	Attachments CSVStringSlice `url:"attachments,omitempty"`
	Services string `url:"services,omitempty"`
	Signed bool `url:"signed,omitempty"`
	PublishDate int `url:"publish_date,omitempty"`
	Lat float32 `url:"lat,omitempty"`
	Long float32 `url:"long,omitempty"`
	PlaceID int `url:"place_id,omitempty"`
	PostID        int    `url:"post_id,omitempty"`
	GUID          string `url:"guid,omitempty"`
	MarkAsAds     bool   `url:"mark_as_ads,omitempty"`
	CloseComments bool   `url:"close_comments,omitempty"`
}
type WallPostResponse struct {
	PostID int `json:"post_id,omitempty"`
}
func (v Wall) Post(params WallPostParams) (*WallPostResponse, error) {
	r, err := v.API.Request("wall.post", params)
	if err != nil {
		return nil, err
	}
	var resp WallPostResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type WallPostAdsStealthParams struct {
	OwnerID int `url:"owner_id"`
	Message string `url:"message,omitempty"`
	Attachments CSVStringSlice `url:"attachments,omitempty"`
	Signed bool `url:"signed,omitempty"`
	Lat float32 `url:"lat,omitempty"`
	Long float32 `url:"long,omitempty"`
	PlaceID int `url:"place_id,omitempty"`
	GUID string `url:"guid,omitempty"`
	LinkButton string `url:"link_button,omitempty"`
	LinkTitle string `url:"link_title,omitempty"`
	LinkImage string `url:"link_image,omitempty"`
}
type WallPostAdsStealthResponse struct {
	PostID int `json:"post_id,omitempty"`
}
func (v Wall) PostAdsStealth(params WallPostAdsStealthParams) (*WallPostAdsStealthResponse, error) {
	r, err := v.API.Request("wall.postAdsStealth", params)
	if err != nil {
		return nil, err
	}
	var resp WallPostAdsStealthResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type WallRepostParams struct {
	Object string `url:"object"`
	Message string `url:"message,omitempty"`
	GroupID   int  `url:"group_id,omitempty"`
	MarkAsAds bool `url:"mark_as_ads,omitempty"`
}
type WallRepostResponse struct {
	Success vk.BoolInt `json:"success,omitempty"`
	PostID int `json:"post_id,omitempty"`
	RepostsCount int `json:"reposts_count,omitempty"`
	LikesCount int `json:"likes_count,omitempty"`
}
func (v Wall) Repost(params WallRepostParams) (*WallRepostResponse, error) {
	r, err := v.API.Request("wall.repost", params)
	if err != nil {
		return nil, err
	}
	var resp WallRepostResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type WallGetRepostsParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
}
type WallGetRepostsResponse struct {
	Items    []vk.Post  `json:"items,omitempty"`
	Profiles []vk.User  `json:"profiles,omitempty"`
	Groups   []vk.Group `json:"groups,omitempty"`
}
func (v Wall) GetReposts(params WallGetRepostsParams) (*WallGetRepostsResponse, error) {
	r, err := v.API.Request("wall.getReposts", params)
	if err != nil {
		return nil, err
	}
	var resp WallGetRepostsResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type WallEditParams struct {
	OwnerID     int  `url:"owner_id,omitempty"`
	PostID      int  `url:"post_id"`
	FriendsOnly bool `url:"friends_only,omitempty"`
	Message string `url:"message,omitempty"`
	Attachments   CSVStringSlice `url:"attachments,omitempty"`
	Services      string         `url:"services,omitempty"`
	Signed        bool           `url:"signed,omitempty"`
	PublishDate   int            `url:"publish_date,omitempty"`
	Lat           float32        `url:"lat,omitempty"`
	Long          float32        `url:"long,omitempty"`
	PlaceID       int            `url:"place_id,omitempty"`
	MarkAsAds     bool           `url:"mark_as_ads,omitempty"`
	CloseComments bool           `url:"close_comments,omitempty"`
	PosterBkgID   int            `url:"poster_bkg_id,omitempty"`
}
func (v Wall) Edit(params WallEditParams) (bool, error) {
	r, err := v.API.Request("wall.edit", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallEditAdsStealthParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id"`
	Message string `url:"message,omitempty"`
	Attachments CSVStringSlice `url:"attachments,omitempty"`
	Signed bool `url:"signed,omitempty"`
	Lat float32 `url:"lat,omitempty"`
	Long float32 `url:"long,omitempty"`
	PlaceID int `url:"place_id,omitempty"`
	LinkButton string `url:"link_button,omitempty"`
	LinkTitle string `url:"link_title,omitempty"`
	LinkImage string `url:"link_image,omitempty"`
}
func (v Wall) EditAdsStealth(params WallEditAdsStealthParams) (bool, error) {
	r, err := v.API.Request("wall.editAdsStealth", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallDeleteParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id,omitempty"`
}
func (v Wall) Delete(params WallDeleteParams) (bool, error) {
	r, err := v.API.Request("wall.delete", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallRestoreParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id,omitempty"`
}
func (v Wall) Restore(params WallRestoreParams) (bool, error) {
	r, err := v.API.Request("wall.restore", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallPinParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id"`
}
func (v Wall) Pin(params WallPinParams) (bool, error) {
	r, err := v.API.Request("wall.pin", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallUnpinParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id"`
}
func (v Wall) Unpin(params WallUnpinParams) (bool, error) {
	r, err := v.API.Request("wall.unpin", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type WallGetCommentsParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id,omitempty"`
	NeedLikes      bool `url:"need_likes,omitempty"`
	StartCommentID int  `url:"start_comment_id,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
	Sort string `url:"sort,omitempty"`
	PreviewLength int            `url:"preview_length,omitempty"`
	Extended      bool           `url:"extended,omitempty"`
	Fields        CSVStringSlice `url:"fields,omitempty"`
	CommentID int `url:"comment_id,omitempty"`
	ThreadItemsCount int `url:"thread_items_count,omitempty"`
}
type WallGetCommentsResponse interface {
	isWallGetComments()
}
type WallGetCommentsResponseNormal struct {
	Count int          `json:"count,omitempty"`
	Items []vk.Comment `json:"items,omitempty"`
	CanPost vk.BoolInt `json:"can_post,omitempty"`
	GroupsCanPost bool `json:"groups_can_post,omitempty"`
	CurrentLevelCount int `json:"current_level_count,omitempty"`
}
func (WallGetCommentsResponseNormal) isWallGetComments() {}
type WallGetCommentsResponseExtended struct {
	Count int          `json:"count,omitempty"`
	Items []vk.Comment `json:"items,omitempty"`
	CanPost vk.BoolInt `json:"can_post,omitempty"`
	GroupsCanPost bool `json:"groups_can_post,omitempty"`
	CurrentLevelCount int        `json:"current_level_count,omitempty"`
	Profiles          []vk.User  `json:"profiles,omitempty"`
	Groups            []vk.Group `json:"groups,omitempty"`
}
func (WallGetCommentsResponseExtended) isWallGetComments() {}
func (v Wall) GetComments(params WallGetCommentsParams) (WallGetCommentsResponse, error) {
	r, err := v.API.Request("wall.getComments", params)
	if err != nil {
		return nil, err
	}
	var resp WallGetCommentsResponse
	if params.Extended {
		var tmp WallGetCommentsResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp WallGetCommentsResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type WallCreateCommentParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PostID int `url:"post_id"`
	FromGroup int `url:"from_group,omitempty"`
	Message string `url:"message,omitempty"`
	ReplyToComment int `url:"reply_to_comment,omitempty"`
	Attachments CSVStringSlice `url:"attachments,omitempty"`
	StickerID int `url:"sticker_id,omitempty"`
	GUID string `url:"guid,omitempty"`
}
type WallCreateCommentResponse struct {
	CommentID int `json:"comment_id,omitempty"`
}
func (v Wall) CreateComment(params WallCreateCommentParams) (*WallCreateCommentResponse, error) {
	r, err := v.API.Request("wall.createComment", params)
	if err != nil {
		return nil, err
	}
	var resp WallCreateCommentResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type WallEditCommentParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	CommentID int `url:"comment_id"`
	Message string `url:"message,omitempty"`
	Attachments CSVStringSlice `url:"attachments,omitempty"`
}