diff --git a/docs/assets/search.js b/docs/assets/search.js index 2445fb8..5ba482b 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\"},\"rows\":[{\"id\":0,\"kind\":64,\"name\":\"getPod\",\"url\":\"modules.html#getPod\",\"classes\":\"tsd-kind-function\"},{\"id\":1,\"kind\":64,\"name\":\"getSuperProposal\",\"url\":\"modules.html#getSuperProposal\",\"classes\":\"tsd-kind-function\"},{\"id\":2,\"kind\":64,\"name\":\"getUserPods\",\"url\":\"modules.html#getUserPods\",\"classes\":\"tsd-kind-function\"},{\"id\":3,\"kind\":64,\"name\":\"getAdminPods\",\"url\":\"modules.html#getAdminPods\",\"classes\":\"tsd-kind-function\"},{\"id\":4,\"kind\":64,\"name\":\"init\",\"url\":\"modules.html#init\",\"classes\":\"tsd-kind-function\"},{\"id\":5,\"kind\":32,\"name\":\"config\",\"url\":\"modules.html#config\",\"classes\":\"tsd-kind-variable\"},{\"id\":6,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#config.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"config\"},{\"id\":7,\"kind\":1024,\"name\":\"provider\",\"url\":\"modules.html#config.__type.provider\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":8,\"kind\":1024,\"name\":\"network\",\"url\":\"modules.html#config.__type.network\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"subgraphUrl\",\"url\":\"modules.html#config.__type.subgraphUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"gnosisUrl\",\"url\":\"modules.html#config.__type.gnosisUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":11,\"kind\":1024,\"name\":\"etherscanUrl\",\"url\":\"modules.html#config.__type.etherscanUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":12,\"kind\":1024,\"name\":\"etherscanApiKey\",\"url\":\"modules.html#config.__type.etherscanApiKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":13,\"kind\":64,\"name\":\"fetchPodUsers\",\"url\":\"modules.html#fetchPodUsers\",\"classes\":\"tsd-kind-function\"},{\"id\":14,\"kind\":64,\"name\":\"fetchUserPodIds\",\"url\":\"modules.html#fetchUserPodIds\",\"classes\":\"tsd-kind-function\"},{\"id\":15,\"kind\":64,\"name\":\"fetchAdminPodIds\",\"url\":\"modules.html#fetchAdminPodIds\",\"classes\":\"tsd-kind-function\"},{\"id\":16,\"kind\":64,\"name\":\"multiPodCreate\",\"url\":\"modules.html#multiPodCreate\",\"classes\":\"tsd-kind-function\"},{\"id\":17,\"kind\":64,\"name\":\"podifySafe\",\"url\":\"modules.html#podifySafe\",\"classes\":\"tsd-kind-function\"},{\"id\":18,\"kind\":64,\"name\":\"enableController\",\"url\":\"modules.html#enableController\",\"classes\":\"tsd-kind-function\"},{\"id\":19,\"kind\":128,\"name\":\"Pod\",\"url\":\"classes/Pod.html\",\"classes\":\"tsd-kind-class\"},{\"id\":20,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Pod.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":21,\"kind\":1024,\"name\":\"controller\",\"url\":\"classes/Pod.html#controller\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":22,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Pod.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":23,\"kind\":1024,\"name\":\"safe\",\"url\":\"classes/Pod.html#safe\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":24,\"kind\":1024,\"name\":\"nonce\",\"url\":\"classes/Pod.html#nonce\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":25,\"kind\":1024,\"name\":\"threshold\",\"url\":\"classes/Pod.html#threshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":26,\"kind\":1024,\"name\":\"ensName\",\"url\":\"classes/Pod.html#ensName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":27,\"kind\":1024,\"name\":\"admin\",\"url\":\"classes/Pod.html#admin\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":28,\"kind\":1024,\"name\":\"imageUrl\",\"url\":\"classes/Pod.html#imageUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":29,\"kind\":1024,\"name\":\"imageNoTextUrl\",\"url\":\"classes/Pod.html#imageNoTextUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":30,\"kind\":2048,\"name\":\"getProposals\",\"url\":\"classes/Pod.html#getProposals\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":31,\"kind\":2048,\"name\":\"getProposal\",\"url\":\"classes/Pod.html#getProposal\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":32,\"kind\":2048,\"name\":\"getSuperPods\",\"url\":\"classes/Pod.html#getSuperPods\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":33,\"kind\":2048,\"name\":\"getSuperProposals\",\"url\":\"classes/Pod.html#getSuperProposals\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":34,\"kind\":2048,\"name\":\"getMembers\",\"url\":\"classes/Pod.html#getMembers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":35,\"kind\":2048,\"name\":\"getMemberEOAs\",\"url\":\"classes/Pod.html#getMemberEOAs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":36,\"kind\":2048,\"name\":\"getMemberPods\",\"url\":\"classes/Pod.html#getMemberPods\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":37,\"kind\":2048,\"name\":\"isMember\",\"url\":\"classes/Pod.html#isMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":38,\"kind\":2048,\"name\":\"isAdmin\",\"url\":\"classes/Pod.html#isAdmin\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":39,\"kind\":2048,\"name\":\"isAdminPodMember\",\"url\":\"classes/Pod.html#isAdminPodMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":40,\"kind\":2048,\"name\":\"isSubPodMember\",\"url\":\"classes/Pod.html#isSubPodMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":41,\"kind\":2048,\"name\":\"getSubPodsByMember\",\"url\":\"classes/Pod.html#getSubPodsByMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":42,\"kind\":2048,\"name\":\"propose\",\"url\":\"classes/Pod.html#propose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":43,\"kind\":2048,\"name\":\"mintMember\",\"url\":\"classes/Pod.html#mintMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":44,\"kind\":2048,\"name\":\"burnMember\",\"url\":\"classes/Pod.html#burnMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":45,\"kind\":2048,\"name\":\"batchMintAndBurn\",\"url\":\"classes/Pod.html#batchMintAndBurn\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":46,\"kind\":2048,\"name\":\"transferMembership\",\"url\":\"classes/Pod.html#transferMembership\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":47,\"kind\":2048,\"name\":\"transferAdmin\",\"url\":\"classes/Pod.html#transferAdmin\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":48,\"kind\":2048,\"name\":\"migratePodToLatest\",\"url\":\"classes/Pod.html#migratePodToLatest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":49,\"kind\":2048,\"name\":\"ejectSafe\",\"url\":\"classes/Pod.html#ejectSafe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":50,\"kind\":2048,\"name\":\"createRejectProposal\",\"url\":\"classes/Pod.html#createRejectProposal\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":51,\"kind\":128,\"name\":\"Proposal\",\"url\":\"classes/Proposal.html\",\"classes\":\"tsd-kind-class\"},{\"id\":52,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Proposal.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":53,\"kind\":1024,\"name\":\"pod\",\"url\":\"classes/Proposal.html#pod\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":54,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Proposal.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":55,\"kind\":1024,\"name\":\"status\",\"url\":\"classes/Proposal.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":56,\"kind\":1024,\"name\":\"isSubProposal\",\"url\":\"classes/Proposal.html#isSubProposal\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":57,\"kind\":1024,\"name\":\"approvals\",\"url\":\"classes/Proposal.html#approvals\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":58,\"kind\":1024,\"name\":\"rejections\",\"url\":\"classes/Proposal.html#rejections\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":59,\"kind\":1024,\"name\":\"threshold\",\"url\":\"classes/Proposal.html#threshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":60,\"kind\":1024,\"name\":\"method\",\"url\":\"classes/Proposal.html#method\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":61,\"kind\":1024,\"name\":\"parameters\",\"url\":\"classes/Proposal.html#parameters\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":62,\"kind\":1024,\"name\":\"value\",\"url\":\"classes/Proposal.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":63,\"kind\":1024,\"name\":\"timestamp\",\"url\":\"classes/Proposal.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":64,\"kind\":2048,\"name\":\"approve\",\"url\":\"classes/Proposal.html#approve\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":65,\"kind\":2048,\"name\":\"reject\",\"url\":\"classes/Proposal.html#reject\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":66,\"kind\":2048,\"name\":\"executeApprove\",\"url\":\"classes/Proposal.html#executeApprove\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":67,\"kind\":2048,\"name\":\"executeReject\",\"url\":\"classes/Proposal.html#executeReject\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":68,\"kind\":4194304,\"name\":\"ProposalStatus\",\"url\":\"modules.html#ProposalStatus\",\"classes\":\"tsd-kind-type-alias\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,38.43]],[\"parent/0\",[]],[\"name/1\",[1,38.43]],[\"parent/1\",[]],[\"name/2\",[2,38.43]],[\"parent/2\",[]],[\"name/3\",[3,38.43]],[\"parent/3\",[]],[\"name/4\",[4,38.43]],[\"parent/4\",[]],[\"name/5\",[5,33.322]],[\"parent/5\",[]],[\"name/6\",[6,38.43]],[\"parent/6\",[5,2.992]],[\"name/7\",[7,38.43]],[\"parent/7\",[8,2.134]],[\"name/8\",[9,38.43]],[\"parent/8\",[8,2.134]],[\"name/9\",[10,38.43]],[\"parent/9\",[8,2.134]],[\"name/10\",[11,38.43]],[\"parent/10\",[8,2.134]],[\"name/11\",[12,38.43]],[\"parent/11\",[8,2.134]],[\"name/12\",[13,38.43]],[\"parent/12\",[8,2.134]],[\"name/13\",[14,38.43]],[\"parent/13\",[]],[\"name/14\",[15,38.43]],[\"parent/14\",[]],[\"name/15\",[16,38.43]],[\"parent/15\",[]],[\"name/16\",[17,38.43]],[\"parent/16\",[]],[\"name/17\",[18,38.43]],[\"parent/17\",[]],[\"name/18\",[19,38.43]],[\"parent/18\",[]],[\"name/19\",[20,7.369]],[\"parent/19\",[]],[\"name/20\",[21,33.322]],[\"parent/20\",[20,0.662]],[\"name/21\",[22,38.43]],[\"parent/21\",[20,0.662]],[\"name/22\",[23,33.322]],[\"parent/22\",[20,0.662]],[\"name/23\",[24,38.43]],[\"parent/23\",[20,0.662]],[\"name/24\",[25,38.43]],[\"parent/24\",[20,0.662]],[\"name/25\",[26,33.322]],[\"parent/25\",[20,0.662]],[\"name/26\",[27,38.43]],[\"parent/26\",[20,0.662]],[\"name/27\",[28,38.43]],[\"parent/27\",[20,0.662]],[\"name/28\",[29,38.43]],[\"parent/28\",[20,0.662]],[\"name/29\",[30,38.43]],[\"parent/29\",[20,0.662]],[\"name/30\",[31,38.43]],[\"parent/30\",[20,0.662]],[\"name/31\",[32,38.43]],[\"parent/31\",[20,0.662]],[\"name/32\",[33,38.43]],[\"parent/32\",[20,0.662]],[\"name/33\",[34,38.43]],[\"parent/33\",[20,0.662]],[\"name/34\",[35,38.43]],[\"parent/34\",[20,0.662]],[\"name/35\",[36,38.43]],[\"parent/35\",[20,0.662]],[\"name/36\",[37,38.43]],[\"parent/36\",[20,0.662]],[\"name/37\",[38,38.43]],[\"parent/37\",[20,0.662]],[\"name/38\",[39,38.43]],[\"parent/38\",[20,0.662]],[\"name/39\",[40,38.43]],[\"parent/39\",[20,0.662]],[\"name/40\",[41,38.43]],[\"parent/40\",[20,0.662]],[\"name/41\",[42,38.43]],[\"parent/41\",[20,0.662]],[\"name/42\",[43,38.43]],[\"parent/42\",[20,0.662]],[\"name/43\",[44,38.43]],[\"parent/43\",[20,0.662]],[\"name/44\",[45,38.43]],[\"parent/44\",[20,0.662]],[\"name/45\",[46,38.43]],[\"parent/45\",[20,0.662]],[\"name/46\",[47,38.43]],[\"parent/46\",[20,0.662]],[\"name/47\",[48,38.43]],[\"parent/47\",[20,0.662]],[\"name/48\",[49,38.43]],[\"parent/48\",[20,0.662]],[\"name/49\",[50,38.43]],[\"parent/49\",[20,0.662]],[\"name/50\",[51,38.43]],[\"parent/50\",[20,0.662]],[\"name/51\",[52,13.863]],[\"parent/51\",[]],[\"name/52\",[21,33.322]],[\"parent/52\",[52,1.245]],[\"name/53\",[20,7.369]],[\"parent/53\",[52,1.245]],[\"name/54\",[23,33.322]],[\"parent/54\",[52,1.245]],[\"name/55\",[53,38.43]],[\"parent/55\",[52,1.245]],[\"name/56\",[54,38.43]],[\"parent/56\",[52,1.245]],[\"name/57\",[55,38.43]],[\"parent/57\",[52,1.245]],[\"name/58\",[56,38.43]],[\"parent/58\",[52,1.245]],[\"name/59\",[26,33.322]],[\"parent/59\",[52,1.245]],[\"name/60\",[57,38.43]],[\"parent/60\",[52,1.245]],[\"name/61\",[58,38.43]],[\"parent/61\",[52,1.245]],[\"name/62\",[59,38.43]],[\"parent/62\",[52,1.245]],[\"name/63\",[60,38.43]],[\"parent/63\",[52,1.245]],[\"name/64\",[61,38.43]],[\"parent/64\",[52,1.245]],[\"name/65\",[62,38.43]],[\"parent/65\",[52,1.245]],[\"name/66\",[63,38.43]],[\"parent/66\",[52,1.245]],[\"name/67\",[64,38.43]],[\"parent/67\",[52,1.245]],[\"name/68\",[65,38.43]],[\"parent/68\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":6,\"name\":{\"6\":{}},\"parent\":{}}],[\"admin\",{\"_index\":28,\"name\":{\"27\":{}},\"parent\":{}}],[\"approvals\",{\"_index\":55,\"name\":{\"57\":{}},\"parent\":{}}],[\"approve\",{\"_index\":61,\"name\":{\"64\":{}},\"parent\":{}}],[\"batchmintandburn\",{\"_index\":46,\"name\":{\"45\":{}},\"parent\":{}}],[\"burnmember\",{\"_index\":45,\"name\":{\"44\":{}},\"parent\":{}}],[\"config\",{\"_index\":5,\"name\":{\"5\":{}},\"parent\":{\"6\":{}}}],[\"config.__type\",{\"_index\":8,\"name\":{},\"parent\":{\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{}}}],[\"constructor\",{\"_index\":21,\"name\":{\"20\":{},\"52\":{}},\"parent\":{}}],[\"controller\",{\"_index\":22,\"name\":{\"21\":{}},\"parent\":{}}],[\"createrejectproposal\",{\"_index\":51,\"name\":{\"50\":{}},\"parent\":{}}],[\"ejectsafe\",{\"_index\":50,\"name\":{\"49\":{}},\"parent\":{}}],[\"enablecontroller\",{\"_index\":19,\"name\":{\"18\":{}},\"parent\":{}}],[\"ensname\",{\"_index\":27,\"name\":{\"26\":{}},\"parent\":{}}],[\"etherscanapikey\",{\"_index\":13,\"name\":{\"12\":{}},\"parent\":{}}],[\"etherscanurl\",{\"_index\":12,\"name\":{\"11\":{}},\"parent\":{}}],[\"executeapprove\",{\"_index\":63,\"name\":{\"66\":{}},\"parent\":{}}],[\"executereject\",{\"_index\":64,\"name\":{\"67\":{}},\"parent\":{}}],[\"fetchadminpodids\",{\"_index\":16,\"name\":{\"15\":{}},\"parent\":{}}],[\"fetchpodusers\",{\"_index\":14,\"name\":{\"13\":{}},\"parent\":{}}],[\"fetchuserpodids\",{\"_index\":15,\"name\":{\"14\":{}},\"parent\":{}}],[\"getadminpods\",{\"_index\":3,\"name\":{\"3\":{}},\"parent\":{}}],[\"getmembereoas\",{\"_index\":36,\"name\":{\"35\":{}},\"parent\":{}}],[\"getmemberpods\",{\"_index\":37,\"name\":{\"36\":{}},\"parent\":{}}],[\"getmembers\",{\"_index\":35,\"name\":{\"34\":{}},\"parent\":{}}],[\"getpod\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{}}],[\"getproposal\",{\"_index\":32,\"name\":{\"31\":{}},\"parent\":{}}],[\"getproposals\",{\"_index\":31,\"name\":{\"30\":{}},\"parent\":{}}],[\"getsubpodsbymember\",{\"_index\":42,\"name\":{\"41\":{}},\"parent\":{}}],[\"getsuperpods\",{\"_index\":33,\"name\":{\"32\":{}},\"parent\":{}}],[\"getsuperproposal\",{\"_index\":1,\"name\":{\"1\":{}},\"parent\":{}}],[\"getsuperproposals\",{\"_index\":34,\"name\":{\"33\":{}},\"parent\":{}}],[\"getuserpods\",{\"_index\":2,\"name\":{\"2\":{}},\"parent\":{}}],[\"gnosisurl\",{\"_index\":11,\"name\":{\"10\":{}},\"parent\":{}}],[\"id\",{\"_index\":23,\"name\":{\"22\":{},\"54\":{}},\"parent\":{}}],[\"imagenotexturl\",{\"_index\":30,\"name\":{\"29\":{}},\"parent\":{}}],[\"imageurl\",{\"_index\":29,\"name\":{\"28\":{}},\"parent\":{}}],[\"init\",{\"_index\":4,\"name\":{\"4\":{}},\"parent\":{}}],[\"isadmin\",{\"_index\":39,\"name\":{\"38\":{}},\"parent\":{}}],[\"isadminpodmember\",{\"_index\":40,\"name\":{\"39\":{}},\"parent\":{}}],[\"ismember\",{\"_index\":38,\"name\":{\"37\":{}},\"parent\":{}}],[\"issubpodmember\",{\"_index\":41,\"name\":{\"40\":{}},\"parent\":{}}],[\"issubproposal\",{\"_index\":54,\"name\":{\"56\":{}},\"parent\":{}}],[\"method\",{\"_index\":57,\"name\":{\"60\":{}},\"parent\":{}}],[\"migratepodtolatest\",{\"_index\":49,\"name\":{\"48\":{}},\"parent\":{}}],[\"mintmember\",{\"_index\":44,\"name\":{\"43\":{}},\"parent\":{}}],[\"multipodcreate\",{\"_index\":17,\"name\":{\"16\":{}},\"parent\":{}}],[\"network\",{\"_index\":9,\"name\":{\"8\":{}},\"parent\":{}}],[\"nonce\",{\"_index\":25,\"name\":{\"24\":{}},\"parent\":{}}],[\"parameters\",{\"_index\":58,\"name\":{\"61\":{}},\"parent\":{}}],[\"pod\",{\"_index\":20,\"name\":{\"19\":{},\"53\":{}},\"parent\":{\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{}}}],[\"podifysafe\",{\"_index\":18,\"name\":{\"17\":{}},\"parent\":{}}],[\"proposal\",{\"_index\":52,\"name\":{\"51\":{}},\"parent\":{\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{},\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{}}}],[\"proposalstatus\",{\"_index\":65,\"name\":{\"68\":{}},\"parent\":{}}],[\"propose\",{\"_index\":43,\"name\":{\"42\":{}},\"parent\":{}}],[\"provider\",{\"_index\":7,\"name\":{\"7\":{}},\"parent\":{}}],[\"reject\",{\"_index\":62,\"name\":{\"65\":{}},\"parent\":{}}],[\"rejections\",{\"_index\":56,\"name\":{\"58\":{}},\"parent\":{}}],[\"safe\",{\"_index\":24,\"name\":{\"23\":{}},\"parent\":{}}],[\"status\",{\"_index\":53,\"name\":{\"55\":{}},\"parent\":{}}],[\"subgraphurl\",{\"_index\":10,\"name\":{\"9\":{}},\"parent\":{}}],[\"threshold\",{\"_index\":26,\"name\":{\"25\":{},\"59\":{}},\"parent\":{}}],[\"timestamp\",{\"_index\":60,\"name\":{\"63\":{}},\"parent\":{}}],[\"transferadmin\",{\"_index\":48,\"name\":{\"47\":{}},\"parent\":{}}],[\"transfermembership\",{\"_index\":47,\"name\":{\"46\":{}},\"parent\":{}}],[\"value\",{\"_index\":59,\"name\":{\"62\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = JSON.parse("{\"kinds\":{\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\"},\"rows\":[{\"id\":0,\"kind\":64,\"name\":\"getPod\",\"url\":\"modules.html#getPod\",\"classes\":\"tsd-kind-function\"},{\"id\":1,\"kind\":64,\"name\":\"getSuperProposal\",\"url\":\"modules.html#getSuperProposal\",\"classes\":\"tsd-kind-function\"},{\"id\":2,\"kind\":64,\"name\":\"getUserPods\",\"url\":\"modules.html#getUserPods\",\"classes\":\"tsd-kind-function\"},{\"id\":3,\"kind\":64,\"name\":\"getAdminPods\",\"url\":\"modules.html#getAdminPods\",\"classes\":\"tsd-kind-function\"},{\"id\":4,\"kind\":64,\"name\":\"init\",\"url\":\"modules.html#init\",\"classes\":\"tsd-kind-function\"},{\"id\":5,\"kind\":32,\"name\":\"config\",\"url\":\"modules.html#config\",\"classes\":\"tsd-kind-variable\"},{\"id\":6,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#config.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"config\"},{\"id\":7,\"kind\":1024,\"name\":\"provider\",\"url\":\"modules.html#config.__type.provider\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":8,\"kind\":1024,\"name\":\"multicall\",\"url\":\"modules.html#config.__type.multicall\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"network\",\"url\":\"modules.html#config.__type.network\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"subgraphUrl\",\"url\":\"modules.html#config.__type.subgraphUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":11,\"kind\":1024,\"name\":\"gnosisUrl\",\"url\":\"modules.html#config.__type.gnosisUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":12,\"kind\":1024,\"name\":\"etherscanUrl\",\"url\":\"modules.html#config.__type.etherscanUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":13,\"kind\":1024,\"name\":\"etherscanApiKey\",\"url\":\"modules.html#config.__type.etherscanApiKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"config.__type\"},{\"id\":14,\"kind\":64,\"name\":\"fetchPodUsers\",\"url\":\"modules.html#fetchPodUsers\",\"classes\":\"tsd-kind-function\"},{\"id\":15,\"kind\":64,\"name\":\"fetchUserPodIds\",\"url\":\"modules.html#fetchUserPodIds\",\"classes\":\"tsd-kind-function\"},{\"id\":16,\"kind\":64,\"name\":\"fetchAdminPodIds\",\"url\":\"modules.html#fetchAdminPodIds\",\"classes\":\"tsd-kind-function\"},{\"id\":17,\"kind\":64,\"name\":\"multiPodCreate\",\"url\":\"modules.html#multiPodCreate\",\"classes\":\"tsd-kind-function\"},{\"id\":18,\"kind\":64,\"name\":\"podifySafe\",\"url\":\"modules.html#podifySafe\",\"classes\":\"tsd-kind-function\"},{\"id\":19,\"kind\":64,\"name\":\"enableController\",\"url\":\"modules.html#enableController\",\"classes\":\"tsd-kind-function\"},{\"id\":20,\"kind\":128,\"name\":\"Pod\",\"url\":\"classes/Pod.html\",\"classes\":\"tsd-kind-class\"},{\"id\":21,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Pod.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":22,\"kind\":1024,\"name\":\"controller\",\"url\":\"classes/Pod.html#controller\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":23,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Pod.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":24,\"kind\":1024,\"name\":\"safe\",\"url\":\"classes/Pod.html#safe\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":25,\"kind\":1024,\"name\":\"nonce\",\"url\":\"classes/Pod.html#nonce\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":26,\"kind\":1024,\"name\":\"threshold\",\"url\":\"classes/Pod.html#threshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":27,\"kind\":1024,\"name\":\"ensName\",\"url\":\"classes/Pod.html#ensName\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":28,\"kind\":1024,\"name\":\"admin\",\"url\":\"classes/Pod.html#admin\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":29,\"kind\":1024,\"name\":\"imageUrl\",\"url\":\"classes/Pod.html#imageUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":30,\"kind\":1024,\"name\":\"imageNoTextUrl\",\"url\":\"classes/Pod.html#imageNoTextUrl\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":31,\"kind\":2048,\"name\":\"getProposals\",\"url\":\"classes/Pod.html#getProposals\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":32,\"kind\":2048,\"name\":\"getProposal\",\"url\":\"classes/Pod.html#getProposal\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":33,\"kind\":2048,\"name\":\"getSuperPods\",\"url\":\"classes/Pod.html#getSuperPods\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":34,\"kind\":2048,\"name\":\"getSuperProposals\",\"url\":\"classes/Pod.html#getSuperProposals\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":35,\"kind\":2048,\"name\":\"getMembers\",\"url\":\"classes/Pod.html#getMembers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":36,\"kind\":2048,\"name\":\"getMemberEOAs\",\"url\":\"classes/Pod.html#getMemberEOAs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":37,\"kind\":2048,\"name\":\"getMemberPods\",\"url\":\"classes/Pod.html#getMemberPods\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":38,\"kind\":2048,\"name\":\"isMember\",\"url\":\"classes/Pod.html#isMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":39,\"kind\":2048,\"name\":\"isAdmin\",\"url\":\"classes/Pod.html#isAdmin\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":40,\"kind\":2048,\"name\":\"isAdminPodMember\",\"url\":\"classes/Pod.html#isAdminPodMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":41,\"kind\":2048,\"name\":\"isSubPodMember\",\"url\":\"classes/Pod.html#isSubPodMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":42,\"kind\":2048,\"name\":\"getSubPodsByMember\",\"url\":\"classes/Pod.html#getSubPodsByMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":43,\"kind\":2048,\"name\":\"propose\",\"url\":\"classes/Pod.html#propose\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":44,\"kind\":2048,\"name\":\"mintMember\",\"url\":\"classes/Pod.html#mintMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":45,\"kind\":2048,\"name\":\"burnMember\",\"url\":\"classes/Pod.html#burnMember\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":46,\"kind\":2048,\"name\":\"batchMintAndBurn\",\"url\":\"classes/Pod.html#batchMintAndBurn\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":47,\"kind\":2048,\"name\":\"transferMembership\",\"url\":\"classes/Pod.html#transferMembership\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":48,\"kind\":2048,\"name\":\"transferAdmin\",\"url\":\"classes/Pod.html#transferAdmin\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":49,\"kind\":2048,\"name\":\"migratePodToLatest\",\"url\":\"classes/Pod.html#migratePodToLatest\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":50,\"kind\":2048,\"name\":\"ejectSafe\",\"url\":\"classes/Pod.html#ejectSafe\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":51,\"kind\":2048,\"name\":\"createRejectProposal\",\"url\":\"classes/Pod.html#createRejectProposal\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Pod\"},{\"id\":52,\"kind\":128,\"name\":\"Proposal\",\"url\":\"classes/Proposal.html\",\"classes\":\"tsd-kind-class\"},{\"id\":53,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Proposal.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":54,\"kind\":1024,\"name\":\"pod\",\"url\":\"classes/Proposal.html#pod\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":55,\"kind\":1024,\"name\":\"id\",\"url\":\"classes/Proposal.html#id\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":56,\"kind\":1024,\"name\":\"status\",\"url\":\"classes/Proposal.html#status\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":57,\"kind\":1024,\"name\":\"isSubProposal\",\"url\":\"classes/Proposal.html#isSubProposal\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":58,\"kind\":1024,\"name\":\"approvals\",\"url\":\"classes/Proposal.html#approvals\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":59,\"kind\":1024,\"name\":\"rejections\",\"url\":\"classes/Proposal.html#rejections\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":60,\"kind\":1024,\"name\":\"threshold\",\"url\":\"classes/Proposal.html#threshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":61,\"kind\":1024,\"name\":\"method\",\"url\":\"classes/Proposal.html#method\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":62,\"kind\":1024,\"name\":\"parameters\",\"url\":\"classes/Proposal.html#parameters\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":63,\"kind\":1024,\"name\":\"value\",\"url\":\"classes/Proposal.html#value\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":64,\"kind\":1024,\"name\":\"timestamp\",\"url\":\"classes/Proposal.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":65,\"kind\":2048,\"name\":\"approve\",\"url\":\"classes/Proposal.html#approve\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":66,\"kind\":2048,\"name\":\"reject\",\"url\":\"classes/Proposal.html#reject\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":67,\"kind\":2048,\"name\":\"executeApprove\",\"url\":\"classes/Proposal.html#executeApprove\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":68,\"kind\":2048,\"name\":\"executeReject\",\"url\":\"classes/Proposal.html#executeReject\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Proposal\"},{\"id\":69,\"kind\":4194304,\"name\":\"ProposalStatus\",\"url\":\"modules.html#ProposalStatus\",\"classes\":\"tsd-kind-type-alias\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,38.572]],[\"parent/0\",[]],[\"name/1\",[1,38.572]],[\"parent/1\",[]],[\"name/2\",[2,38.572]],[\"parent/2\",[]],[\"name/3\",[3,38.572]],[\"parent/3\",[]],[\"name/4\",[4,38.572]],[\"parent/4\",[]],[\"name/5\",[5,33.464]],[\"parent/5\",[]],[\"name/6\",[6,38.572]],[\"parent/6\",[5,3.011]],[\"name/7\",[7,38.572]],[\"parent/7\",[8,2.022]],[\"name/8\",[9,38.572]],[\"parent/8\",[8,2.022]],[\"name/9\",[10,38.572]],[\"parent/9\",[8,2.022]],[\"name/10\",[11,38.572]],[\"parent/10\",[8,2.022]],[\"name/11\",[12,38.572]],[\"parent/11\",[8,2.022]],[\"name/12\",[13,38.572]],[\"parent/12\",[8,2.022]],[\"name/13\",[14,38.572]],[\"parent/13\",[8,2.022]],[\"name/14\",[15,38.572]],[\"parent/14\",[]],[\"name/15\",[16,38.572]],[\"parent/15\",[]],[\"name/16\",[17,38.572]],[\"parent/16\",[]],[\"name/17\",[18,38.572]],[\"parent/17\",[]],[\"name/18\",[19,38.572]],[\"parent/18\",[]],[\"name/19\",[20,38.572]],[\"parent/19\",[]],[\"name/20\",[21,7.511]],[\"parent/20\",[]],[\"name/21\",[22,33.464]],[\"parent/21\",[21,0.676]],[\"name/22\",[23,38.572]],[\"parent/22\",[21,0.676]],[\"name/23\",[24,33.464]],[\"parent/23\",[21,0.676]],[\"name/24\",[25,38.572]],[\"parent/24\",[21,0.676]],[\"name/25\",[26,38.572]],[\"parent/25\",[21,0.676]],[\"name/26\",[27,33.464]],[\"parent/26\",[21,0.676]],[\"name/27\",[28,38.572]],[\"parent/27\",[21,0.676]],[\"name/28\",[29,38.572]],[\"parent/28\",[21,0.676]],[\"name/29\",[30,38.572]],[\"parent/29\",[21,0.676]],[\"name/30\",[31,38.572]],[\"parent/30\",[21,0.676]],[\"name/31\",[32,38.572]],[\"parent/31\",[21,0.676]],[\"name/32\",[33,38.572]],[\"parent/32\",[21,0.676]],[\"name/33\",[34,38.572]],[\"parent/33\",[21,0.676]],[\"name/34\",[35,38.572]],[\"parent/34\",[21,0.676]],[\"name/35\",[36,38.572]],[\"parent/35\",[21,0.676]],[\"name/36\",[37,38.572]],[\"parent/36\",[21,0.676]],[\"name/37\",[38,38.572]],[\"parent/37\",[21,0.676]],[\"name/38\",[39,38.572]],[\"parent/38\",[21,0.676]],[\"name/39\",[40,38.572]],[\"parent/39\",[21,0.676]],[\"name/40\",[41,38.572]],[\"parent/40\",[21,0.676]],[\"name/41\",[42,38.572]],[\"parent/41\",[21,0.676]],[\"name/42\",[43,38.572]],[\"parent/42\",[21,0.676]],[\"name/43\",[44,38.572]],[\"parent/43\",[21,0.676]],[\"name/44\",[45,38.572]],[\"parent/44\",[21,0.676]],[\"name/45\",[46,38.572]],[\"parent/45\",[21,0.676]],[\"name/46\",[47,38.572]],[\"parent/46\",[21,0.676]],[\"name/47\",[48,38.572]],[\"parent/47\",[21,0.676]],[\"name/48\",[49,38.572]],[\"parent/48\",[21,0.676]],[\"name/49\",[50,38.572]],[\"parent/49\",[21,0.676]],[\"name/50\",[51,38.572]],[\"parent/50\",[21,0.676]],[\"name/51\",[52,38.572]],[\"parent/51\",[21,0.676]],[\"name/52\",[53,14.005]],[\"parent/52\",[]],[\"name/53\",[22,33.464]],[\"parent/53\",[53,1.26]],[\"name/54\",[21,7.511]],[\"parent/54\",[53,1.26]],[\"name/55\",[24,33.464]],[\"parent/55\",[53,1.26]],[\"name/56\",[54,38.572]],[\"parent/56\",[53,1.26]],[\"name/57\",[55,38.572]],[\"parent/57\",[53,1.26]],[\"name/58\",[56,38.572]],[\"parent/58\",[53,1.26]],[\"name/59\",[57,38.572]],[\"parent/59\",[53,1.26]],[\"name/60\",[27,33.464]],[\"parent/60\",[53,1.26]],[\"name/61\",[58,38.572]],[\"parent/61\",[53,1.26]],[\"name/62\",[59,38.572]],[\"parent/62\",[53,1.26]],[\"name/63\",[60,38.572]],[\"parent/63\",[53,1.26]],[\"name/64\",[61,38.572]],[\"parent/64\",[53,1.26]],[\"name/65\",[62,38.572]],[\"parent/65\",[53,1.26]],[\"name/66\",[63,38.572]],[\"parent/66\",[53,1.26]],[\"name/67\",[64,38.572]],[\"parent/67\",[53,1.26]],[\"name/68\",[65,38.572]],[\"parent/68\",[53,1.26]],[\"name/69\",[66,38.572]],[\"parent/69\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":6,\"name\":{\"6\":{}},\"parent\":{}}],[\"admin\",{\"_index\":29,\"name\":{\"28\":{}},\"parent\":{}}],[\"approvals\",{\"_index\":56,\"name\":{\"58\":{}},\"parent\":{}}],[\"approve\",{\"_index\":62,\"name\":{\"65\":{}},\"parent\":{}}],[\"batchmintandburn\",{\"_index\":47,\"name\":{\"46\":{}},\"parent\":{}}],[\"burnmember\",{\"_index\":46,\"name\":{\"45\":{}},\"parent\":{}}],[\"config\",{\"_index\":5,\"name\":{\"5\":{}},\"parent\":{\"6\":{}}}],[\"config.__type\",{\"_index\":8,\"name\":{},\"parent\":{\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{}}}],[\"constructor\",{\"_index\":22,\"name\":{\"21\":{},\"53\":{}},\"parent\":{}}],[\"controller\",{\"_index\":23,\"name\":{\"22\":{}},\"parent\":{}}],[\"createrejectproposal\",{\"_index\":52,\"name\":{\"51\":{}},\"parent\":{}}],[\"ejectsafe\",{\"_index\":51,\"name\":{\"50\":{}},\"parent\":{}}],[\"enablecontroller\",{\"_index\":20,\"name\":{\"19\":{}},\"parent\":{}}],[\"ensname\",{\"_index\":28,\"name\":{\"27\":{}},\"parent\":{}}],[\"etherscanapikey\",{\"_index\":14,\"name\":{\"13\":{}},\"parent\":{}}],[\"etherscanurl\",{\"_index\":13,\"name\":{\"12\":{}},\"parent\":{}}],[\"executeapprove\",{\"_index\":64,\"name\":{\"67\":{}},\"parent\":{}}],[\"executereject\",{\"_index\":65,\"name\":{\"68\":{}},\"parent\":{}}],[\"fetchadminpodids\",{\"_index\":17,\"name\":{\"16\":{}},\"parent\":{}}],[\"fetchpodusers\",{\"_index\":15,\"name\":{\"14\":{}},\"parent\":{}}],[\"fetchuserpodids\",{\"_index\":16,\"name\":{\"15\":{}},\"parent\":{}}],[\"getadminpods\",{\"_index\":3,\"name\":{\"3\":{}},\"parent\":{}}],[\"getmembereoas\",{\"_index\":37,\"name\":{\"36\":{}},\"parent\":{}}],[\"getmemberpods\",{\"_index\":38,\"name\":{\"37\":{}},\"parent\":{}}],[\"getmembers\",{\"_index\":36,\"name\":{\"35\":{}},\"parent\":{}}],[\"getpod\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{}}],[\"getproposal\",{\"_index\":33,\"name\":{\"32\":{}},\"parent\":{}}],[\"getproposals\",{\"_index\":32,\"name\":{\"31\":{}},\"parent\":{}}],[\"getsubpodsbymember\",{\"_index\":43,\"name\":{\"42\":{}},\"parent\":{}}],[\"getsuperpods\",{\"_index\":34,\"name\":{\"33\":{}},\"parent\":{}}],[\"getsuperproposal\",{\"_index\":1,\"name\":{\"1\":{}},\"parent\":{}}],[\"getsuperproposals\",{\"_index\":35,\"name\":{\"34\":{}},\"parent\":{}}],[\"getuserpods\",{\"_index\":2,\"name\":{\"2\":{}},\"parent\":{}}],[\"gnosisurl\",{\"_index\":12,\"name\":{\"11\":{}},\"parent\":{}}],[\"id\",{\"_index\":24,\"name\":{\"23\":{},\"55\":{}},\"parent\":{}}],[\"imagenotexturl\",{\"_index\":31,\"name\":{\"30\":{}},\"parent\":{}}],[\"imageurl\",{\"_index\":30,\"name\":{\"29\":{}},\"parent\":{}}],[\"init\",{\"_index\":4,\"name\":{\"4\":{}},\"parent\":{}}],[\"isadmin\",{\"_index\":40,\"name\":{\"39\":{}},\"parent\":{}}],[\"isadminpodmember\",{\"_index\":41,\"name\":{\"40\":{}},\"parent\":{}}],[\"ismember\",{\"_index\":39,\"name\":{\"38\":{}},\"parent\":{}}],[\"issubpodmember\",{\"_index\":42,\"name\":{\"41\":{}},\"parent\":{}}],[\"issubproposal\",{\"_index\":55,\"name\":{\"57\":{}},\"parent\":{}}],[\"method\",{\"_index\":58,\"name\":{\"61\":{}},\"parent\":{}}],[\"migratepodtolatest\",{\"_index\":50,\"name\":{\"49\":{}},\"parent\":{}}],[\"mintmember\",{\"_index\":45,\"name\":{\"44\":{}},\"parent\":{}}],[\"multicall\",{\"_index\":9,\"name\":{\"8\":{}},\"parent\":{}}],[\"multipodcreate\",{\"_index\":18,\"name\":{\"17\":{}},\"parent\":{}}],[\"network\",{\"_index\":10,\"name\":{\"9\":{}},\"parent\":{}}],[\"nonce\",{\"_index\":26,\"name\":{\"25\":{}},\"parent\":{}}],[\"parameters\",{\"_index\":59,\"name\":{\"62\":{}},\"parent\":{}}],[\"pod\",{\"_index\":21,\"name\":{\"20\":{},\"54\":{}},\"parent\":{\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{}}}],[\"podifysafe\",{\"_index\":19,\"name\":{\"18\":{}},\"parent\":{}}],[\"proposal\",{\"_index\":53,\"name\":{\"52\":{}},\"parent\":{\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{},\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{},\"66\":{},\"67\":{},\"68\":{}}}],[\"proposalstatus\",{\"_index\":66,\"name\":{\"69\":{}},\"parent\":{}}],[\"propose\",{\"_index\":44,\"name\":{\"43\":{}},\"parent\":{}}],[\"provider\",{\"_index\":7,\"name\":{\"7\":{}},\"parent\":{}}],[\"reject\",{\"_index\":63,\"name\":{\"66\":{}},\"parent\":{}}],[\"rejections\",{\"_index\":57,\"name\":{\"59\":{}},\"parent\":{}}],[\"safe\",{\"_index\":25,\"name\":{\"24\":{}},\"parent\":{}}],[\"status\",{\"_index\":54,\"name\":{\"56\":{}},\"parent\":{}}],[\"subgraphurl\",{\"_index\":11,\"name\":{\"10\":{}},\"parent\":{}}],[\"threshold\",{\"_index\":27,\"name\":{\"26\":{},\"60\":{}},\"parent\":{}}],[\"timestamp\",{\"_index\":61,\"name\":{\"64\":{}},\"parent\":{}}],[\"transferadmin\",{\"_index\":49,\"name\":{\"48\":{}},\"parent\":{}}],[\"transfermembership\",{\"_index\":48,\"name\":{\"47\":{}},\"parent\":{}}],[\"value\",{\"_index\":60,\"name\":{\"63\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/classes/Pod.html b/docs/classes/Pod.html index 3847ca8..3d65f1b 100644 --- a/docs/classes/Pod.html +++ b/docs/classes/Pod.html @@ -10,51 +10,51 @@

You can also check if a user is a member, admin, or member of those pods with the following functions:

const pod = await getPod(podAddress);

const isMember = await pod.isMember(userAddress);
// Not an async function
const isAdmin = pod.isAdmin(userAddress);

const isAdminPodMember = await pod.isAdminPodMember(userAddress);

// Includes both pods and users as sub pod members.
const isSubPodMember = await pod.isSubPodMember(userAddress);
-

Hierarchy

Index

Constructors

Hierarchy

Index

Constructors

  • new Pod(identifier: string | number): Pod
  • Note this constructor should not be called directly. Use getPod() instead.

    Parameters

    • identifier: string | number

      Can be either podId or safe address

      -

    Returns Pod

Properties

admin: string
property

Admin address

-
controller: string
ensName: string
property

ENS name

-
id: number
property

Pod ID

-
imageNoTextUrl: string
property

Link to Pod NFT image with no text

-
imageUrl: string
property

Link to Pod NFT image

-
nonce: number
property

Current nonce, i.e., the nonce of the active proposal

-
safe: string
property

Gnosis Safe address

-
threshold: number
property

Number of votes required to pass a proposal

-

Methods

  • batchMintAndBurn(mintMembers: string[], burnMembers: string[], signer?: Signer): Promise<any>

Returns Pod

Properties

admin: string
property

Admin address

+
controller: string
ensName: string
property

ENS name

+
id: number
property

Pod ID

+
imageNoTextUrl: string
property

Link to Pod NFT image with no text

+
imageUrl: string
property

Link to Pod NFT image

+
nonce: number
property

Current nonce, i.e., the nonce of the active proposal

+
safe: string
property

Gnosis Safe address

+
threshold: number
property

Number of votes required to pass a proposal

+

Methods

  • batchMintAndBurn(mintMembers: string[], burnMembers: string[], signer?: Signer): Promise<any>
  • Mints and burns members simultaneously.

    -

    Parameters

    • mintMembers: string[]
    • burnMembers: string[]
    • Optional signer: Signer

    Returns Promise<any>

  • burnMember(memberToBurn: string | string[], signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • +

    Parameters

    • mintMembers: string[]
    • burnMembers: string[]
    • Optional signer: Signer

    Returns Promise<any>

  • burnMember(memberToBurn: string | string[], signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Burns member(s) from this pod, or returns an unsigned transaction to do so.

    throws

    If signer is not admin

    Parameters

    • memberToBurn: string | string[]

      Can be a single address or an array of addresses

    • Optional signer: Signer

      If a signer is provided, then the tx will execute. Otherwise, an unsigned transaction will be returned.

      -

    Returns Promise<TransactionResponse | { data: string; to: string }>

  • createRejectProposal(nonce: number, signer: string | Signer): Promise<void>

Returns Promise<TransactionResponse | { data: string; to: string }>

  • createRejectProposal(nonce: number, signer: string | Signer): Promise<void>
  • Creates a reject proposal at a given nonce, mostly used to un-stuck the transaction queue

    Parameters

    • nonce: number

      nonce to create the reject transaction at

    • signer: string | Signer

      Signer or address of pod member

      -

    Returns Promise<void>

  • ejectSafe(signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>

Returns Promise<void>

  • ejectSafe(signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Ejects a safe from the Orca ecosystem. This zeroes out all ENS + Controller data, removes the Orca module, and burns the pod's MemberTokens If a signer is provided, it will execute the transaction. Otherwise it will return the unsigned tx.

    This function can also clean up data for safes that have already removed the Orca module, but note that the reverse resolver must be zeroed out by the safe manually in this case.

    -

    Parameters

    • Optional signer: Signer

    Returns Promise<TransactionResponse | { data: string; to: string }>

  • getMemberEOAs(): Promise<string[]>
  • +

    Parameters

    • Optional signer: Signer

    Returns Promise<TransactionResponse | { data: string; to: string }>

  • getMemberEOAs(): Promise<string[]>
  • Returns list of all member EOAs, not including any smart contract/pod members.

    -

    Returns Promise<string[]>

  • getMemberPods(): Promise<Pod[]>
  • getMemberPods(): Promise<Pod[]>
  • Returns Pod objects of all member pods.

    -

    Returns Promise<Pod[]>

  • getMembers(): Promise<string[]>
  • getMembers(): Promise<string[]>
  • Returns of list of all member addresses. Members include member pods and member EOAs

    -

    Returns Promise<string[]>

  • getProposal(identifier: string | number): Promise<Proposal>
  • getProposal(identifier: string | number): Promise<Proposal>
  • Gets a specific proposal by either nonce or the safeTxHash.

    Parameters

    • identifier: string | number

      Can be either the proposal id/nonce (preferred), or the safeTxHash

      -

    Returns Promise<Proposal>

Returns Promise<Proposal>

  • Returns an array of Proposal objects in reverse chronological order. Defaults to returning 5, which can be overridden by passing { limit: 10 } for example in the options.

    By default, the first Proposal will be the active proposal, if there is one, and then any executed proposals.

    @@ -62,40 +62,40 @@ proposals, then the active proposal, then executed proposals (up to the requested limit).

    Executed proposals can be fetched by passing { status: 'executed' } in the options. This will return only executed proposals.

    -

    Parameters

    Returns Promise<Proposal[]>

  • getSubPodsByMember(address: string): Promise<Pod[]>
  • getSubPodsByMember(address: string): Promise<Pod[]>
  • Returns all sub pods of this pod that an address is the member of.

    Parameters

    • address: string
      -

    Returns Promise<Pod[]>

  • getSuperPods(): Promise<Pod[]>

Returns Promise<Pod[]>

  • getSuperPods(): Promise<Pod[]>
  • Returns an array of this pod's super pods, i.e., pods that this pod is a member of

    -

    Returns Promise<Pod[]>

  • getSuperProposals(): Promise<Proposal[]>
  • getSuperProposals(): Promise<Proposal[]>
  • Returns an array of all active super proposals, i.e., active proposals of any super pods

    -

    Returns Promise<Proposal[]>

  • isAdmin(address: string): boolean
  • isAdmin(address: string): boolean
  • Checks if user is admin of this pod

    Parameters

    • address: string
      -

    Returns boolean

  • isAdminPodMember(address: string): Promise<boolean>

Returns boolean

  • isAdminPodMember(address: string): Promise<boolean>
  • Checks if given address is a member of the admin pod (if there is one) Returns false if there is no admin pod.

    -

    Parameters

    • address: string

    Returns Promise<boolean>

  • isMember(address: string): Promise<boolean>
  • +

    Parameters

    • address: string

    Returns Promise<boolean>

  • isMember(address: string): Promise<boolean>
  • Checks if user is a member of this pod

    Parameters

    • address: string
      -

    Returns Promise<boolean>

  • isSubPodMember(address: string): Promise<boolean>

Returns Promise<boolean>

  • isSubPodMember(address: string): Promise<boolean>
  • Checks if given address is a member of any subpods. Returns false if the user is a member of this pod, but not any sub pods

    Parameters

    • address: string
      -

    Returns Promise<boolean>

  • migratePodToLatest(signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>

Returns Promise<boolean>

  • migratePodToLatest(signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Migrates the pod to the latest version. Signer must be the admin of pod. If a signer is provided, it will execute the transaction. Otherwise it will return the unsigned tx.

    throws

    If signer is not pod admin

    Parameters

    • Optional signer: Signer

      Signer of pod admin

      -

    Returns Promise<TransactionResponse | { data: string; to: string }>

  • mintMember(newMember: string | string[], signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>

Returns Promise<TransactionResponse | { data: string; to: string }>

  • mintMember(newMember: string | string[], signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Mints member(s) to this pod, or returns an unsigned transaction to do so.

    throws

    if signer is not admin

    Parameters

    • newMember: string | string[]

      Can be a single address or an array of addresses

    • Optional signer: Signer

      If a signer is provided, then the tx will execute. Otherwise, an unsigned transaction will be returned.

      -

    Returns Promise<TransactionResponse | { data: string; to: string }>

  • propose(proposal: Proposal | TransactionResponse | { data: string; to: string }, sender: string, opts?: { nonce?: number }): Promise<Proposal>

Returns Promise<TransactionResponse | { data: string; to: string }>

  • propose(proposal: Proposal | TransactionResponse | { data: string; to: string }, sender: string, opts?: { nonce?: number }): Promise<Proposal>
  • Creates a proposal on the pod.

    If the proposal parameter is in the { data, to } format, this will create a proposal to execute an arbitrary smart contract function on this pod.

    @@ -119,7 +119,7 @@

    Address of sender

  • opts: { nonce?: number } = {}
    • Optional nonce?: number

      Optional nonce. This will create a proposal with the given nonce.

      -

Returns Promise<Proposal>

  • transferAdmin(addressToTransferTo: string, signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>

Returns Promise<Proposal>

  • transferAdmin(addressToTransferTo: string, signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Transfers admin role from signer's account to addressToTransferTo If a signer is provided, it will execute the transaction. Otherwise it will return the unsigned tx.

    throws

    If signer is not admin

    @@ -127,7 +127,7 @@

    Address that will receive admin role

  • Optional signer: Signer

    Signer of admin

    -

Returns Promise<TransactionResponse | { data: string; to: string }>

  • transferMembership(fromAddress: string, toAddress: string, signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>

Returns Promise<TransactionResponse | { data: string; to: string }>

  • transferMembership(fromAddress: string, toAddress: string, signer?: Signer): Promise<TransactionResponse | { data: string; to: string }>
  • Transfers a membership. If a signer is provided, it will execute the transaction. Otherwise it will return the unsigned tx.

    throws

    If toAddress is already a member

    throws

    if fromAddress is not a member

    diff --git a/docs/classes/Proposal.html b/docs/classes/Proposal.html index b0e2f7c..3a1c918 100644 --- a/docs/classes/Proposal.html +++ b/docs/classes/Proposal.html @@ -1,40 +1,40 @@ Proposal | @orcaprotocol/orca-sdk
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    The Proposal object is the interface for interacting with any Proposals. Can be gotten via the Pod object, through Pod.getProposals.

    -

    Hierarchy

    • Proposal

    Index

    Constructors

    • new Proposal(Pod: Pod, podNonce: number, safeTransaction: SafeTransaction, rejectTransaction?: SafeTransaction): Proposal

    Hierarchy

    • Proposal

    Index

    Constructors

    • new Proposal(Pod: Pod, podNonce: number, safeTransaction: SafeTransaction, rejectTransaction?: SafeTransaction): Proposal
    • Transforms a Safe Transaction object into one of our Proposals.

      Parameters

      • Pod: Pod
      • podNonce: number
      • safeTransaction: SafeTransaction
      • Optional rejectTransaction: SafeTransaction

        Optional reject transaction

        -

      Returns Proposal

    Properties

    approvals: string[]
    property

    Array of addresses that approved

    -
    id: number
    property

    Proposal ID, i.e., the Gnosis nonce. This is not necessarily a unique number

    -
    isSubProposal?: boolean
    property

    Whether or not this proposal corresponds to a superproposal

    -
    method?: string
    property

    Name of smart contract method being called, if there is one

    -
    parameters?: { name: string; type: string; value: string }[]
    property

    Parameters for the smart contract function being called, if there is one

    -
    pod: Pod
    property

    Pod object this Proposal is associated with

    -
    rejections: string[]
    property

    Array of addresses that rejected

    -
    property

    Proposal status, i.e., 'active', 'executed', or 'queued',

    -
    threshold: number
    property

    Number of votes required to pass/reject a proposal

    -
    timestamp: Date
    value: string
    property

    Eth value of transfer in Wei, if there is one

    -

    Methods

    • approve(signer: Signer): Promise<void>

    Returns Proposal

Properties

approvals: string[]
property

Array of addresses that approved

+
id: number
property

Proposal ID, i.e., the Gnosis nonce. This is not necessarily a unique number

+
isSubProposal?: boolean
property

Whether or not this proposal corresponds to a superproposal

+
method?: string
property

Name of smart contract method being called, if there is one

+
parameters?: { name: string; type: string; value: string }[]
property

Parameters for the smart contract function being called, if there is one

+
pod: Pod
property

Pod object this Proposal is associated with

+
rejections: string[]
property

Array of addresses that rejected

+
property

Proposal status, i.e., 'active', 'executed', or 'queued',

+
threshold: number
property

Number of votes required to pass/reject a proposal

+
timestamp: Date
value: string
property

Eth value of transfer in Wei, if there is one

+

Methods

  • approve(signer: Signer): Promise<void>
  • Votes to approve the proposal

    throws

    If signer already approved proposal

    throws

    If signer is not a pod member

    throws

    If there was an error approving Proposal

    Parameters

    • signer: Signer

      Signer of pod member

      -

    Returns Promise<void>

  • executeApprove(signer: Signer): Promise<any>

Returns Promise<void>

  • executeApprove(signer: Signer): Promise<any>
  • Executes proposal

    throws

    If not enough approvals to execute

    throws

    If signer was not part of the pod

    Parameters

    • signer: Signer

      Signer of pod member

      -

    Returns Promise<any>

  • executeReject(signer: Signer): Promise<any>

Returns Promise<any>

  • executeReject(signer: Signer): Promise<any>
  • Executes the rejection of proposal

    throws

    If not enough rejections to execute

    throws

    If signer was not part of the pod

    Parameters

    • signer: Signer

      Signer of pod member

      -

    Returns Promise<any>

  • reject(signer: Signer): Promise<void>

Returns Promise<any>

  • reject(signer: Signer): Promise<void>
  • Votes to reject the proposal

    throws

    If signer has already rejected proposal

    throws

    If signer was not pod member

    diff --git a/docs/modules.html b/docs/modules.html index 6a842cd..992ff43 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,47 +1,47 @@ -@orcaprotocol/orca-sdk
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    @orcaprotocol/orca-sdk

    Index

    Type aliases

    ProposalStatus: "active" | "executed" | "queued"

    Variables

    config: { etherscanApiKey: any; etherscanUrl: any; gnosisUrl: any; network: any; provider: any; subgraphUrl: any } = ...
    +@orcaprotocol/orca-sdk
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    @orcaprotocol/orca-sdk

    Index

    Type aliases

    ProposalStatus: "active" | "executed" | "queued"

    Variables

    config: { etherscanApiKey: any; etherscanUrl: any; gnosisUrl: any; multicall: any; network: any; provider: any; subgraphUrl: any } = ...

    The config object. This object should not be manipulated directly, and is exported mostly for debug purposes.

    -

    Type declaration

    • etherscanApiKey: any
    • etherscanUrl: any
    • gnosisUrl: any
    • network: any
    • provider: any
    • subgraphUrl: any

    Functions

    • enableController(safe: string, signer: Signer): Promise<void>
    • +

      Type declaration

      • etherscanApiKey: any
      • etherscanUrl: any
      • gnosisUrl: any
      • multicall: any
      • network: any
      • provider: any
      • subgraphUrl: any

    Functions

    • enableController(safe: string, signer: Signer): Promise<void>
    • Creates a SafeTx on a safe to enable the latest Controller as a module.

      throws

      If a Controller module is already enabled. If you are attempting to upgrade versions, use Pod.migratePodToLatest.

      Parameters

      • safe: string

        Safe address

        -
      • signer: Signer

      Returns Promise<void>

    • fetchAdminPodIds(address: string): Promise<number[]>

    Returns Promise<void>

  • fetchAdminPodIds(address: string): Promise<number[]>
  • Returns an array of Pod IDs from sub graph that an address is the admin of This function bypasses Pod construction and is mostly used for optimization purposes. If you're unsure on what function to use, use getAdminPods instead.

    Parameters

    • address: string
      -

    Returns Promise<number[]>

  • fetchPodUsers(id: number): Promise<string[]>

Returns Promise<number[]>

  • fetchPodUsers(id: number): Promise<string[]>
  • Returns an array of addresses of all pod members.

    Parameters

    • id: number
      -

    Returns Promise<string[]>

  • fetchUserPodIds(address: string): Promise<number[]>

Returns Promise<string[]>

  • fetchUserPodIds(address: string): Promise<number[]>
  • Returns a list of Pod IDs from subgraph that user is a member of. This function bypasses Pod construction and is mostly used for optimization purposes. If you're unsure on what function to use, use getUserPods instead.

    Parameters

    • address: string
      -

    Returns Promise<number[]>

  • getAdminPods(address: string): Promise<Pod[]>

Returns Promise<number[]>

  • getAdminPods(address: string): Promise<Pod[]>
  • Gets an array of Pod objects that a user is the admin of

    Parameters

    • address: string

      user address

      -

    Returns Promise<Pod[]>

  • getPod(identifier: string | number): Promise<Pod>

Returns Promise<Pod[]>

  • getPod(identifier: string | number): Promise<Pod>
  • Gets a pod object.

    Parameters

    • identifier: string | number

      Pod ID (as number), safe address, or ENS name

      -

    Returns Promise<Pod>

Returns Promise<Pod>

  • Gets the super proposal that the sub proposal relates to

    throws

    If this proposal is not a sub proposal

    throws

    If the found super proposal does not relate to this sub proposal.

    -

    Parameters

    Returns Promise<Proposal>

  • getUserPods(address: string): Promise<Pod[]>
  • getUserPods(address: string): Promise<Pod[]>
  • Fetches an array of Pod objects that a user is a member of

    Parameters

    • address: string

      user address

      -

    Returns Promise<Pod[]>

  • init(input: { network: number; provider: Provider; subgraphUrl?: string }): void

Returns Promise<Pod[]>

  • init(input: { network: number; provider: Provider; subgraphUrl?: string }): void
  • Initializes the SDK. This should be called on app startup.

    Parameters

    • input: { network: number; provider: Provider; subgraphUrl?: string }
      • network: number

        Network ID. Currently supporting Mainnet (id 1) and Rinkeby (id 4)

      • provider: Provider
      • Optional subgraphUrl?: string

        Optional override for development/debug purposes.

        -

    Returns void

  • multiPodCreate(pods: { admin?: string; label: string; members: string[]; threshold: number }[], signer: Signer): Promise<any>

Returns void

  • multiPodCreate(pods: { admin?: string; label: string; members: string[]; threshold: number }[], signer: Signer): Promise<any>
  • Creates multiple pods simultaneously.

    Each pod requires an array of members, a threshold and label, with an optional admin. Members or admins can be other pods in this create action.

    @@ -54,7 +54,7 @@
     [
    {
    label: 'orcanauts',
    // This will add the below pods as sub pods to this newly created one.
    members: ['art-nauts', 'gov-nauts'],
    threshold: 1,
    },
    {
    label: 'art-nauts',
    members: ['0x1234...', '0x2345...'],
    threshold: 1,
    },
    {
    label: 'gov-nauts',
    members: ['0x3456...', '0x4567...'],
    threshold: 1,
    // This will add the above 'orcanauts' pod as the admin to this new pod.
    admin: 'orcanauts',
    }
    ]

    Parameters

    • pods: { admin?: string; label: string; members: string[]; threshold: number }[]
      -
    • signer: Signer

    Returns Promise<any>

  • podifySafe(args: { admin?: string; name: string; safe: string }, signer?: Signer): Promise<ethers.providers.TransactionResponse | { data: string; to: string }>

Returns Promise<any>

  • podifySafe(args: { admin?: string; name: string; safe: string }, signer?: Signer): Promise<ethers.providers.TransactionResponse | { data: string; to: string }>
  • Adds a Gnosis Safe to the pod ecosystem. If a signer is not provided, it instead returns the unsigned transaction.

    throws
      diff --git a/package-lock.json b/package-lock.json index 494ae17..43dc708 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0-semantically-released", "license": "ISC", "dependencies": { + "@0xsequence/multicall": "^0.40.5", "@ensdomains/ensjs": "^2.0.1", "@gnosis.pm/safe-core-sdk": "^2.3.2", "@gnosis.pm/safe-deployments": "^1.10.0", @@ -31,6 +32,44 @@ "typedoc": "^0.22.15" } }, + "node_modules/@0xsequence/abi": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-0.40.5.tgz", + "integrity": "sha512-ofZ1+mkLRI7EPGDZrIk0+yE0Sco9uaK3TiOVGOGtoacSUNB2xFzfiuZCvCvISvaMycpcsUTEHpNRwJSNPv84eQ==" + }, + "node_modules/@0xsequence/multicall": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/multicall/-/multicall-0.40.5.tgz", + "integrity": "sha512-uSE4BFGRWoiGTZgxSikubRsDXL6AiAG/WA0XwSssXtxsfhCe0P6lgn7Uyp32k0V0qzh4f3GPkMM9q1MbhJJ/Ag==", + "dependencies": { + "@0xsequence/abi": "^0.40.5", + "@0xsequence/network": "^0.40.5", + "@0xsequence/utils": "^0.40.5", + "@ethersproject/providers": "^5.5.1", + "ethers": "^5.5.2" + } + }, + "node_modules/@0xsequence/network": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-0.40.5.tgz", + "integrity": "sha512-ldEQYy6jAPL33SHmx2T8I+jlHzhy9t5g4fNqi7cdnoDuOEVW7ZC0t6087K/xy25pnxO35HyMNvu1bUNCPEOJhA==", + "dependencies": { + "@0xsequence/utils": "^0.40.5", + "@ethersproject/providers": "^5.5.1", + "ethers": "^5.5.2" + } + }, + "node_modules/@0xsequence/utils": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-0.40.5.tgz", + "integrity": "sha512-FYt/qjtbrnB6+O3IHvZBCXPg1wQ97V+8i2DJCQ22Henv2bAgv8qBzJDcyGVe3R0ZgBiqH+hknp0AgwNXfKyECw==", + "dependencies": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "ethers": "^5.5.2", + "js-base64": "^3.7.2" + } + }, "node_modules/@babel/cli": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.17.0.tgz", @@ -26136,6 +26175,11 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -37940,6 +37984,44 @@ } }, "dependencies": { + "@0xsequence/abi": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/abi/-/abi-0.40.5.tgz", + "integrity": "sha512-ofZ1+mkLRI7EPGDZrIk0+yE0Sco9uaK3TiOVGOGtoacSUNB2xFzfiuZCvCvISvaMycpcsUTEHpNRwJSNPv84eQ==" + }, + "@0xsequence/multicall": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/multicall/-/multicall-0.40.5.tgz", + "integrity": "sha512-uSE4BFGRWoiGTZgxSikubRsDXL6AiAG/WA0XwSssXtxsfhCe0P6lgn7Uyp32k0V0qzh4f3GPkMM9q1MbhJJ/Ag==", + "requires": { + "@0xsequence/abi": "^0.40.5", + "@0xsequence/network": "^0.40.5", + "@0xsequence/utils": "^0.40.5", + "@ethersproject/providers": "^5.5.1", + "ethers": "^5.5.2" + } + }, + "@0xsequence/network": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/network/-/network-0.40.5.tgz", + "integrity": "sha512-ldEQYy6jAPL33SHmx2T8I+jlHzhy9t5g4fNqi7cdnoDuOEVW7ZC0t6087K/xy25pnxO35HyMNvu1bUNCPEOJhA==", + "requires": { + "@0xsequence/utils": "^0.40.5", + "@ethersproject/providers": "^5.5.1", + "ethers": "^5.5.2" + } + }, + "@0xsequence/utils": { + "version": "0.40.5", + "resolved": "https://registry.npmjs.org/@0xsequence/utils/-/utils-0.40.5.tgz", + "integrity": "sha512-FYt/qjtbrnB6+O3IHvZBCXPg1wQ97V+8i2DJCQ22Henv2bAgv8qBzJDcyGVe3R0ZgBiqH+hknp0AgwNXfKyECw==", + "requires": { + "@ethersproject/abstract-signer": "^5.5.0", + "@ethersproject/properties": "^5.5.0", + "ethers": "^5.5.2", + "js-base64": "^3.7.2" + } + }, "@babel/cli": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.17.0.tgz", @@ -57943,6 +58025,11 @@ } } }, + "js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, "js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", diff --git a/package.json b/package.json index e74487a..735bd86 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "typedoc": "^0.22.15" }, "dependencies": { + "@0xsequence/multicall": "^0.40.5", "@ensdomains/ensjs": "^2.0.1", "@gnosis.pm/safe-core-sdk": "^2.3.2", "@gnosis.pm/safe-deployments": "^1.10.0", diff --git a/scripts/sandbox.ts b/scripts/sandbox.ts index 3637b9e..22c588e 100644 --- a/scripts/sandbox.ts +++ b/scripts/sandbox.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers'; -import { init } from '../src'; +import { getUserPods, init } from '../src'; import { getPod, multiPodCreate } from '../src'; import { accountOne, accountTwo, adminPodAddress } from '../env.json'; import { setup, sleep } from './utils'; @@ -27,24 +27,11 @@ const multiPodInput = [ async function main() { const { walletOne, dummyAccount } = setup(4); - const pod = await getPod('multi-child2.pod.eth'); - console.log('pod', pod); - // await pod.propose( - // (await pod.burnMember(walletOne.address)) as { data: string; to: string }, - // walletOne.address, - // ); - const [props] = await pod.getProposals(); - await props.approve(walletOne); - console.log('props', props[0]); - // await pod.propose(await pod.ejectSafe(), walletOne.address); - - // await pod.propose( - // (await pod.burnMember(walletOne.address)) as { data: string; to: string }, - // walletOne.address, - // ); - - // console.log('dummyAccount', dummyAccount); - // await pod.ejectSafe(dummyAccount); + console.time(); + const pods = await getUserPods('0x1cC62cE7cb56ed99513823064295761f9b7C856e'); + console.log('pods', pods); + console.log('pods.length', pods.length); + console.timeEnd(); } main(); diff --git a/scripts/utils.ts b/scripts/utils.ts index 56694ac..a197df2 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -15,9 +15,10 @@ export function sleep(ms) { export function setup(network = 4) { const networkName = network === 1 ? 'mainnet' : 'rinkeby'; - const provider = new ethers.providers.InfuraProvider(networkName, { - infura: '69ecf3b10bc24c6a972972666fe950c8', - }); + const provider = new ethers.providers.InfuraProvider( + networkName, + '69ecf3b10bc24c6a972972666fe950c8', + ); init({ provider, network }); // Get two accounts diff --git a/src/Pod.ts b/src/Pod.ts index 771b75d..f7955c3 100644 --- a/src/Pod.ts +++ b/src/Pod.ts @@ -85,6 +85,7 @@ export default class Pod { let safe: string; let Controller: ethers.Contract; let Name: ENS.Name; + let fetchedAdmin; try { let fetchers; if (typeof identifier === 'string') { @@ -94,8 +95,14 @@ export default class Pod { } podId = fetchers.podId; safe = fetchers.Safe.address; - this.nonce = (await fetchers.Safe.nonce()).toNumber(); - this.threshold = (await fetchers.Safe.getThreshold()).toNumber(); + const fetched = await Promise.all([ + fetchers.Safe.nonce(), + fetchers.Safe.getThreshold(), + fetchers.Controller.podAdmin(podId), + ]); + this.nonce = fetched[0].toNumber(); + this.threshold = fetched[1].toNumber(); + [, , fetchedAdmin] = fetched; Controller = fetchers.Controller; Name = fetchers.Name; } catch (err) { @@ -105,7 +112,6 @@ export default class Pod { return null; } - const fetchedAdmin = await Controller.podAdmin(podId); this.controller = Controller.address; this.admin = fetchedAdmin === ethers.constants.AddressZero ? null : fetchedAdmin; this.id = podId; diff --git a/src/config.ts b/src/config.ts index 079a123..0259d0a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,4 +1,5 @@ import { ethers } from 'ethers'; +import { providers } from '@0xsequence/multicall'; /** * The config object. @@ -6,6 +7,7 @@ import { ethers } from 'ethers'; */ export const config = { provider: null, + multicall: null, network: null, subgraphUrl: null, gnosisUrl: null, @@ -50,6 +52,9 @@ export function init(input: { config.provider.getSigner = () => {}; } } + config.multicall = new providers.MulticallProvider(provider); + // Support ens.js + config.multicall.getSigner = () => {}; config.gnosisUrl = network === 1 diff --git a/src/fetchers.ts b/src/fetchers.ts index ae9e6d5..267c822 100644 --- a/src/fetchers.ts +++ b/src/fetchers.ts @@ -1,7 +1,8 @@ import { ethers } from 'ethers'; import { getDeployment, getControllerByAddress } from '@orcaprotocol/contracts'; import { getSafeSingletonDeployment } from '@gnosis.pm/safe-deployments'; -import ENS, { getEnsAddress } from '@ensdomains/ensjs'; +import ENS from '@ensdomains/ensjs'; +import getEns from './lib/services/ens'; import { config } from './config'; const GnosisSafe = getSafeSingletonDeployment({ version: process.env.GNOSIS_SAFE_VERSION }); @@ -16,12 +17,13 @@ export async function getPodFetchersByAddressOrEns(identifier: string): Promise< Controller: ethers.Contract; Name: ENS.Name; }> { - const { provider, network } = config; - const ens = new ENS({ provider, ensAddress: getEnsAddress(network) }); + const { network, multicall } = config; let address; // Name is the interface used to perform lookups on ENS let Name; + const ens = getEns(); + try { // Handle addresses address = ethers.utils.getAddress(identifier); @@ -34,7 +36,7 @@ export async function getPodFetchersByAddressOrEns(identifier: string): Promise< // Might be ENS name instead of address // If so, resolve it. The getText below will throw if it's not a valid pod. Name = ens.name(identifier); - address = await provider.resolveName(Name.name); + address = await multicall.resolveName(Name.name); } const podId = await Name.getText('podId'); @@ -45,7 +47,7 @@ export async function getPodFetchersByAddressOrEns(identifier: string): Promise< const MemberToken = new ethers.Contract( memberTokenDeployment.address, memberTokenDeployment.abi, - provider, + multicall, ); const controllerAddress = await MemberToken.memberController(podId); @@ -53,10 +55,10 @@ export async function getPodFetchersByAddressOrEns(identifier: string): Promise< const Controller = new ethers.Contract( controllerDeployment.address, controllerDeployment.abi, - provider, + multicall, ); - const Safe = new ethers.Contract(address, GnosisSafe.abi, provider); + const Safe = new ethers.Contract(address, GnosisSafe.abi, multicall); return { podId: parseInt(podId, 10), @@ -76,14 +78,14 @@ export async function getPodFetchersById(id: number): Promise<{ Controller: ethers.Contract; Name: ENS.Name; }> { - const { provider, network } = config; - const ens = new ENS({ provider, ensAddress: getEnsAddress(network) }); // Member token tracks Controller for a given pod ID + const { network, multicall } = config; + const ens = getEns(); const memberTokenDeployment = getDeployment('MemberToken', network); const MemberToken = new ethers.Contract( memberTokenDeployment.address, memberTokenDeployment.abi, - provider, + multicall, ); const controllerAddress = await MemberToken.memberController(id); if (controllerAddress === ethers.constants.AddressZero) { @@ -94,7 +96,7 @@ export async function getPodFetchersById(id: number): Promise<{ const Controller = new ethers.Contract( controllerDeployment.address, controllerDeployment.abi, - provider, + multicall, ); const safe = await Controller.podIdToSafe(id); @@ -102,7 +104,7 @@ export async function getPodFetchersById(id: number): Promise<{ if (!name) throw new Error('Address did not have an ENS name'); const Name = ens.name(name); - const Safe = new ethers.Contract(safe, GnosisSafe.abi, provider); + const Safe = new ethers.Contract(safe, GnosisSafe.abi, multicall); return { podId: id, diff --git a/src/lib/services/ens.ts b/src/lib/services/ens.ts new file mode 100644 index 0000000..2cd0672 --- /dev/null +++ b/src/lib/services/ens.ts @@ -0,0 +1,14 @@ +import ENS, { getEnsAddress } from '@ensdomains/ensjs'; +import { config } from '../../config'; + +let ens; + +const getEns = () => { + if (!ens) { + const { multicall, network } = config; + ens = new ENS({ provider: multicall, ensAddress: getEnsAddress(network) }); + } + return ens; +}; + +export default getEns;