You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: storage.go
    path of file: ./repos/wal-g/pkg/storages/fs
    
    the code of the file until where you have to start completion: package fs

import (
	"fmt"
	"os"

	"github.com/wal-g/wal-g/pkg/storages/storage"
)

var _ storage.HashableStorage = &Storage{}

type Storage struct {
	rootFolder storage.Folder
	hash       string
}

type Config struct {
	// RootPath points to the directory on the FS where this storage is located. All objects are created inside this dir.
	RootPath string
}

// TO
    
func NewStorage(config *Config, rootWraps ...storage.WrapRootFolder) (*Storage, error) {
	if _, err := os.Stat(config.RootPath); err != nil {
		return nil, fmt.Errorf("FS storage root directory doesn't exist or is inaccessible: %w", err)
	}

	var folder storage.Folder = NewFolder(config.RootPath, "")

	for _, wrap := range rootWraps {
		folder = wrap(folder)
	}

	hash, err := storage.ComputeConfigHash("fs", config)
	if err != nil {
		return nil, fmt.Errorf("compute config hash: %w", err)
	}

	return &Storage{folder, hash}, nil
}