[{"data":1,"prerenderedAt":634},["ShallowReactive",2],{"navigation_docs":3,"-docs-testing-and-staging-simulator":268,"-docs-testing-and-staging-simulator-surround":629},[4,22,35,56,80,135,170,198,222,243],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[9,13,17],{"title":10,"path":11,"stem":12},"Overview","\u002Fdocs\u002Fgetting-started\u002Foverview","docs\u002F1.getting-started\u002F1.overview",{"title":14,"path":15,"stem":16},"Integration checklist","\u002Fdocs\u002Fgetting-started\u002Fintegration-checklist","docs\u002F1.getting-started\u002F2.integration-checklist",{"title":18,"path":19,"stem":20},"Environments and base URLs","\u002Fdocs\u002Fgetting-started\u002Fenvironments-and-base-urls","docs\u002F1.getting-started\u002F3.environments-and-base-urls",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F10.troubleshooting",[27,31],{"title":28,"path":29,"stem":30},"Common errors","\u002Fdocs\u002Ftroubleshooting\u002Fcommon-errors","docs\u002F10.troubleshooting\u002F1.common-errors",{"title":32,"path":33,"stem":34},"Support escalation","\u002Fdocs\u002Ftroubleshooting\u002Fsupport-escalation","docs\u002F10.troubleshooting\u002F2.support-escalation",{"title":36,"path":37,"stem":38,"children":39,"page":21},"Integration Flow","\u002Fdocs\u002Fintegration-flow","docs\u002F2.integration-flow",[40,44,48,52],{"title":41,"path":42,"stem":43},"Architecture","\u002Fdocs\u002Fintegration-flow\u002Farchitecture","docs\u002F2.integration-flow\u002F1.architecture",{"title":45,"path":46,"stem":47},"Launch session model","\u002Fdocs\u002Fintegration-flow\u002Flaunch-session-model","docs\u002F2.integration-flow\u002F2.launch-session-model",{"title":49,"path":50,"stem":51},"Order and wallet saga","\u002Fdocs\u002Fintegration-flow\u002Forder-and-wallet-saga","docs\u002F2.integration-flow\u002F3.order-and-wallet-saga",{"title":53,"path":54,"stem":55},"FX fees and rounding","\u002Fdocs\u002Fintegration-flow\u002Ffx-fees-and-rounding","docs\u002F2.integration-flow\u002F4.fx-fees-and-rounding",{"title":57,"path":58,"stem":59,"children":60,"page":21},"Dashboard","\u002Fdocs\u002Fdashboard","docs\u002F3.dashboard",[61,64,68,72,76],{"title":10,"path":62,"stem":63},"\u002Fdocs\u002Fdashboard\u002Foverview","docs\u002F3.dashboard\u002F1.overview",{"title":65,"path":66,"stem":67},"API keys","\u002Fdocs\u002Fdashboard\u002Fapi-keys","docs\u002F3.dashboard\u002F2.api-keys",{"title":69,"path":70,"stem":71},"Wallet adapter settings","\u002Fdocs\u002Fdashboard\u002Fwallet-adapter-settings","docs\u002F3.dashboard\u002F3.wallet-adapter-settings",{"title":73,"path":74,"stem":75},"Webhook endpoints","\u002Fdocs\u002Fdashboard\u002Fwebhook-endpoints","docs\u002F3.dashboard\u002F4.webhook-endpoints",{"title":77,"path":78,"stem":79},"Market visibility","\u002Fdocs\u002Fdashboard\u002Fmarket-visibility","docs\u002F3.dashboard\u002F5.market-visibility",{"title":81,"path":82,"stem":83,"children":84,"page":21},"Operator Api","\u002Fdocs\u002Foperator-api","docs\u002F4.operator-api",[85,89,92,96,100,104,107,111,115,119,123,127,131],{"title":86,"path":87,"stem":88},"Authentication","\u002Fdocs\u002Foperator-api\u002Fauthentication","docs\u002F4.operator-api\u002F1.authentication",{"title":73,"path":90,"stem":91},"\u002Fdocs\u002Foperator-api\u002Fwebhook-endpoints","docs\u002F4.operator-api\u002F10.webhook-endpoints",{"title":93,"path":94,"stem":95},"Webhook deliveries","\u002Fdocs\u002Foperator-api\u002Fwebhook-deliveries","docs\u002F4.operator-api\u002F11.webhook-deliveries",{"title":97,"path":98,"stem":99},"Simulator","\u002Fdocs\u002Foperator-api\u002Fsimulator","docs\u002F4.operator-api\u002F12.simulator",{"title":101,"path":102,"stem":103},"Error codes","\u002Fdocs\u002Foperator-api\u002Ferror-codes","docs\u002F4.operator-api\u002F13.error-codes",{"title":65,"path":105,"stem":106},"\u002Fdocs\u002Foperator-api\u002Fapi-keys","docs\u002F4.operator-api\u002F2.api-keys",{"title":108,"path":109,"stem":110},"Session","\u002Fdocs\u002Foperator-api\u002Fsession","docs\u002F4.operator-api\u002F3.session",{"title":112,"path":113,"stem":114},"Launch","\u002Fdocs\u002Foperator-api\u002Flaunch","docs\u002F4.operator-api\u002F4.launch",{"title":116,"path":117,"stem":118},"Users","\u002Fdocs\u002Foperator-api\u002Fusers","docs\u002F4.operator-api\u002F5.users",{"title":120,"path":121,"stem":122},"Markets","\u002Fdocs\u002Foperator-api\u002Fmarkets","docs\u002F4.operator-api\u002F6.markets",{"title":124,"path":125,"stem":126},"Trades","\u002Fdocs\u002Foperator-api\u002Ftrades","docs\u002F4.operator-api\u002F7.trades",{"title":128,"path":129,"stem":130},"Redemptions","\u002Fdocs\u002Foperator-api\u002Fredemptions","docs\u002F4.operator-api\u002F8.redemptions",{"title":132,"path":133,"stem":134},"Balance operations","\u002Fdocs\u002Foperator-api\u002Fbalance-operations","docs\u002F4.operator-api\u002F9.balance-operations",{"title":136,"path":137,"stem":138,"children":139,"page":21},"Wallet Adapter","\u002Fdocs\u002Fwallet-adapter","docs\u002F5.wallet-adapter",[140,143,146,150,154,158,162,166],{"title":10,"path":141,"stem":142},"\u002Fdocs\u002Fwallet-adapter\u002Foverview","docs\u002F5.wallet-adapter\u002F1.overview",{"title":86,"path":144,"stem":145},"\u002Fdocs\u002Fwallet-adapter\u002Fauthentication","docs\u002F5.wallet-adapter\u002F2.authentication",{"title":147,"path":148,"stem":149},"Balance","\u002Fdocs\u002Fwallet-adapter\u002Fbalance","docs\u002F5.wallet-adapter\u002F3.balance",{"title":151,"path":152,"stem":153},"Debit","\u002Fdocs\u002Fwallet-adapter\u002Fdebit","docs\u002F5.wallet-adapter\u002F4.debit",{"title":155,"path":156,"stem":157},"Credit","\u002Fdocs\u002Fwallet-adapter\u002Fcredit","docs\u002F5.wallet-adapter\u002F5.credit",{"title":159,"path":160,"stem":161},"Debit reversal","\u002Fdocs\u002Fwallet-adapter\u002Fdebit-reversal","docs\u002F5.wallet-adapter\u002F6.debit-reversal",{"title":163,"path":164,"stem":165},"Operation lookup","\u002Fdocs\u002Fwallet-adapter\u002Foperation-lookup","docs\u002F5.wallet-adapter\u002F7.operation-lookup",{"title":167,"path":168,"stem":169},"Idempotency","\u002Fdocs\u002Fwallet-adapter\u002Fidempotency","docs\u002F5.wallet-adapter\u002F8.idempotency",{"title":171,"path":172,"stem":173,"children":174,"page":21},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F6.webhooks",[175,178,182,186,190,194],{"title":10,"path":176,"stem":177},"\u002Fdocs\u002Fwebhooks\u002Foverview","docs\u002F6.webhooks\u002F1.overview",{"title":179,"path":180,"stem":181},"Signatures","\u002Fdocs\u002Fwebhooks\u002Fsignatures","docs\u002F6.webhooks\u002F2.signatures",{"title":183,"path":184,"stem":185},"Event envelope","\u002Fdocs\u002Fwebhooks\u002Fevent-envelope","docs\u002F6.webhooks\u002F3.event-envelope",{"title":187,"path":188,"stem":189},"Event types","\u002Fdocs\u002Fwebhooks\u002Fevent-types","docs\u002F6.webhooks\u002F4.event-types",{"title":191,"path":192,"stem":193},"Retry and replay","\u002Fdocs\u002Fwebhooks\u002Fretry-and-replay","docs\u002F6.webhooks\u002F5.retry-and-replay",{"title":195,"path":196,"stem":197},"Receiver examples","\u002Fdocs\u002Fwebhooks\u002Freceiver-examples","docs\u002F6.webhooks\u002F6.receiver-examples",{"title":199,"path":200,"stem":201,"children":202,"page":21},"Testing And Staging","\u002Fdocs\u002Ftesting-and-staging","docs\u002F7.testing-and-staging",[203,207,210,214,218],{"title":204,"path":205,"stem":206},"Staging overview","\u002Fdocs\u002Ftesting-and-staging\u002Fstaging-overview","docs\u002F7.testing-and-staging\u002F1.staging-overview",{"title":97,"path":208,"stem":209},"\u002Fdocs\u002Ftesting-and-staging\u002Fsimulator","docs\u002F7.testing-and-staging\u002F2.simulator",{"title":211,"path":212,"stem":213},"Wallet failure drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwallet-failure-drills","docs\u002F7.testing-and-staging\u002F3.wallet-failure-drills",{"title":215,"path":216,"stem":217},"Webhook drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwebhook-drills","docs\u002F7.testing-and-staging\u002F4.webhook-drills",{"title":219,"path":220,"stem":221},"Production cutover rehearsal","\u002Fdocs\u002Ftesting-and-staging\u002Fproduction-cutover-rehearsal","docs\u002F7.testing-and-staging\u002F5.production-cutover-rehearsal",{"title":223,"path":224,"stem":225,"children":226,"page":21},"Production Readiness","\u002Fdocs\u002Fproduction-readiness","docs\u002F8.production-readiness",[227,231,235,239],{"title":228,"path":229,"stem":230},"Checklist","\u002Fdocs\u002Fproduction-readiness\u002Fchecklist","docs\u002F8.production-readiness\u002F1.checklist",{"title":232,"path":233,"stem":234},"Operational runbook","\u002Fdocs\u002Fproduction-readiness\u002Foperational-runbook","docs\u002F8.production-readiness\u002F2.operational-runbook",{"title":236,"path":237,"stem":238},"Security","\u002Fdocs\u002Fproduction-readiness\u002Fsecurity","docs\u002F8.production-readiness\u002F3.security",{"title":240,"path":241,"stem":242},"Rollback","\u002Fdocs\u002Fproduction-readiness\u002Frollback","docs\u002F8.production-readiness\u002F4.rollback",{"title":244,"path":245,"stem":246,"children":247,"page":21},"Reference","\u002Fdocs\u002Freference","docs\u002F9.reference",[248,252,256,260,264],{"title":249,"path":250,"stem":251},"Statuses","\u002Fdocs\u002Freference\u002Fstatuses","docs\u002F9.reference\u002F1.statuses",{"title":253,"path":254,"stem":255},"Scopes","\u002Fdocs\u002Freference\u002Fscopes","docs\u002F9.reference\u002F2.scopes",{"title":257,"path":258,"stem":259},"Units and money","\u002Fdocs\u002Freference\u002Funits-and-money","docs\u002F9.reference\u002F3.units-and-money",{"title":261,"path":262,"stem":263},"Changelog","\u002Fdocs\u002Freference\u002Fchangelog","docs\u002F9.reference\u002F4.changelog",{"title":265,"path":266,"stem":267},"Virtual AMM","\u002Fdocs\u002Freference\u002Fvirtual-amm","docs\u002F9.reference\u002F5.virtual-amm",{"id":269,"title":97,"body":270,"description":622,"extension":623,"links":624,"meta":625,"navigation":626,"path":208,"seo":627,"stem":209,"__hash__":628},"docs\u002Fdocs\u002F7.testing-and-staging\u002F2.simulator.md",{"type":271,"value":272,"toc":613},"minimark",[273,277,281,286,294,300,304,328,336,340,367,371,472,476,564,568,588,592,609],[274,275,97],"h1",{"id":276},"simulator",[278,279,280],"p",{},"Simulator mode lets operator test Mini App integration without real wallet movement.",[282,283,285],"h2",{"id":284},"when-simulator-works","When simulator works",[278,287,288,289,293],{},"Simulator endpoints work only when operator is configured with ",[290,291,292],"code",{},"balanceAdapterType = simulator",".",[278,295,296,297,293],{},"If simulator is not enabled, simulator API returns ",[290,298,299],{},"404 SIMULATOR_DISABLED",[282,301,303],{"id":302},"main-endpoints","Main endpoints",[305,306,307,313,318,323],"ul",{},[308,309,310],"li",{},[290,311,312],{},"GET \u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002F{externalUserId}",[308,314,315],{},[290,316,317],{},"PUT \u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002F{externalUserId}",[308,319,320],{},[290,321,322],{},"POST \u002Fapi\u002Foperator\u002Fsimulator\u002Foperations",[308,324,325],{},[290,326,327],{},"GET \u002Fapi\u002Foperator\u002Fsimulator\u002Foperations\u002F{idempotencyKey}",[278,329,330,331,293],{},"See full contract at ",[332,333,334],"a",{"href":98},[290,335,98],{},[282,337,339],{"id":338},"recommended-flow","Recommended flow",[341,342,343,346,352,355,361,364],"ol",{},[308,344,345],{},"Create or top up simulator wallet for test user.",[308,347,348,349,293],{},"Launch Mini App for same ",[290,350,351],{},"external_user_id",[308,353,354],{},"Run buy flow.",[308,356,357,358,293],{},"Inspect simulator operation by ",[290,359,360],{},"idempotency_key",[308,362,363],{},"Confirm trade and webhook evidence.",[308,365,366],{},"Run sell or redemption flow.",[282,368,370],{"id":369},"example-wallet-setup","Example wallet setup",[372,373,378],"pre",{"className":374,"code":375,"language":376,"meta":377,"style":377},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X PUT \"$BASE_URL\u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002Ftest-user-001\" \\\n  -H \"Authorization: Bearer $OPERATOR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"balance_minor\": 500000\n  }'\n","bash","",[290,379,380,413,431,445,457,463],{"__ignoreMap":377},[381,382,385,389,393,396,400,404,407,410],"span",{"class":383,"line":384},"line",1,[381,386,388],{"class":387},"sBMFI","curl",[381,390,392],{"class":391},"sfazB"," -X",[381,394,395],{"class":391}," PUT",[381,397,399],{"class":398},"sMK4o"," \"",[381,401,403],{"class":402},"sTEyZ","$BASE_URL",[381,405,406],{"class":391},"\u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002Ftest-user-001",[381,408,409],{"class":398},"\"",[381,411,412],{"class":402}," \\\n",[381,414,416,419,421,424,427,429],{"class":383,"line":415},2,[381,417,418],{"class":391},"  -H",[381,420,399],{"class":398},[381,422,423],{"class":391},"Authorization: Bearer ",[381,425,426],{"class":402},"$OPERATOR_API_KEY",[381,428,409],{"class":398},[381,430,412],{"class":402},[381,432,434,436,438,441,443],{"class":383,"line":433},3,[381,435,418],{"class":391},[381,437,399],{"class":398},[381,439,440],{"class":391},"Content-Type: application\u002Fjson",[381,442,409],{"class":398},[381,444,412],{"class":402},[381,446,448,451,454],{"class":383,"line":447},4,[381,449,450],{"class":391},"  -d",[381,452,453],{"class":398}," '",[381,455,456],{"class":391},"{\n",[381,458,460],{"class":383,"line":459},5,[381,461,462],{"class":391},"    \"balance_minor\": 500000\n",[381,464,466,469],{"class":383,"line":465},6,[381,467,468],{"class":391},"  }",[381,470,471],{"class":398},"'\n",[282,473,475],{"id":474},"example-simulator-mutation","Example simulator mutation",[372,477,479],{"className":374,"code":478,"language":376,"meta":377,"style":377},"curl -X POST \"$BASE_URL\u002Fapi\u002Foperator\u002Fsimulator\u002Foperations\" \\\n  -H \"Authorization: Bearer $OPERATOR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"external_user_id\": \"test-user-001\",\n    \"direction\": \"debit\",\n    \"amount_minor\": 10000,\n    \"idempotency_key\": \"simulator:drill:001\"\n  }'\n",[290,480,481,501,515,527,535,540,545,551,557],{"__ignoreMap":377},[381,482,483,485,487,490,492,494,497,499],{"class":383,"line":384},[381,484,388],{"class":387},[381,486,392],{"class":391},[381,488,489],{"class":391}," POST",[381,491,399],{"class":398},[381,493,403],{"class":402},[381,495,496],{"class":391},"\u002Fapi\u002Foperator\u002Fsimulator\u002Foperations",[381,498,409],{"class":398},[381,500,412],{"class":402},[381,502,503,505,507,509,511,513],{"class":383,"line":415},[381,504,418],{"class":391},[381,506,399],{"class":398},[381,508,423],{"class":391},[381,510,426],{"class":402},[381,512,409],{"class":398},[381,514,412],{"class":402},[381,516,517,519,521,523,525],{"class":383,"line":433},[381,518,418],{"class":391},[381,520,399],{"class":398},[381,522,440],{"class":391},[381,524,409],{"class":398},[381,526,412],{"class":402},[381,528,529,531,533],{"class":383,"line":447},[381,530,450],{"class":391},[381,532,453],{"class":398},[381,534,456],{"class":391},[381,536,537],{"class":383,"line":459},[381,538,539],{"class":391},"    \"external_user_id\": \"test-user-001\",\n",[381,541,542],{"class":383,"line":465},[381,543,544],{"class":391},"    \"direction\": \"debit\",\n",[381,546,548],{"class":383,"line":547},7,[381,549,550],{"class":391},"    \"amount_minor\": 10000,\n",[381,552,554],{"class":383,"line":553},8,[381,555,556],{"class":391},"    \"idempotency_key\": \"simulator:drill:001\"\n",[381,558,560,562],{"class":383,"line":559},9,[381,561,468],{"class":391},[381,563,471],{"class":398},[282,565,567],{"id":566},"what-to-confirm","What to confirm",[305,569,570,573,578,585],{},[308,571,572],{},"idempotent repeat with same key returns same operation",[308,574,575,576],{},"operation lookup resolves by exact ",[290,577,360],{},[308,579,580,581],{},"resulting statuses match docs in ",[332,582,583],{"href":250},[290,584,250],{},[308,586,587],{},"webhook events arrive for completed business actions",[282,589,591],{"id":590},"safe-usage-rules","Safe usage rules",[305,593,594,597,603,606],{},[308,595,596],{},"use dedicated staging users only",[308,598,599,600,602],{},"keep deterministic ",[290,601,360],{}," per drill step",[308,604,605],{},"reset wallet state between drills when needed",[308,607,608],{},"do not use simulator evidence as proof of real operator wallet readiness",[610,611,612],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":377,"searchDepth":415,"depth":415,"links":614},[615,616,617,618,619,620,621],{"id":284,"depth":415,"text":285},{"id":302,"depth":415,"text":303},{"id":338,"depth":415,"text":339},{"id":369,"depth":415,"text":370},{"id":474,"depth":415,"text":475},{"id":566,"depth":415,"text":567},{"id":590,"depth":415,"text":591},"Use simulator tools to exercise wallet and webhook flows safely.","md",null,{},true,{"title":97,"description":622},"4tCcxQNyLVY3r-tGsxEtUObX01WyRIYoNFhoBOxC8_k",[630,632],{"title":204,"path":205,"stem":206,"description":631,"children":-1},"Use staging to validate the same integration contract before production.",{"title":211,"path":212,"stem":213,"description":633,"children":-1},"Required wallet mutation failure drills before production.",1781957290954]