Skip to content

Commit

Permalink
add TransactionWithXLifetime types
Browse files Browse the repository at this point in the history
  • Loading branch information
mcintyre94 committed Apr 16, 2024
1 parent 3b6f6ee commit fbcde3c
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import type { Blockhash } from '@solana/rpc-types';
import { NewNonce } from '@solana/transaction-messages';
import { NewTransaction, TransactionMessageBytes } from '@solana/transactions';
import {
TransactionBlockhashLifetime,
TransactionDurableNonceLifetime,
TransactionWithBlockhashLifetime,
TransactionWithDurableNonceLifetime,
} from '@solana/transactions/dist/types/lifetime';

import { ReadonlyUint8Array } from '../../../codecs-core/dist/types';
Expand All @@ -21,7 +21,7 @@ const FOREVER_PROMISE = new Promise(() => {
});

describe('waitForDurableNonceTransactionConfirmation', () => {
const MOCK_DURABLE_NONCE_TRANSACTION: NewTransaction & { lifetimeConstraint: TransactionDurableNonceLifetime } = {
const MOCK_DURABLE_NONCE_TRANSACTION: NewTransaction & TransactionWithDurableNonceLifetime = {
lifetimeConstraint: { nonce: 'xyz' as NewNonce, nonceAccountAddress: '5'.repeat(44) as Address },
messageBytes: new Uint8Array() as ReadonlyUint8Array as TransactionMessageBytes,
signatures: {
Expand Down Expand Up @@ -170,7 +170,7 @@ describe('waitForDurableNonceTransactionConfirmation', () => {
});

describe('waitForRecentTransactionConfirmation', () => {
const MOCK_TRANSACTION: NewTransaction & { lifetimeConstraint: TransactionBlockhashLifetime } = {
const MOCK_TRANSACTION: NewTransaction & TransactionWithBlockhashLifetime = {
lifetimeConstraint: { blockhash: '4'.repeat(44) as Blockhash, lastValidBlockHeight: 123n },
messageBytes: new Uint8Array() as ReadonlyUint8Array as TransactionMessageBytes,
signatures: {
Expand Down
8 changes: 4 additions & 4 deletions packages/transaction-confirmation/src/waiters.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Signature } from '@solana/keys';
import { newGetSignatureFromTransaction, NewTransaction } from '@solana/transactions';
import {
TransactionBlockhashLifetime,
TransactionDurableNonceLifetime,
TransactionWithBlockhashLifetime,
TransactionWithDurableNonceLifetime,
} from '@solana/transactions/dist/types/lifetime';

import { createBlockHeightExceedencePromiseFactory } from './confirmation-strategy-blockheight';
Expand All @@ -12,13 +12,13 @@ import { getTimeoutPromise } from './confirmation-strategy-timeout';

interface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {
getNonceInvalidationPromise: ReturnType<typeof createNonceInvalidationPromiseFactory>;
transaction: NewTransaction & { lifetimeConstraint: TransactionDurableNonceLifetime };
transaction: NewTransaction & TransactionWithDurableNonceLifetime;
}

interface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig
extends BaseTransactionConfirmationStrategyConfig {
getBlockHeightExceedencePromise: ReturnType<typeof createBlockHeightExceedencePromiseFactory>;
transaction: NewTransaction & { lifetimeConstraint: TransactionBlockhashLifetime };
transaction: NewTransaction & TransactionWithBlockhashLifetime;
}

interface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@ import {
NewNonce,
} from '@solana/transaction-messages';

import { TransactionBlockhashLifetime, TransactionDurableNonceLifetime, TransactionWithLifetime } from '../lifetime';
import {
TransactionBlockhashLifetime,
TransactionDurableNonceLifetime,
TransactionWithBlockhashLifetime,
TransactionWithDurableNonceLifetime,
TransactionWithLifetime,
} from '../lifetime';
import { compileTransaction } from '../new-compile-transaction';
import { NewTransaction } from '../transaction';

Expand All @@ -22,7 +28,7 @@ compileTransaction(
null as unknown as BaseTransactionMessage &
ITransactionMessageWithBlockhashLifetime &
ITransactionMessageWithFeePayer,
) satisfies NewTransaction & { lifetimeConstraint: TransactionBlockhashLifetime };
) satisfies NewTransaction & TransactionWithBlockhashLifetime;
compileTransaction(
null as unknown as BaseTransactionMessage &
ITransactionMessageWithBlockhashLifetime &
Expand All @@ -35,7 +41,7 @@ compileTransaction(
) satisfies NewTransaction & TransactionWithLifetime;
compileTransaction(
null as unknown as BaseTransactionMessage & IDurableNonceTransactionMessage & ITransactionMessageWithFeePayer,
) satisfies NewTransaction & { lifetimeConstraint: TransactionDurableNonceLifetime };
) satisfies NewTransaction & TransactionWithDurableNonceLifetime;
compileTransaction(
null as unknown as BaseTransactionMessage & IDurableNonceTransactionMessage & ITransactionMessageWithFeePayer,
).lifetimeConstraint.nonce satisfies NewNonce;
Expand Down
8 changes: 8 additions & 0 deletions packages/transactions/src/lifetime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ export type TransactionWithLifetime = {
readonly lifetimeConstraint: TransactionBlockhashLifetime | TransactionDurableNonceLifetime;
};

export type TransactionWithBlockhashLifetime = {
readonly lifetimeConstraint: TransactionBlockhashLifetime;
};

export type TransactionWithDurableNonceLifetime = {
readonly lifetimeConstraint: TransactionDurableNonceLifetime;
};

export function isTransactionBlockhashLifetime(
lifetime: TransactionWithLifetime['lifetimeConstraint'],
): lifetime is TransactionBlockhashLifetime {
Expand Down
10 changes: 7 additions & 3 deletions packages/transactions/src/new-compile-transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,20 @@ import {
newCompileTransactionMessage,
} from '@solana/transaction-messages';

import { TransactionBlockhashLifetime, TransactionDurableNonceLifetime, TransactionWithLifetime } from './lifetime';
import {
TransactionWithBlockhashLifetime,
TransactionWithDurableNonceLifetime,
TransactionWithLifetime,
} from './lifetime';
import { NewTransaction, OrderedMap, TransactionMessageBytes } from './transaction';

export function compileTransaction(
transactionMessage: CompilableTransactionMessage & ITransactionMessageWithBlockhashLifetime,
): NewTransaction & { lifetimeConstraint: TransactionBlockhashLifetime };
): NewTransaction & TransactionWithBlockhashLifetime;

export function compileTransaction(
transactionMessage: CompilableTransactionMessage & IDurableNonceTransactionMessage,
): NewTransaction & { lifetimeConstraint: TransactionDurableNonceLifetime };
): NewTransaction & TransactionWithDurableNonceLifetime;

export function compileTransaction(
transactionMessage: CompilableTransactionMessage,
Expand Down

0 comments on commit fbcde3c

Please sign in to comment.