{"version":1,"pages":[{"id":"mwrk3UBjfQNilbnLPplz","title":"Propeller Protocol Lib","pathname":"/integrations","siteSpaceId":"sitesp_8cClH","description":""},{"id":"snYFUeDtzGNBXGM1PEon","title":"VM Integration","pathname":"/integrations/logic/vm-integration","siteSpaceId":"sitesp_8cClH","description":"","breadcrumbs":[{"label":"Logic"}]},{"id":"CnHpUNhHhg5XJ3clOoFi","title":"Ethereum: Solidity","pathname":"/integrations/logic/vm-integration/ethereum-solidity","siteSpaceId":"sitesp_8cClH","description":"Provide protocol logic using the ethereum virtual machine","breadcrumbs":[{"label":"Logic"},{"label":"VM Integration"}]},{"id":"GIo6tvPLu6qzRVKJJTm3","title":"Native Integration","pathname":"/integrations/logic/native-integration","siteSpaceId":"sitesp_8cClH","description":"","breadcrumbs":[{"label":"Logic"}]},{"id":"H3jloFpbM0zaJnl2a3BD","title":"Overview","pathname":"/integrations/indexing/overview","siteSpaceId":"sitesp_8cClH","description":"Understanding how the indexing layer works.","breadcrumbs":[{"label":"Indexing"}]},{"id":"UM3zaJLftZ3GnN4JKHGn","title":"General Integration Steps","pathname":"/integrations/indexing/general-integration-steps","siteSpaceId":"sitesp_8cClH","breadcrumbs":[{"label":"Indexing"}]},{"id":"TPspWAV8Dqa5GOhZgSxC","title":"1. Setup","pathname":"/integrations/indexing/general-integration-steps/1.-setup","siteSpaceId":"sitesp_8cClH","description":"Setting up your machine to develop indexing integrations.","breadcrumbs":[{"label":"Indexing"},{"label":"General Integration Steps"}]},{"id":"17ku9O2GWhzAlRJKbnku","title":"2. Getting Started","pathname":"/integrations/indexing/general-integration-steps/getting-started","siteSpaceId":"sitesp_8cClH","description":"Practical guide to write an indexing component.","breadcrumbs":[{"label":"Indexing"},{"label":"General Integration Steps"}]},{"id":"9xKTDXe2INUBAmczsGM9","title":"3. Substream Package Structure","pathname":"/integrations/indexing/general-integration-steps/3.-substream-package-structure","siteSpaceId":"sitesp_8cClH","breadcrumbs":[{"label":"Indexing"},{"label":"General Integration Steps"}]},{"id":"GQE7tNstn0AX9jQUATJT","title":"4. Testing","pathname":"/integrations/indexing/general-integration-steps/4.-testing","siteSpaceId":"sitesp_8cClH","description":"Testing your substream integrations.","breadcrumbs":[{"label":"Indexing"},{"label":"General Integration Steps"}]},{"id":"dg3kYeQIrIVE9EBpjpIS","title":"Common Problems & Patterns","pathname":"/integrations/indexing/common-problems-and-patterns","siteSpaceId":"sitesp_8cClH","breadcrumbs":[{"label":"Indexing"}]},{"id":"xqckO3JwYi1a1q8o5aQE","title":"Tracking Components","pathname":"/integrations/indexing/common-problems-and-patterns/tracking-components","siteSpaceId":"sitesp_8cClH","description":"Keeping track of a protocols components.","breadcrumbs":[{"label":"Indexing"},{"label":"Common Problems & Patterns"}]},{"id":"uLP63RpQ5Px3GJEX0sZV","title":"Normalizing relative ERC20 Balances","pathname":"/integrations/indexing/common-problems-and-patterns/normalizing-relative-erc20-balances","siteSpaceId":"sitesp_8cClH","description":"Converting relative balance changes into absolute balance values.","breadcrumbs":[{"label":"Indexing"},{"label":"Common Problems & Patterns"}]},{"id":"XjrWVX3eqovzB7P1ODk4","title":"Tracking Contract Storage","pathname":"/integrations/indexing/common-problems-and-patterns/tracking-contract-storage","siteSpaceId":"sitesp_8cClH","description":"Indexing contract storage.","breadcrumbs":[{"label":"Indexing"},{"label":"Common Problems & Patterns"}]},{"id":"mvZBoDcocnE1ZgVVBMig","title":"Custom protobuf models","pathname":"/integrations/indexing/common-problems-and-patterns/custom-protobuf-models","siteSpaceId":"sitesp_8cClH","description":"Custom intermediate message types.","breadcrumbs":[{"label":"Indexing"},{"label":"Common Problems & Patterns"}]},{"id":"L9U0oLxkmfgPRD79H4n1","title":"Reserved Attributes","pathname":"/integrations/indexing/reserved-attributes","siteSpaceId":"sitesp_8cClH","description":"","breadcrumbs":[{"label":"Indexing"}]},{"id":"gWNJyukiZ97NcMnPWGLW","title":"Overview","pathname":"/integrations/execution/overview","siteSpaceId":"sitesp_8cClH","description":"Understanding how the execution layer works.","breadcrumbs":[{"label":"Execution"}]},{"id":"KB5vk8kqC9Q0tdohi2R3","title":"Swap Executor","pathname":"/integrations/execution/swap-executor","siteSpaceId":"sitesp_8cClH","description":"How to implement a SwapExecutor for a Protocol","breadcrumbs":[{"label":"Execution"}]},{"id":"aUnOypZ8q9Lesd3Cobyd","title":"Swap Encoder","pathname":"/integrations/execution/swap-encoder","siteSpaceId":"sitesp_8cClH","description":"How to implement a SwapEncoder for a Protocol","breadcrumbs":[{"label":"Execution"}]}]}