type FederationIngressEndpoint { transport: String! url: String! priority: Int! region: String! } input FederationIngressEndpointInput { transport: String url: String priority: Int region: String } type FederationWitnessHead { witnessId: String! head: String! epoch: Int! issuedAt: String! issuer: String! digest: String! } input FederationWitnessHeadInput { witnessId: String head: String epoch: Int issuedAt: String issuer: String digest: String } type FederationRouteHop { index: Int! chainId: ID! endpoint: String! witnessDigest: String! } input FederationRouteHopInput { index: Int chainId: ID endpoint: String witnessDigest: String } type FederationPathProof { scheme: String! seed: String! hopDigests: [String]! terminalDigest: String! } input FederationPathProofInput { scheme: String seed: String hopDigests: [String] terminalDigest: String } type FederationRoute { epoch: Int! fromChainId: ID! toChainId: ID! digest: String! expiresAt: String! signatureIssuer: String! signatureDigest: String! hops: [FederationRouteHop]! } input FederationRouteInput { epoch: Int fromChainId: ID toChainId: ID digest: String expiresAt: String signatureIssuer: String signatureDigest: String hops: [FederationRouteHop] } type FederationChain { id: ID! chainId: ID! index: Int! ingressEndpoints: [FederationIngressEndpoint]! witnessHead: FederationWitnessHead! capabilities: [String]! expiresAt: String! signatureIssuer: String! signatureDigest: String! } input FederationChainInput { chainId: ID index: Int ingressEndpoints: [FederationIngressEndpoint] witnessHead: FederationWitnessHead capabilities: [String] expiresAt: String signatureIssuer: String signatureDigest: String } type FederationLookup { destination: FederationChain! witness: FederationWitnessHead! pathProof: FederationPathProof! route: FederationRoute! expiresAt: String! } input FederationLookupInput { destination: FederationChain witness: FederationWitnessHead pathProof: FederationPathProof route: FederationRoute expiresAt: String } type FederationSnapshot { epoch: Int! generatedAt: String! index: Int! digest: String! mirrorCount: Int! recordCount: Int! revocationCount: Int! signer: String! } input FederationSnapshotInput { epoch: Int generatedAt: String index: Int digest: String mirrorCount: Int recordCount: Int revocationCount: Int signer: String } type Query { federationChain(id: ID): FederationChain federationLookup(from: ID, to: ID): FederationLookup federationSnapshot(epoch: Int): FederationSnapshot }