diff --git a/src/index.ts b/src/index.ts index 483a8396..42ec427c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,6 +25,7 @@ import type { DecodedDataResponse } from './types/decoded-data' import type { SafeMessage, SafeMessageListPage } from './types/safe-messages' import { DEFAULT_BASE_URL } from './config' import type { DelegateResponse, DelegatesRequest } from './types/delegates' +import type { GetEmailResponse } from './types/emails' export * from './types/safe-info' export * from './types/safe-apps' @@ -498,4 +499,25 @@ export function verifyEmail( }) } +/** + * Gets the registered email address of the signer + * + * @param chainId + * @param safeAddress + * @param signerAddress address of the owner of the Safe + * + * @returns email address and verified flag + */ +export function getRegisteredEmail( + chainId: string, + safeAddress: string, + signerAddress: string, + headers: operations['get_email']['parameters']['headers'], +): Promise { + return getEndpoint(baseUrl, '/v1/chains/{chainId}/safes/{safe_address}/emails/{signer}', { + path: { chainId, safe_address: safeAddress, signer: signerAddress }, + headers, + }) +} + /* eslint-enable @typescript-eslint/explicit-module-boundary-types */ diff --git a/src/types/api.ts b/src/types/api.ts index e027794c..84a24239 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -32,8 +32,9 @@ import type { DelegateResponse, DelegatesRequest } from './delegates' import type { RegisterNotificationsRequest } from './notifications' import type { ChangeEmailRequestBody, + GetEmailResponse, RegisterEmailRequestBody, - RegisterEmailRequestHeader, + AuthorizationEmailRequestHeader, VerifyEmailRequestBody, } from './emails' @@ -92,7 +93,7 @@ export interface DeleteEndpoint extends Endpoint { } interface PathRegistry { - [key: string]: GetEndpoint | PostEndpoint | PutEndpoint | (GetEndpoint & PostEndpoint) | DeleteEndpoint + [key: string]: GetEndpoint | PostEndpoint | PutEndpoint | DeleteEndpoint } export interface paths extends PathRegistry { @@ -357,6 +358,7 @@ export interface paths extends PathRegistry { } '/v1/chains/{chainId}/safes/{safe_address}/emails/{signer}': { put: operations['change_email'] + get: operations['get_email'] parameters: { path: { chainId: string @@ -893,7 +895,7 @@ export interface operations { safe_address: string } body: RegisterEmailRequestBody - headers: RegisterEmailRequestHeader + headers: AuthorizationEmailRequestHeader } responses: { 200: { @@ -909,7 +911,7 @@ export interface operations { signer: string } body: ChangeEmailRequestBody - headers: RegisterEmailRequestHeader + headers: AuthorizationEmailRequestHeader } responses: { 200: { @@ -920,6 +922,21 @@ export interface operations { } } } + get_email: { + parameters: { + path: { + chainId: string + safe_address: string + signer: string + } + headers: AuthorizationEmailRequestHeader + } + responses: { + 200: { + schema: GetEmailResponse + } + } + } verify_resend: { parameters: { path: { diff --git a/src/types/emails.ts b/src/types/emails.ts index 2f25c4bd..b5b2c2e6 100644 --- a/src/types/emails.ts +++ b/src/types/emails.ts @@ -7,7 +7,7 @@ export type ChangeEmailRequestBody = { emailAddress: string } -export type RegisterEmailRequestHeader = { +export type AuthorizationEmailRequestHeader = { ['Safe-Wallet-Signature']: string ['Safe-Wallet-Signature-Timestamp']: string } @@ -15,3 +15,8 @@ export type RegisterEmailRequestHeader = { export type VerifyEmailRequestBody = { code: string } + +export type GetEmailResponse = { + email: string + verified: boolean +}