diff --git a/localenv/mock-account-servicing-entity/generated/graphql.ts b/localenv/mock-account-servicing-entity/generated/graphql.ts index f1c22ba2a9..39b2a671ed 100644 --- a/localenv/mock-account-servicing-entity/generated/graphql.ts +++ b/localenv/mock-account-servicing-entity/generated/graphql.ts @@ -396,6 +396,8 @@ export type CreateTenantSettingsMutationResponse = { export type CreateWalletAddressInput = { /** Additional properties associated with the wallet address. */ additionalProperties?: InputMaybe>; + /** Wallet address. This cannot be changed. */ + address: Scalars['String']['input']; /** Unique identifier of the asset associated with the wallet address. This cannot be changed. */ assetId: Scalars['String']['input']; /** Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency). */ @@ -404,8 +406,6 @@ export type CreateWalletAddressInput = { publicName?: InputMaybe; /** Unique identifier of the tenant associated with the wallet address. This cannot be changed. Optional, if not provided, the tenantId will be obtained from the signature. */ tenantId?: InputMaybe; - /** Wallet address URL. This cannot be changed. */ - url: Scalars['String']['input']; }; export type CreateWalletAddressKeyInput = { @@ -1668,6 +1668,8 @@ export type WalletAddress = Model & { __typename?: 'WalletAddress'; /** Additional properties associated with the wallet address. */ additionalProperties?: Maybe>>; + /** Wallet Address. */ + address: Scalars['String']['output']; /** Asset of the wallet address. */ asset: Asset; /** The date and time when the wallet address was created. */ @@ -1688,8 +1690,6 @@ export type WalletAddress = Model & { status: WalletAddressStatus; /** Tenant ID of the wallet address. */ tenantId?: Maybe; - /** Wallet Address URL. */ - url: Scalars['String']['output']; /** List of keys associated with this wallet address */ walletAddressKeys?: Maybe; }; @@ -2703,6 +2703,7 @@ export type UpdateWalletAddressMutationResponseResolvers = { additionalProperties?: Resolver>>, ParentType, ContextType>; + address?: Resolver; asset?: Resolver; createdAt?: Resolver; id?: Resolver; @@ -2713,7 +2714,6 @@ export type WalletAddressResolvers, ParentType, ContextType, Partial>; status?: Resolver; tenantId?: Resolver, ParentType, ContextType>; - url?: Resolver; walletAddressKeys?: Resolver, ParentType, ContextType, Partial>; __isTypeOf?: IsTypeOfResolverFn; }; diff --git a/packages/backend/src/graphql/generated/graphql.schema.json b/packages/backend/src/graphql/generated/graphql.schema.json index 98df5f84b0..a778309390 100644 --- a/packages/backend/src/graphql/generated/graphql.schema.json +++ b/packages/backend/src/graphql/generated/graphql.schema.json @@ -2324,6 +2324,22 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "address", + "description": "Wallet address. This cannot be changed.", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "assetId", "description": "Unique identifier of the asset associated with the wallet address. This cannot be changed.", @@ -2375,22 +2391,6 @@ "defaultValue": null, "isDeprecated": false, "deprecationReason": null - }, - { - "name": "url", - "description": "Wallet address URL. This cannot be changed.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null } ], "interfaces": null, @@ -9315,6 +9315,22 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "address", + "description": "Wallet Address.", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "asset", "description": "Asset of the wallet address.", @@ -9634,22 +9650,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "url", - "description": "Wallet Address URL.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "walletAddressKeys", "description": "List of keys associated with this wallet address", diff --git a/packages/backend/src/graphql/generated/graphql.ts b/packages/backend/src/graphql/generated/graphql.ts index f1c22ba2a9..39b2a671ed 100644 --- a/packages/backend/src/graphql/generated/graphql.ts +++ b/packages/backend/src/graphql/generated/graphql.ts @@ -396,6 +396,8 @@ export type CreateTenantSettingsMutationResponse = { export type CreateWalletAddressInput = { /** Additional properties associated with the wallet address. */ additionalProperties?: InputMaybe>; + /** Wallet address. This cannot be changed. */ + address: Scalars['String']['input']; /** Unique identifier of the asset associated with the wallet address. This cannot be changed. */ assetId: Scalars['String']['input']; /** Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency). */ @@ -404,8 +406,6 @@ export type CreateWalletAddressInput = { publicName?: InputMaybe; /** Unique identifier of the tenant associated with the wallet address. This cannot be changed. Optional, if not provided, the tenantId will be obtained from the signature. */ tenantId?: InputMaybe; - /** Wallet address URL. This cannot be changed. */ - url: Scalars['String']['input']; }; export type CreateWalletAddressKeyInput = { @@ -1668,6 +1668,8 @@ export type WalletAddress = Model & { __typename?: 'WalletAddress'; /** Additional properties associated with the wallet address. */ additionalProperties?: Maybe>>; + /** Wallet Address. */ + address: Scalars['String']['output']; /** Asset of the wallet address. */ asset: Asset; /** The date and time when the wallet address was created. */ @@ -1688,8 +1690,6 @@ export type WalletAddress = Model & { status: WalletAddressStatus; /** Tenant ID of the wallet address. */ tenantId?: Maybe; - /** Wallet Address URL. */ - url: Scalars['String']['output']; /** List of keys associated with this wallet address */ walletAddressKeys?: Maybe; }; @@ -2703,6 +2703,7 @@ export type UpdateWalletAddressMutationResponseResolvers = { additionalProperties?: Resolver>>, ParentType, ContextType>; + address?: Resolver; asset?: Resolver; createdAt?: Resolver; id?: Resolver; @@ -2713,7 +2714,6 @@ export type WalletAddressResolvers, ParentType, ContextType, Partial>; status?: Resolver; tenantId?: Resolver, ParentType, ContextType>; - url?: Resolver; walletAddressKeys?: Resolver, ParentType, ContextType, Partial>; __isTypeOf?: IsTypeOfResolverFn; }; diff --git a/packages/backend/src/graphql/resolvers/wallet_address.test.ts b/packages/backend/src/graphql/resolvers/wallet_address.test.ts index 88ae1d78d8..560b3e1b83 100644 --- a/packages/backend/src/graphql/resolvers/wallet_address.test.ts +++ b/packages/backend/src/graphql/resolvers/wallet_address.test.ts @@ -714,7 +714,7 @@ describe('Wallet Address Resolvers', (): void => { const newWalletAddress = await walletAddressService.create({ assetId: (newAsset as Asset).id, tenantId: newTenant!.id, - url: 'https://alice.me/.well-known/pay-2' + address: 'https://alice.me/.well-known/pay-2' }) const id = (newWalletAddress as WalletAddressModel).id @@ -824,7 +824,7 @@ describe('Wallet Address Resolvers', (): void => { code: walletAddress.asset.code, scale: walletAddress.asset.scale }, - url: walletAddress.url, + address: walletAddress.address, publicName: publicName ?? null, additionalProperties: [ { @@ -856,7 +856,7 @@ describe('Wallet Address Resolvers', (): void => { publicName, createLiquidityAccount: true }) - const args = { url: walletAddress.url } + const args = { url: walletAddress.address } const query = await appContainer.apolloClient .query({ query: gql` @@ -868,7 +868,7 @@ describe('Wallet Address Resolvers', (): void => { code scale } - url + address publicName additionalProperties { key @@ -897,7 +897,7 @@ describe('Wallet Address Resolvers', (): void => { code: walletAddress.asset.code, scale: walletAddress.asset.scale }, - url: walletAddress.url, + address: walletAddress.address, publicName: publicName ?? null, additionalProperties: [] }) @@ -967,7 +967,7 @@ describe('Wallet Address Resolvers', (): void => { code scale } - url + address publicName } cursor @@ -996,7 +996,7 @@ describe('Wallet Address Resolvers', (): void => { code: walletAddress.asset.code, scale: walletAddress.asset.scale }, - url: walletAddress.url, + address: walletAddress.address, publicName: walletAddress.publicName }) }) @@ -1022,7 +1022,7 @@ describe('Wallet Address Resolvers', (): void => { code scale } - url + address publicName } cursor @@ -1054,7 +1054,7 @@ describe('Wallet Address Resolvers', (): void => { code: walletAddress.asset.code, scale: walletAddress.asset.scale }, - url: walletAddress.url, + address: walletAddress.address, publicName: walletAddress.publicName }) }) diff --git a/packages/backend/src/graphql/resolvers/wallet_address.ts b/packages/backend/src/graphql/resolvers/wallet_address.ts index d4766b521d..8e678acbaa 100644 --- a/packages/backend/src/graphql/resolvers/wallet_address.ts +++ b/packages/backend/src/graphql/resolvers/wallet_address.ts @@ -122,7 +122,7 @@ export const createWalletAddress: MutationResolvers['createW tenantId, additionalProperties: addProps, publicName: args.input.publicName, - url: args.input.url + address: args.input.address } const walletAddressOrError = await walletAddressService.create(options) @@ -206,7 +206,7 @@ export function walletAddressToGraphql( ): SchemaWalletAddress { return { id: walletAddress.id, - url: walletAddress.url, + address: walletAddress.address, asset: assetToGraphql(walletAddress.asset), publicName: walletAddress.publicName ?? undefined, createdAt: new Date(+walletAddress.createdAt).toISOString(), diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index 62f1616e68..1745f02a95 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -792,8 +792,8 @@ type WalletAddress implements Model { "Current amount of liquidity available for this wallet address." liquidity: UInt64 - "Wallet Address URL." - url: String! + "Wallet Address." + address: String! "Public name associated with the wallet address. This is visible to anyone with the wallet address URL." publicName: String @@ -1298,8 +1298,8 @@ input CreateWalletAddressInput { tenantId: ID "Unique identifier of the asset associated with the wallet address. This cannot be changed." assetId: String! - "Wallet address URL. This cannot be changed." - url: String! + "Wallet address. This cannot be changed." + address: String! "Public name associated with the wallet address. This is visible to anyone with the wallet address URL." publicName: String "Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency)." diff --git a/packages/backend/src/open_payments/payment/incoming/model.ts b/packages/backend/src/open_payments/payment/incoming/model.ts index 4739efc9dc..3f833d97ac 100644 --- a/packages/backend/src/open_payments/payment/incoming/model.ts +++ b/packages/backend/src/open_payments/payment/incoming/model.ts @@ -144,7 +144,7 @@ export class IncomingPayment } public getUrl(walletAddress: WalletAddress): string { - const url = new URL(walletAddress.url) + const url = new URL(walletAddress.address) return `${url.origin}/${walletAddress.tenantId}${IncomingPayment.urlPath}/${this.id}` } @@ -225,7 +225,7 @@ export class IncomingPayment ): OpenPaymentsIncomingPayment { return { id: this.getUrl(walletAddress), - walletAddress: walletAddress.url, + walletAddress: walletAddress.address, incomingAmount: this.incomingAmount ? serializeAmount(this.incomingAmount) : undefined, diff --git a/packages/backend/src/open_payments/quote/routes.test.ts b/packages/backend/src/open_payments/quote/routes.test.ts index 3c161305fb..9796f94c9f 100644 --- a/packages/backend/src/open_payments/quote/routes.test.ts +++ b/packages/backend/src/open_payments/quote/routes.test.ts @@ -85,7 +85,7 @@ describe('Quote Routes', (): void => { tenantId, assetId }) - baseUrl = new URL(walletAddress.url).origin + baseUrl = new URL(walletAddress.address).origin }) afterEach(async (): Promise => { diff --git a/packages/backend/src/tests/walletAddress.ts b/packages/backend/src/tests/walletAddress.ts index 6b84abda64..9ca836514c 100644 --- a/packages/backend/src/tests/walletAddress.ts +++ b/packages/backend/src/tests/walletAddress.ts @@ -12,6 +12,8 @@ import { isWalletAddressError } from '../open_payments/wallet_address/errors' import { WalletAddress } from '../open_payments/wallet_address/model' import { CreateOptions as BaseCreateOptions } from '../open_payments/wallet_address/service' import { LiquidityAccountType } from '../accounting/service' +import { createTenantSettings } from './tenantSettings' +import { TenantSettingKeys } from '../tenants/settings/model' const nock = (global as unknown as { nock: typeof import('nock') }).nock @@ -31,14 +33,25 @@ export async function createWalletAddress( ): Promise { const walletAddressService = await deps.use('walletAddressService') const tenantIdToUse = options.tenantId || (await createTenant(deps)).id + + const baseWalletAddressUrl = new URL( + options.address || `https://${faker.internet.domainName()}` + ) + await createTenantSettings(deps, { + tenantId: tenantIdToUse, + setting: [ + { + key: TenantSettingKeys.WALLET_ADDRESS_URL.name, + value: baseWalletAddressUrl.origin + } + ] + }) const walletAddressOrError = (await walletAddressService.create({ ...options, assetId: options.assetId || (await createAsset(deps, undefined, tenantIdToUse)).id, tenantId: tenantIdToUse, - address: - options.address || - `https://${faker.internet.domainName()}/.well-known/pay` + address: options.address || `${baseWalletAddressUrl.origin}/.well-known/pay` })) as MockWalletAddress if (isWalletAddressError(walletAddressOrError)) { throw new Error(walletAddressOrError) diff --git a/packages/frontend/app/generated/graphql.ts b/packages/frontend/app/generated/graphql.ts index 3838e2cd99..f67d4efb1b 100644 --- a/packages/frontend/app/generated/graphql.ts +++ b/packages/frontend/app/generated/graphql.ts @@ -396,6 +396,8 @@ export type CreateTenantSettingsMutationResponse = { export type CreateWalletAddressInput = { /** Additional properties associated with the wallet address. */ additionalProperties?: InputMaybe>; + /** Wallet address. This cannot be changed. */ + address: Scalars['String']['input']; /** Unique identifier of the asset associated with the wallet address. This cannot be changed. */ assetId: Scalars['String']['input']; /** Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency). */ @@ -404,8 +406,6 @@ export type CreateWalletAddressInput = { publicName?: InputMaybe; /** Unique identifier of the tenant associated with the wallet address. This cannot be changed. Optional, if not provided, the tenantId will be obtained from the signature. */ tenantId?: InputMaybe; - /** Wallet address URL. This cannot be changed. */ - url: Scalars['String']['input']; }; export type CreateWalletAddressKeyInput = { @@ -1668,6 +1668,8 @@ export type WalletAddress = Model & { __typename?: 'WalletAddress'; /** Additional properties associated with the wallet address. */ additionalProperties?: Maybe>>; + /** Wallet Address. */ + address: Scalars['String']['output']; /** Asset of the wallet address. */ asset: Asset; /** The date and time when the wallet address was created. */ @@ -1688,8 +1690,6 @@ export type WalletAddress = Model & { status: WalletAddressStatus; /** Tenant ID of the wallet address. */ tenantId?: Maybe; - /** Wallet Address URL. */ - url: Scalars['String']['output']; /** List of keys associated with this wallet address */ walletAddressKeys?: Maybe; }; @@ -2703,6 +2703,7 @@ export type UpdateWalletAddressMutationResponseResolvers = { additionalProperties?: Resolver>>, ParentType, ContextType>; + address?: Resolver; asset?: Resolver; createdAt?: Resolver; id?: Resolver; @@ -2713,7 +2714,6 @@ export type WalletAddressResolvers, ParentType, ContextType, Partial>; status?: Resolver; tenantId?: Resolver, ParentType, ContextType>; - url?: Resolver; walletAddressKeys?: Resolver, ParentType, ContextType, Partial>; __isTypeOf?: IsTypeOfResolverFn; }; @@ -3086,7 +3086,7 @@ export type GetWalletAddressQueryVariables = Exact<{ }>; -export type GetWalletAddressQuery = { __typename?: 'Query', walletAddress?: { __typename?: 'WalletAddress', id: string, url: string, publicName?: string | null, status: WalletAddressStatus, createdAt: string, liquidity?: bigint | null, asset: { __typename?: 'Asset', id: string, code: string, scale: number, withdrawalThreshold?: bigint | null } } | null }; +export type GetWalletAddressQuery = { __typename?: 'Query', walletAddress?: { __typename?: 'WalletAddress', id: string, address: string, publicName?: string | null, status: WalletAddressStatus, createdAt: string, liquidity?: bigint | null, asset: { __typename?: 'Asset', id: string, code: string, scale: number, withdrawalThreshold?: bigint | null } } | null }; export type ListWalletAddresssQueryVariables = Exact<{ after?: InputMaybe; @@ -3096,7 +3096,7 @@ export type ListWalletAddresssQueryVariables = Exact<{ }>; -export type ListWalletAddresssQuery = { __typename?: 'Query', walletAddresses: { __typename?: 'WalletAddressesConnection', edges: Array<{ __typename?: 'WalletAddressEdge', cursor: string, node: { __typename?: 'WalletAddress', id: string, publicName?: string | null, status: WalletAddressStatus, url: string } }>, pageInfo: { __typename?: 'PageInfo', startCursor?: string | null, endCursor?: string | null, hasNextPage: boolean, hasPreviousPage: boolean } } }; +export type ListWalletAddresssQuery = { __typename?: 'Query', walletAddresses: { __typename?: 'WalletAddressesConnection', edges: Array<{ __typename?: 'WalletAddressEdge', cursor: string, node: { __typename?: 'WalletAddress', id: string, publicName?: string | null, status: WalletAddressStatus, address: string } }>, pageInfo: { __typename?: 'PageInfo', startCursor?: string | null, endCursor?: string | null, hasNextPage: boolean, hasPreviousPage: boolean } } }; export type UpdateWalletAddressMutationVariables = Exact<{ input: UpdateWalletAddressInput; diff --git a/packages/frontend/app/lib/api/wallet-address.server.ts b/packages/frontend/app/lib/api/wallet-address.server.ts index d87387a920..4ce2733911 100644 --- a/packages/frontend/app/lib/api/wallet-address.server.ts +++ b/packages/frontend/app/lib/api/wallet-address.server.ts @@ -29,7 +29,7 @@ export const getWalletAddress = async ( query GetWalletAddressQuery($id: String!) { walletAddress(id: $id) { id - url + address publicName status createdAt @@ -77,7 +77,7 @@ export const listWalletAddresses = async ( id publicName status - url + address } } pageInfo { diff --git a/packages/mock-account-service-lib/src/generated/graphql.ts b/packages/mock-account-service-lib/src/generated/graphql.ts index f1c22ba2a9..39b2a671ed 100644 --- a/packages/mock-account-service-lib/src/generated/graphql.ts +++ b/packages/mock-account-service-lib/src/generated/graphql.ts @@ -396,6 +396,8 @@ export type CreateTenantSettingsMutationResponse = { export type CreateWalletAddressInput = { /** Additional properties associated with the wallet address. */ additionalProperties?: InputMaybe>; + /** Wallet address. This cannot be changed. */ + address: Scalars['String']['input']; /** Unique identifier of the asset associated with the wallet address. This cannot be changed. */ assetId: Scalars['String']['input']; /** Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency). */ @@ -404,8 +406,6 @@ export type CreateWalletAddressInput = { publicName?: InputMaybe; /** Unique identifier of the tenant associated with the wallet address. This cannot be changed. Optional, if not provided, the tenantId will be obtained from the signature. */ tenantId?: InputMaybe; - /** Wallet address URL. This cannot be changed. */ - url: Scalars['String']['input']; }; export type CreateWalletAddressKeyInput = { @@ -1668,6 +1668,8 @@ export type WalletAddress = Model & { __typename?: 'WalletAddress'; /** Additional properties associated with the wallet address. */ additionalProperties?: Maybe>>; + /** Wallet Address. */ + address: Scalars['String']['output']; /** Asset of the wallet address. */ asset: Asset; /** The date and time when the wallet address was created. */ @@ -1688,8 +1690,6 @@ export type WalletAddress = Model & { status: WalletAddressStatus; /** Tenant ID of the wallet address. */ tenantId?: Maybe; - /** Wallet Address URL. */ - url: Scalars['String']['output']; /** List of keys associated with this wallet address */ walletAddressKeys?: Maybe; }; @@ -2703,6 +2703,7 @@ export type UpdateWalletAddressMutationResponseResolvers = { additionalProperties?: Resolver>>, ParentType, ContextType>; + address?: Resolver; asset?: Resolver; createdAt?: Resolver; id?: Resolver; @@ -2713,7 +2714,6 @@ export type WalletAddressResolvers, ParentType, ContextType, Partial>; status?: Resolver; tenantId?: Resolver, ParentType, ContextType>; - url?: Resolver; walletAddressKeys?: Resolver, ParentType, ContextType, Partial>; __isTypeOf?: IsTypeOfResolverFn; }; diff --git a/test/integration/lib/generated/graphql.ts b/test/integration/lib/generated/graphql.ts index f1c22ba2a9..39b2a671ed 100644 --- a/test/integration/lib/generated/graphql.ts +++ b/test/integration/lib/generated/graphql.ts @@ -396,6 +396,8 @@ export type CreateTenantSettingsMutationResponse = { export type CreateWalletAddressInput = { /** Additional properties associated with the wallet address. */ additionalProperties?: InputMaybe>; + /** Wallet address. This cannot be changed. */ + address: Scalars['String']['input']; /** Unique identifier of the asset associated with the wallet address. This cannot be changed. */ assetId: Scalars['String']['input']; /** Unique key to ensure duplicate or retried requests are processed only once. For more information, refer to [idempotency](https://rafiki.dev/apis/graphql/admin-api-overview/#idempotency). */ @@ -404,8 +406,6 @@ export type CreateWalletAddressInput = { publicName?: InputMaybe; /** Unique identifier of the tenant associated with the wallet address. This cannot be changed. Optional, if not provided, the tenantId will be obtained from the signature. */ tenantId?: InputMaybe; - /** Wallet address URL. This cannot be changed. */ - url: Scalars['String']['input']; }; export type CreateWalletAddressKeyInput = { @@ -1668,6 +1668,8 @@ export type WalletAddress = Model & { __typename?: 'WalletAddress'; /** Additional properties associated with the wallet address. */ additionalProperties?: Maybe>>; + /** Wallet Address. */ + address: Scalars['String']['output']; /** Asset of the wallet address. */ asset: Asset; /** The date and time when the wallet address was created. */ @@ -1688,8 +1690,6 @@ export type WalletAddress = Model & { status: WalletAddressStatus; /** Tenant ID of the wallet address. */ tenantId?: Maybe; - /** Wallet Address URL. */ - url: Scalars['String']['output']; /** List of keys associated with this wallet address */ walletAddressKeys?: Maybe; }; @@ -2703,6 +2703,7 @@ export type UpdateWalletAddressMutationResponseResolvers = { additionalProperties?: Resolver>>, ParentType, ContextType>; + address?: Resolver; asset?: Resolver; createdAt?: Resolver; id?: Resolver; @@ -2713,7 +2714,6 @@ export type WalletAddressResolvers, ParentType, ContextType, Partial>; status?: Resolver; tenantId?: Resolver, ParentType, ContextType>; - url?: Resolver; walletAddressKeys?: Resolver, ParentType, ContextType, Partial>; __isTypeOf?: IsTypeOfResolverFn; };