# Blockscout SDK

## About

The SettleMint Blockscout SDK provides a seamless way to interact with Blockscout APIs for blockchain data exploration and analysis. It enables you to easily query transaction data, blocks, addresses, smart contracts and more from your SettleMint-powered blockchain networks.

## API Reference

### Functions

#### createBlockscoutClient()

> **createBlockscoutClient**\<`Setup`>(`options`, `clientOptions?`): `object`

Defined in: [sdk/blockscout/src/blockscout.ts:76](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L76)

Creates a Blockscout GraphQL client with proper type safety using gql.tada

##### Type Parameters

| Type Parameter                          |
| --------------------------------------- |
| `Setup` *extends* `AbstractSetupSchema` |

##### Parameters

| Parameter              | Type                                                 | Description                                   |
| ---------------------- | ---------------------------------------------------- | --------------------------------------------- |
| `options`              | \{ `accessToken?`: `string`; `instance`: `string`; } | Configuration options for the client          |
| `options.accessToken?` | `string`                                             | -                                             |
| `options.instance?`    | `string`                                             | -                                             |
| `clientOptions?`       | `RequestConfig`                                      | Optional GraphQL client configuration options |

##### Returns

`object`

An object containing the GraphQL client and initialized gql.tada function

| Name      | Type                        | Defined in                                                                                                                |
| --------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `client`  | `GraphQLClient`             | [sdk/blockscout/src/blockscout.ts:80](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L80) |
| `graphql` | `initGraphQLTada`\<`Setup`> | [sdk/blockscout/src/blockscout.ts:81](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L81) |

##### Throws

Will throw an error if the options fail validation

##### Example

```ts
import { createBlockscoutClient } from '@settlemint/sdk-blockscout';
import type { introspection } from "@schemas/blockscout-env";
import { createLogger, requestLogger } from '@settlemint/sdk-utils/logging';

const logger = createLogger();

const { client, graphql } = createBlockscoutClient<{
  introspection: introspection;
  disableMasking: true;
  scalars: {
    AddressHash: string;
    Data: string;
    DateTime: string;
    Decimal: string;
    FullHash: string;
    Json: string;
    NonceHash: string;
    Wei: string;
  };
}>({
  instance: process.env.SETTLEMINT_BLOCKSCOUT_ENDPOINT,
  accessToken: process.env.SETTLEMINT_ACCESS_TOKEN
}, {
  fetch: requestLogger(logger, "blockscout", fetch) as typeof fetch,
});

// Making GraphQL queries
const query = graphql(`
  query GetTransaction($hash: String!) {
    transaction(hash: $hash) {
      hash
      blockNumber
      value
      gasUsed
    }
  }
`);

const result = await client.request(query, {
  hash: "0x123abc..."
});
```

### Type Aliases

#### ClientOptions

> **ClientOptions** = `object`

Defined in: [sdk/blockscout/src/blockscout.ts:24](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L24)

Type definition for client options derived from the ClientOptionsSchema

##### Type Declaration

| Name                                  | Type     | Default value     | Defined in                                                                                                                |
| ------------------------------------- | -------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
| <a id="accesstoken" /> `accessToken?` | `string` | -                 | [sdk/blockscout/src/blockscout.ts:18](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L18) |
| <a id="instance" /> `instance`        | `string` | `UrlOrPathSchema` | [sdk/blockscout/src/blockscout.ts:17](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L17) |

***

#### RequestConfig

> **RequestConfig** = `ConstructorParameters`\<*typeof* `GraphQLClient`>\[`1`]

Defined in: [sdk/blockscout/src/blockscout.ts:11](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L11)

Type definition for GraphQL client configuration options

### Variables

#### ClientOptionsSchema

> `const` **ClientOptionsSchema**: `ZodObject`\<[`ClientOptions`](#clientoptions)>

Defined in: [sdk/blockscout/src/blockscout.ts:16](https://github.com/settlemint/sdk/blob/v2.6.4/sdk/blockscout/src/blockscout.ts#L16)

Schema for validating client options for the Blockscout client.

## Contributing

We welcome contributions from the community! Please check out our [Contributing](https://github.com/settlemint/sdk/blob/main/.github/CONTRIBUTING.md) guide to learn how you can help improve the SettleMint SDK through bug reports, feature requests, documentation updates, or code contributions.

## License

The SettleMint SDK is released under the [FSL Software License](https://fsl.software). See the [LICENSE](https://github.com/settlemint/sdk/blob/main/LICENSE) file for more details.
