local d={}local t=require(script:FindFirstAncestor("\080\108\117\103\105\110\070\114\097\109\101\119\111\114\107"))local l local m local S local N function d.GetRoduxStore(t)local m=d:CreateGlobalReducer()local S=nil local N=table.pack(l.loggerMiddleware)return l.Store.new(m,S)end function d.CreateGlobalReducer(d)return l.combineReducers({[m.RoduxStoreKey.MACROS]=S:Get(),[m.RoduxStoreKey.STUDIO]=N:Get()})end function d.FrameworkInit(d)l=t:Require("\082\111\100\117\120")m=t:Require("\083\111\099\107\101\116\067\111\110\115\116\097\110\116\115")S=t:Require("\083\111\099\107\101\116\082\111\100\117\120\083\116\111\114\101\077\097\099\114\111\115\082\101\100\117\099\101\114")N=t:Require("\083\111\099\107\101\116\082\111\100\117\120\083\116\111\114\101\083\116\117\100\105\111\082\101\100\117\099\101\114")end function d.FrameworkStart(d) end return d
---
---The main script for running Socket (when the player has "activated" the plugin + has the widget window open)
---
---@class SocketRoduxStoreController
---
local SocketRoduxStoreController = {}

--------------------------------------------------
-- Types
-- ...

--------------------------------------------------
-- Dependencies
local PluginFramework = require(script:FindFirstAncestor("PluginFramework")) ---@type Framework
local Rodux ---@type Rodux
local SocketConstants ---@type SocketConstants
local SocketRoduxStoreMacrosReducer ---@type SocketRoduxStoreMacrosReducer
local SocketRoduxStoreStudioReducer ---@type SocketRoduxStoreStudioReducer

--------------------------------------------------
-- Constants
-- ...

--------------------------------------------------
-- Members

---
---Gives a fresh copy of our RoduxStore data structure
---@return RoduxStore
---
function SocketRoduxStoreController:GetRoduxStore()
    local roduxReducer = SocketRoduxStoreController:CreateGlobalReducer()
    local roduxInitialState = nil
    local roduxMiddlewares = table.pack(Rodux.loggerMiddleware)

    return Rodux.Store.new(roduxReducer, roduxInitialState)
end

---
---@private
---
---Creates the global reducer to pass to our rodux store
---@return RoduxReducer
---
function SocketRoduxStoreController:CreateGlobalReducer()
    return Rodux.combineReducers({
        [SocketConstants.RoduxStoreKey.MACROS] = SocketRoduxStoreMacrosReducer:Get(),
        [SocketConstants.RoduxStoreKey.STUDIO] = SocketRoduxStoreStudioReducer:Get(),
    })
end

---@private
function SocketRoduxStoreController:FrameworkInit()
    Rodux = PluginFramework:Require("Rodux")
    SocketConstants = PluginFramework:Require("SocketConstants")
    SocketRoduxStoreMacrosReducer = PluginFramework:Require("SocketRoduxStoreMacrosReducer")
    SocketRoduxStoreStudioReducer = PluginFramework:Require("SocketRoduxStoreStudioReducer")
end

---@private
function SocketRoduxStoreController:FrameworkStart() end

return SocketRoduxStoreController
